2010-07-06 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
2
3         * method-to-ir.c (emit_imt_argument): Fix llvm support.
4
5         * mini-llvm.c: Use only one mono specific LLVM calling convention since imt/rgctx
6         cannot be passed in the same call.
7
8         * mini-amd64.h mini-amd64.c tramp-amd64.c aot-compiler.c: Change the IMT
9         register to be the same as the RGCTX register, the two can't be used together on
10         the same call.
11
12 2010-07-05  Miguel de Icaza  <miguel@novell.com>
13
14         * driver.c (mono_main), main.c: Add support for MONO_VM_CONFIG
15         that allows the user to force the VM to use llvm or sgen.
16
17 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
18
19         * exceptions-ppc.c (mono_arch_handle_exception): Resume from the signal handler
20         before processing the exception on PPC too.
21
22         * mini-ppc.h (MONO_CONTEXT_SET_SP): Define this to fix the PPC build.
23
24         * mini-ppc.c tramp-ppc.c aot-compiler.c: Change the managed calling convention so
25         'this' is always passed as the first argument, before the vtype ret arg. This
26         simplifies get_this_arg_reg () and LLVM integration.
27
28 2010-07-05  Martin Baulig  <martin@ximian.com>
29
30         * exceptions-x86.c (mono_arch_handle_exception): Port this to
31         Windows; apply my patch from r159782 in the mono-2-6 branch.
32
33 2010-07-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34
35         * Makefile.am: Don't build the debug assembler files if we're building without
36         debugger support.
37
38 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
39
40         * aot-compiler.c (arch_emit_unbox_trampoline): Fix this after the callconv changes.
41
42 2010-07-04  Zoltan Varga  <vargaz@gmail.com>
43
44         * tramp-arm.c (mono_arch_create_generic_trampoline): Fix the max trampoline
45         length.
46
47         * mini-arm.h (MonoContext): Get rid of the 'ebp' field, use
48         regs [ARMREG_FP] instead.
49
50         * unwind.c (decode_lsda): Use read32 for reading 32 bit quantities.
51
52         * tramp-arm.c (mono_arch_create_generic_trampoline): Save the original sp to
53         lmf->iregs [ARMREG_IP] to be consistent with mono_arch_emit_prolog ().
54
55         * mini-arm.h (MonoLMF): Remove unused fregs field, add comments for other fields.
56
57         * exceptions-arm.c: Clean up the handling of LMFs. Add LLVM exception trampolines.
58
59         * mini-arm.c: Always use V5 for passing IMT/RGCTX when running under LLVM.
60
61         * method-to-ir.c (emit_imt_argument): Fix LLVM support for architectures
62         without IMT_REG defined (ARM).
63
64         * exceptions-arm.c: Add LLVM throw exception trampolines, add xdebug info for
65         the trampolines.
66
67 2010-07-03  Zoltan Varga  <vargaz@gmail.com>
68
69         * mini-llvm.c (process_bb): Disable OP_MEMORY_BARRIER on arm.
70
71 2010-07-02  Zoltan Varga  <vargaz@gmail.com>
72
73         * mini.h: Applied patch from Elijah Taylor (elijahtaylor@google.com). Fix some
74         definitions to match their declarations and vice-versa.
75
76 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
77
78         * Makefile.am (common_sources): Add mini-llvm.h.
79
80         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the lsda offset.
81
82 2010-06-30  Zoltan Varga  <vargaz@gmail.com>
83
84         * mini.c (mini_cleanup): Avoid calling mono_runtime_shutdown () if cross
85         compiling.
86
87 Wed Jun 30 12:10:57 CEST 2010 Paolo Molaro <lupus@ximian.com>
88
89         * Makefile.am, mini-llvm.h, mini-unwind.h, mini.c, mini.h, xdebug.c:
90         implemt the option of loading the llvm backend from a module so
91         that we can have a single binary and the bloat from llvm is
92         only experienced when it is actually loaded.
93
94 Wed Jun 30 12:02:39 CEST 2010 Paolo Molaro <lupus@ximian.com>
95
96         * mini-llvm.c: remove direct access to mono_defaults.
97
98 2010-06-29  Zoltan Varga  <vargaz@gmail.com>
99
100         * mini-arm.c (mono_arch_get_vcall_slot): This is no longer used on ARM, so make it
101         a no-op.
102
103         * mini-trampolines.c (mono_vcall_trampoline): Fix a warning.
104
105         * mini-x86.c (mono_arch_get_vcall_slot): Remove most cases as the only caller
106         is now mono_arch_nullify_class_init_trampoline ().
107         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
108         opcodes, they are no longer needed.
109
110         * mini-amd64.c (mono_arch_get_vcall_slot): Remove most cases as the only caller is
111         now mono_arch_nullify_class_init_trampoline ().
112         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
113         opcodes, they are no longer needed.
114
115         * mini-trampolines.c (mono_vcall_trampoline): Use the LLVM method of obtaining the
116         vtable on platforms which support it.
117
118         * driver.c: Print the full LLVM version we are compiled against in --version.
119
120         * aot-runtime.c (decode_exception_debug_info): Separate the LLVM and non-LLVM code
121         a bit better. Decode nesting information to fix eh support for llvm+aot.
122
123         * aot-compiler.c (emit_exception_debug_info): Encode nesting information for LLVM
124         methods.
125
126         * mini-llvm.c (mono_llvm_cleanup): Dispose the aot module too.
127
128         * mini-arm.c (get_call_info): Change the managed calling convention so 'this'
129         is always passed as the first argument, before the vtype ret arg. This simplifies
130         get_this_arg_reg () and LLVM integration.
131
132 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
133
134         * mini-trampolines.c mini.c: Rework the virtual call handling code by using a separate
135         vtable trampoline for each vtable slot for both the LLVM and non-LLVM cases. Move
136         most of the vcall specific code to mono_vcall_trampoline () from
137         common_call_trampoline ().
138
139 2010-06-27  Zoltan Varga  <vargaz@gmail.com>
140
141         * mini-trampolines.c (common_call_trampoline): Remove the code which created static
142         rgctx trampolines when called from LLVM, they won't work for dynamic rgctx arguments
143         if the callsite is patched.
144
145         * mini-llvm.c (process_call): Disable calls which need an rgctx arg if not using
146         the llvm branch.
147
148         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Fix the name of
149         the trampoline in the xdebug info.
150
151         * mini-trampolines.c (common_call_trampoline): Make the last change work for LLVM
152         as well.
153
154 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
155
156         * mini-llvm.c: Fix a few problems exposed by make check.
157
158 2010-06-25  Mark Probst  <mark.probst@gmail.com>
159
160         * mini-trampolines.c (common_call_trampoline): An ugly hack to
161         work around a potentially very hard to fix problem with inflating
162         generic methods.
163
164 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
165
166         * method-to-ir.c (mono_emit_wb_aware_memcpy): Remove the workaround as the core
167         problem has been fixes.
168
169 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
170
171         * Makefile.am: Add an 'SGEN' make variable to allow tests to be run with SGEN.
172
173         * mini-gc.c (mini_gc_init_cfg): Use mono_gc_is_moving () instead of HAVE_SGEN_GC.
174         It might be be better to define a MonoGCJitOptions structure later and have the
175         GC return that.
176
177         * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
178
179         * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
180
181         * debugger-agent.c (get_objref): Implement support for sgen.
182
183         * driver.c: Remove the unused gc_wrapper.h include.
184
185         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
186         implementation.
187
188 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
189
190         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
191
192         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
193         in MonoCompile.
194
195         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
196         instead.
197
198 2010-06-23  Miguel de Icaza  <miguel@novell.com>
199
200         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
201         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
202
203         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
204         it only for Boehm diagnostics.
205
206         * Makefile.am: Make the file a bit more consistent.
207
208         * debug-debugger.c: Wrap the entire file with an #ifdef
209         MONO_DEBUGGER_SUPPORTED to simplify the build.
210
211         * Makefile.am: Fix the opcodes build issue by including the
212         source, not by including the .lo file directly
213
214         Always bring the MDB sources into the build, to drop the
215         dependency on the AM_CONDITIONAL from configure.in as the hard
216         debugger supports Boehm, but not Sgen, this simplifies the build. 
217
218         * Renamed the *.s files into *.S
219
220 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
221
222         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
223         wb for now on 64bits systems while issues with valuetype returns
224         are not fixed.
225
226 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
227
228         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
229         passes by calling createStandardFunctionPasses ().
230
231 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
232
233         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
234
235 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
236
237         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
238         MONO_INST_FAULT.
239
240         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
241         allow better optimization if the OP_LDADDR which caused the flag to be set was
242         optimized away.
243
244         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
245
246         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
247         the type token.
248
249         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
250
251         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
252
253 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
254
255         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
256         to handle the code sequence generated for non-near calls. Fixes #616056.
257
258 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
259
260         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
261
262         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
263
264         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
265         nesting clause too.
266         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
267         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
268         trampoline which saves the context, so changes made to callee saved registers in
269         finally clauses are visible to a nesting catch clause.
270
271         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
272
273         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
274         in LLVM compiled code.
275         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
276         the finally handler has ran.
277
278         * mini.h (ResumeState): New structure containing information required to resume
279         exception handling after executing LLVM compiled finally clauses.
280
281         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
282         bit, by passing all the registers as one argument.
283
284 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
285
286         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
287         to avoid an assert.
288
289 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
290
291         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
292
293         * aot-compiler.c aot-runtime.c: Fix LLVM support.
294
295         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
296         pad, branch to a new bblock instead.
297
298         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
299         orig_method.
300
301         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
302
303         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
304
305 2010-06-17  Geoff Norton  <gnorton@novell.com>
306
307         * mini-arm.h:
308         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
309         can be used by sgen.
310
311 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
312
313         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
314
315         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
316         fails.
317
318         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
319         the ip done by throw_exception (), it is not needed for corlib exceptions.
320
321 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
322
323         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
324         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
325         of size > 5 words. This support fast barriers for value types up to
326         256/512 bytes which     beyond that the copying itself is the major issue.
327
328         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
329         for gsharing, so use it.
330
331         This eliminate all calls to mono_value_copy from managed code in
332         gmcs, fsharp and ipy.
333
334         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
335
336         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
337         performance kept
338
339         * mini.c (mini_init): Register new icall.
340
341 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
342
343         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
344         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
345
346 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
347
348         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
349         value types as the overhead is huge. Manually expand it up to 5 words to
350         avoid code bloat.
351
352         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
353         is an exception that performance is dominated by mono_value_copy.
354
355         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
356
357 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
358
359         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
360         trampolines on x86, since those have their own cconv.
361
362         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
363         exception trampolines.
364
365         * tramp-x86.c: Add xdebug info for a few trampolines.
366
367         * mini-llvm.c: Set the name of the arguments.
368
369         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
370         using a block address if using the LLVM mono branch.
371
372         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
373         trampolines.
374
375 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
376
377         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
378
379         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
380
381         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
382
383         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
384
385         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
386         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
387         to identify the vtable slot address plus the method which needs to be compiled.
388
389         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
390         using llvm.
391
392         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
393         'this' is always passed as the first argument, before the vtype ret arg. This
394         simplifies get_this_arg_reg () and LLVM integration.
395
396         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
397         the latest changes.
398
399         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
400         these trampolines.
401
402         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
403
404         * mini-llvm.c: Fix compilation with llvm 2.6.
405
406         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
407
408         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
409         defined.
410
411         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
412         is always passed as the first argument, before the vtype ret arg. This simplifies
413         get_this_arg_reg () and LLVM integration.
414
415 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
416
417         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
418
419         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
420         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
421         translate into much nicer code.
422
423 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
424
425         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
426         parameter index information. Use this to simplify a lot of code.
427
428         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
429
430 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
431
432         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
433         to fix infinite generic recursion. Fixes #612702.
434
435 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
436
437         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
438         imt trampoline per imt slot when using LLVM.
439
440 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
441
442         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
443
444 2010-06-09  Levi Bard  <levi@unity3d.com>
445
446         * debugger-agent.c: Clear unloaded types on appdomain unload.
447
448 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
449
450         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
451         Fixes #612206.
452
453         * exceptions.cs: Add a test.
454
455 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
456
457         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
458
459         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
460
461         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
462         so it doesn't have to do it.
463
464         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
465         process does not mix with ours.
466
467         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
468         ones.
469
470         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
471         loads/stores which can throw exceptions inside clauses.
472
473 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
474
475         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
476         one ENDFINALLY.
477
478         * mini.c (mini_init): Register mono_resume_unwind as an icall.
479
480 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
481
482         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
483
484         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
485         locals.
486
487 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
488
489         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
490         appdomain.
491
492 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
493
494         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
495         Use a separate generic class init trampoline for llvm, since it needs a different
496         signature.
497
498         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
499         includes the location of this/rgctx.
500
501         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
502         branch.
503
504 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
505
506         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
507
508         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
509         clause.
510
511 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
512
513         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
514         says so.
515
516         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
517
518         * aot-compiler.c (patch_to_string): New debugging helper function.
519
520 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
521
522         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
523         trampoline.
524
525         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
526
527         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
528
529         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
530
531         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
532         clauses.
533
534         * mini.c (create_jit_info): Print EH clause info for LLVM too.
535
536 2010-05-28  Mark Probst  <mark.probst@gmail.com>
537
538         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
539         cpobj with reference types.
540
541 2010-05-28  Mark Probst  <mark.probst@gmail.com>
542
543         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
544         write barrier for reference types.
545
546 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
547
548         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
549         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
550
551 2010-05-31  Martin Baulig  <martin@ximian.com>
552
553         Fix #608271.
554
555         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
556         clear_breakpoint() on all breakpoint events and remove them from the list.
557
558 2010-05-27  Martin Baulig  <martin@ximian.com>
559
560         Fix #605698.
561
562         * debugger-agent.c (method_commands, type_commands): Temporarily
563         set the appdomain while executing this method; do all metadata
564         calls in the debuggee's appdomain where user assemblies are loaded.
565
566 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
567
568         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
569
570 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
571
572         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
573
574 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
575
576         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
577         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
578         be referenced even after the header is freed.
579
580         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
581         section.
582
583 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
584
585 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
586
587         * genmdesc.c (main): Fixing the detection of the nacl switch.
588
589         Code is contributed under MIT/X11 license.
590
591 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
592
593         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
594
595         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
596
597         * mini.h (LLVM_CHECK_VERSION): New helper macro.
598
599 2010-05-25  Miguel de Icaza  <miguel@novell.com>
600
601         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
602         the Perl program
603
604         * genmdesc.c: Added support for nacl: key on the machine
605         description files to support the extra space required by Google
606         Native Client.
607
608 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
609
610         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
611
612 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
613
614         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
615         mono_runtime_class_init_full ().
616         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
617
618 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
619
620         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
621
622 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
623
624         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
625         two are not the same on ilp32.
626
627 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
628
629         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
630         added by mistake.
631
632         * mini-ppc.c: Fix the DISABLE_JIT build.
633
634 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
635
636         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
637         (make_writable): Remove this unused function.
638
639 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
640
641         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
642         structure. Make the labels to plt entries local symbols instead of assembler local
643         labels, since tha latter causes problems for the iphone linker.
644
645 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
646
647         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
648
649 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
650
651         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
652         (ppc_patch_full): Ditto.
653
654         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
655
656         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
657         if gshared is enabled, to avoid asserts in the trampoline code.
658
659         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
660         on ia64.
661
662 2010-05-15  Geoff Norton  <gnorton@novell.com>
663
664         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
665         xdebug mode.
666
667 2010-05-14  Geoff Norton  <gnorton@novell.com>
668
669         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
670         misaligned stack on darwin.
671
672 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
673
674         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
675         arm.
676
677 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
678
679         * xdebug.c: Fix ARM support.
680
681 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
682
683         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
684         and do most of the work on the normal stack.
685         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
686
687 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
688
689         * aot-compiler.c: Put non-code data into the .rodata section on linux.
690
691 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
692
693         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
694
695 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
696
697         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
698         and do most of the work on the normal stack.
699
700 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
701
702         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
703         and do most of the work on the normal stack even if sigaltstack is disabled.
704
705 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
706
707         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
708         UCONTEXT_REG_ constants are available on linux as well.
709         (mono_arch_monoctx_to_sigctx): Ditto.
710         (mono_arch_ip_from_context): Ditto.
711
712 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
713
714         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
715         other domains.
716
717 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
718
719         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
720         no longer needed.
721
722 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
723
724         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
725         if a breakpoint cannot be inserted.
726
727 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
728
729         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
730
731 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
732
733         * debugger-agent.c (frame_commands): Return an error instead of asserting if
734         no JIT info is found for the method.
735
736 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
737
738         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
739         in debug printf.
740
741 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
742
743         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
744         a list of arch specific trampolines.
745
746         * aot-compiler.c (emit_trampolines): Use it.
747
748 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
749
750         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
751         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
752         get rid of the _full from their name.
753
754 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
755
756         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
757         get_nullified_class_init_trampoline to remove some code duplication.
758
759 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
760
761         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
762         attach.
763
764 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
765
766         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
767
768         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
769
770         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
771         there is no need to jump through the first plt entry.
772
773         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
774
775         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
776         arch-specific function.
777         (mono_aot_get_plt_info_offset): Ditto.
778
779         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
780         mono_arch_init () to register jit icalls called from full-aot trampolines.
781         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
782         to mini-<ARCH>.c.
783
784         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
785         the specialized throw corlib exception trampoline, use a variant of the normal
786         trampoline along with a new C function which does the call to
787         mono_exception_from_token (), just like on x86.
788
789 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
790
791         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
792         Reorganize the full aot trampoline creation functions, instead of taking a bunch
793         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
794         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
795         creation functions on architectures which have the full-aot ones.
796
797 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
798
799         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
800
801 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
802
803         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
804         explicitly, this seems to be required by some gcc versions at -O2.
805
806         * mini-arm.c: Ditto.
807
808 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
809
810         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
811         has_target delegate invokes.
812
813 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
814
815         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
816         info fields.
817
818         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
819         add patches/unwind info arguments, move to mini.c.
820
821         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
822
823 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
824
825         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
826         command which returns full path names.
827
828 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
829
830         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
831         code_size output variable.
832
833         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
834         mono_get_lmf_addr.
835         
836 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
837
838         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
839         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
840         (mono_arch_cpu_enumerate_simd_versions): Ditto.
841
842 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
843
844         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
845         apple assembler.
846
847 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
848
849         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
850
851 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
852
853         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
854
855 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
856
857         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
858
859 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
860
861         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
862         line number support works with eglib.
863
864 2010-04-27  Miguel de Icaza  <miguel@novell.com>
865
866         * driver.c, mini.c: Since linking with LLVM makes the default Mono
867         dirty an extra 70kb pages on startup we are now going to choose a
868         different strategy: ship mono and mono-llvm binaries, with the
869         second being the one that links with LLVM and defaults to LLVM
870         being enabled.
871
872 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
873
874         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
875         Implement full-aot support on x86.
876
877         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
878         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
879         the first register returned by get_global_int_regs ().
880
881         * cpu-x86.md: Fix the length of insertx_u1_slow.
882
883         * iltests.il.in: Disable tail call tests when running with full-aot.
884
885 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
886
887         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
888
889 2010-04-24  Mark Probst  <mark.probst@gmail.com>
890
891         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
892         in the initializer, because it's non-constant.
893
894 2010-04-23  Miguel de Icaza  <miguel@novell.com>
895
896         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
897         of LLVM on by default.   Used for buildbots and other setups.
898
899 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
900
901         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
902
903 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
904
905         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
906         initonly static fields when using moving GC.
907
908         Contributed under MIT/X11 license.
909
910 2010-04-23  Geoff Norton  <gnorton@novell.com>
911
912         * mini-amd64.h: Darwin x86_64 support.
913
914 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
915
916         * exceptions-arm.c: Remove platform checks in favor of configure checks.
917
918 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
919
920         * exceptions-arm.c: Add Android support for sigcontext structure.
921
922 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
923
924         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
925         wrappers correctly now that their wrapper info is NULL.
926
927 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
928
929         * mini.c (mono_jit_compile_method_inner): Avoid calling
930         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
931
932 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
933
934         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
935         so the latter can be #ifndef DISABLE_JIT-ed.
936
937         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
938
939 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
940
941         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
942
943 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
944
945         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
946         stack.
947
948 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
949
950         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
951         calling mono_class_num_methods (). Fixes #592244.
952
953 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
954
955         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
956
957         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
958
959 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
960
961         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
962         version.
963         * (handle_alloc): Ditto.
964         (mono_method_to_ir): Remove the constrained call restriction added by a previous
965         change, its not needed anymore.
966
967 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
968
969         * mini-posix.c (sigusr1_signal_handler): Fix build on
970         non x86/amd64 systems.
971
972 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
973
974         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
975         calls where the constrained class needs a context. Fixes #595863.
976
977         * iltests.il.in: Add a test.
978
979 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
980
981         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
982         2.6/SVN seems to have broken support for them.
983
984 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
985
986         * mini-llvm.c: Fix support for LLVM 2.6.
987
988 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
989
990         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
991         MonoInternalThread belonging to the thread.
992
993 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
994
995         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
996         unsafe optimization that will remove bound checks.
997
998 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
999
1000         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
1001         CompareExchange not to be inlined for I8.
1002
1003         Contributed under MIT/X11 license.
1004
1005 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1006
1007         * array.cs: Add tests for cast between primitive array types.
1008
1009 2010-04-07 Andreia Gaita  <avidigal@novell.com>
1010
1011         * Makefile.am: create a convenience library for moon to link with
1012
1013 2010-04-07 Paolo Molaro <lupus@ximian.com>
1014
1015         * method-to-ir.c: optimize array accesses from generic interfaces.
1016
1017 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
1018
1019         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
1020
1021 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1022
1023         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
1024         of marshalbyref classes.
1025
1026         Fixes #515884.
1027
1028 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1029
1030         * aot-compiler.c (emit_exception_debug_info): Encode try holes
1031         information.
1032
1033         * aot-runtime.c (decode_exception_debug_info): Decode try holes
1034         information.
1035
1036         * mini.h: Increase AOT version.
1037
1038 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
1039
1040         * mini-x86.h: Only enable soft debugger when using sigaction or on
1041         Windows. Fixes build on Haiku (lacks siginfo_t).
1042
1043         Code is contributed under MIT/X11 license.
1044
1045 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
1046
1047         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
1048         BeOS-style signal handlers.
1049
1050         Code is contributed under MIT/X11 license.
1051         
1052 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1053
1054         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
1055
1056 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
1057
1058         * mini-exceptions.c: Fix win32 build.
1059
1060 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1061
1062         * mini.c, driver.c: Call mono_gc_base_init() before
1063         mono_debug_init().
1064
1065 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1066
1067         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
1068         call_method]): Delegate the actual work in security-core-clr.c
1069         to ease code sharing.
1070
1071 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1072
1073         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
1074         float conv.ovf.un opcodes are encountered, instead of asserting later.
1075         Fixes #566296.
1076
1077 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1078
1079         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
1080
1081         * iltests.il.in: Add a test.
1082
1083 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1084
1085         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
1086         large. Fixes #567040.
1087
1088         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
1089
1090 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1091
1092         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
1093         #592711.
1094
1095 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
1096
1097         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
1098         mono_create_handler_block_trampoline with the proper #ifdef so that it
1099         compiles on amd64.
1100
1101 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1102
1103         * mini-exceptions.c: Introduce mono_walk_stack_full, which
1104         allows to select if it's new or old context that is passed to 
1105         the callback.
1106
1107         * mini-exceptions.c (mono_handle_exception_internal): Handle the
1108         case when executing a guarded handler from the EH machinery.
1109
1110         * mini-exceptions.c (mono_install_handler_block_guard): New function
1111         responsible for checking for handler blocks, installing the guard and
1112         clearing abort state.
1113
1114         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
1115         to check for handler blocks and skip interruption logic if one was found.
1116
1117         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
1118         by the handler block guard trampoline. Resumes interruption by raising the
1119         pending ThreadAbortException.
1120
1121         * mini.c (create_jit_info): Calculate the end address of a finally block.
1122
1123         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
1124         of a finally block to a specified address and return the old one.
1125
1126         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
1127         trampoline patches the original return address and calls the trampoline function.
1128
1129 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1130
1131         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
1132
1133         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
1134         does the patching if the callee is in the same domain.
1135
1136         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
1137         of mono_arch_patch_plt_entry ().
1138
1139 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1140
1141         * mini.c (create_jit_info): Fix try block hole length encoding.
1142
1143 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1144
1145         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
1146         duplicate information and print offsets instead of absolute addresses.
1147
1148 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
1149
1150         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
1151         event is sent. Fixes #591733.
1152
1153 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1154
1155         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
1156         OpenBSD.
1157
1158 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1159
1160         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
1161         thread_to_tls hash table.
1162
1163         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
1164         section. Fixes #591000.
1165
1166 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
1167
1168         * Makefile.am (version.h): Check for pure .git directory only,
1169         fixes SVN revision when using git without git-svn.
1170
1171         Contributed under MIT/X11 license.
1172
1173 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1174
1175         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
1176
1177 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1178
1179         * basic-simd.cs: Test for vector x scalar binary operators.
1180
1181 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1182
1183         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1184         intrinsics with expanded scalar arguments.
1185
1186 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1187
1188         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1189         don't have an exception class, so don't decode it. This would crash
1190         with filter clauses.
1191
1192 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1193
1194         Make sure that trunk builds with DISABLE_JIT, an update to the
1195         PlayStation 3 port.
1196         
1197         * mini.c (mini_get_shared_method): this code seems to be necessary
1198         regardless of whether DISABLE_JIT has been defined.
1199
1200         (mono_jit_compile_method_inner): it seems that this method is
1201         required even in full AOT mode, so ifdef out only the pieces that
1202         try to genrate code (the body of code that applies patches to the
1203         code).  
1204
1205         (mini_method_compile): do not compile when using DISABLE_JIT.
1206
1207         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1208         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1209         compile when DISABLE_JIT is set.
1210
1211 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1212
1213         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1214         arch really supports it.
1215
1216 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1217
1218         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1219
1220 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1221
1222         * exceptions-s390x.c: Add support for
1223         mono_arch_get_throw_corlib_exception and fix throw by name.
1224
1225         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1226         logic (especially for varargs); Correct localloc sizing; Add
1227         mono_arch_get_this_arg_from_call and
1228         mono_arch_get_this_arg_from_call.
1229
1230         * mini-s390x.h: Add support for facility list extraction;
1231         Correct/update MONO_ARCH_xxx settings.
1232
1233         * mini-s390.c: Minor corrections to instruction output for
1234         varargs. No IMT implementation - I think it's time to deprecate
1235         s390 and just leave s390x.
1236
1237         * tramp-s390x.c: Correct creation of trampoline instruction
1238
1239
1240         * cpu-s390x.md: Update some instruction lengths
1241
1242 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1243
1244         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1245         can be hit with partial sharing.
1246
1247         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1248         in non-shared classes correctly.
1249         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1250         Turn on partial sharing.
1251
1252 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1253
1254         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1255         by mistake.
1256
1257 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1258
1259         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1260         mono_method_signature ().
1261
1262         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1263
1264         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1265         error checking, so later calls do not need error checking.
1266
1267 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1268
1269         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1270
1271         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1272
1273 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1274
1275         * mini-exceptions.c (mono_handle_exception_internal): Don't
1276         check try_end for archs different than s390. 
1277
1278         * mini.c (create_jit_info): Don't crash if the finallt block is the
1279         last one.
1280
1281 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1282
1283         * driver.c (mono_main): Don't free global codeman under linux since
1284         glic now peeks at code on stack for more archs than just amd64.
1285
1286 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1287
1288         * mini.c, method-to-ir.c: changes to support compressed interface
1289         bitmaps.
1290
1291 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1292
1293         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1294         Use sigaction on OpenBSD too.
1295
1296 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1297
1298         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1299
1300 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1301
1302         * debugger-agent.c: #include sys/select.h for fd_set.
1303
1304         Code is contributed under MIT/X11 license.
1305
1306 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1307
1308         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1309         (openbsd+amd64 ?).
1310
1311 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1312
1313         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1314         some large methods with lots of exception handlers. Fixes #440924.
1315
1316 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1317
1318         * method-to-ir.c: remove code duplication for interface checks.
1319
1320 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1321
1322         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1323         (assembly_unload): Clear all event requests referencing the to-be unloaded
1324         assembly.
1325
1326
1327 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1328
1329         * mini.h, mini-exceptions.c: restore the state of the stack
1330         guard page permissions.
1331
1332 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1333
1334         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1335         call site patching code, it doesn't appear to be needed.
1336
1337 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1338
1339         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1340         sharing generic methods whose type arguments are a mix of reference and
1341         non-reference types. Not yet turned on.
1342
1343         * mini.c (mini_get_shared_method): New helper function to return
1344         the method which will be compiled/registered in the JIT tables when doing
1345         generic sharing.
1346         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1347         use mini_get_shared_method ().
1348
1349         * mini.c (mini_method_compile): Register the same method which is compiled when
1350         doing generic sharing.
1351
1352         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1353
1354         * generics.cs: Add partial sharing tests.
1355
1356 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1357
1358         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1359                    Add an enum value that or's all possable values together. Add an enum value
1360                    that marks the end of the used bit indexes.
1361
1362         * mini-amd64.c : Make changes to match the changes in mini.h 
1363
1364         * mini-x86.c : Make changes to match the changes in mini.h
1365
1366         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1367                    simd_version to support more simd versions. Changed the name of
1368                    simd_version to simd_version_flags to make it more intuitive that
1369                    it now contains bit flags. Reordered the *_intrinsics arrays to
1370                    match the changes above. Changed emit_intrinsics() to use the new
1371                    setup mentioned above.
1372
1373         Code is contributed under MIT/X11 license.
1374
1375 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1376
1377         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1378         remaining archs. Alpha and hppa maintainers, please stand up.
1379
1380 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1381
1382         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1383         is needed even when fail_tramp!=NULL.
1384
1385 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1386
1387         * debugger-agent.c (insert_breakpoint): Write a log message.
1388
1389 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1390
1391         * iltests.il.in: Add a few tests for LEAVE going over multiple
1392         finally clauses.
1393
1394 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1395
1396          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1397
1398 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1399
1400         * mini.h (MonoBasicBlock): Add native_length field.
1401         * mini.h (MonoCompile): Add try_block_holes field.
1402         * mini.h (MonoInst): Add exception_clause pointer to
1403         the data union.
1404
1405         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1406         * mini.c (mono_cfg_add_try_hole): New function to register possible
1407         holes in try blocks.
1408         * mini.c (create_jit_info): Fill in the holes information.
1409
1410         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1411         by a try block.
1412
1413         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1414
1415 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1416
1417         * jit-icalls.c: adjusted for the array API changes.
1418
1419 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1420
1421         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1422
1423 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1424
1425         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1426         the 'pending' flag. This fixes support for appdomains too.
1427
1428
1429 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1430
1431         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1432
1433 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1434
1435         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1436         when using LLVM, LLVM generates it itself when needed.
1437
1438         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1439
1440         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1441         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1442         OP_ANDNPS/OP_ANDNPD.
1443
1444 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1445
1446         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1447         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1448         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1449
1450 2010-03-11  Martin Baulig  <martin@ximian.com>
1451
1452         * debugger-agent.c (type_commands): Add NULL check to
1453         `CMD_TYPE_GET_SOURCE_FILES'.
1454
1455 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1456
1457         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1458
1459 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1460
1461         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1462         #586664.
1463
1464         * iltests.il.in: Add a test.
1465
1466 2010-03-05  Martin Baulig  <martin@ximian.com>
1467
1468         Add support for aborting invocations.
1469
1470         * debugger-agent.c
1471         (InvokeData): Added `InvokeData *last_invoke'.
1472         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1473         added a new `invoke' field to keep the `InvokeData *' throughout
1474         the invocation.
1475         (ErrorCode): Added `ERR_NO_INVOCATION'.
1476         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1477         (mono_debugger_agent_handle_exception): Don't report any exception
1478         if an abort was requested.
1479         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1480         a thread abort if necessary.
1481         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1482
1483 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1484
1485         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1486         so we can release the whole list and not just the first one. Free
1487         it in more places as well.
1488
1489 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1490
1491         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1492
1493 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1494
1495         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1496
1497 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1498
1499         * driver.c: report also other misc build options.
1500
1501 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1502
1503         * method-to-ir.c: Generate better code for the NewObject
1504         intrinsic.
1505         
1506 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1507
1508         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1509         is disabled. Fixes #582322.
1510
1511         * iltests.il.in: Add a test.
1512
1513 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1514
1515         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1516         the handling of obj->synchronization == null and owner != current thread to
1517         mono_monitor_exit ().
1518
1519         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1520
1521
1522 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1523
1524         * mini.c: change the way emulated opcode info is stored and save about
1525         4 KB of runtime memory.
1526
1527 2010-03-04  David S. Miller  <davem@davemloft.net>
1528
1529        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1530        that don't provide the siginfo in the second signal handler argument
1531        are buggy, and this has been fixed for years.
1532        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1533        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1534
1535 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1536
1537         * aot-runtime.c (find_symbol): Fix a leak.
1538         (decode_patch): Ditto.
1539
1540 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1541
1542         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1543
1544 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1545
1546         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1547
1548 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1549
1550         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1551
1552 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1553
1554         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1555         to check for errors, it's enough to create the metadata open.
1556
1557         Fixes #562150
1558
1559 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1560
1561         * trace.c|h:
1562         * mini-exceptions.c: Add support for printing stack traces when handling
1563         exceptions, and when printing exceptions thrown while tracing also print
1564         the exception message.
1565
1566 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1567
1568         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1569         since the exclude token is a valid string character.
1570
1571 2010-03-02  Levi Bard  <levi@unity3d.com>
1572
1573         * debugger-agent.c: Invalidate thread stacks on domain unload.
1574
1575 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1576
1577         * method-to-ir.c: Emit dummy_use for stored reference after write
1578         barriers to make sure the object is pinned if the GC interrupts
1579         before the write barrier is done.
1580
1581 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1582
1583         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1584
1585 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1586
1587         * debugger-agent.c: Add a log message printing the protocol version.
1588
1589 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1590
1591         * debugger-agent.c: Add a new command to communicate the protocol version used
1592         by the client. This could be used to allow newer runtimes to communicate with
1593         older clients.
1594
1595 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1596
1597         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1598
1599 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1600
1601         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1602         type.
1603
1604 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1605
1606         * mini-arm.c: make the arm cpu arch configurable with the
1607         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1608         Bug #584198.
1609
1610 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1611
1612         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1613         support for the perf tool on Linux.
1614
1615 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1616
1617         * method-to-ir.c: make string.InsertenalSetChar() specialization
1618         effective.
1619
1620 2010-03-01  Robert Jordan  <robertj@gmx.net>
1621
1622         * Makefile.am: fix the non-static build.
1623
1624 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1625
1626         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1627         here.
1628
1629 2010-02-26  Robert Jordan  <robertj@gmx.net>
1630
1631         * tasklets.c (continuation_store): Return from an error condition
1632         immediately.
1633
1634 2010-02-26  Martin Baulig  <martin@ximian.com>
1635
1636         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1637
1638         * debug-mini.c
1639         (MonoDebuggerThreadInfo): Added `internal_flags'.
1640         (MonoDebuggerInternalThreadFlags): New enum.
1641         (_mono_debugger_throw_exception): Don't signal the debugger if a
1642         type abort was requested.
1643         (_mono_debugger_unhandled_exception): Likewise.
1644         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1645         (mono_debugger_runtime_invoke): If the debugger requested a thread
1646         abort during the invocation, reset it here.
1647
1648 2010-02-26  Martin Baulig  <martin@ximian.com>
1649
1650         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1651         instead of `MonoThread *'.
1652
1653 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1654
1655         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1656         code offsets table, as it is mostly sorted.
1657
1658 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1659
1660         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1661         Fixes #582991.
1662
1663 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1664
1665         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1666
1667 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1668
1669         * Makefile.am: build the new ABI version of the libmono library.
1670         * debugger-agent.c, mini.c: fix warnings with the new API.
1671         * jit.h: don't depend on glib.h being included.
1672
1673 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1674
1675         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1676
1677 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1678
1679         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1680         ThreadStatic variables.
1681
1682 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1683
1684         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1685         data is not freed yet. Fixes #582460.
1686
1687 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1688
1689         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1690         event requests. Bump protocol minor version.
1691
1692 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1693
1694         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1695
1696 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1697
1698         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1699         #581950.
1700
1701         * iltests.il.in: Add a test.
1702
1703 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1704
1705         * mini.c (inline_method): Check for loader errors.
1706
1707 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1708
1709         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1710         instead of mono_method_get_header as it doesn't decode locals
1711         so the called method can have unresolved dependencies that will only
1712         be satisfied after the current method is JIT'd.
1713
1714         Fixes #550968.
1715
1716 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1717
1718         * basic.cs (test_0_div_opt): Speed this up a bit.
1719
1720 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1721
1722         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1723
1724         * mini.c (mono_jit_create_remoting_trampoline): Call
1725         mono_create_specific_trampoline () instead of
1726         mono_arch_create_specific_trampoline ().
1727
1728         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1729
1730 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1731
1732         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1733         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1734
1735         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1736
1737         * mini-amd64.c: Fix DISABLE_JIT support.
1738
1739 2010-02-20  Geoff Norton  <gnorton@novell.com>
1740
1741         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1742
1743 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1744
1745         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1746         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1747         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1748         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1749         handle_exception.
1750
1751 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1752
1753         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1754         edx/ecx too. This is needed to support OP_SEQ_POINT.
1755
1756 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1757
1758         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1759
1760         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1761
1762 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1763
1764         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1765         LLVM+AOT+exceptions, not enabled yet.
1766
1767 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1768
1769         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1770
1771 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1772
1773         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1774         xdebug info for these.
1775
1776         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1777         in a few places.
1778
1779         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1780         not used yet.
1781
1782 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1783
1784         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1785
1786 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1787
1788         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1789         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1790
1791         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1792         for mtouch.
1793
1794 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1795
1796         * debugger-agent.c: handle incomplete reads and EINTR in
1797         recv()/send(). This could have been causing random
1798         disconnections.
1799
1800 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1801
1802         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1803         points.
1804
1805         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1806         so they have small offsets. Fixes #566311.
1807
1808 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1809
1810         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1811
1812 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1813
1814         * mini-amd64.c: Remove the special casing of byref in a few places now that
1815         mini_type_get_underlying_type () handles it.
1816
1817         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1818         by returning native int. Fixes #577984.
1819
1820 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1821
1822         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1823         a macro.
1824
1825         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1826         of putting the clause itself.
1827
1828         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1829
1830 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1831
1832         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1833         might be unaligned.
1834
1835 2010-02-10  Geoff Norton  <gnorton@novell.com>
1836
1837         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1838
1839 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1840
1841         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1842         llvm methods too.
1843
1844         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1845         it is not an LLVM generated symbol.
1846
1847         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1848
1849         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1850         implementation in gshared mode because it causes regressions.
1851
1852         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1853
1854         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1855         should be done by the caller.
1856
1857         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1858
1859         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1860
1861         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1862         since mono_jit_info_table_find () doesn't do it anymore.
1863
1864         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1865         instead of mono_jit_info_table_find ().
1866
1867 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1868
1869         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1870
1871         * aot-compiler.c (encode_method_ref): Update after the removal of
1872         mono_gc_get_managed_allocator_type ().
1873
1874         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1875         Fixes #564538.
1876
1877 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1878
1879         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1880         generic params as well.
1881         (handle_isinst): Ditto.
1882
1883         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1884         instead of always calling an icall.
1885
1886         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1887         computing the size of the got.
1888
1889         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1890         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1891         the assembly directive '.set' so it points to the first LLVM emitted method.
1892
1893 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1894
1895         * mini.c (mini_method_verify): Report the method which failed to verify.
1896
1897 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1898
1899         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1900         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1901         runtime MS verifier.
1902
1903 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1904
1905         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1906         #561962.
1907
1908 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1909
1910         * mini-llvm.c: Init the jit module only when first JITting.
1911
1912         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1913
1914         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1915
1916         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1917         replaced with the real got.
1918
1919         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1920
1921         * image-writer.c: Reduce the amount of #ifdefs a bit.
1922
1923         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1924         llvm on darwin/arm.
1925
1926         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1927
1928         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1929         global.
1930
1931 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1932
1933         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
1934         (mono_llvm_emit_method): Fix unaligned stores too.
1935
1936         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
1937         so async stack walks don't crash.
1938
1939 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1940
1941         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
1942         was not patched if the callee needed an rgctx trampoline.
1943
1944 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1945
1946         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
1947         vtable address in AOT code.
1948
1949 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1950
1951         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
1952         MonoInst's.
1953
1954 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
1955
1956         * genmdesc.pl: remove dependency on external cpp.
1957
1958 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1959
1960         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
1961         using LLVM, its not needed, and abcrem can't handle it.
1962
1963 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1964
1965         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
1966         it easier to group instructions and reduce duplication.
1967
1968 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1969
1970         * decompose.c: Move the array/soft float decompose routines here from
1971         method-to-ir.c.
1972
1973         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
1974
1975 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
1976
1977         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
1978         to tell LLVM that the got is constant, not used yet.
1979
1980         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
1981
1982 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1983
1984         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
1985         managed wrappers.
1986
1987 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1988
1989         * aot-compiler.c (add_wrappers): Commit the hack which generates
1990         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
1991         custom attribute.
1992
1993 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1994
1995         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
1996         a fault, only used by the LLVM backend.
1997
1998         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
1999         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
2000
2001         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
2002         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
2003
2004         * mini-llvm.c: Only generate volatile loads from load instructions which have
2005         the MONO_INST_FAULT flag set.
2006
2007 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2008
2009         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
2010         64 bit platforms.
2011
2012 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2013
2014         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
2015         sequence points. Fixes #571236.
2016
2017 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2018
2019         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
2020         end of the appdomain unload process, after assemblies have been unloaded.
2021         Fixes #574842.
2022
2023 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2024
2025         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
2026         works.
2027
2028         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
2029         Fixes #573988.
2030
2031 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
2032
2033         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
2034
2035 2010-01-26  Geoff Norton  <gnorton@novell.com>
2036
2037         * aot-compiler.c: Fix a logic error introduced when guarding against enums
2038         with struct marshalability.
2039
2040 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2041
2042         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
2043         it supports class names as well.
2044
2045         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
2046         needed by the GC map code.
2047
2048         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
2049         flags if needed.
2050
2051         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
2052         if cfg->init_ref_vars is set.
2053
2054         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
2055         cfg->disable_initlocals_op_refs is set.
2056
2057         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
2058         using liveness info if cfg->compute_precise_live_ranges is set.
2059
2060         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
2061         volatile variables correctly. Add comments about the live ranges. Not enabled
2062         yet.
2063
2064 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2065
2066         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
2067         0x2a into them in method prologs.
2068
2069         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
2070
2071 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
2072
2073         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
2074         classes, since llvm is compiled with -fno-rtti.
2075
2076         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
2077
2078         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
2079         llvm does not require it.
2080
2081         * aot-runtime.c (load_method): Print the full name of the last aot method.
2082
2083 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2084
2085         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
2086         thread has not fully started yet.
2087
2088 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2089
2090         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
2091
2092 2010-01-21  Miguel de Icaza  <miguel@novell.com>
2093
2094         * driver.c: Do not abort if LLVM is not supported, print a
2095         warning and add the information to the Mono JIT information.
2096
2097 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2098
2099         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
2100         using explicit null checks.
2101
2102 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2103
2104         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
2105         related code.
2106
2107         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
2108         () in one place.
2109         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
2110         its no longer needed.
2111
2112         * method-to-ir.c (mono_method_to_ir): Fix a warning.
2113
2114         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
2115         define for platforms still using it (s390). Get rid of the
2116         mono_arch_get_throw_exception_by_name () routines on all other platforms.
2117
2118         * exceptions-x86.c: Rework the throw trampolines so there is only one function
2119         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
2120
2121         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
2122         the caller pushed the arguments.
2123
2124         * mini-llvm.c: Enable throwing exceptions on x86.
2125
2126         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
2127         "Thread (nil) may have been prematurely finalized" messages if this is called
2128         on a thread not registered with the runtime.
2129
2130         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
2131
2132 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2133
2134         * jit-icalls.c (mono_array_new_3): New jit icall.
2135
2136         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
2137
2138         * arrays.cs: Add a test for 3 dimensional arrays.
2139
2140 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2141
2142         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
2143         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
2144         used.
2145
2146         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
2147         thrown on x86.
2148
2149         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
2150
2151         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
2152
2153         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
2154
2155 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
2156
2157         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
2158           HOST_WIN32.  Also including winsock2. to define struct in_addr.
2159
2160         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2161
2162         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2163
2164         Code is contributed under MIT/X11 license.
2165
2166 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2167
2168         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
2169
2170         * branch-opts.c (mono_optimize_branches): Honor the new flag.
2171
2172         * mini.c (mini_method_compile): Set the new flag when running under the
2173         debugger.
2174
2175 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2176
2177         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2178         a ref/noref value + a global pin flag, so parts of stack frames can still be
2179         precisely marked even if they include stuff which needs pinning. Improve logging.
2180         Fix many bugs. Not enabled yet.
2181
2182         * gc-test.cs: Add a few tests.
2183
2184         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2185         the normal -v options. Avoid propagating liveness information through bblocks
2186         which end with a NOT_REACHED opcode.
2187
2188         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2189         after cfg has been freed.
2190
2191 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2192
2193         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2194         if a clause is skipped because it uses the exception object, since it could
2195         have caught the exception.
2196
2197         * exceptions.cs: Add a test.
2198
2199 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2200
2201        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2202
2203         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2204         ICollection<T> wrappers.
2205
2206 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2207
2208         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2209
2210 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2211
2212         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2213         NOMAP32BIT or optimize_for_xen is set.
2214
2215 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2216
2217         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2218         mono_metadata_str_hash () instead.
2219
2220 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2221
2222         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2223         sizeof (void*).
2224
2225         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2226
2227 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2228
2229         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2230         flag is set.
2231
2232         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2233         throwing code correctly.
2234
2235         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2236
2237 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2238
2239         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2240         ftnptrs created by us, handle RGCTX_FETCH correctly.
2241         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2242
2243         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2244         ftnptr added by mono_aot_get_named_code ().
2245
2246 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2247
2248         * mini-arm.c: Fix a few LLVM problems.
2249
2250         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2251
2252 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2253
2254         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2255         AOT compiling.
2256
2257 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2258
2259         * jit.h, method-to-ir.c: added ability to set the policy for
2260         inserting breakpoints from the break IL instruction or the
2261         Debugger.Break () API call.
2262
2263 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2264
2265         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2266         assemblies need to be eagerly loaded.
2267
2268 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2269
2270         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2271
2272 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2273
2274         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2275         an argument which matches any exception.
2276
2277 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2278
2279         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2280         optimization if the called method is gshared and marshalbyref, since gshared
2281         methods can' have wrappers. Fixes #569390.
2282
2283         * generics.cs: Add a test.
2284
2285 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2286
2287         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2288         callable from gdb.
2289
2290 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2291
2292         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2293
2294 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2295
2296         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2297         since it is not supported in win2000.
2298
2299 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2300
2301         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2302         error if loading an assembly fails.
2303         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2304
2305         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2306         if exists.
2307
2308         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2309         compiled methods.
2310
2311         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2312
2313         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2314         is not supported yet.
2315
2316         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2317
2318 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2319
2320         * method-to-ir.c: All types with variant arguments must fallback to the
2321         slow path. This makes cast of variant delegates work.
2322
2323         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2324         argument that is set to TRUE is the returned vtable slot is for a variant
2325         interface. Changed a g_print + g_assert_not_reached to a g_error.
2326
2327         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2328         a similar fashion of generic virtual methods.
2329
2330 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2331
2332         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2333         when cfg is null.
2334
2335         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2336         method using a variance aware function.
2337
2338         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2339
2340 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2341
2342         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2343         do an icall for now.
2344
2345 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2346
2347         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2348         If LLVM decides to set the code model to Large, reset it to Default.
2349
2350 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2351
2352         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2353         stripped binaries as well.
2354
2355 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2356
2357         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2358         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2359
2360         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2361         reg.
2362
2363 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2364
2365         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2366         separate function.
2367
2368         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2369         as the type info to llvm.eh.selector.
2370         (exception_cb): Use the type info for filling out some fields of
2371         MonoJitExceptionInfo like the flags and the exception class. This is needed
2372         because the LLVM produced exception handling clauses might not match the original
2373         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2374
2375         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2376         separate function. Add an extra argument which returns the type infos
2377         corresponding to the exception clauses.
2378
2379         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2380         exception handling clauses.
2381
2382 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2383
2384         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2385         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2386         to fix an AOT case.
2387
2388 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2389
2390         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2391         internal assembly.
2392
2393 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2394
2395         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2396         llvm code.
2397
2398 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2399
2400         * mini.c (mini_method_compile): Verify the method before calling
2401         mono_compile_create_vars as this might crash since it uses method
2402         information.
2403
2404         Fixes #560196.
2405
2406 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2407
2408         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2409         one case if AOTing, since the class might not be a concrete class.
2410
2411 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2412
2413         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2414         functions which are now defined in mempool-internals.h.
2415
2416         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2417
2418         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2419
2420 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2421
2422         * mini.c:
2423         * method-to.ir.c:
2424         * mini-*.c: Properly handle generic enums.
2425
2426         Fixes #566294
2427
2428 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2429
2430         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2431         in a few more places.
2432
2433 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2434
2435         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2436         nullable parameters. Fixes #567351.
2437
2438 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2439
2440         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2441
2442 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2443
2444         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2445         mono_get_generic_context_from_code () call.
2446
2447         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2448
2449 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2450
2451         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2452         needed.
2453
2454 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2455
2456         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2457         mono_method_get_signature returns NULL. Fix #567084
2458
2459 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2460
2461         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2462         instead of once for each module.
2463
2464 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2465
2466         * debugger-agent.c (ss_start): Implement step over for the last sequence
2467         point in methods.
2468
2469         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2470         have the STEP_LOC flag set.
2471
2472         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2473         fails. Fixes #566689.
2474
2475 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2476
2477         * mini.c (mono_add_seq_point): New helper function.
2478         (mono_save_seq_point_info): New function to save sequence point info, extracted
2479         from mini_method_compile ().
2480
2481         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2482
2483         * mini.h (MonoSeqPointInfo): New structure containing information about
2484         the sequence points of a JITted method.
2485         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2486         'bucket' field.
2487
2488         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2489         point information is stored, use a MonoSeqPointInfo structure instead of a
2490         GPtrArray. For each seq point, compute a list of successor seq points.
2491
2492         * debugger-agent.c: Use the successor list to implement step-over more
2493         efficiently: instead of single stepping until a different line/IL offset is
2494         reached, place breakpoints into all successor seq points.
2495
2496         * mini.h: Bump AOT file format version.
2497
2498 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2499
2500         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2501
2502         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2503
2504 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2505
2506         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2507         build.
2508
2509 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2510
2511         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2512         alloca as g_malloc is not signal safe.
2513
2514 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2515
2516         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2517         VALGRIND_DISCARD_TRANSLATIONS.
2518
2519         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2520         checks, they are no longer needed.
2521
2522         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2523         a function into a sigctx which can handle function pointers.
2524
2525         * mini-ppc.c: Implement soft debugger support on ppc64.
2526
2527         * mini-ppc.c: Implement soft debugger support.
2528
2529 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2530
2531         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2532
2533 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2534
2535         * mini.c (mono_get_runtime_build_info): include Mono version in
2536         the returned value.
2537
2538         * driver.c (mono_main): VERSION is now included in the string
2539         returned from mono_get_runtime_build_info()
2540
2541 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2542
2543         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2544         signatures. Fixes #565143.
2545
2546         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2547
2548 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2549
2550         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2551
2552 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2553
2554         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2555         making max stack 10x smaller.
2556
2557 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2558
2559         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2560
2561 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2562
2563         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2564
2565 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2566
2567         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2568         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2569
2570         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2571
2572         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2573
2574         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2575
2576         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2577         the compilation.
2578
2579 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2580
2581         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2582         raise an invalid program exception.   
2583
2584         For other opcodes that we might not handle use a g_warning and
2585         raise the exception.   Beats termination.
2586
2587         Fixes #561724
2588
2589 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2590
2591         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2592
2593         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2594         by merging the LLVM and !MAP_32BIT cases.
2595
2596 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2597
2598         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2599         sigctx being passed in, as we have no CONTEXT available in the APC.
2600
2601         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2602         for now.
2603
2604         Code contributed under MIT/X11 license.
2605
2606 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2607
2608         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2609         in the LLVM backend on AMD64.
2610
2611         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2612         FDE.
2613
2614         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2615
2616         * mini-llvm.c: Export mono_personality for AOT.
2617
2618         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2619
2620         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2621         implicit exception can occur.
2622
2623         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2624         OP_IMPLICIT_EXCEPTION instruction.
2625
2626         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2627
2628         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2629
2630         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2631         inside a protected block.
2632
2633         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2634         trampolines doesn't include the argument.
2635
2636         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2637         trampolines on amd64.
2638
2639         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2640         of RDI.
2641
2642         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2643         disabled for methods with clauses.
2644
2645         * mini-llvm.c: Enable support for catch clauses.
2646
2647         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2648         end of an LLVM compiled finally clause.
2649         (mono_handle_exception_internal): Save the exception handling state in TLS
2650         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2651         resume unwinding from that point.
2652
2653         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2654         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2655         to obtain the addresses of the exception handling regions.
2656
2657         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2658         finally clauses are supported.
2659
2660         * mini.c (mini_method_compile): Add support for LLVM code with exception
2661         handlers.
2662
2663 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2664
2665         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2666         proper size.
2667
2668 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2669
2670         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2671         as a primitive type.
2672
2673 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2674
2675         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2676         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2677         #564000.
2678
2679 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2680
2681         * method-to-ir.c (mini_redirect_call): do not redirect the
2682         InternalAllocateStr internal call if string profiling is enabled.
2683
2684 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2685
2686         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2687         generic methods.
2688
2689         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2690         unwind.h header file.
2691
2692         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2693         newer valgrind versions seems to handle this fine.
2694
2695 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2696
2697         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2698         on the debugger thread.
2699
2700 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2701
2702         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2703
2704         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2705
2706         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2707
2708         * cpu-<ARCH>.md: Make call_handler clob:c.
2709
2710         * mini.c: Reenable SSA for methods with clauses.
2711
2712         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2713         as it causes failures on x86.
2714
2715 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2716
2717         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2718         returns NULL (e.g. a bad assembly).
2719
2720 2009-12-08  Geoff Norton  <gnorton@novell.com>
2721
2722         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2723         stepping out into native code.  There were issues with nested invokes
2724         like .cctors.
2725
2726 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2727
2728         * mini.c (mini_method_compile): Do the disable_llvm checks early
2729         and avoid the LLVM compile pass if the checks fail.
2730
2731         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2732
2733         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2734         LLVM optimizations don't try to remove them.
2735
2736         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2737         different file so the original remains.
2738
2739 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2740
2741         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2742
2743         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2744
2745         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2746         support for non-inline unwind descriptors.
2747
2748 2009-12-07  Geoff Norton  <gnorton@novell.com>
2749
2750         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2751         the interrupt_count slightly differently.  Native threads were never
2752         marked as resumed.
2753
2754 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2755
2756         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2757         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2758         yet generate this info.
2759
2760         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2761
2762         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2763         client can distinguish between intptrs and longs.
2764
2765 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2766
2767         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2768         blob.
2769
2770         * aot-runtime.c (load_function): Update after the change above.
2771
2772         * mini.h: Bump AOT file format version.
2773
2774         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2775         if the delegate class is dynamic.
2776
2777         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2778         in gshared code too using the new rgctx info type
2779         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2780
2781 2009-12-04  Geoff Norton  <gnorton@novell.com>
2782
2783         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2784         we need to track the original suspend count so the thread properly
2785         wakes up in resume_thread.
2786
2787 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2788
2789         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2790         code.
2791
2792         * generics.cs: Add a test.
2793
2794         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2795         is 0. Simplify a lot of code using this.
2796
2797         * mini-trampolines.c (mono_delegate_trampoline): Call
2798         mono_create_static_rgctx_trampoline () before saving the final address in
2799         delegate->method_code, to avoid calling it each time a delegate is first called.
2800
2801         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2802         which need static rgctx trampolines.
2803
2804         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2805         keyed on the method+addr pair, since addr could be either the method addr or
2806         an unbox trampoline in the AOT case. Fixes #560246.
2807
2808 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2809
2810         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2811         place it was called before too.
2812
2813 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2814
2815         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2816         if no security manager is present, to speed up the AOT case. Call
2817         mono_class_vtable () full with raise_on_error == TRUE instead.
2818
2819 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2820
2821         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2822         the local optimization passes can take its result into account. Fixes
2823         #559876.
2824
2825         * exceptions.cs: Add a test.
2826
2827 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2828
2829         This patch is contributed under the terms of the MIT/X11 license
2830
2831         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2832
2833 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2834
2835         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2836
2837         * debugger-agent.c: Rework the handling of stack traces of running threads to
2838         avoid crashes if compute_frames () tries to walk the stack of running thread.
2839
2840         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2841
2842         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2843
2844         * mini.h (StackFrameInfo): Add an 'lmf' field.
2845
2846 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2847
2848         * debugger-agent.c (suspend_current): Always set really_suspended.
2849
2850         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2851
2852         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2853
2854 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2855
2856         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2857         really suspended.
2858
2859 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2860
2861         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2862
2863 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2864
2865         * mini-trampolines.c: Fix MSVC build.
2866
2867 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2868
2869         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2870
2871 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2872
2873         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2874         the instruction following an OP_FCOMPARE is optimized away.
2875
2876 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2877
2878         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2879         emit_autoreg () into this arch-specific function.
2880
2881         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2882         code, it is no longer needed.
2883
2884         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2885
2886         * mini.h: Bump AOT file format version.
2887
2888         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2889         using the sorted_code_offsets array, instead of reading it from the
2890         exception debug info.
2891         (load_method): Call mono_aot_find_jit_info instead of
2892         decode_exception_debug_info ().
2893
2894         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2895         LLVM compiled as a flag.
2896
2897 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2898
2899         * debugger-agent.c (resume_thread): Fix a warning.
2900
2901         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2902         generated.
2903
2904 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2905
2906         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2907         contents to MonoAotFileInfo.
2908
2909 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2910
2911         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2912         Put all binary data into a giant blob, similarly to the way .net assemblies
2913         store binary data. Emit offset tables in a compact form to reduce their size.
2914
2915         * mini.h: Bump AOT file format version.
2916
2917         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2918         places.
2919
2920         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2921         avoid linear searches at runtime.
2922
2923         * aot-runtime.c (find_symbol): Update this to use the hash.
2924
2925         * mini.h: Bump AOT file format version.
2926
2927 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2928
2929         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
2930         container.
2931
2932         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
2933         too.
2934
2935         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
2936         the distribution of got slot types.
2937
2938         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
2939
2940         * method-to-ir.c: Add support for generating explicit null checks.
2941
2942 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2943
2944         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
2945         on a random thread if possible.
2946
2947         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
2948         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
2949         correctly.
2950
2951         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
2952         regs. Pass the real size of the regs array to mono_unwind_frame ().
2953
2954         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
2955         ones instead.
2956
2957 2009-11-24  Geoff Norton  <gnorton@novell.com>
2958
2959         * mini-darwin.c: Work around apple bug rdar://7209349  See
2960         http://openradar.appspot.com/7209349 for details.  Synopsis,
2961         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
2962         never been initialized before.
2963
2964 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2965
2966         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
2967
2968         * mini-arm.c (mono_arm_thumb_supported): New helper function.
2969
2970 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2971
2972         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
2973         OP_SHL_IMM is not 32 bit.
2974
2975 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2976
2977         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
2978
2979 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2980
2981         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
2982         encountered.
2983
2984         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
2985         > 0 since some threads can resume if their resume_count is > 0.
2986         (invoke_method): Avoid reading freed memory.
2987
2988         * debugger-agent.c (process_suspend): Extract the suspend code from
2989         process_single_step_inner () to a separate function. Rework the code to prevent
2990         races between this function and thread interrupts.
2991
2992         * debugger-agent.c (suspend_current): Check the resume_count field instead
2993         of resume_one so suspends+resumes during single threaded invokes work
2994         correctly.
2995
2996 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
2997
2998         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
2999         to make the generated code smaller.
3000
3001         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
3002         sequence generated by recent LLVM versions.
3003
3004         * mini-llvm.c: Add support for a few simple cases which weren't supported
3005         before.
3006
3007         * mini-trampolines.c (mono_magic_trampoline): Don't call
3008         mono_arch_get_vcall_slot () when llvm is enabled.
3009
3010         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
3011
3012         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
3013         into a new function called common_call_trampoline () which is used by the
3014         llvm vcall trampoline as well.
3015
3016         * debugger-agent.c: Implement single threaded invokes.
3017
3018         * debugger-agent.c: Revert change which broke the agent on linux.
3019
3020         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
3021         #557606.
3022
3023         * generics.cs: Add a test.
3024
3025 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
3026
3027         * debugger-agent.c: Fix the cygwin build.
3028
3029 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3030
3031         * cprop.c: Remove this unused file.
3032
3033 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3034
3035         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
3036         #557262.
3037
3038         * basic.cs: Add a test.
3039
3040 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3041
3042         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
3043         in one more place.
3044
3045 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
3046
3047         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
3048         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
3049         it. Use this flag to control llvm related code paths instead of #ifdef
3050         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
3051         AOT code.
3052
3053         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
3054
3055         * mini.h: Bump AOT file format version.
3056
3057         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
3058         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
3059
3060         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
3061         was used as an assembly filter.
3062
3063 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3064
3065         * unwind.c: Fix support for ppc.
3066
3067         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
3068         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
3069
3070 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3071
3072         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
3073         port.
3074         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
3075         added by the ps3 changes.
3076
3077 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3078
3079         * mini-gc.c: Resurrect this, so at least it compiles.
3080
3081         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
3082
3083 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
3084
3085         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
3086         create_event_list () so assembly filters can be used.
3087
3088         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
3089         from the LMF.
3090
3091 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
3092
3093         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
3094         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
3095         is disabled.
3096
3097         * aot-compiler.c (add_generic_instances): Emit instances of common generic
3098         classes for char/bool too.
3099
3100         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
3101
3102         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
3103         used.
3104
3105         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
3106         Fix warnings.
3107
3108 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
3109
3110         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
3111         
3112         Code contributed under MIT/X11 license.
3113
3114 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
3115
3116         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
3117         threads in native code work.
3118
3119         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
3120         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
3121         version.
3122
3123 2009-11-13 Jonathan Chambers <joncham@gmail.com>
3124
3125         * debugger-agent.c: Implementation for Windows platform.
3126
3127         * mini-x86.c: Add support for Windows. Use mono-* synchronization
3128         primitives. Use SEH to implement breakpoints and single stepping.
3129
3130         * mini-x86.h: Enable soft debugger on Windows.
3131
3132         Code contributed under MIT/X11 license.
3133
3134 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3135
3136         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
3137         under XEN. Fixes #522894.
3138
3139         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
3140
3141         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
3142         interface calls in LLVM AOT code.
3143
3144         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
3145         is found.
3146
3147         * mini-llvm.c: Add support for OP_VPHI.
3148
3149         * objects.cs: Add a test.
3150
3151 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3152
3153         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
3154         this is called on the debugger thread.
3155
3156 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
3157
3158         * mini-llvm.c: Add soft-float support.
3159
3160         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
3161         FCALL which returns an R4.
3162
3163         * driver.c (mono_main): Add a missing '\n'.
3164
3165         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
3166         platforms which doesn't support the LLVM IMT trampoline.
3167
3168 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
3169
3170         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
3171
3172         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
3173
3174         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
3175         virtual calls.
3176
3177         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3178
3179 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3180
3181         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3182         Instead of emitting a method_order table, sort the contents of the code_offsets
3183         table and do a binary search in the sorted table. The previous approach doesn't
3184         work with LLVM which emits methods in a arbitrary order.
3185
3186         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3187         in the .eh_frame section in ELF files.
3188
3189         * mini.h: Bump corlib file format version.
3190
3191         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3192
3193         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3194         LDMIA->LDM macro name change.
3195
3196 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3197
3198         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3199         x86.
3200
3201         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3202         SVN.
3203
3204         * aot-compiler.c: Ditto.
3205
3206         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3207         &align to mini_type_stack_size_full ().
3208
3209         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3210
3211         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3212
3213 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3214
3215         * mini-arm.c: Compute the stack space used by arguments using
3216         mini_type_stack_size_full ().
3217
3218 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3219
3220         * optflags-def.h: Remove dead TREEPROP optimization.
3221
3222 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3223
3224         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3225
3226         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3227
3228 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3229
3230         * driver.c (mono_jit_parse_options): New public API function to parse options
3231         as done by the runtime executable.
3232
3233         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3234         when handling named arguments.
3235
3236 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3237
3238         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3239         for passing small vtypes in registers, make the CallInfo structures more
3240         similar to the code on the other platforms.
3241
3242         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3243         the code in the prolog requires it.
3244
3245 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3246
3247         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3248         (koush@koushikdutta.com).
3249
3250         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3251         where the thunk memory should be allocated from. Fixes appdomain unloading
3252         on arm.
3253
3254 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3255
3256         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3257         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3258
3259 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3260
3261         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3262         AOT, as it is not implemented yet.
3263
3264         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3265
3266 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3267
3268         * debugger-agent.c: Fix windows build.
3269
3270 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3271
3272         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3273         after the client connects/disconnects.
3274
3275         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3276         when an exception of a given type is thrown.
3277
3278         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3279         only on an uncaught exception.
3280
3281         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3282
3283         * debugger-agent.c: Add a 'launch' option.
3284
3285 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3286
3287         * debugger-agent.c: Add a 'timeout' option.
3288
3289 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3290
3291         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3292         the JDWP agent.
3293
3294 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3295
3296         * debugger-agent.c (set_breakpoint): Emit a log message.
3297
3298 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3299
3300         * mini-arm.c: Fix the arm build.
3301
3302 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3303
3304         * aot-compiler.c: don't leak the value returned from
3305         mono_type_full_name().
3306
3307 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3308
3309         * debugger-agent.c: defer including mono-mutex.h until we know the
3310         agent is supported.
3311
3312 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3313
3314         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3315         of pthreads directly.
3316
3317         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3318         exception handlers. Pass info argument.
3319
3320         * mini.h: Adjust signatures of soft debugger functions to pass void*
3321         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3322
3323         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3324         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3325         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3326         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3327
3328         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3329
3330         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3331         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3332         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3333         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3334
3335         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3336
3337         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3338
3339         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3340
3341         * mono-semaphore.h: Skeleton implementation for Windows.
3342
3343         Code contributed under MIT/X11 license.
3344
3345 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3346
3347         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3348
3349         Code contributed under MIT/X11 license.
3350
3351 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3352
3353         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3354
3355         Code contributed under MIT/X11 license.
3356
3357 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3358
3359         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3360         debug info to 100 because 10 still slows down gdb too much.
3361
3362         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3363         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3364         them in the wrappers.
3365
3366 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3367
3368         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3369
3370         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3371
3372         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3373         function mono_aot_get_array_helper_from_wrapper ().
3374
3375         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3376         array helper methods.
3377
3378 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3379
3380         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3381         the value was loaded from memory.
3382
3383         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3384         the value was loader from there.
3385
3386         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3387         without constant swizzle.
3388
3389 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3390
3391         * mini-amd64.c: Put soft debugger functions behind a
3392         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3393
3394         * mini-amd64.h: disable the soft debugger in windows.
3395
3396         Code contributed under MIT/X11 license.
3397
3398 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3399
3400         * mini-x86.c: Put soft debugger functions behind a
3401         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3402
3403         Code contributed under MIT/X11 license.
3404
3405 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3406
3407         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3408         to mono_arch_find_jit_info_ext.
3409
3410         Code contributed under MIT/X11 license.
3411
3412 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3413
3414         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3415
3416         * debugger-agent.c: Add support for filtering events by assemblies.
3417
3418         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3419         the agent is not enabled.
3420
3421 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3422
3423         * exceptions-x86.c: hopefully last change to fix the windows build.
3424         This one courtesy of Jonathan Chambers.
3425
3426 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3427
3428         * debugger-agent.c: remove unused function.
3429
3430 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3431
3432         * debugger-agent.c: add #ifdefs for a few header files.
3433         * mini-x86.h: disable the soft debugger in windows.
3434         Step 1 of 2 to make this compile on windows with gcc.
3435
3436 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3437
3438         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3439         as it breaks the build.
3440
3441 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3442
3443         Merge the soft debugger branch.
3444
3445         * debugger-agent.h debugger-agent.c: New files containing the soft
3446         mode debugger module.
3447
3448         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3449         at the appropriate locations.
3450
3451         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3452         opcode.
3453
3454         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3455         enable/disable single stepping.
3456
3457         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3458         which returns all information in a StackFrameInfo structure, and can handle the
3459         LMF frames added by the debugger.
3460
3461         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3462         about an LMF frame.
3463
3464         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3465         walker function which works on a specific thread and passes a StackFrameInfo
3466         structure to its callback.
3467
3468         * mini.c (mini_init): Initialize the debugger agent.
3469
3470         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3471
3472         * mini-ops.h: Add OP_SEQ_POINT opcode.
3473
3474         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3475         arguments to the debugger agent.
3476
3477 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3478
3479         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3480         speed things up.
3481
3482         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3483
3484         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3485
3486         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3487
3488         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3489         if needed.
3490         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3491         sets the IMT argument and makes a virtual call.
3492
3493         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3494
3495 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3496
3497         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3498         the windows build.
3499
3500 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3501
3502         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3503         runtime. Fixes #551228.
3504
3505 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3506
3507         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3508
3509         * basic.cs: Add a test.
3510
3511         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3512         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3513         CONSTRAINED. Fixes #550964.
3514
3515         * generics.cs: Add a test.
3516
3517 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3518
3519         * mini-posix.c (add_signal_handler): Use
3520         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3521
3522 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3523
3524         Contributed under the terms of the MIT/X11 license by
3525         Jerry Maine <crashfourit@gail.com>.
3526
3527         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3528         sse4a for simd intrinsics.
3529
3530         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3531         sse4a for simd intrinsics.
3532
3533 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3534
3535         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3536         instead of inst_p1 which is not the same on ILP32 platforms.
3537
3538 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3539
3540         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3541         not the mscorlib one before calling mono_get_lmf_addr.
3542
3543         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3544         of the ip to the LMF.
3545
3546         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3547         immediate in the op->op_imm optimization.
3548
3549         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3550         understand. VTypes now work, but are not abi compliant, as they are
3551         split into 4 byte parts instead of 8.
3552         (emit_memcpy): Fix the unrolled case to work on the PS3.
3553
3554         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3555
3556         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3557         the default when static linking.
3558
3559         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3560
3561         * aot-compiler.c: Add an autoreg option to automatically register
3562         statically linked aot modules using ELF .ctors.
3563
3564         * genmdesc.pl: Add __ppc64__ to allowed defines.
3565
3566 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3567
3568         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3569         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3570
3571 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3572
3573         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3574
3575 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3576
3577         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3578         which will contain the domain where the method was found.
3579
3580         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3581         mini_jit_info_table_find ().
3582
3583         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3584
3585         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3586
3587 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3588
3589         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3590         set, its not supported yet.
3591
3592 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3593
3594         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3595         iface wrapper is not found.
3596         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3597
3598 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3599
3600         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3601         which have a different name.
3602
3603         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3604         wrappers and Array.GetGenericValueImpl ().
3605
3606         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3607         because of the change above.
3608
3609         * generics.cs: Add a test for full aot + generic array ifaces.
3610
3611 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3612
3613         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3614         that hides the previous one.
3615
3616 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3617
3618         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3619         marshalled. Fixes #541623.
3620
3621 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3622
3623         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3624
3625 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3626
3627         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3628
3629 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3630
3631         * mini-posix.c (sigprof_signal_handler):
3632         Implemented support for building stat call chans in different ways.
3633
3634 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3635
3636         * mini-exceptions.c (mono_find_jit_info):
3637         Also check that a jit info has been found (fixes a profiler crash).
3638
3639 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3640
3641         * mini.c (mono_codegen):
3642         Call mono_profiler_code_buffer_new with correct code address.
3643
3644 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3645
3646         * driver.c (mono_main): Change the date in the copyright.
3647
3648 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3649
3650         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3651         allocator in shared generic code for open classes, because we
3652         can't get those classes' vtables.  We need to make managed
3653         allocators not depend on the vtable at compile-time to solve this.
3654
3655 2009-10-13  Martin Baulig  <martin@ximian.com>
3656
3657         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3658         `const guint8 *trampoline' argument; send both the old and the new
3659         notification.
3660
3661 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3662
3663         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3664         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3665         (can_marshal_struct): Skip structures with auto layout.
3666
3667         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3668
3669 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3670
3671         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3672         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3673         a variable to hold the stack slot used by the int<->float conversion opcodes.
3674
3675         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3676
3677 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3678
3679         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3680         when using full-aot.
3681
3682 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3683
3684         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3685         each instance of Comparer<T>.
3686
3687         * generics.cs: Add a new test.
3688
3689 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3690
3691         * driver.c (parse_debug_options): Add a 'gdb' option.
3692
3693         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3694
3695         * image-writer.c: Add support for emitting the image into a memory buffer.
3696
3697         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3698
3699         * aot-compiler.c: Add support for registering debug info with GDB using the
3700         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3701         MONO_XDEBUG to 'gdb'.
3702
3703 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3704
3705         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3706         gdb mode.
3707
3708 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3709
3710         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3711         can be used to set breakpoints in gdb.
3712
3713         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3714         segment to an absolute address.
3715
3716 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3717
3718         * method-to-ir.c: Use the managed array allocator method if
3719         available.
3720
3721 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3722
3723         * aot-compiler.c : Fix the MSVC builds
3724
3725         Code is contributed under MIT/X11 license.
3726
3727 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3728
3729         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3730         avoid registering 1 symbol file per method with gdb.
3731
3732 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3733
3734         * mini-sparc.c: Fix the handling of enums with base type long.
3735
3736         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3737
3738         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3739         instead of using type->data.klass as the later doesn't work with generics.
3740
3741 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3742
3743         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3744         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3745         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3746         works differently now and we don't handle it in the JIT anymore.
3747
3748         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3749         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3750         the Thread class split.
3751
3752 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3753
3754         * driver.c: Don't run tests with the obsolete treeprop optimization.
3755
3756         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3757         variable volatile. Fixes #541577.
3758
3759         * basic-calls.cs: Add a new test.
3760
3761         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3762
3763 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3764
3765         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3766         work/required with recent iphone sdk versions.
3767
3768         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3769         structures.
3770
3771         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3772         in the VCALL decomposition code.
3773
3774 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3775
3776         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3777
3778         * basic.cs: Add a test.
3779
3780         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3781         generic invokes.
3782
3783         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3784         searches all the domains of the current thread.
3785
3786         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3787
3788 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3789
3790         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3791         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3792
3793         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3794         for non-jit trampolines.
3795
3796         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3797
3798         * aot-compiler.c (add_wrappers): Ditto.
3799
3800         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3801         the size of the param area used by dyn_call to 6 which covers the majority of
3802         methods.
3803
3804         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3805
3806         * mini-arm.c: Implement support for passing/receiving
3807         longs and receiving floats in the dyn_call code.
3808
3809         * mini-amd64.c: Implement support for receiving vtypes in registers in
3810         the dyn_call code.
3811
3812         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3813         the dyn_call code.
3814
3815 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3816
3817         * mini-arm.c (get_call_info): Return more precise information in
3818         ArgInfo->regtype.
3819         (dyn_call_supported): Use the information in CallInfo.
3820
3821         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3822
3823         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3824         code.
3825
3826         * mini-arm.c: Update after the dyn_call api changes.
3827
3828         * mini.c (mini_create_jit_domain_info): Register a destructor function
3829         for the runtime_invoke_hash.
3830
3831         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3832         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3833         this function.
3834         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3835         (dyn_call_supported): Simplify this by using get_call_info ().
3836         (mono_arch_dyn_call_free): New destructor function.
3837
3838         * generics.cs: Remove a printf.
3839
3840         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3841
3842         * mini-arm.c: Add support for enum return values and passing a few arguments
3843         on the stack.
3844         
3845         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3846         dyn invoke.
3847
3848         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3849
3850         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3851         the dynamic invoke wrappers.
3852
3853         * mini-arm.c: Implement OP_DYN_CALL for arm.
3854
3855         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3856         supported by the dynamic runtime invoke wrapper.
3857
3858         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3859         runtime invoke wrapper.
3860
3861         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3862         if possible when running with full-aot.
3863
3864         * mini-ops.h: Add OP_DYN_CALL opcode.
3865
3866         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3867         with dynamic arguments lists similar to libffi.
3868
3869 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3870
3871         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3872         
3873         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3874         to NEWARR.
3875
3876         * iltests.il.in: Add a new test.
3877         
3878 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3879
3880         * aot-compiler.c (add_generic_instances): Add more instances of
3881         GenericEqualityComparer.
3882
3883 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3884
3885         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3886
3887 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3888
3889         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3890         comments on some functions that now can fail.
3891
3892 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3893
3894         * Makefile.am: Add Info.plist to EXTRA_DIST
3895
3896 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3897
3898         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3899         static synchronized wrappers. Fixes #539500.
3900
3901 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3902
3903         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3904         properly.
3905
3906 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3907
3908         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3909         lmf before calling filter clauses as well. Fixes #539550.
3910
3911         * exceptions.cs: Add a test.
3912         
3913 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3914
3915         * aot-compiler.c (add_generic_class): Add instances of
3916         Array.GetGenericValueImpl as well.
3917
3918         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3919         can be tested too.
3920
3921         * generics.cs: Add a fullaot linq test.
3922
3923 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3924
3925         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3926         reg r1 on arm.
3927
3928 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3929
3930         * mini-trampolines.c (mono_delegate_trampoline) : Call
3931           mono_cominterop_get_invoke if the delegate target object
3932           is a COM object.
3933
3934         Code is contributed under MIT/X11 license.
3935
3936 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
3937
3938         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
3939         internal call is defined outside platform code. Reduce code 
3940         duplication with existing [Method|Field]AccessException
3941
3942 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3943
3944         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
3945         if the return value is a small struct passed on regs.
3946
3947 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
3948
3949         * cpu-arm.md mini-arm.c: Remove unused opcodes.
3950
3951         * mini-codegen.c: Enable the cpu description validation for arm.
3952
3953 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
3954
3955         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
3956         test which depends on structs to objects.cs.
3957         
3958         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
3959         require object model related stuff working.
3960
3961         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
3962
3963         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
3964
3965         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
3966         against the instruction metadata in mini-ops.h. amd64 only for now.
3967
3968         * mini-ops.h: Fix some instruction descriptions.
3969
3970         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
3971         unused instructions.
3972
3973 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3974
3975         * exceptions.cs: Add a new test.
3976
3977 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
3978
3979         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
3980
3981 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3982
3983         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
3984         skip empty phi opcodes.
3985         
3986         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
3987         correctly by zero extending after loads. Skip methods containing calls
3988         to the monitor enter/exit trampolines.
3989
3990         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
3991         when calling mono_thread_force_interruption_checkpoint ().
3992
3993         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
3994
3995         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
3996         64 bit thunks.
3997         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
3998
3999         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
4000         bootstrap could run.
4001
4002 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4003
4004         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
4005
4006 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4007
4008         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
4009         of the method to
4010         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4011         LLVM might be very short.
4012
4013         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
4014         in OP_THROW/RETHROW.
4015
4016         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
4017         alignment on osx.
4018
4019 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4020
4021         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
4022         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4023         LLVM might be very short.
4024
4025 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
4026
4027         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
4028         the alignment for the value of sp.
4029
4030 2009-09-01  Geoff Norton  <gnorton@novell.com>
4031
4032         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
4033         managed wrappers in full aot.
4034
4035 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
4036
4037         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
4038
4039 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4040
4041         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
4042
4043 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4044
4045         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
4046
4047         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
4048         saved info.
4049
4050         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4051
4052         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
4053         depend on the info MonoMethodHeader which could be missing in IL stripped
4054         assemblies.
4055
4056 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4057
4058         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
4059         they are only 4 byte aligned.
4060
4061 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
4062
4063         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
4064         was done previously, since using SP causes too many problems.
4065
4066         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
4067         frames without a frame pointer works.
4068
4069         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
4070         global register in methods with calls, since the calls can go through
4071         a static rgctx trampoline which doesn't save it.
4072
4073 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
4074
4075         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
4076
4077 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4078
4079         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
4080
4081 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4082
4083         * method-to-ir.c: Fix warnings for uninitialized variables.
4084
4085 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4086
4087         * mini-exceptions.c:
4088         * aot-compiler.c: Fix printf warnings.
4089
4090 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4091
4092         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
4093         Add GetGenericValueImpl<string>.
4094         
4095         * aot-compiler.c (add_generic_instances): Add instances of
4096         GenericEqualityComparer<T> for primitive types. Only emit the array
4097         wrappers into the mscorlib image.
4098
4099 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
4100
4101         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
4102         the methods_loaded array using amodule->info->nmethods.
4103
4104         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
4105         (MONO_AOT_FILE_VERSION): Bump this.
4106
4107         * aot-compiler.c: Emit more generic instances allowing some parts of linq
4108         to work.
4109
4110         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
4111         MonoJitInfo doesn't belong to its methods aot image.
4112
4113 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
4114
4115         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
4116
4117         * mini-arm.c: Fix warnings.
4118         
4119         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
4120
4121         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
4122         supports it.
4123
4124 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
4125
4126         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
4127         avoid clobbering IP.
4128
4129         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
4130         hold the trampoline argument, so its initial value is available during
4131         debugging.
4132
4133 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4134
4135         * exceptions-arm.c:
4136         * exceptions-hppa.c:
4137         * mini.c:
4138         * exceptions-s390x.c:
4139         * exceptions-mips.c:
4140         * exceptions-ppc.c:
4141         * exceptions-sparc.c:
4142         * exceptions-alpha.c:
4143         * aot-runtime.c:
4144         * mini-trampolines.c:
4145         * exceptions-x86.c:
4146         * exceptions-s390.c: add and use #define's instead of sizeof()
4147         for MonoJitInfo and MonoJitInfoTable.
4148
4149 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4150
4151         * tramp-arm.c:
4152         * tramp-amd64.c:
4153         * tramp-ppc.c:
4154         * tramp-x86.c: use a #define instead of sizeof() for a few
4155         structures that use a zero-length array.
4156
4157 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
4158
4159         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
4160         case when the method is dynamic. Fixes #529238.
4161
4162 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
4163
4164         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
4165         of asserting when a method is JIT compiled in full-aot mode.
4166
4167 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4168         
4169         Contributed under the terms of the MIT/X11 license by
4170         Jerry Maine <crashfourit@gail.com>.
4171         
4172         * fixed wrong dates in changelog.
4173
4174 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4175         
4176         Contributed under the terms of the MIT/X11 license by
4177         Jerry Maine <crashfourit@gail.com>.
4178
4179         * basic-simd.cs: added test for packed double square root.
4180         * cpu-amd64.md: added opcode info for packed double square root.
4181         * cpu-x86.md: added opcode info for packed double square root.
4182         * mini-ops.h: added IR opcode for packed double square root.
4183         * mini-x86.c: added IR to native translation code for packed double square root.
4184         * mini-amd64.c: removed todo for packed double square root.
4185         * simd-intrinsics.c: added method to IR opcode converstion for
4186         packed double square root.
4187
4188 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4189
4190         Contributed under the terms of the MIT/X11 license by
4191         Jerry Maine <crashfourit@gail.com>.
4192
4193         * mini-amd64.c: Added a change to help tell the difference as 
4194         to what perpose the xmm register is being used--mainly to help
4195         with debuging.
4196         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4197         (one used for special cases) xmm registers for both fp
4198         and simd ops. Added define to turn on new feature in the regalloc
4199         that allows fp and simd ops to share the xmm regs happily.
4200         * codegen.c: Added code to detect for which perpose an xmm reg is
4201         being used (fp or simd) and to translate back and forth to the
4202         correct logical reg bank (fp or simd) for 'spill load's.
4203
4204 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4205
4206         Contributed under the terms of the MIT/X11 license by
4207         Jerry Maine <crashfourit@gail.com>.
4208
4209         * basic-simd.cs: Added tests for stressing the regalloc when running with
4210         16 simd regs and when simd and fp ops share the same reg bank.
4211
4212 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4213
4214         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4215         in shared generic code, we might have to look up the class in the
4216         RGCTX.  If we use the class directly, compute its GC descriptor.
4217
4218 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4219
4220         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4221
4222 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4223
4224         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4225         check for errors. Fixed the case when the class with the Main
4226         method is broken.
4227
4228 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4229
4230         Contributed under the terms of the MIT/X11 license by
4231         Jerry Maine <crashfourit@gail.com>.
4232
4233         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4234
4235 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4236
4237         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4238
4239 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4240
4241         * method-to-ir.c: Fix naming of stelem and ldelem.
4242
4243 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4244
4245         * driver.c (main_thread_handler): Check that the assembly loaded
4246         matches the filename when doing AOT.
4247
4248 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4249
4250         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4251         call it anymore.
4252
4253         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4254         utils/mono-sigcontext.h).
4255
4256         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4257         #ifdef.
4258
4259 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4260
4261         * mini.c (mono_codegen):
4262         Call profiler hook to keep track of method code buffers.
4263
4264 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4265
4266         * method-to-ir.c: Invoke write barriers for the
4267         Interlocked.(Compare)Exchange JIT intrinsics.
4268
4269 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4270
4271         * Makefile.am (version.h): Fix issues when built out of tree.
4272         Remove some redundant 'grep's piped through 'sed's.
4273
4274 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4275
4276         This patch is contributed under the terms of the MIT/X11 license
4277
4278         * mini-ppc.c (mono_arch_output_basic_block):
4279         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4280         for bits 32-47 with signed load/store diplacements for bits
4281         48-63.  Use prefered base/offset order for indexed form.
4282         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4283         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4284         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4285         OP_LOADI2_MEMBASE): Same.
4286         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4287         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4288         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4289         indexed form.
4290         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4291         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4292         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4293         OP_LOADI1_MEMINDEX): Same
4294         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4295         OP_STORER8_MEMINDEX): Same
4296         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4297         computations.
4298         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4299         for bits 32-47 with signed load/store diplacements for bits
4300         48-63.  Use prefered base/offset order for indexed form.
4301
4302 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4303
4304 This patch is contributed under the terms of the MIT/X11 license
4305
4306         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4307         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4308         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4309         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4310         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4311         cfg->stack_usage to avoid size warnings.
4312         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4313         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4314         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4315         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4316         to convert.
4317         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4318         after code varible is initialized.
4319         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4320         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4321         (mono_arch_emit_epilog): 
4322         Move Use ppc_load32 for cfg->stack_usage to avoid size
4323         warnings.
4324
4325 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4326
4327         * method-to-ir.c: The write barrier doesn't do the store anymore,
4328         so we have always to emit it.  Also, emit the wbarrier after the
4329         store.
4330
4331 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4332
4333         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4334         for argument count 3 too.
4335
4336 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4337
4338         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4339         the caller handle the exceptions.
4340         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4341         method. Fixes #524498.
4342
4343 2009-07-22  Geoff Norton  <gnorton@novell.com>
4344
4345         * mini-exceptions.c: Fix build on ia64.
4346
4347 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4348
4349         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4350         barriers.
4351
4352 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4353
4354         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4355         code.
4356
4357 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4358
4359         * basic-simd.cs (Main): Pass args to the test driver.
4360
4361 2009-07-20  Geoff Norton  <gnorton@novell.com>
4362
4363         * mini-x86.h: Fix the x86 version guards to use Apple's
4364         properly defined macros.
4365
4366 2009-07-20  Geoff Norton  <gnorton@novell.com>
4367
4368         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4369         aligned access.
4370
4371 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4372
4373         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4374         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4375         the information which is needed for invokes, so only one locking+hash table
4376         lookup is needed.
4377
4378         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4379         
4380         * aot-compiler.c (add_generic_instances): Emit instances of 
4381         GenericComparer<T> for primitive types.
4382
4383 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4384
4385         * mini-posix.c: Fix linux build.
4386
4387 2009-07-19  Geoff Norton  <gnorton@novell.com>
4388
4389         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4390         mono_gdb_render_native_backtraces
4391         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4392         so we implement the sane semantics to the runtime here
4393         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4394         so we need to call it differently (mono_gdb_render_native_backtraces)
4395         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4396         here for default implementations.
4397         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4398         support Apple's weird syscall (SYS_fork) implementation and not busy
4399         loop in abort() on native crashes on OSX anymore.
4400
4401 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4402
4403         * aot-runtime.c (load_method): Change the handling of the
4404         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4405         are used.
4406
4407         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4408
4409 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4410
4411         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4412         seems to break the aot tests.
4413         
4414         * mini.c (mono_patch_info_equal): Fix the handling of 
4415         MONO_PATCH_INFO_RGCTX_FETCH.
4416
4417 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4418
4419         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4420
4421         * mini.c (mono_patch_info_hash): Fix the handling of 
4422         MONO_PATCH_INFO_INTERNAL_METHOD.
4423         (mono_patch_info_equal): Ditto.
4424
4425 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4426
4427         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4428         in a few places.
4429         
4430         * mini-llvm.c: Add some infrastructure for AOT support.
4431
4432 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4433
4434         * mini-llvm-cpp.c: Update to the latest llvm api.
4435         
4436         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4437         option to false to prevent llvm from installing signal handlers which
4438         trip up the gc.
4439         
4440 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4441
4442         * cpu-x86.md:
4443         * cpu-amd64.md: Revert previous change as those instructions
4444         take 2 separate arguments. Remember to read the arch docs more
4445         carefully next time.
4446
4447 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4448
4449         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4450
4451 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4452
4453         * mini-ppc.c: exploit multiple load/store units if available (rest of
4454         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4455         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4456
4457 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4458
4459         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4460         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4461
4462 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4463
4464         * cpu-x86.md: Fix missing clobbering from trancendental simd
4465         ops.
4466
4467         * cpu-amd64.md: Same.
4468
4469 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4470
4471         Contributed under the terms of the MIT/X11 license by
4472         Jerry Maine <crashfourit@gail.com>.
4473
4474         * basic-simd.cs: Added tests for single and doulble indexers.
4475
4476         * cpu-amd64.md: Added simd opcode information.
4477
4478         * mini-amd64.c: Added IR to native simd generation code.
4479         Added simd register names and function that returns them.
4480
4481         * mini-amd64.h: Added marcos to turn on simd code compilation in
4482         amd64. Added max simd register count marco. Added caller/callee
4483         register mask marcos. Added marcos to use simd register bank.
4484
4485         * mini.h: Added helper marco for shufling dwords and simple
4486         floats.
4487
4488 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4489
4490         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4491
4492         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4493
4494         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4495         the length of the native code as well.
4496
4497         * basic-simd.cs: Add a test for #521662.
4498
4499 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4500
4501         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4502
4503 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4504
4505         * mini.c: Register function for getting the IP from a signal
4506         context with metadata.
4507
4508 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4509
4510         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4511         call a generic class init trampoline if needed. Fixes #519336.
4512
4513         * generics.cs: Add a test.
4514         
4515 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4516
4517         * method-to-ir.c: When doing a call which might be remote from
4518         shared generic code to other shared code with open type arguments,
4519         get the remoting invoke wrapper from the RGCTX and do an indirect
4520         call to it.
4521
4522 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4523
4524         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4525         after the unbox trampoline in the full-aot case.
4526
4527 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4528         
4529         * mini.c: Move initialization of jit_mutex before debugger initialization
4530         
4531         to avoid crashes.
4532         
4533         
4534         * Info.plist: added Info.plist and link flag to enable the mono executable
4535         to access other processes. Requires codesigning of the executable to work.
4536         
4537         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4538         
4539         compile on OS X.
4540         
4541
4542 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4543
4544         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4545
4546 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4547
4548         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4549         when the generic instance is an instantiation of a subclass of the
4550         methods class. Fixes #517166.
4551
4552 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4553
4554         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4555         code.
4556
4557         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4558         AOTed code.
4559
4560         * CMakeLists.txt: Add minimal support for installation.
4561
4562 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4563
4564         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4565         determine whenever a method is directly callable to a separate function.
4566
4567         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4568         needed ones as a result of the previous change.
4569
4570         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4571         type of register arrays.
4572
4573         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4574         type of register arrays.
4575
4576 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4577         
4578         Contributed under the terms of the MIT/X11 license by
4579         Jerry Maine <crashfourit@gail.com>.
4580
4581         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4582
4583 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4584
4585         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4586
4587 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4588
4589         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4590         dump of structure return value. Fix some formatting.
4591         * cpu-s390x.md: Fix lengths of instruction sequences.
4592         * mini-s390.c: Minor formatting changes.
4593
4594 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4595
4596         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4597         Use sigaction on freebsd as well.
4598
4599 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4600
4601         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4602         uses #ifdef on it.
4603         
4604         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4605
4606 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4607
4608         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4609
4610 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4611
4612         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4613
4614 2009-06-20  Martin Baulig  <martin@ximian.com>
4615
4616         * debug-mini.c
4617         (MonoDebuggerThreadFlags): New enum typedef.
4618         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4619         (mono_debugger_thread_created): Added `gpointer func' argument;
4620         initialize the new `thread_flags' field.
4621
4622 2009-06-18  Martin Baulig  <martin@ximian.com>
4623
4624         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4625         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4626
4627         * debug-debugger.c
4628         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4629         flag in `MONO_DEBUGGER__info.runtime_info'.
4630
4631         * driver.c
4632         (mono_main): Call mini_debugger_set_attach_ok() if generics
4633         sharing is disabled.
4634
4635 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4636
4637         * aot-compiler.c (add_wrappers): Fix a warning.
4638
4639         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4640         the ppc load/store macro changes.
4641
4642 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4643
4644         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4645
4646         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4647         not just the got symbol.
4648
4649         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4650         on ppc.
4651
4652         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4653         ppc.
4654         
4655         * aot-compiler.c: Remove some fixmes.
4656
4657         * driver.c (mono_main): Print a helpful message when cross-compiling.
4658
4659         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4660
4661         * method-to-ir.c (initialize_array_data): Do the optimization if the
4662         target byte order is little endian, instead of the host byte order.
4663
4664         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4665         wrappers into the mscorlib image, Emit a unique plt symbol for each
4666         image, emit symbols for plt entries.
4667
4668         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4669         a .size directive.
4670         
4671 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4672
4673         * aot-compiler.c (add_wrappers): Avoid calling 
4674         mono_marshal_get_type_info () since it can assert for some types.
4675
4676         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4677         ldtoken are used inside wrappers.
4678
4679         * helpers.c: Add support for prefixing tools with the arch name.
4680
4681         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4682         quantities when using ilp32.
4683
4684         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4685         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4686
4687         * image-writer.c: Use .long on ilp32.
4688
4689         * aot-compiler.c: Use 32 bit loads on ilp32.
4690         
4691 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4692
4693         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4694
4695         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4696
4697         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4698
4699         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4700         second got slot of every aot image.
4701         
4702         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4703         aot on platforms with function pointers.
4704
4705         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4706         support for aot/full aot on ppc/ppc64.
4707         
4708         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4709         arguments which are needed on ppc.
4710
4711         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4712         argument.
4713
4714         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4715         
4716         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4717
4718         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4719
4720         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4721
4722         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4723
4724 2009-06-17  Geoff Norton  <gnorton@novell.com>
4725
4726         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4727
4728 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4729
4730         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4731         to control whenever the dwarf writer is in xdebug or aot mode.
4732         (emit_class_dwarf_info): Use a separate abbrev for structures without
4733         children.
4734
4735         * aot-compiler.c: Pass the appending parameter to 
4736         mono_dwarf_writer_create ().
4737
4738         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4739         falls through to its next bblock. Fixes #513931.
4740
4741         * iltests.il: Add a test.
4742
4743         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4744         infor even if emit_line is FALSE, as the apple linker seems to require it.
4745
4746         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4747
4748         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4749         gcc does.
4750         (emit_fde): Ditto.
4751
4752 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4753
4754         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4755         mips build.
4756
4757 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4758
4759         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4760         'has_call_handler' fields.
4761
4762         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4763
4764         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4765         first bblock if not needed. Fixes #512790.
4766         
4767 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4768
4769         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4770         
4771         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4772         wrappers.
4773
4774         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4775         remoting-invoke-with-check wrappers, which are not needed when running with
4776         full-aot, since it doesn't support remoting.
4777         
4778 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4779
4780         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4781
4782         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4783         method info, it is not used anymore.
4784
4785         * mini.h: Bump AOT file format version.
4786         
4787         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4788         word smaller.
4789
4790         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4791         change above.
4792         
4793         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4794
4795         * mini.h: Bump AOT file format version.
4796         
4797 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4798
4799         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4800         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4801         iphone.
4802
4803         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4804         of CKFINITE and FBGE for VFP.
4805
4806 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4807
4808         * aot-compiler.c: Don't align code to 16 bytes on arm.
4809         
4810         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4811         before the methods they belong to.
4812
4813         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4814         the full-aot case if possible, since the trampoline will be called right 
4815         away.
4816
4817         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4818         trampolines to 1024 after the change above.
4819
4820         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4821         trampoline to save 8 bytes per trampoline.
4822
4823         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4824         change above.
4825
4826 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4827
4828         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4829
4830 2009-06-08  Martin Baulig  <martin@ximian.com>
4831
4832         * debug-mini.c
4833         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4834         (_mono_debugger_throw_exception): Don't make this static.
4835         (_mono_debugger_unhandled_exception): Likewise.
4836         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4837
4838         * debug-mini.c
4839         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4840         (_mono_debugger_throw_exception): Add function prototype.
4841         (_mono_debugger_unhandled_exception): Likewise.
4842
4843         * mini-exceptions.c
4844         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4845         arg; return the first exception handler if the exception is caught
4846         and we're running inside the debugger.
4847         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4848         improve exception handle inside runtime-invoke, check whether the
4849         exception is actually caught in the method being invoked and not
4850         by the runtime-invoke-wrapper.
4851
4852 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4853
4854         * image-writer.c: Improve support for the osx assembler.
4855
4856         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4857         support them.
4858
4859 2009-06-08  Martin Baulig  <martin@ximian.com>
4860
4861         * debug-mini.c
4862         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4863         (_mono_debugger_throw_exception): Don't make this static.
4864         (_mono_debugger_unhandled_exception): Likewise.
4865         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4866
4867         * debug-mini.c
4868         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4869         (_mono_debugger_throw_exception): Add function prototype.
4870         (_mono_debugger_unhandled_exception): Likewise.
4871
4872         * mini-exceptions.c
4873         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4874         arg; return the first exception handler if the exception is caught
4875         and we're running inside the debugger.
4876         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4877         improve exception handle inside runtime-invoke, check whether the
4878         exception is actually caught in the method being invoked and not
4879         by the runtime-invoke-wrapper.
4880
4881 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4882
4883         * image-writer.c (append_subsection): Don't align subsections of the
4884         debug_line section as a workaround.
4885
4886         * dwarfwriter.c: Emit line number info in the AOT case as well.
4887
4888 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4889
4890         This patch is contributed under the terms of the MIT/X11 license
4891
4892        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4893        code_len <= code_size
4894
4895 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4896
4897         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4898
4899 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4900
4901         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4902         invoke wrappers, we now use trampolines instead.
4903
4904 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4905
4906         * mini-darwin.c: The exception thread must not be registered with
4907         the GC.
4908
4909 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4910
4911         * mini-gc.c: Disable the code because it makes SGen crash.
4912
4913 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4914
4915         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4916         instead of asserting.
4917
4918 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4919
4920         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4921         output file after the code has been compiled.
4922
4923 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4924
4925         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4926
4927 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4928
4929         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
4930         entries distinction to simplify the code.
4931
4932         * mini.h: Bump AOT file format version.
4933         
4934 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
4935
4936         * objects.cs: Fix the signature of one of the tests.
4937
4938         * mini.c (mini_create_ftnptr): New helper function, moved here from
4939         object.c.
4940         (mini_get_addr_from_ftnptr): Ditto.
4941         (mini_init): Install the new helpers.
4942
4943 2009-05-28  Martin Baulig  <martin@ximian.com>
4944
4945         Correctly initialize the debugger when embedding Mono.
4946
4947         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
4948         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
4949         see documentation in mini_debug_running_inside_mdb().
4950
4951         * debug-debugger.c
4952         (mini_debug_running_inside_mdb): New function to check whether
4953         we're running inside mdb.
4954
4955         * mini.c (mini_init): Call mini_debugger_init() if we're running
4956         inside the debugger.
4957
4958         * driver.c (mono_main): Moved the call to mini_debugger_init()
4959         into mini_init() to make this work when embedding Mono.
4960
4961         * debug-debugger.c (mini_debugger_init): Warn about duplicate
4962         calls to mini_debugger_init().
4963
4964         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
4965         mono_debugger_main() -> mini_debugger_main() and put them inside a
4966         `MONO_DEBUGGER_SUPPORTED' conditional.
4967
4968 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
4969
4970         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
4971         this is no longer in use.
4972         * mini.h: Same.
4973
4974 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
4975
4976         * mini-sparc.c (add_outarg_load): Fix the sparc build.
4977
4978         * aot-compiler.c (emit_method_code): Always write out C style symbols for
4979         methods.
4980
4981 2009-05-27  Martin Baulig  <martin@ximian.com>
4982
4983 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4984
4985         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
4986         long_conv_to_r_un to 64 bits.
4987
4988         * cpu-x86.md: Increase the instruction size due to the changes.
4989
4990         * iltests.il.in: Add regression test.
4991
4992         Fixes #467201.
4993
4994 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4995
4996         * objects.cs: Move the previous test from basic.cs to here.
4997
4998 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4999
5000         * basic.cs: Add regression test for #506915.
5001
5002 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5003
5004         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
5005         optimization we must check the bb of the first byte of stobj as
5006         it's the only one set in cil_offset_to_bb.
5007
5008         Fixes #506915.  
5009
5010 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
5011
5012         * image-writer.c: Fix pointer directive on ppc64.
5013
5014 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
5015
5016         * image-writer.c (asm_writer_emit_section_change): Avoid using
5017         .bss subsections on ppc too.
5018
5019 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
5020
5021         * image-writer.c: Fix the definition of TARGET_ASM_....
5022         
5023         * image-writer.c: Fix the emission of assembler directives in the last
5024         change.
5025
5026         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
5027         exception throwing code to accomodate ppc64.
5028
5029         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
5030         size to work on ppc64 too.
5031
5032         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
5033         too.
5034
5035         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
5036         the assembler dialect instead of using platform specific defines.
5037
5038 2009-05-22  Geoff Norton  <gnorton@novell.com>
5039
5040         * mini-arm.c (get_call_info): If a structure is split between the stack
5041         and argument registers, we should not advance the stack pointer by the entire
5042         native size, but just by the amount that spilled.
5043
5044 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
5045
5046         * mini-arm.c (get_call_info): Handle structures with alignment requirements
5047         correctly.
5048
5049 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5050
5051         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
5052         wrappers normally.
5053         
5054         * aot-compiler.c (add_extra_method): Fix up the collection of extra
5055         methods so wrapper don't get added twice.
5056         (add_generic_instances): Don't add methods of arrays.
5057
5058         * generics.cs: Mark one test as !FULLAOT.
5059
5060 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5061
5062         * mini-x86.c (emit_move_return_value): Remove unused vars.
5063
5064 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5065
5066         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
5067         decomposing 8 bytes structs into a LCALL.
5068
5069         * mini-x86.c (emit_move_return_value): We no longer push the vtype
5070         pointer for where to store the returned regs.
5071
5072         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
5073         state the concern.
5074
5075         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
5076
5077 2009-05-20  Miguel de Icaza  <miguel@novell.com>
5078
5079         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
5080         without getenv.
5081
5082 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5083
5084         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
5085
5086         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
5087         generics.
5088
5089 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
5090
5091         * local-propagation.c (mono_local_cprop): Avoid local propagation
5092         across paired add/sub if the first instruction dest reg is it's
5093         source reg. For example:
5094
5095         int_add_imm R12 <- R12 [1] clobbers: 1
5096         int_sub_imm R42 <- R12 [1] clobbers: 1
5097
5098         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
5099         maintain the math identify.
5100
5101         Fixes #505375.
5102
5103 2009-05-20  Andreia Gaita  <avidigal@novell.com>
5104
5105         * Makefile.am: avoid going on the network just to get the revision,
5106         use git log instead
5107
5108 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
5109
5110         Fixed estimate for short branches on amd64 (they were off mark, and
5111         enabling call prolog-epilog instrumentations caused assertions).
5112         * mini.h (struct MonoBasicBlock): added max_length field to hold the
5113         estimate for the maximum length of this basic block.
5114         * mini-amd64.c:
5115         - mono_arch_emit_prolog: compute max_length for each basic block
5116           (instead of max_offset), and inflate size estimate also for entry bb
5117           in case of code instrumentation.
5118         - mono_arch_output_basic_block: get rid of "cpos" (the current
5119           estimated "position" in the code), and always use "offset" instead,
5120           which is accurate; at the beginning of the function quickly recompute
5121           max_offset for all the remaining blocks, starting from the current
5122           cfg->code_len (which is correct, and not estimated) and using the
5123           estimated block lengths computed previously.
5124
5125 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
5126
5127         * exceptions-ppc.c: Remove the caching from the trampoline creation 
5128         functions, it is already done in the caller.
5129
5130         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
5131
5132         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
5133         MONO_ARCH_GSHARED_SUPPORTED define.
5134
5135         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
5136
5137         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
5138         function.
5139
5140 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
5141
5142         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
5143         call to mono_marshal_get_rgctx_invoke ().
5144
5145         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
5146         mono_marshal_get_static_rgctx_invoke (), all platforms which support
5147         gshared use the static rgctx trampolines now.
5148         
5149         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
5150         platform supports it.
5151
5152 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5153
5154         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
5155
5156         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
5157
5158 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5159
5160         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
5161
5162         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
5163         for ppc.
5164
5165 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
5166
5167         Made it possible for mono_arch_instrument_epilog to preserve
5168         argument registers, otherwise instrumenting the "epilogue" before
5169         a tail call would clobber them.
5170         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
5171         if like mono_arch_instrument_epilog but with an additional parameter
5172         that states if argument registers must be preserved.
5173         * mini.c: implemented mono_arch_instrument_epilog as a call to
5174         mono_arch_instrument_epilog_full without asking to preserve argument
5175         registers (this makes the existing code work as usual).
5176         * mini-amd64.c:
5177         - mono_arch_instrument_epilog: add parameter to transform it into
5178         mono_arch_instrument_epilog_full, and preserve argument registers
5179         when required.
5180         - mono_arch_output_basic_block, OP_TAILCALL case: call
5181         mono_arch_instrument_epilog_full.
5182         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5183         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5184         only transformed mono_arch_instrument_epilog into
5185         mono_arch_instrument_epilog_full.
5186
5187 2009-05-15  Geoff Norton  <gnorton@novell.com>
5188
5189         * mini-darwin.c: This works on arm now.
5190
5191 2009-05-14  Geoff Norton  <gnorton@novell.com>
5192
5193         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5194         embedding api.
5195
5196 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5197
5198         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5199         label names.
5200
5201         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5202         wrappers during full aot mode correctly.
5203
5204         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5205         methods correctly.
5206
5207         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5208         mono_metadata_type_hash ().
5209
5210 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5211
5212         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5213         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5214         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5215         Removed MONO_INST_BRLABEL from the instruction flags, and the
5216         remaining code that used it, because we do not support branches inside
5217         basic blocks (and branch target labels) anymore.
5218         * Makefile.am: As part of the above cleanup, remove reference to
5219         BURG files which don't exist anymore.
5220
5221 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5222
5223         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5224         osx.
5225
5226         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5227         to use mono_arch_throw_corlib_exception.
5228
5229         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5230         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5231
5232         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5233         domain mempool.
5234
5235         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5236
5237         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5238         for the got to make debugging easier and to avoid confusing it with the
5239         system got.
5240         
5241         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5242         method so a breakpoint can be set when using gdb.
5243
5244 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5245
5246         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5247         on mono_method_get_imt_slot ().
5248
5249         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5250         num_decodes variables.
5251
5252         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5253         change as it doesn't seem to work.
5254         
5255         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5256         wrappers.
5257
5258 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5259
5260         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5261         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5262
5263         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5264         builder when using full aot.
5265
5266         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5267         here, it is already handled.
5268         
5269         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5270         correctly for IMT.
5271
5272         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5273
5274         * mini-arm.h: Enable IMT for full aot.
5275         
5276         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5277         arch doesn't support it.
5278
5279         * mini.c (mini_init): Don't disable IMT for full aot if the
5280         architecture supports it.
5281
5282         * mini.h (MonoAotTrampoline): New enum containing the different types
5283         of 'numerous' trampolines.
5284         (MONO_AOT_FILE_VERSION): Bump this.
5285
5286         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5287         static rgctx trampolines. Add support for full-aot IMT thunks.
5288
5289         * mini-amd64.h: Enable IMT for full aot.
5290
5291         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5292         to exclude tests belonging to a category.
5293
5294         * generics.cs: Mark some tests with a !FULLAOT category.
5295
5296         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5297         generics tests.
5298
5299 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5300
5301         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5302         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5303         (emit_plt): Fix a warning.
5304
5305 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5306
5307         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5308         back into aot-compiler.c to a place where the other functions shared by
5309         the runtime and aot compiler are.
5310         
5311         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5312         as done previously, instead of in MonoAotFileInfo, since pointers might have
5313         alignment requirements.
5314
5315         * mini.h: Bump AOT file format version.
5316
5317 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5318
5319         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5320         that is used at runtime from the aot-compiler.c, this makes it
5321         work on setups that remove the AOT compiler from the output
5322         image. 
5323
5324 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5325
5326         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5327         PPC.
5328
5329         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5330
5331         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5332
5333         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5334         stuff to mono_arch_decompose_long_opts ().
5335         (mono_decompose_opcode): Remove some dead code.
5336
5337 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5338
5339         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5340         cmethod can be null for quite a some reasons.
5341
5342 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5343
5344         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5345
5346 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5347
5348         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5349
5350 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5351
5352         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5353         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5354         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5355         calls returning structures by addr on amd64.
5356
5357         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5358
5359         * iltests.il.in: Restructure the tail call tests a bit.
5360         
5361 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5362
5363         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5364         for virtual methods too.
5365
5366 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5367
5368         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5369         due to regression in verifying System.dll.
5370
5371 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5372
5373         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5374         in dynamic methods.
5375
5376         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5377         instances.
5378
5379         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5380         g_str_hash () which can change.
5381
5382         * driver.c (mini_regression): Disable optimizations not supported by
5383         the cpu. Fixes #500019.
5384
5385         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5386         build.
5387
5388 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5389
5390         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5391         to the latest LLVM code.
5392
5393 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5394
5395         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5396
5397 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5398
5399         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5400         x86/amd64.
5401
5402         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5403         no longer saving offsets, so just save the patch types along with the other
5404         info.
5405         * aot-runtime.c (load_patch_info): Update after the changes to 
5406         encode_patch_list ().
5407         (decode_got_entry): Removed, merged into load_patch_info ().
5408         (is_shared_got_patch): Removed, call the same function from
5409         aot-compiler.c.
5410
5411         * mini.h: Bump aot file format version.
5412         
5413         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5414         half-finished no-dlsym code.
5415
5416         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5417         option.
5418
5419         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5420         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5421
5422 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5423
5424         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5425         buffer length to work with AOT code.
5426
5427         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5428         ldfld/stfld opcodes.
5429
5430         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5431         as it is not used.
5432
5433         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5434
5435         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5436
5437         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5438         LLVM API.
5439
5440         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5441         if needed. Don't decompose long operations when using llvm.
5442
5443 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5444
5445         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5446         PAGESIZE constant.
5447
5448         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5449
5450 2009-05-03  Martin Baulig  <martin@ximian.com>
5451
5452         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5453         mono_debugger_insert_method_breakpoint() since the class init
5454         handler we're inserting at the top of the method already gives us
5455         a notification.
5456
5457 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5458
5459         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5460         to mono_arch_decompose_long_opts () for x86 and arm.
5461
5462 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5463
5464         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5465         TARGET_AMD64 here.
5466
5467 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5468
5469         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5470         JIT code.
5471
5472 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5473
5474         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5475         number of trampolines used in full-aot mode.
5476
5477         * aot-compiler.c: Add an ntrampolines option to set the number of 
5478         trampolines emitted in full-aot mode.
5479
5480 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5481
5482         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5483         a volatile load. Get rid of get_tempname (), llvm assigns names
5484         automatically.
5485
5486         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5487         builder function.
5488
5489         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5490         a value.
5491
5492         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5493         level 1.
5494
5495         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5496         to the same register as a fixed sreg2. Fixes #497271.
5497
5498         * iltests.il.in: Add a new test.
5499
5500 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5501
5502         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5503         stack, since pushes complicate exception handling.
5504
5505         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5506         the stack if they are passed using moves.
5507
5508         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5509
5510         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5511         when using llvm.
5512
5513         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5514         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5515         of FMOVE if it is an R4.
5516
5517 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5518
5519         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5520
5521         * mini.h (LLVMCallInfo): New structure to store calling convention 
5522         information for the LLVM back end similar to the CallInfo structures in 
5523         the back-ends.
5524
5525         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5526         call information in a format usable by LLVM.
5527         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5528
5529         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5530         mono_llvm_emit_call () when compiling using LLVM.
5531
5532         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5533         comments to all functions. Fix memory leaks. Add a public init/cleanup
5534         function.
5535
5536         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5537
5538         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5539         mono_array_new_va () jit icall.
5540         
5541 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5542
5543         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5544         multiple machine description files to be specified.
5545         * mini-ops.h: fixes for cross-compilation.
5546
5547 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5548
5549         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5550         some porting work.
5551
5552 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5553
5554         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5555         to prevent asserts in various passes. Fixes #497220.
5556
5557 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5558
5559         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5560         a racy assert.
5561
5562         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5563         table to avoid duplicates.
5564
5565         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5566         
5567         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5568         option is used.
5569
5570 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5571
5572         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5573         is for method or field access.
5574
5575 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5576
5577         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5578         a Value to stdout.
5579
5580         * mini-llvm.c (mono_llvm_emit_method): Use it.
5581         
5582         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5583         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5584         on volatile values.
5585
5586         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5587         synchronized methods.
5588
5589         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5590
5591         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5592
5593         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5594         OP_LOADI8_MEM.
5595
5596         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5597         allowing some options to be set dynamically.
5598
5599 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5600
5601         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5602         unconditional branch.
5603
5604         * mini.h (MonoTrampolineType): Add new trampoline type 
5605         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5606         compiled code.
5607
5608         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5609         function.
5610
5611         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5612         creation function.
5613
5614         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5615         is enabled. Instead, use the llvm vcall trampoline.
5616         
5617         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5618
5619         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5620         
5621         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5622         functions.
5623
5624         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5625         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5626
5627         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5628         OP_IA64_CSET opcode.
5629
5630         * mini.c: Fix a warning.
5631
5632         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5633         THROW to the appropriate llvm type.
5634
5635 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5636
5637         * mini.c (mini_method_compile): Add statistics for methods JITted
5638         with/without LLVM.
5639
5640 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5641
5642         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5643         OP_IA64_CMP_<cond>_IMM opcodes.
5644
5645 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5646
5647         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5648         corlib exceptions.
5649
5650         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5651         correctly.
5652
5653         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5654         GENERICINST.
5655
5656 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5657
5658         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5659
5660 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5661
5662         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5663         support.
5664
5665         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5666         rgctx invoke trampolines for x86.
5667
5668         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5669         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5670         (mono_arch_get_vcall_slot): Simplify this.
5671
5672 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5673
5674         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5675         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5676
5677 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5678
5679         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5680         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5681
5682         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5683
5684         * liveness.c (visit_bb): Remove a needless assert.
5685
5686 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5687
5688         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5689         full aot support to the arch specific code.
5690
5691         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5692
5693         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5694
5695         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5696         
5697         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5698         collect information about the delegate invoke impl trampolines.
5699
5700         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5701         to save trampolines during full-aot mode.
5702
5703         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5704         creation function which returns a trampoline which sets the rgctx
5705         argument.
5706         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5707         wrapper if possible.
5708         (mono_delegate_trampoline): Ditto.
5709
5710         * mini.c (mono_jit_runtime_invoke): Ditto.
5711
5712         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5713         
5714         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5715
5716         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5717         
5718 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5719
5720         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5721         just setting the opcode to OP_NOP.
5722
5723 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5724
5725         * mini.c (mini_method_compile): Put the last change inside an 
5726         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5727         
5728         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5729         and extend live ranges to cover the whole method when using xdb.
5730
5731         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5732         do it in the trampolines.
5733
5734         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5735         needed.
5736
5737         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5738         
5739         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5740         call code in full-aot mode since IMT is disabled there.
5741         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5742         new JIT no longer has that restriction.
5743
5744         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5745
5746         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5747         a more compact format.
5748         (mono_aot_wrapper_name): New function to return a unique name for a
5749         wrapper method, also used by the AOT runtime.
5750
5751         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5752         aot-compiler.c.
5753
5754         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5755         when a ICollection<T> etc is encountered.
5756         (add_generic_instances): Process method arguments/locals too.
5757         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5758         trampoline names.
5759
5760         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5761         
5762 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5763
5764         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5765
5766         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5767
5768         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5769         representing the result of the decomposition. Nullify instructions
5770         instead of setting them to OP_NOP since nops can't have registers
5771         set.
5772
5773 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5774
5775         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5776         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5777         info. Strip 'mapping symbols' on ARM.
5778
5779         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5780         
5781         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5782         this with the native genmdesc.
5783
5784 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5785
5786         * aot-runtime.c:  Fixing the MSVC build.
5787
5788         Code is contributed under MIT/X11 license.
5789
5790 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5791
5792         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5793         JITted code depends on it.
5794
5795 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5796
5797         * aot-compiler.c: Use new MonoGenericParam accessors.
5798
5799 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5800
5801         Reduce memory usage and improve correctness wrt MonoGenericParam
5802         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5803         handing.  Avoid allocating MonoGenericParams, but use the ones in
5804         the container itself.
5805
5806 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5807
5808         * tasklets.c: Return exceptions in the out argument.
5809
5810 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5811
5812         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5813         opcode. Use pointer types in more places instead of casting them to 
5814         integers.
5815
5816         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5817         optimizations.
5818         (mono_llvm_optimize_method): New helper function to optimize a method.
5819
5820         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5821         widening code so it could be called from more places.
5822         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5823         code paths in the call opcodes.
5824
5825 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5826
5827         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5828
5829 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5830
5831         * dwarfwriter.c: Use _ to separate class name 
5832         components as gdb can't handle '.'. Represent reference variables
5833         as 'class <NAME>&'.
5834         
5835         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5836
5837         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5838         
5839         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5840
5841         * gc-test.cs: New file with GC stack marking tests.
5842         
5843         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5844         negative numbers for vfp.
5845
5846         * basic-float.cs: Add a test.
5847         
5848 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5849
5850         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5851
5852 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5853
5854         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5855         part of tasklet/continuation support.
5856
5857 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5858
5859         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5860         amd64 opcodes inside an ifdef.
5861
5862         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5863         of complex types.
5864         
5865         * dwarfwriter.c (emit_type): Emit the class info for classes.
5866
5867 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5868
5869         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5870
5871         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5872
5873         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5874
5875         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5876
5877 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5878
5879         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5880
5881         * mini-llvm.c: Update comments.
5882
5883         * mini.h (COMPILE_LLVM): New macro.
5884
5885         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5886
5887         * ssa.c (mono_ssa_compute): Ditto.
5888         
5889         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5890         the unwind ops from a DWARF FDE.
5891
5892         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5893         methods by extracting the dwarf unwind ops from the unwind info generated
5894         by LLVM.
5895         
5896         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5897         calls.
5898
5899         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5900         addressing modes.
5901
5902 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5903
5904         * Makefile.am (llvm_sources): Enable this.
5905
5906         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5907         failing back to the JIT if something cannot be handled.
5908
5909         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5910         compiling with LLVM.
5911
5912         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5913         compiling with LLVM.
5914
5915         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5916         compiling with LLVM.
5917
5918         * mini-ops.h: Add a few opcodes needed by LLVM.
5919
5920         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5921         has no unwind info.
5922
5923         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5924         backend.
5925
5926         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5927
5928         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5929
5930 2009-04-01  Mark Probst  <mark.probst@gmail.com>
5931
5932         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
5933         ridiculously large methods.
5934
5935 2009-03-31  Martin Baulig  <martin@ximian.com>
5936
5937         * debug-debugger.c (debugger_remove_breakpoint): Call
5938         mono_debugger_remove_class_init_callback ().
5939
5940 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
5941
5942         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
5943         right before emitting code, not at the start.
5944
5945         * mini.c (mono_postprocess_patches): Extract this into a separate function
5946         from mono_codegen ().
5947
5948         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
5949         byref types correctly.
5950
5951 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
5952
5953         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
5954         by the last change.
5955
5956 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
5957
5958         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
5959         indirect calls, this avoids problems where get_vcall_slot () would get
5960         confused by the native code for the instruction preceeding the call.
5961         (mono_arch_get_vcall_slot): Simplify this.
5962         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
5963
5964         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
5965         register allocator now seems to depend on them instead of the data in
5966         cpu-<ARCH>.md.
5967
5968         * mini.c (mini_method_compile): Throw the correct type of exception if
5969         mono_method_get_header () fails because of a loading error.
5970
5971 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
5972
5973         * mini.c (mini_method_compile): Clear the loader error if the method
5974         header cannot be decoded.
5975
5976         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
5977         interface methods on proxies correctly.
5978
5979         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
5980         this argument for vtype methods. Add precise liveness info for arguments.
5981
5982         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
5983         LIVERANGE_START/END opcodes.
5984
5985         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
5986         for arguments and values in registers.
5987
5988 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
5989
5990         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
5991         return a valuetype. Fixes #487518.
5992
5993         * iltests.il: Add a test.
5994         
5995         * aot-compiler.c: Use mono_thread_create () to create helper threads.
5996
5997         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
5998         closed over a null reference correctly.
5999
6000 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
6001
6002         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
6003
6004 2009-03-25  Mark Probst  <mark.probst@gmail.com>
6005
6006         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
6007         allocated to the same registers as fixed sregs.
6008
6009 2009-03-24  Mark Probst  <mark.probst@gmail.com>
6010
6011         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
6012         ATOMIC_CAS_IMM ops.
6013
6014         * method-to-ir.c: Handle more cases for
6015         Interlocked.CompareExchange.
6016
6017         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
6018         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
6019         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
6020
6021 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
6022
6023         * aot-runtime.c (decode_method_ref): Fix a warning.
6024
6025         * unwind.c (mono_unwind_frame): Ditto.  
6026
6027 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6028
6029         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
6030         (mono_compile_assembly): Enable the binary writer for full-aot as well.
6031
6032         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
6033         fix the handling of large values in the ALU_PC_G0_NC relocation.
6034
6035 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6036
6037         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
6038
6039 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6040
6041         * method-to-ir.c (mono_spill_global_vars): Support for ternary
6042         ops.
6043
6044 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6045
6046         * method-to-ir.c: MINI_OP3 needs a comma.
6047
6048         * method-to-ir.c, mini.h, mini.c: Remove
6049         mono_init_op_sreg_counts ().
6050
6051 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6052
6053         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
6054         OP_JMP.
6055         
6056         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
6057         assertion.
6058
6059         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
6060
6061         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
6062         code somewhat.
6063
6064 2009-03-21  Mark Probst  <mark.probst@gmail.com>
6065
6066         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
6067         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
6068         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
6069         operations.
6070
6071 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
6072
6073         * driver.c: Change location of gc_wrapper.h.
6074
6075         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
6076         inside finally clauses correctly. Fixes #485721.
6077
6078         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
6079         after the change above.
6080
6081         * exceptions.cs: Add a test.
6082         
6083 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6084
6085         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
6086
6087         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
6088         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
6089         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
6090
6091         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
6092         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
6093
6094 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
6095
6096         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
6097         Simplify logic for ensure_method_is_allowed_to_call_method. 
6098         Handle wrappers on callers.
6099
6100 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6101
6102         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
6103         them don't run yet.
6104
6105         * basic-simd.cs: Fix the names of some test methods.
6106
6107 2009-03-18  Geoff Norton  <gnorton@novell.com>
6108
6109         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
6110
6111 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
6112
6113         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
6114
6115 2009-03-17  Jb Evain  <jbevain@novell.com>
6116
6117         * driver.c: remove now uneeded call to mono_gc_base_init before
6118         mono_profiler_load.
6119
6120 2009-03-17  Jb Evain  <jbevain@novell.com>
6121
6122         * dwarfwriter.c (token_handler): handle more cases.
6123
6124 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
6125
6126         * method-to-ir.c: Remove more dead code (that was required only
6127         because of method_is_safe). Fix compiler warnings.
6128
6129 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
6130
6131         * method-to-ir.c: Remove unneeded/useless method_is_safe
6132         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
6133
6134 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
6135
6136         * mini.c (mini_method_compile): Print the method been compiled with
6137         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
6138         for people not familiar with the runtime.
6139
6140 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
6141
6142         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
6143         a managed object which is later put into a GList. Return its class instead.
6144
6145         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
6146         stack slots when using sgen.
6147
6148 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
6149
6150         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
6151
6152 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
6153
6154         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
6155         > so it works on the first vreg as well.
6156
6157 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
6158
6159         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
6160         trigger randomly.
6161
6162         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
6163         
6164         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
6165         implement GArray.
6166
6167 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
6168
6169         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
6170         native->IL offset mapping.
6171
6172 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
6173
6174         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
6175
6176         * basic.cs: Add a test.
6177
6178 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6179
6180         * mini-x86.c (mono_arch_output_basic_block): Use different
6181         registers in case the ones we want to overwrite are used by the
6182         other operand.  Fixes regression in #480807.
6183
6184 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6185
6186         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6187
6188         * dwarfwriter.c (emit_line_number_info): The line number info for
6189         IL code was off by one. Fix that.
6190
6191         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6192         stack.
6193
6194 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6195
6196         Contributed under the terms of the MIT/X11 license by Steven
6197         Munroe <munroesj@us.ibm.com>.
6198
6199         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6200         Fixes #483462.
6201
6202 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6203
6204         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6205         as well.
6206
6207 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6208
6209         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6210         the delegate ctor handling code. Fixes #482638.
6211         
6212         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6213         #481458.
6214
6215         * iltests.il.in: Add a test.
6216         
6217         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6218         mini-posix.c.
6219
6220 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6221
6222         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6223         is shared generic code, return the trampoline, even if the method
6224         has already been compiled.  Fixes #479763.
6225
6226         * mini.c, mini.h: New function
6227         mono_jit_find_compiled_method_with_jit_info() which is the same as
6228         mono_jit_find_compiled_method() but also returns the jit info.
6229
6230 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6231
6232         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6233         for methods which actually have one.  For all other methods, make
6234         sure the this argument var is live the whole method.
6235
6236         * mini.c (mini_method_compile): Every shared method has a
6237         this/vtable/mrgctx info.  Fixes #480807.
6238
6239 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6240
6241         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6242         generic/imt thunks where some entries branch through the vtable,
6243         while other entries branch directly.
6244
6245 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6246
6247         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6248
6249         * mini-windows.c: Ditto.
6250         
6251         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6252         ctors.
6253
6254 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6255
6256         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6257         down an assert.
6258
6259 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6260
6261         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6262         #481403.
6263
6264 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6265
6266         * exceptions-x86.c: Include debug-mini.h - fixes build.
6267
6268 2009-03-04  Martin Baulig  <martin@ximian.com>
6269
6270         * debug-mini.c: Clean up the exception API and add documentation.
6271         (mono_debugger_handle_exception): New public method; this is
6272         called when throwing an exception or encountering an unhandled one.
6273         (mono_debugger_call_exception_handler): Formerly known as
6274         mono_debugger_handle_exception(); this is used to tell the
6275         debugger that we're about to invoke an exception handler.
6276
6277 2009-03-04  Martin Baulig  <martin@ximian.com>
6278
6279         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6280         ../metadata/mono-debug-debugger.c; save and reset exception state.
6281
6282 2009-03-02  Martin Baulig  <martin@ximian.com>
6283
6284         * debug-mini.c: Moved the debugger exception handling here from
6285         ../metadata/mono-debug-debugger.c.
6286
6287         * debug-mini.h
6288         (MonoDebuggerExceptionAction): New exception typedef.
6289
6290         * debug-mini.c
6291         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6292
6293         * exceptions-amd64.c
6294         (mono_amd64_throw_exception): Use the new debugger exception
6295         handling code.
6296
6297         * mini-exceptions.c
6298         (mono_handle_exception_internal): Don't call
6299         mono_debugger_unhandled_exception() here.
6300
6301 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6302
6303         * mini.c aot-compiler.c: Update after the changes to 
6304         mono_marshal_get_runtime_invoke ().
6305
6306         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6307         Virtual generic methods might not have method->slot set, work around
6308         that.
6309
6310         * generics.cs: Add a test.
6311
6312 2009-03-02  Geoff Norton  <gnorton@novell.com>
6313
6314         * mini.c:
6315         * driver.c: Allow signal chaining of SIGFPE as well.
6316
6317 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6318
6319         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6320         this since it now receives the method not its generic context in the
6321         IMT reg.
6322
6323         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6324         generic/imt thunks where some entries branch through the vtable, while
6325         other entries branch directly.
6326
6327         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6328
6329         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6330         support for interface methods as well.
6331
6332         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6333         using the normal IMT thunks.
6334
6335         generics.cs: Add new tests.
6336         
6337         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6338         the generic inst to the generic imt thunks. This fixes AOT support, 
6339         improves consistency with the normal IMT thunks, and makes it easier to
6340         add support for interface generic virtual methods later.
6341
6342         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6343         
6344 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6345
6346         * driver.c (mono_set_signal_chaining): New public API function to enable
6347         signal chaining on POSIX platforms.
6348
6349         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6350         (si@lindenlab.com) to implement signal chaining. The original patch was
6351         contributed under the MIT X/11 license:
6352         https://bugzilla.novell.com/show_bug.cgi?id=318894
6353
6354 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6355
6356         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6357         too until it can be made to run on amd64.
6358
6359 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6360
6361         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6362         to  get_generic_context_from_code () + get_call_info () if possible.
6363
6364 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6365
6366         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6367         suspend-on-sigsegv functionality.
6368
6369         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6370         to suspend when a native SIGSEGV is received. This is useful for debugging
6371         crashes which don't happen under gdb, since a live process contains more
6372         information than a core file.
6373
6374         * mini-exceptions.c (mono_print_thread_dump): Use 
6375         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6376
6377         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6378
6379         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6380         
6381         * basic-float.cs: Disable the tests which currently fail on amd64.
6382
6383         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6384         value to mono_arch_patch_callsite () to fix crashes.
6385         
6386         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6387
6388 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6389
6390         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6391         nop code by patching the call address to point to the nullified class init
6392         trampoline, as the former does not seem to be safe on SMP machines.
6393
6394 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6395
6396         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6397         they were wrong.
6398
6399 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6400
6401         * basic-float.cs basic-calls.cs: Fix warnings.
6402
6403 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6404
6405         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6406         correct frame pointer in the LMF.  Should fix #478394.
6407
6408 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6409
6410         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6411
6412         * image-writer.c: Make the binary writer less verbose.
6413
6414 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6415
6416         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6417         are called from runtime invoke wrappers.
6418
6419 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6420
6421         * cpu-ppc.md (store_memindex): Increase the size of this.
6422
6423 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6424
6425         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6426
6427         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6428
6429         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6430         OP_LCONV_TO_R_UN.
6431
6432         Last fix for of #467201.
6433
6434
6435 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6436
6437         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6438
6439         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6440         and long_conv_to_r8_2:
6441
6442         Fixed part of #467201.
6443
6444 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6445
6446         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6447
6448         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6449         conversion to 32 bits.
6450
6451         * cpu-x86.md: Increase the size of int_conv_to_r4.
6452
6453         * basic-float.cs: Add a test for this.
6454
6455         Fixed part of #467201.
6456
6457 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6458
6459         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6460
6461         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6462         conversion to 64 bits.
6463
6464         * basic-float.cs: Add a test for this.
6465
6466         Fixed part of #467201.
6467
6468 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6469
6470         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6471
6472         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6473         This behavior is compatible with MS.
6474
6475         * iltest.il.in: Add a test for this.
6476
6477         Fixed part of #467201.
6478
6479 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6480
6481         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6482
6483         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6484         change the precision of the value.
6485
6486         * cpu-x86.md: Define len for float_conv_to_r4.
6487
6488         * basic-float.cs: Add a test for this.
6489
6490         Fixed part of #467201.
6491
6492 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6493
6494         * mini.c: Adjust locking order to the new semantics where the loader lock
6495         comes first.
6496
6497 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6498
6499         * aot-runtime.c:
6500         * mini-amd64.c:
6501         * mini-arm.c:
6502         * mini-ia64.c:
6503         * mini-mips.c:
6504         * mini-ppc.c:
6505         * mini-sparc.c:
6506         * mini-trampolines.c:
6507         * mini-x86.c:
6508         * mini.c:
6509         * tramp-alpha.c:
6510         * tramp-amd64.c:
6511         * tramp-arm.c:
6512         * tramp-hppa.c:
6513         * tramp-ia64.c:
6514         * tramp-mips.c:
6515         * tramp-ppc.c:
6516         * tramp-s390.c:
6517         * tramp-s390x.c:
6518         * tramp-sparc.c:
6519         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6520
6521 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6522
6523         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6524         as it is incorrect.
6525
6526 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6527
6528         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6529         for cctors if needed.
6530
6531 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6532
6533         * mini-ppc.c: Fix build on Darwin.
6534
6535 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6536
6537         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6538         version instead of 3 as valgrind doesn't like version 3.
6539
6540         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6541
6542         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6543         usable for hashing methods.
6544         (emit_extra_methods): Use the new hash to avoid putting every method in the
6545         same hash bucket.
6546
6547         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6548
6549         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6550         whenever a method ref could match a method.
6551         
6552         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6553         test to fail.
6554         
6555         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6556         methods refs.
6557
6558         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6559
6560         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6561         the encoding buffer.
6562
6563         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6564         mono_method_get_header () on inflated methods as an optimization.
6565
6566 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6567
6568         * ssa.c (fold_ins): Fix another crash if the instruction following the
6569         switch was optimized away.
6570
6571 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6572
6573         Contributed under the terms of the MIT/X11 license by Steven
6574         Munroe <munroesj@us.ibm.com>.
6575
6576         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6577
6578 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6579
6580         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6581         around the mono_domain_alloc calls, it is now done by the functions
6582         themselves.
6583
6584         * aot-compiler.c (compile_method): Only add wrappers referenced by
6585         the method if compiling with full AOT.
6586         (mono_compile_assembly): Error out if --aot=full is specified on
6587         a platform where it is not supported.
6588
6589         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6590         on ARM too.
6591
6592         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6593         AOT support.
6594
6595         * aot-runtime.c (load_named_code): Handle 
6596         mono_arm_throw_exception_by_token.
6597
6598         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6599
6600         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6601         unaligned.
6602
6603         * Makefile.am (fullaotcheck): Exit if a test fails.
6604
6605         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6606         on ARM.
6607         (mono_compile_assembly): Handle the assembler failing.
6608
6609         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6610         accepting subsections of .bss.
6611
6612         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6613         was optimized away.
6614
6615         * aot-compiler.c: Remove some unused includes.
6616         
6617         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6618         now in MonoImageWriter.
6619
6620         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6621         code sequence which matches a non-virtual call. Fixes #472654.
6622
6623 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6624
6625         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6626         xdebug code.
6627         
6628         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6629         use the image/dwarf writers directly.
6630
6631         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6632         field.
6633
6634         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6635         MonoDwarfWriter.
6636
6637         * image-writer.h: Fix some typos.
6638
6639         * dwarfwriter.h dwarfwriter.c: New files.
6640         
6641         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6642         separate module.
6643
6644         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6645         argument to return unwind info.
6646
6647         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6648
6649         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6650         
6651         * aot-runtime.c (decode_method_ref): Add a case for 
6652         MONO_AOT_METHODREF_WRAPPER_NAME.
6653
6654         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6655         for AOT.
6656
6657         * aot-compiler.c (encode_method_ref): Use the new constants.
6658
6659         * aot-runtime.c (decode_method_ref): Ditto.
6660
6661         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6662         be compiled, not the icall itself.
6663
6664 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6665
6666         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6667         using decode_method_ref ().
6668
6669         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6670         convert it to an in32. Fixes #475859.
6671
6672         * arrays.cs: Add a test.
6673
6674 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6675
6676         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6677         OP_LCONV_TO_U2.
6678
6679         * basic-long.cs: Add a test.
6680
6681 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6682
6683         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6684         remove the frame pointer in leaf methods which don't receive any
6685         arguments, don't throw exceptions and don't do dynamic stack
6686         allocations.
6687
6688 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6689
6690         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6691         the fail_tramp changes. Hopefully fixes #475132.
6692
6693 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6694
6695         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6696         instead of mono_metadata_signature_dup_full.
6697
6698 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6699
6700         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6701         for processing jump tables. Fixes #473787.
6702
6703 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6704
6705         * mini-generic-sharing.c: mini_method_get_context() just calls
6706         mono_method_get_context_general() now.
6707
6708         * mini.c, mini.h: Moved get_object_generic_inst(),
6709         construct_object_context_for_method() and
6710         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6711
6712 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6713
6714         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6715         basic block fell through to its successor bblock without a branch. Fixes
6716         #474718.
6717
6718         * iltests.il.in: Add a test.
6719         
6720         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6721         (can_encode_patch): We can now handle arrays of generic parameters and
6722         array methods.
6723
6724         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6725
6726         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6727         the AOT file to avoid some #ifdefs in aot-runtime.c
6728
6729         * mini.h: Bump AOT file format version.
6730
6731 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6732
6733         * Makefile.am (fullaotcheck): Make this run the tests.
6734
6735         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6736
6737 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6738
6739         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6740         individually.  Fixes #473482.
6741
6742 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6743
6744         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6745
6746 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6747
6748         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6749         (mono_compile_assembly): Hush compile warnings about
6750         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6751         code path.
6752
6753 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6754
6755         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6756
6757         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6758
6759         * aot-compiler.c: Fix arm support.
6760
6761         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6762         img_writer_emit_unset_mode () function.
6763
6764         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6765         (mono_unwind_get_dwarf_pc_reg): Ditto.
6766
6767         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6768         Move almost all platform specific code to a set of arch_ functions, 
6769         and document them to ease porting.
6770         
6771         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6772
6773         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6774
6775         * aot-compiler.c: Extract the image writing functionality into a separate
6776         module to reduce the size of this file.
6777
6778 2009-02-09  Geoff Norton  <gnorton@novell.com>
6779
6780         * mini-s390.c: Fix the signature of emit_sig_cookie.
6781
6782 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6783
6784         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6785
6786         * aot-runtime.c (is_shared_got_patch): Ditto.
6787
6788         * aot-runtime.c (load_named_code): Cope with the fact that 
6789         decode_got_entry () won't decode the patch fully if its corresponding got
6790         entry is already filled.
6791         
6792         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6793         Initialize *ji.
6794         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6795
6796         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6797         as the moving pointer instead of 'buf' for consistency with the rest of the
6798         codebase.
6799         (mono_arch_create_monitor_exit_trampoline): Ditto.
6800
6801         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6802         generic_class_init trampolines.
6803         (add_generic_class): Extract some code from add_generic_instances () into a
6804         separate function so it can be called from other places too.
6805         (compile_method): Call add_generic_class () for the classes of inflated methods
6806         referenced by the method.
6807         (can_encode_patch): Allow references to generic parameters.
6808
6809         * aot-runtime.c: Add support the patches required by the new trampolines.
6810         
6811         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6812         support.
6813
6814         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6815         full-aot support.
6816
6817         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6818         this from get_throw_pending_exception, make the signature full aot compatible.
6819
6820         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6821
6822         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6823
6824         * exceptions.cs: Add a test.
6825
6826 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6827
6828         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6829         use the DWARF_DATA_ALIGN constant instead.
6830
6831         * exception-<ARCH>.c: Update after the above change.
6832
6833         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6834         dwarf unwinder.
6835
6836         * mini-arm.c: Enable the dwarf unwinder.
6837
6838         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6839         instead of mono_class_setup_vtable ().
6840
6841 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6842
6843         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6844         dwarf unwinder.
6845
6846         * mini-x86.h: Enable the dwarf unwinder.
6847
6848 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6849
6850         Fix mcs/tests/test-7.cs
6851         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6852         2009-02-03.
6853
6854 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6855
6856         * mini.c (print_jit_stats): Remove some unused statistics.
6857
6858 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6859
6860         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6861
6862 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6863
6864         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6865         the method we get from mono_object_get_virtual_method() because
6866         that function does it properly, now.
6867
6868 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6869
6870         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6871         opcodes. Fixes #472775.
6872
6873 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6874
6875         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6876         fact that mono_find_jit_info() sometimes returns the context
6877         corresponding to the jit info in new_ctx.  Fixes #472600.
6878
6879 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6880
6881         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6882         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6883         klass->enum_basetype directly.
6884
6885         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6886         enum subtypes.
6887
6888         * unwind.c: Avoid 0 sized arrays.
6889
6890 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6891
6892         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6893         size on systems with 64k pages. Fixes #471389.
6894
6895 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6896
6897         Contributed under the terms of the MIT/X11 license by Steven
6898         Munroe <munroesj@us.ibm.com>.
6899
6900         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6901         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6902         necessary.
6903
6904 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6905
6906         Contributed under the terms of the MIT/X11 license by Steven
6907         Munroe <munroesj@us.ibm.com>.
6908
6909         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6910         comparison fix.
6911
6912         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6913         The trampoline can be longer on PPC64.
6914
6915 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6916
6917         Contributed under the terms of the MIT/X11 license by Steven
6918         Munroe <munroesj@us.ibm.com>.
6919
6920         * mini-ppc.c: Compiler warning fixes and trivial code
6921         simplifications.
6922
6923 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6924
6925         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6926         ins->dreg which could be a hardware register, not a vreg.
6927
6928         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6929         
6930         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
6931         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
6932
6933         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
6934         
6935         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
6936         ->dreg, that is not the vreg we are looking for.
6937
6938         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
6939
6940         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
6941         LIVERANGE_END.
6942
6943         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
6944         strange crashes.
6945
6946 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6947
6948         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
6949
6950         * aot-compiler.c (emit_line_number_info): Fix line number emission when
6951         the line diff is 0.
6952
6953         * aot-compiler.c: Add xdebug support on x86.
6954
6955         * unwind.c: Add x86 support.
6956         
6957         * aot-compiler.c (emit_exception_debug_info): Control the emission of
6958         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
6959
6960         * mini.c (mini_method_compile): Ditto.
6961         
6962         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
6963         the variable index.
6964
6965         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
6966         which mimic .push_section/.pop_section in GAS.
6967         
6968         * aot-compiler.c: Emit precise live range information for variables.
6969
6970         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
6971
6972         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
6973         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
6974         them.
6975
6976         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
6977         the live ranges of variables.
6978
6979         * mini.h (struct MonoMethodVar): Add two fields containing the live range
6980         of the variable in terms of native offsets.
6981
6982 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
6983
6984         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
6985         
6986 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6987
6988         Contributed under the terms of the MIT/X11 license by Steven
6989         Munroe <munroesj@us.ibm.com>.
6990
6991         * exceptions-ppc.c (restore_regs_from_context): Correct operand
6992         order (offset then base reg) for ppc_load_multiple_regs.
6993         (emit_save_saved_regs) Correct operand order for
6994         ppc_store_multiple_regs.
6995         (mono_arch_get_call_filter): Correct operand order for
6996         ppc_load_multiple_regs.
6997
6998         * mini-ppc.c (emit_memcpy): Fix operand order for
6999         ppc_load_reg_update and ppc_store_reg_update.
7000         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
7001         (mono_arch_emit_epilog): Correct operand order for
7002         ppc_load_multiple_regs.
7003
7004         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
7005         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
7006
7007 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7008
7009         * cpu-ppc64.md: Fixed storer4_memindex length.
7010
7011 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
7012
7013         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
7014         line number info.
7015         
7016         * aot-compiler.c (emit_line_number_info): Optimize this.
7017
7018 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
7019
7020         * aot-compiler.c: Disassemble tokens in the IL disassembly.
7021         
7022         * aot-compiler.c: Add debug info for methods without debug info by
7023         emitting an IL file and having the line number info referencing that file.
7024
7025         * aot-compiler.c: Optimize the size of the generated line number info.
7026
7027         * aot-compiler.c: Emit line number info in xdebug mode.
7028
7029         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
7030         million arguments.
7031
7032 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
7033
7034         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
7035
7036         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
7037         is used.
7038
7039 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7040
7041         * basic-calls.cs: Test for the weird crash found on arm.
7042         
7043 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7044
7045         * cpu-arm.md: Increase the size of storer8_membase_reg and
7046         loadr8_membase_reg to 24 bytes to accomodate the extra add.
7047
7048         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
7049         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
7050         reg to LR otherwise we'll be loading/storing from just the offset.
7051
7052 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7053
7054         Question: if we are storing gint32's inside the "*native_offset",
7055         should we change the signature to "gint32 *native_offset" to
7056         ensure that we do not have type definition problems?
7057         
7058         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
7059         an int * as this is what the other function expects, causes
7060         problems with Freescale's compiler that defined int32_t to be a
7061         long and makes int incompatible 
7062
7063 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7064
7065         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
7066         filename conflict with bjam.
7067
7068 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7069
7070         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
7071         as it might use decomposed ops.
7072
7073 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7074
7075         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
7076
7077         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
7078         is defined.
7079
7080         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
7081
7082         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
7083         offsets.
7084
7085         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
7086         way registers are stored in MonoContext on arm.
7087
7088         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
7089         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
7090
7091         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
7092
7093         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
7094
7095         * mini.c (mini_init): Register mono_isfinite.
7096
7097         * jit-icalls.c (mono_isfinite): New jit icall.
7098
7099         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
7100         
7101         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
7102         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
7103         the parent frame.
7104
7105 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7106
7107         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
7108         separate frame and stack pointers, so we must use FP to find the register
7109         spill area.
7110         The FP reg is retrieved from the MonoContext::regs array.
7111
7112 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7113
7114         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
7115         as FPA requires it.
7116
7117 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7118
7119         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
7120         return R4 and R8 when not running under softfloat.
7121
7122         Fixes basic-calls.exe
7123
7124 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7125
7126         * mini-arm.c: Implement some overflow opcodes.
7127
7128 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7129
7130         * ssa.c: handle another alloca.h
7131
7132         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
7133         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
7134         MONO_ARCH_USE_SIGACTION. 
7135
7136         * aot-runtime.c, mini-exceptions.c: Replace platform define with
7137         capability defines.
7138
7139         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
7140
7141         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
7142         PPC targets as sigaction does not exist on all platforms, define
7143         this on a per-platform basis.
7144
7145         Instead of erroring out if the platform is not defined, include
7146         mini-ppc-os.h, and expect that the OS specific setting provides
7147         the required information.   
7148
7149 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7150
7151         * aot-compiler.c: Fix --enable-minimal=aot.
7152
7153 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7154
7155         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
7156         previous change.
7157
7158 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7159
7160         * exceptions-arm.c: Fix warnings.
7161
7162         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
7163         ARM.
7164
7165         * mini-x86.c: Fix --enable-minimal=jit build.
7166
7167         * mini.c: Really fix --enable-minimal=jit build.
7168         
7169         * mini.c (construct_object_context_for_method): Move this outside
7170         the DISABLE_JIT block to fix the --enable-minimal=jit build.
7171
7172         "Backported" of r124984 from 2.0 branch.
7173         
7174         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
7175
7176         "Backport" of r124977 + r124978 from 2.0 branch.
7177         
7178         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7179         to avoid calling mono_exception_from_token () from the throw trampoline.
7180         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7181         for throwing corlib exceptions, this fixes full-aot support for corlib
7182         exceptions.
7183
7184         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7185
7186 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7187
7188         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7189         part of the changes to split the code in mini into operating
7190         system specific files.
7191
7192         This patch was done by copying mini.c to the respective files to
7193         preserve SVN history.
7194
7195 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7196
7197         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7198
7199 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7200
7201         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7202         remoting-invoke-with-check wrappers of shared methods.
7203
7204         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7205
7206 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7207
7208         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7209         optimization if the top of stack is the last instruction in the
7210         bblock.  Otherwise it might have been used after its definition.
7211         Fixes #469742.
7212
7213 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7214
7215         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7216         method as well when get_vcall_slot () fails to match a code sequence.
7217
7218         * mini-arm.c: Fix the android build, which doesn't have
7219         __aeabi_read_tp.
7220
7221 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7222
7223         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7224         the s390x build.
7225
7226 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7227
7228         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7229
7230 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7231
7232         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7233         and put its id into jinfo->used_regs. This is only used on amd64,
7234         which is currently the only platform generating unwind info.
7235
7236         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7237         the dwarf unwinder. This is required to correctly handle async exceptions
7238         like thread abort and stack overflows, which can happen while a method
7239         is in the middle of its prolog or epilog.
7240         
7241         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7242         the unwind info belonging to an AOTed method.
7243
7244         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7245         into cfg->unwind_ops.
7246         
7247         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7248
7249         * mini.c (mini_init): Call mono_unwind_init ().
7250         (mini_cleanup): Call mono_unwind_cleanup ().
7251
7252         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7253         unwind info to be shared between methods.
7254
7255         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7256         saved in the LMF.
7257
7258         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7259         get_throw_pending_exception () to avoid initialization races.
7260
7261         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7262         mono_arch_exceptions_init () function.
7263
7264         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7265
7266 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7267
7268         * mini.c (mono_get_domain_intrinsic): New helper function.
7269         (mono_get_thread_intrinsic): Ditto.
7270
7271         * mini-arm.c mini-ia64.c: Use the new helper functions.
7272         
7273         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7274         the last constrained_call change, since it is needed in the non-AOT
7275         case as well.
7276
7277         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7278         
7279         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7280         mono_get_lmf_addr () on arm eabi linux.
7281
7282 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7283
7284         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7285         code sequence which matches a non-virtual call.
7286
7287 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7288
7289         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7290         stack pointer (r1).
7291
7292 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7293
7294         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7295         runtime-invoke wrappers, since they are also shared based on signature.
7296
7297 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7298
7299         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7300         info from the (correct) context.
7301
7302 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7303
7304         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7305         
7306         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7307         using dwarf unwinding info. Not yet used.
7308
7309         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7310
7311 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7312
7313         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7314         descriptors.
7315
7316         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7317         special case and handle mono_arch_delegate_invoke_impl() returning
7318         function descriptors.
7319
7320         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7321         trampolines return function descriptors, too.
7322
7323 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7324
7325         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7326         out_of_line optimization.
7327
7328 2009-01-21  Martin Baulig  <martin@ximian.com>
7329
7330         * mini.h
7331         (MonoCompile): Added `disable_deadce_vars' to disable removing
7332         unused variables.
7333
7334         * mini.c
7335         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7336         inside the debugger.
7337
7338         * liveness.c (mono_analyze_liveness): Don't remove any unused
7339         variables if `cfg->disable_deadce_vars' is set.
7340
7341 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7342
7343         * method-to-ir.c: Only apply exception constructor optimization if
7344         the the method actually belongs to an exception class.  Fixes
7345         #467456.
7346
7347 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7348
7349         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7350         change inside a #ifdef __mono_ppc64__.
7351
7352         * aot-compiler.c (compile_method): Remove the previous limitation.
7353
7354         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7355         on type variables in AOTed code.
7356         
7357         * aot-compiler.c (compile_method): Skip generic methods having type 
7358         constraints on their generic parameters.
7359
7360         * aot-compiler.c (compile_method): Check for methods which cannot be
7361         encoded inside RGCTX_FETCH patches as well.
7362
7363         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7364         build.
7365
7366 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7367
7368         * method-to-ir.c: Force the vtable variable in shared generic code
7369         for the case that they might show up on a stack trace where they
7370         are needed.
7371
7372         * mini-exceptions.c: Save and use generic sharing info as well as
7373         IP in stack traces to resolve shared generic instantiations.
7374
7375 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7376
7377         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7378         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7379
7380 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7381
7382         * method-to-ir.c: Do generic sharing for array constructors.
7383
7384 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7385
7386         * mini-exceptions.c (mono_print_thread_dump): Add information
7387         about the thread state using wapi_current_thread_desc.
7388
7389 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7390
7391         * basic-simd.cs: Tests for the new constructors. 
7392
7393 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7394
7395         * mini-ops.h: Added OP_EXPAND_*
7396
7397         * cpu-x86.md: Same.
7398
7399         * mini-x86.c (mono_arch_output_basic_block): Same.
7400         
7401         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7402
7403 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7404
7405         * iltests.il.in: Add a test for #467385.
7406
7407 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7408
7409         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7410         thread been cleaned up is not the same currently in execution.
7411
7412         Fixes appdomain-unload crashes on windows, osx and linux variants
7413         without the __thread keyword.
7414
7415 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7416
7417         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7418         (koush@koushikdutta.com). Implement this for android.
7419
7420         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7421         begins with a digit.
7422
7423         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7424         mono_marshal_get_write_barrier ().
7425
7426 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7427
7428         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7429         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7430         that pass them on a register pair.
7431
7432         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7433         test was crashing due to that.
7434
7435 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7436
7437         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7438         trampoline code. Include ucontext.h only if available.
7439
7440 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7441
7442         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7443         and doesn't check whether it's sharable, like it was before
7444         removing the shared generics hash.  This brings IronPython
7445         performance back to what it was before that change.
7446
7447 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7448
7449         * method-to-ir.c: Handle delegate invocation optimization earlier,
7450         otherwise it would be handled (much more slowly) by the
7451         final/sealed optimization.
7452
7453 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7454
7455         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7456         domain is not set. Fixes #465864.
7457
7458 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7459
7460         * method-to-ir.c: Don't stop sharing of generic methods with catch
7461         clauses - we already handle those.
7462
7463 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7464
7465         * mini.c, mini.h: lookup_generic_method() is now
7466         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7467         making the shared_generics_hash obsolete.
7468
7469 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7470
7471         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7472         use the red zone.  Make room on the stack first and then use it,
7473         not the other way around.
7474
7475 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7476
7477         * mini.c (mini_init): Call mono_xdebug_init ().
7478
7479         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7480
7481 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7482
7483         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7484
7485         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7486         trampolines.
7487
7488         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7489         debug+unwind info for trampolines.
7490
7491         * mini.c (mono_create_unwind_op): New helper function.
7492
7493         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7494
7495 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7496
7497         * aot-compiler.c: Fix the build.
7498
7499 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7500
7501         * Makefile.am: Update dtrace-prelink.sh location.
7502
7503 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7504
7505         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7506         optimization. Fixes #464520.
7507
7508 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7509
7510         * mini-amd64.c : Adding code to save/restore non-volatile registers
7511            on Winx64.
7512
7513         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7514           registers on Winx64.
7515
7516         Contributed under MIT/X11 license.
7517
7518 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7519
7520         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7521         __GNUC_MINOR__ which can break when the major version changes.
7522
7523 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7524
7525         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7526
7527 2009-01-07  Geoff Norton  <gnorton@novell.com>
7528
7529         * helpers.c:  Allow mono -v -v -v to work on darwin.
7530
7531 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7532
7533         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7534           pattern. 
7535
7536         Contributed under MIT/X11 license.
7537
7538 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7539
7540         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7541         instead of directly accessing type->data.klass. Fixes #462016.
7542         (mono_allocate_stack_slots_full): Ditto.
7543
7544         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7545         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7546
7547         * aot-compiler.c (emit_plt): Fix ARM build.
7548
7549 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7550
7551         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7552         
7553         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7554         change.
7555
7556         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7557         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7558         #463357.
7559
7560         * iltests.il.in: Add a regression test.
7561
7562 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7563
7564         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7565
7566 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7567
7568         * basic-simd.cs: Add a regression test for #462457.
7569
7570 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7571
7572         * mini-ops.h: Add a definition of XPHI.
7573
7574         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7575
7576         * ssa.c (op_phi_to_move): Handle XPHI.
7577
7578         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7579
7580         Fixes #462457
7581
7582 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7583
7584         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7585
7586 2008-12-31  Geoff Norton  <gnorton@novell.com>
7587
7588         * mini-ppc.c: The prolog size allocated can be too small for darwin
7589         ppc32 under certain circumstances.  Also fix a small logic bug.
7590
7591 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7592
7593         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7594         while loading AOT methods.
7595
7596         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7597         since only the former is nulled out after a successful cast. This prevents
7598         crashes with rethrown exceptions when using --debug=casts.
7599
7600 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7601
7602         * mini.h: New macro for checking whether a method is final,
7603         i.e. whether the method or its class is marked final.
7604
7605         * method-to-ir.c: Use the new macro for all final-checks
7606         consistently.  Fixes the crash in the System.ServiceModel tests.
7607
7608 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7609
7610         * mini-exceptions.c (get_exception_catch_class): Corrected another
7611         overly strict assertion.
7612
7613 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7614
7615         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7616         Clobbering it is not allowed because the caller might use it as
7617         the vtable register in the interface call.
7618
7619 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7620
7621         * mini-exceptions.c (get_exception_catch_class): Corrected an
7622         overly strict assertion.
7623
7624 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7625         
7626         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7627
7628         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7629
7630         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7631
7632         * cpu-mips.md: correct lengths for certain long_ opcodes.
7633
7634         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7635
7636         * 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().
7637         
7638 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7639
7640         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7641         
7642 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7643         
7644         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7645         
7646 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7647
7648         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7649         next basic block.
7650         
7651 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7652
7653         * 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
7654
7655         * 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)
7656         
7657 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7658         
7659         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7660         
7661 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7662
7663         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7664         gshared code. Fixes #458947.
7665
7666         * generics.cs: Add a test.
7667
7668 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7669         
7670         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7671         
7672         * mini-mips.c: first pass n32 code generation.
7673
7674         * mini-mips.h: datatypes and defines for n32 support.
7675
7676         * exceptions-mips.c: first pass n32 code generation.
7677         
7678         * tramp-mips.c: first pass n32 code generation.
7679         
7680         * cpu-mips.md: add long_ opcodes.
7681         
7682 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7683
7684         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7685
7686         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7687         
7688         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7689         
7690         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7691
7692         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7693
7694         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7695
7696         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7697
7698         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7699
7700         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7701
7702 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7703
7704         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7705
7706 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7707
7708         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7709
7710 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7711
7712         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7713         descriptors for helper functions directly in front of the code.
7714
7715 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7716
7717         * method-to-ir.c: Removed an unnecessary assertion.
7718
7719 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7720
7721         * method-to-ir.c: Merge SGEN changes from the old JIT.
7722
7723 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7724
7725         * driver.c (compile_all_methods_thread_main): Handle failure of
7726         mono_get_method ().
7727
7728 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7729
7730         * mini-ppc.c: Merged with mini-ppc64.c.
7731
7732         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7733
7734         * Makefile.am: Use the same sources for PPC and PPC64.
7735
7736         * mini-ppc64.c: Removed.
7737
7738 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7739
7740         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7741         code to mono_bb_is_fall_through.
7742         
7743         * branch-opts.c (mono_remove_critical_edges): Same.
7744
7745 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7746
7747         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7748         expect that an OP_BR_REG will be there.
7749
7750 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7751
7752         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7753         for the many branch ops. The original check miss OP_BR_REG.
7754
7755         Fixes #457574.
7756         
7757 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7758
7759         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7760
7761 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7762
7763         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7764         while holding the aot lock.
7765
7766 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7767
7768         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7769         
7770 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7771
7772         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7773           to release all runtime callable wrappers held by the runtime.
7774
7775         Contributed under MIT/X11 license.
7776
7777 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7778
7779         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7780           for Winx64.
7781
7782         Contributed under MIT/X11 license.
7783
7784 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7785
7786         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7787         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7788
7789 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7790
7791         * cpu-mips.md: fix ckfinite length
7792
7793         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7794         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7795         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7796         
7797 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7798
7799         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7800         
7801 2008-12-08  Geoff Norton  <gnorton@novell.com>
7802
7803         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7804         size by 8 bytes as well.
7805
7806 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7807
7808         * basic-simd.cs: Fix method names for Vector16b.
7809         
7810 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7811
7812         * basic-simd.cs: Fix method names for Vector16sb.
7813
7814 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7815
7816         * basic-simd.cs: Fix method names for Vector8us.
7817         
7818 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7819
7820         * basic-simd.cs: Fix method names for Vector8s.
7821         
7822 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7823
7824         * basic-simd.cs: Fix method names for Vector4ui.
7825
7826 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7827
7828         * basic-simd.cs: Fix method names for Vector2l.
7829
7830 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7831
7832         * basic-simd.cs: Fix method names for Vector2d.
7833
7834 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7835
7836         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7837         that are extension methods.
7838
7839 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7840
7841         * basic-simd.cs: Fix method names for Vector4f.
7842
7843 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7844
7845         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7846         as such. Fixes #456669.
7847
7848 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7849
7850         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7851         
7852 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7853
7854         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7855         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7856         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7857         (mips_adjust_stackframe): handle FP spills
7858                 
7859         * mini-ops.h: add mips_mtc1_s2
7860         
7861         * cpu-mips.md: add mips_mtc1_s2
7862         
7863 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7864
7865         * unwind.c: New file, move the unwind info encoding functions here from
7866         aot-compiler.c, so they could be used at runtime too.
7867
7868 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7869
7870         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7871         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7872         
7873 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7874
7875         * mini-mips.c: cleanup warnings
7876         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7877         (mips_adjust_stackframe): handle case of taking the address of stack locals
7878         
7879 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7880
7881         * aot-compiler.c: Implement a few functions missing from the asm writer.
7882         (emit_method_code): Only write symbols for methods when using the bin
7883         writer, since the assembler can't deal with the characters in our method
7884         names.
7885
7886         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7887
7888         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7889         call.
7890
7891         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7892         a bit to also restore %rax.
7893
7894 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7895
7896         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7897
7898 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7899
7900         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7901         arguments.
7902
7903 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7904
7905         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7906
7907         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7908         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7909
7910         * exceptions-ppc64.c: Removed.
7911
7912         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7913
7914 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7915
7916         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7917         tramp-ppc64.c.
7918
7919         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7920
7921         * tramp-ppc64.c: Removed.
7922
7923 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7924
7925         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7926         the TYPESPEC table.
7927
7928 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7929
7930         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
7931
7932         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
7933         mini-ppc.h instead of mini-ppc64.h.
7934
7935         * mini-ppc64.h: Removed.
7936
7937 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7938
7939         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
7940         
7941         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
7942         
7943 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7944
7945         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
7946         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
7947         code easier.
7948
7949 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7950
7951         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
7952
7953 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7954
7955         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
7956
7957 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7958
7959         * basic-simd.cs: Tests for operator == and != on Vector4f.
7960
7961 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7962
7963         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
7964
7965         * simd-intrinsics.c: Kill useless enum.
7966
7967 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7968
7969         * cpu-mips.md: add long_conv_to_ovf_i4_2
7970         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
7971
7972 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7973
7974         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
7975         
7976         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
7977
7978 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7979
7980         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
7981         
7982 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7983
7984         * basic-simd.cs: Add tests for new methods.
7985
7986 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7987
7988         * simd-intrinsics.c: Add support for operator == and !=
7989         on Vector4(u)i.
7990
7991         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
7992
7993 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7994
7995         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
7996
7997 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
7998
7999         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
8000
8001         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
8002         MONO_PATCH_INFO_ICALL_ADDR.
8003
8004         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
8005
8006         * aot-compiler.c: Resurrect full-aot support.
8007
8008 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8009
8010         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
8011         
8012 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8013
8014         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
8015         
8016 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
8017
8018         * basic-simd.cs: Fix tests to work under ppc.
8019         Remove tests for methods that will be removed.
8020
8021 2008-12-03  Mark Probst  <mark.probst@gmail.com>
8022
8023         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
8024         generic type (via a typedef or typeref) correctly.
8025
8026 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
8027
8028         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
8029         diagnose an assertion failure.
8030
8031 2008-12-02  Mark Probst  <mark.probst@gmail.com>
8032
8033         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
8034         Fix trampoline size.
8035
8036         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
8037         conversion opcodes are implemented natively instead via emulation.
8038
8039 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8040
8041         * cpu-mips.md: remove mips_xori
8042
8043         * mini-ops.h:  remove mips_xori
8044
8045         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
8046
8047         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
8048         
8049         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
8050         
8051 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8052
8053         * cpu-mips.md: fix instruction lengths.
8054
8055         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
8056
8057         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
8058
8059         * mini-ops.h: fix slti / sltiu op profiles.
8060         
8061 2008-12-02  Martin Baulig  <martin@ximian.com>
8062
8063         * method-to-ir.c (mono_method_to_ir): Disable debugging
8064         information for the init locals block to make the debugger stop
8065         after all locals have been initalized.
8066
8067 2008-12-02  Martin Baulig  <martin@ximian.com>
8068
8069         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
8070         running inside the debugger.
8071
8072 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
8073
8074         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
8075         is enabled.
8076
8077         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
8078         alu->alu imm optimization which only shows if deadce is disabled.
8079
8080         * aot-compiler.c: Rename the function names for the binary and asm writers
8081         so they can coexist in the same process. Rework the xdebug code to use the
8082         asm writer. This avoids the need to call into the runtime to dump the
8083         debugging info. Add more debugging info for types.
8084
8085         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
8086
8087         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
8088         cpu description tables, they can't occur in cpu-<ARCH>.md.
8089
8090         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
8091         the stack in CEE_LDFLDA. Fixes #450542.
8092
8093         * generics.cs: Add a new test.
8094
8095 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8096
8097         * mini-ops.h: updated MIPS opcodes
8098         * mini-mips.c: decompose long opts
8099         * mini-mips.h: decompose long opts
8100         
8101 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
8102
8103         * cpu-mips.md: fix length on int_rem_un
8104         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
8105         
8106 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
8107
8108         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
8109
8110         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
8111
8112 2008-11-29  Martin Baulig  <martin@ximian.com>
8113
8114         * mini-exceptions.c (mono_handle_native_sigsegv): Check
8115         mono_debug_using_mono_debugger() in addition to the
8116         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
8117
8118 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8119
8120         * mini-ops.h: updated more MIPS opcodes
8121         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
8122         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
8123         
8124 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8125
8126         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
8127
8128 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8129
8130         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
8131         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
8132         * mini-ops.h: correct selected mips opcode entries
8133         
8134 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8135
8136         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
8137         make them work.
8138
8139 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8140
8141         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
8142
8143 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8144
8145         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
8146         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
8147         * mini-mips.h: disable IMT
8148         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
8149         
8150 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8151
8152         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
8153
8154 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8155
8156         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
8157
8158 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
8159
8160         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
8161         consistency.
8162
8163 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8164
8165         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8166         for Set/GetVector aligned versions.
8167
8168 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8169
8170         * basic-simd.cs: Add tests for Get/SetVector.
8171
8172 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8173
8174         * mini.c: Removed g_slist_append_mempool().  Now in
8175         metadata/mempool.c.
8176
8177 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8178
8179         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8180         size properly and make the bounds check optional.
8181
8182         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8183         for SetVector and IsAligned.
8184
8185 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8186
8187         * mini.c: Remove unused mono_normalize_opcodes () function.
8188
8189 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8190
8191         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8192         using the new atomic add ops now.
8193
8194         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8195         add.
8196
8197 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8198
8199         * mini-ppc64.c: Several fixes.
8200
8201 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8202
8203         * cpu-mips.md: added jump_table
8204         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8205
8206 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8207
8208         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8209
8210 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8211
8212         * mini-ops.h: corrected a handful of MIPS opcodes.
8213
8214 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8215
8216         * aot-compiler.c: MIPS to use ELF writer
8217
8218 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8219
8220         * mini-codegen.c: remove MIPS specific assert.
8221
8222 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8223
8224         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8225         fixes.  PPC64 now passes most of the runtime regressions.
8226
8227 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8228
8229         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8230         volatile intervals a bit.
8231
8232 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8233
8234         * basic-long.cs: New test case.
8235
8236 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8237
8238         * mini.c (mini_method_compile): Disable globalra for large methods for 
8239         now.
8240
8241         * regalloc2.c (order_moves): Add fp support.
8242
8243         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8244         source bblock ends with an OP_BR_REG.
8245
8246         * ratests.cs: Add a new test.
8247
8248 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8249
8250         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8251         sharing.  PPC64 now passes generics.exe.
8252
8253 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8254
8255         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8256
8257 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8258
8259         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8260         memory when mono_jit_info_table_find () can't find the method in the
8261         LMF case.
8262
8263         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8264         AOTed code too.
8265         
8266         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8267         writer too.
8268
8269 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8270
8271         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8272         Several fixes.  PPC64 now runs exceptions.exe and
8273         devirtualization.exe.
8274
8275 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8276
8277         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8278         arrays.exe and basic-math.exe.
8279
8280 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8281
8282         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8283         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8284
8285 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8286
8287         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8288
8289 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8290
8291         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8292
8293         * ir-emit.h: Move macros from method-to-ir.c to here.
8294
8295 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8296
8297         * mini-ops.h: Correct the long simd ops to use LREG.
8298
8299 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8300
8301         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8302         
8303         * mini-ops.h: Correct the dreg type of a few long opcodes.
8304
8305         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8306         Add netbsd support.
8307
8308 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8309
8310         * mini-ppc.c: remove negative stack references in epilog
8311         for platforms that don't support the red zone.
8312
8313 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8314
8315         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8316         point regs.  Now PPC64 passes basic-calls.exe.
8317
8318 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8319
8320         * basic-simd.cs: Add tests for accessors of Vector2l.
8321
8322 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8323
8324         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8325
8326         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8327         
8328         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8329
8330 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8331
8332         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8333         PPC64 passes basic-long.exe.
8334
8335 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8336
8337         * decompose.c: Decompose carry and overflow add on PPC64 like on
8338         other 64 bit archs.  Don't decompose sub at all on PPC64.
8339
8340         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8341         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8342         basic-long.exe.
8343
8344 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8345
8346         * basic-simd.cs: Add tests for accessors of Vector2d.
8347
8348 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8349
8350         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8351
8352         * cpu-x86.md: Same.
8353
8354         * mini-x86.c (mono_arch_output_basic_block): Same.
8355         
8356         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8357
8358 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8359
8360         * basic-simd.cs: Add tests for accessors of Vector4f.
8361
8362 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8363
8364         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8365
8366         * cpu-x86.md: Same.
8367
8368         * mini-x86.c (mono_arch_output_basic_block): Same.
8369         
8370         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8371
8372 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8373
8374         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8375
8376 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8377
8378         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8379
8380         * cpu-x86.md: Same.
8381
8382         * mini-x86.c (mono_arch_output_basic_block): Same.
8383         
8384         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8385
8386 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8387
8388         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8389
8390 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8391
8392         * simd-intrinsics.c: Enable setters for Vector16sb.
8393
8394 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8395
8396         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8397
8398         * cpu-x86.md: Same.
8399
8400         * mini-x86.c (mono_arch_output_basic_block): Same.
8401         
8402         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8403
8404 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8405
8406         * simd-intrinsics.c: Implement setter for Vector8us.
8407
8408 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8409
8410         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8411         for dead variables.
8412
8413 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8414
8415         * mini-ppc.c: remove references to the red zone in the prolog
8416         (for systems that don't support it).
8417
8418 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8419
8420         * cpu-ppc64.md: Fixed a few instruction lengths.
8421
8422         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8423         now.
8424
8425 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8426
8427         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8428         basic.exe now.
8429
8430 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8431
8432         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8433
8434 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8435
8436         * mini-ops.h: Added OP_INSERT_I2.
8437
8438         * cpu-x86.md: Same.
8439
8440         * mini-x86.c (mono_arch_output_basic_block): Same.
8441         
8442         * simd-intrinsics.c: Implement setter for Vector8s.
8443
8444         * simd-methods.h: Add the names of get setters of Vector8s.
8445
8446 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8447
8448         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8449         
8450         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8451         parameters.
8452
8453         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8454
8455 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8456
8457         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8458         for PPC64.  An empty program runs now.
8459
8460 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8461
8462         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8463
8464         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8465         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8466         info for JITted code is emitted into a shared library, loadable into gdb.
8467
8468 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8469
8470         * Makefile.am: Changes to build PPC64.
8471
8472         * mini-arch.h: Include mini-ppc64.h on PPC64.
8473
8474 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8475
8476         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8477         in PPC code up to r119147.
8478
8479 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8480
8481         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8482         cpu-ppc64.md: Changes for PPC64.
8483
8484         Based on code submitted by andreas.faerber@web.de at
8485         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8486         X11/MIT license.
8487
8488 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8489
8490         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8491         cpu-ppc64.md: Copied from the corresponding PPC files from
8492         r118846.
8493
8494 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8495
8496         * mini-ops.h: Added OP_ROUND.
8497
8498         * cpu-x86.md: Added round.
8499
8500         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8501
8502         * basic-math.cs: Added test_0_round to test rounding.
8503
8504         Contributed under MIT/X11 license.
8505
8506 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8507
8508         * aot-compiler.c : Fix the Winx64 build.
8509
8510         Contributed under MIT/X11 license.
8511
8512 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8513
8514         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8515         in OP_EXTRACT_R8 to avoid possible stack corruption.
8516
8517 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8518
8519         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8520
8521         * cpu-x86.md: Added extract_r8.
8522
8523         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8524         
8525         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8526         a couple of OP_EXTRACT_I4.
8527
8528         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8529
8530         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8531
8532 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8533
8534         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8535         and not 4.1. 
8536
8537 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8538
8539         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8540         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8541
8542         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8543         are not needed any more.
8544
8545         * mini.h: Remove the unused INS_LIST macros.
8546
8547         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8548         longer needed.
8549
8550         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8551         ir-emit.h.
8552
8553         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8554         mono_alloc_ireg () instead.
8555
8556         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8557         macros.
8558
8559         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8560         on amd64.
8561
8562         * aot-runtime.c (load_aot_module): Disable AOT when running under
8563         CAS.
8564
8565         * mini-amd64.h: Change the monitor fastpath defines to check for
8566         !PLATFORM_WIN32 so they work on *bsd too.
8567
8568         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8569
8570         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8571
8572         * mini.h (MonoCompile): Remove new_ir flag.
8573
8574         * regalloc.h regalloc.c: Remove unused code.
8575
8576         * cpu-*.md: Remove more unused opcodes.
8577
8578         * simple-cee-ops.h simple-mini-ops.h: Removed.
8579
8580         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8581         
8582 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8583
8584         * aliasing.h: Removed.
8585
8586         * *.c: Remove references to aliasing.h and inssel.h.
8587
8588         * mini.c: Remove additional unused functions.
8589
8590         * mini-ops.h cpu-*.md: Remove unused opcodes.
8591
8592 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8593
8594         Remove the old JIT code.
8595
8596         * inssel*.brg: Removed.
8597
8598         * ssa.c abcremoval.c aliasing.c: Removed.
8599
8600         * ssa2.c: Renamed to ssa.c.
8601
8602         * abcremoval2.c: Renamed to abcremoval.c.
8603
8604         * *.c: Removed all !cfg->new_ir code.
8605
8606         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8607         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8608
8609         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8610         
8611 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8612
8613         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8614         to simplify the code and cut back on the number of global symbols in the AOT
8615         file.
8616         
8617         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8618
8619 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8620
8621         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8622         with the got/got_info tables.
8623
8624         * mini.h: Bump AOT file format version.
8625         
8626         * unwind.h: New file, contains definitions for stack unwinding.
8627
8628         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8629         to cfg->unwind_ops.
8630         
8631         * aot-compiler.c: Generalize the emitting of unwind information to use the
8632         information in cfg->unwind_ops.
8633
8634         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8635
8636         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8637         AOT method frames. Enable writing symbols for methods by default.
8638
8639 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8640
8641         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8642         and make it work with vectors of element sizes 1, 2 and 4.
8643
8644         * simd-intrinsics.c: Enable getter for all vectors with element size
8645         1, 2 or 4.
8646
8647         * simd-methods.h: Add the names of other getters.
8648
8649         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8650
8651         * cpu-x86.md: Same.
8652
8653         * mini-x86.c: Same.
8654
8655 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8656
8657         * mini-ppc.h: portability fix.
8658
8659 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8660
8661         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8662         buggy and will overwrite it.
8663
8664 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8665
8666         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8667         Use it to emit local symbols for all methods so AOTed methods show up with
8668         their full name in gdb/valgrind output.
8669
8670 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8671
8672         * mini-ppc.c: portability fixes.
8673
8674 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8675
8676         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8677         entries out of the if (!generic_shared...) code so it is always done.
8678         (mono_class_init_trampoline): Do the patching when running under valgrind
8679         too, newer versions of valgrind have no problems with it.
8680
8681 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8682
8683         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8684         further sections.
8685
8686 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8687
8688         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8689         filters.
8690
8691 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8692
8693         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8694
8695 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8696
8697         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8698
8699         * cpu-x86.md: Same.
8700
8701         * mini-x86.c: Same.
8702
8703         * simd-intrinsics.c: Same.
8704
8705 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8706
8707         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8708
8709 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8710
8711         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8712         to work with more Vector types.
8713
8714 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8715
8716         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8717         store the elemens directly instead of using and intermediate.
8718
8719 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8720
8721         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8722
8723         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8724         to preserve %eax for aot plt trampolines.
8725
8726         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8727         (encode_method_ref): Flag synchronized methods so they won't go through
8728         the AOT trampoline.
8729
8730         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8731         wrappers.
8732
8733         * cpu-ia64.md (jmp): Increase max length.
8734
8735 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8736
8737         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8738         open generic classes.
8739
8740         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8741
8742         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8743         box+brtrue optimization since it causes test failures on x86.
8744
8745 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8746
8747         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8748
8749         * cpu-x86.md: Same.
8750
8751         * mini-x86.c: Same.
8752
8753         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8754         for simd ctor values. 
8755
8756         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8757         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8758
8759 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8760
8761         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8762         LogicalRightShift.
8763
8764         * simd-instrincs.c: Same.
8765
8766         * basic-simd.cs: Same.
8767
8768 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8769
8770         * ratests.cs: Add more tests.
8771
8772         * regalloc2.c (add_spill_code): Handle more corner cases.
8773
8774 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8775
8776         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8777         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8778         both the source an destination of an instruction.
8779
8780 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8781
8782         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8783         wapihandles.c: more portability changes.
8784
8785 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8786
8787         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8788         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8789         safe to execute in a signal handler and the kernel provides better
8790         the info in /proc/self/smaps. Avoid the assert on sigaction during
8791         cleanup.
8792
8793 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8794
8795         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8796         do the bblock linking hack if it is actually needed.
8797
8798         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8799         up linking.
8800
8801         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8802         crash problem is fixed.
8803
8804         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8805         bblocks.
8806
8807         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8808         for catch clauses.
8809         (mini_method_compile): Set the starting value of next_vreg to 
8810         MAX_IREGS + MAX_FREGS when using globalra.
8811
8812         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8813         filter clauses with BB_EXCEPTION_HANDLER.
8814
8815         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8816
8817 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8818
8819         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8820         space for stdcall.  Fixes regressions on Win32.
8821
8822 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8823
8824         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8825         bblocks.
8826         (linear_scan): Remove an assert which doesn't seem to be needed.
8827
8828         * local-propagation.c (mono_local_deadce): Avoid a call to
8829         MONO_DELETE_INS which would screw up the instruction linking.
8830
8831         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8832
8833         * regalloc2.c: Upgrade to work the current JIT code.
8834
8835 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8836
8837         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8838         case.
8839
8840         * aot-runtime.c: Remove some dead code.
8841
8842         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8843         consistency.
8844         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8845
8846         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8847         trampolines using sscanf since atoi doesn't work on large unsigned values.
8848
8849         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8850         Initialize code_size.
8851
8852 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8853
8854         * method-to-ir.c (mini_emit_inst_for_method): Make
8855         Interlocked.CompareExchange work for Int arguments on 32 bit
8856         archs, as well.
8857
8858 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8859
8860         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8861
8862 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8863
8864         * main.c Fix MSVC build.
8865
8866         Contributed under MIT/X11 license.
8867
8868 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8869
8870         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8871         alignment larger than 8 bytes are aligned correctly, too.
8872
8873         * mini.c: Honor the min_align field of MonoClass when laying out
8874         the stack.
8875
8876 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8877
8878         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8879
8880         * aot-compiler.c (emit_plt): Fix a warning.
8881         
8882         * aot-compiler.c: Implement ARM support in the binary writer.
8883
8884 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8885
8886         * basic-simd.cs: Add test for getter with byref arg.
8887         Fix the naming of a few tests.
8888         Add missing checks to a test.
8889
8890 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8891
8892         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8893
8894         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8895         most of the full-aot support for monitor enter/exit trampolines.
8896
8897         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8898         enter/exit trampoline creation functions.
8899
8900         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8901         make dist.
8902
8903 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8904
8905         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8906         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8907         implement the needed functionality without adding crap to the runtime.
8908
8909 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8910
8911         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8912         non-x86 builds.
8913
8914         * mini.c (mono_build_date): New global version holding the build date in
8915         string format.
8916         
8917         * Makefile.am (buildver.c): Generate a file containing the build date.
8918
8919         * main.c: Set the build date from the generated file.
8920
8921         * mini.c (mono_get_runtime_build_info): New helper function returning build
8922         information in a string format.
8923         
8924         * driver.c (mono_main): Print the build date in --version.
8925
8926         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8927         file when the bind-to-runtime-version option is used.
8928
8929 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8930
8931         * simd-intrinsics.c: Fix bug when using getters and byref args. 
8932
8933 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8934
8935         * simd-methods.h: Rename prefetch methods.
8936
8937         * simd-intrinsics.c: Same.      
8938
8939 2008-11-05  Mark Probst  <mark.probst@gmail.com>
8940
8941         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
8942         sizes.
8943
8944 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8945
8946         * aot-compiler.c: Use the bundled elf header files instead of depending on
8947         the system one.
8948         
8949         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
8950         mempool.
8951
8952         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
8953         on every call.
8954
8955 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
8956
8957         * cpu-x86.md: Add store nta ops.
8958
8959         * mini-ops.h: Same.
8960
8961         * mini-x86.c: Same.
8962
8963         * mini.h: Add an enum for simd prefetch modes.
8964
8965         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
8966         of store. Use the changed code to support store nta.
8967
8968         * simd-intrinsics.c: Add prefetch ops for all vector types.
8969
8970 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8971
8972         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
8973         threads.
8974         
8975         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
8976         names.
8977
8978         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
8979         trampolines.
8980
8981 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8982
8983         * mini-x86.c: Fixed commit.
8984
8985 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8986
8987         * aot-compiler.c (emit_plt): Align the plt section only on x86.
8988
8989 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8990
8991         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
8992         and MONITOR_EXIT, for the ASM fastpaths.
8993
8994         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
8995         available.
8996
8997         * mini.c, patch-info.h: Signature and patch infos for
8998         Monitor.Enter/Exit trampolines.
8999
9000         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
9001
9002         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
9003         Monitor.Enter/Exit ASM fastpath for Linux.
9004
9005 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9006
9007         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
9008
9009         * objects.cs: Add a new test.
9010         
9011         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
9012
9013         * aot-runtime.c (load_method): Run class initialization in the PLT case even
9014         if MONO_LOG_LEVEL is set.
9015
9016         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
9017
9018         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
9019
9020         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
9021         
9022         * aot-compiler.c: Change the relocation code to use virtual addresses instead
9023         of file offsets. Align the sections belonging to the data segment to 
9024         PAGESIZE.
9025
9026 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9027
9028         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
9029         elf.h. Port it to amd64.
9030
9031 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9032
9033         * driver.c: Enable SIMD by default.
9034
9035 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9036
9037         * cpu-x86.md: Add prefetch op.
9038
9039         * mini-ops.h: Same.
9040
9041         * mini-x86.c: Same.
9042
9043         * mini.h: Add an enum for simd prefetch modes.
9044
9045         * simd-methods.h: Add prefetch function names.
9046
9047         * simd-intrinsics.c: Add prefetch ops for all vector types.
9048
9049 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9050
9051         * aot-compiler.c (emit_bytes): Speed this up a little.
9052
9053 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9054
9055         * aot-compiler.c: Add JIT time etc. statistics.
9056         
9057         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
9058
9059         * mini.h (MonoCompile): Add 'got_offset' field.
9060
9061         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
9062         method_got_offsets array.
9063
9064         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
9065         wrappers.
9066
9067         * aot-compiler.c (compile_method): Add generic method instances referenced
9068         by the method to the list of methods to be compiled, this is required so if
9069         A<T> references B<T>, and another assembly references A<int>, then it will
9070         also get a copy of B<int>.
9071
9072         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
9073         when checking for monitor enter/exit.
9074
9075 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9076
9077         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
9078         for Monitor.Enter and Monitor.Exit if enabled.
9079
9080         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
9081         Solaris.
9082
9083 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
9084
9085         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
9086         of an OP_MOVE. Fixes #440046.
9087
9088         * basic-long.cs: Add a new test.
9089
9090 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9091
9092         * mini.h: Add synchronization note for the managed counter-part.
9093
9094         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
9095         returns the simd caps of the current cpu.
9096
9097 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9098
9099         * basic-simd.cs: Remove Console.WriteLine.
9100
9101 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9102
9103         * basic-simd.cs: New tests for Vector2ul.
9104
9105 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9106
9107         * simd-intrinsics.c: Add new vector type Vector2ul.
9108
9109 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9110
9111         * basic-simd.cs: New tests for Vector2l.
9112
9113 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9114
9115         * cpu-x86.md: Add long version of most packed int ops.
9116
9117         * mini-ops.h: Same.
9118
9119         * mini-x86.h: Same.
9120
9121         * simd-intrinsics.c: Add new vector type Vector2l.
9122
9123 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9124
9125         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
9126
9127         * simd-methods.h: Remove SN_op_BitwiseXor.
9128
9129 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9130
9131         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
9132         alignment.
9133
9134 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9135
9136         * basic-simd.cs: Test for Vector2d.
9137
9138         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
9139         value.
9140
9141 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9142
9143         * cpu-x86.md: Add double version of all packed float ops.
9144
9145         * mini-ops.h: Same.
9146
9147         * mini-x86.h: Same.
9148
9149         * simd-intrinsics.c: Add new vector type Vector2d.
9150
9151         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
9152
9153         * simd-methods.h: Add Duplicate.
9154
9155 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9156
9157         * basic-simd.cs: Test for packing with signed saturation.
9158
9159 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9160
9161         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
9162         found in the TYPESPEC table.
9163
9164 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9165
9166         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
9167         too.
9168
9169         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9170
9171         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
9172         instead of the RVA, since the RVA can be changed by tools like the cil 
9173         stripper.
9174
9175         * method-to-ir.c (mono_method_to_ir2): Ditto.
9176
9177         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9178         (deserialize_variable): Ditto.
9179
9180 2008-10-25  Martin Baulig  <martin@ximian.com>
9181
9182         * debug-mini.c (write_variable): Use
9183         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9184
9185 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9186
9187         * cpu-x86.md: Add unsigned variants of packd and packw.
9188
9189         * mini-ops.h: Same.
9190
9191         * mini-x86.h: Emit the right instruction for packd and packw.
9192         Add unsigned variants of packd and packw.
9193
9194         * simd-intrinsics.c: Packd and packw were used in place of their
9195         unsigned variants. Change that.
9196         Add intrinsics for (Signed)PackWithSignedSaturation.
9197
9198         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9199
9200 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9201
9202         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9203
9204 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9205
9206         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9207
9208         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9209
9210         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9211         sse instructions.
9212
9213         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9214
9215 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9216
9217         * method-to-ir.c, mini.c: Special casing for the synchronized
9218         wrapper for the ldtoken+GetTypeFromHandle case.
9219
9220 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9221
9222         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9223
9224         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9225         created/split bblocks.
9226
9227 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9228
9229         * mini-ops.h: Add packed signed mul high.
9230         
9231         * cpu-x86.md: Same.
9232
9233         * mini-x86.c (mono_arch_output_basic_block): Same.
9234
9235         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9236
9237         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9238
9239 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9240
9241         * basic-simd.cs: Tests for Vector16sb.
9242
9243 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9244
9245         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9246
9247 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9248
9249         * mini-ops.h: Add packed signed min, max and compare greater.
9250         
9251         * cpu-x86.md: Same.
9252
9253         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9254         saturation.
9255
9256         * simd-methods.h: Add CompareGreaterThan.
9257
9258         * simd-methods.h: Remove CompareEquals.
9259
9260         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9261
9262         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9263
9264         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9265         CompareEqual.
9266
9267 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9268
9269         * basic-simd.cs: Fix tests due to change in the API.
9270
9271 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9272
9273         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9274
9275 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9276
9277         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9278
9279         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9280         inst_offset as this has invalid values for LDADDR.
9281
9282 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9283
9284         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9285
9286         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9287
9288 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9289
9290         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9291         for accessing field->data.
9292
9293 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9294
9295         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9296
9297 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9298
9299         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9300
9301         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9302
9303 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9304
9305         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9306         from the cfg mempool.
9307
9308 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9309
9310         * basic-simd.cs: Tests for new methods in Vector8us.
9311
9312 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9313
9314         * mini-ops.h: Add multiply and store high.
9315         
9316         * cpu-x86.md: Same.
9317
9318         * mini-x86.c (mono_arch_output_basic_block): Same.
9319
9320         * simd-methods.h: Same.
9321
9322         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9323         and CompareEqual.
9324
9325 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9326
9327         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9328         mono_class_setup_vtable ().
9329
9330         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9331         mono_class_get_vtable_entry () for accessing klass->vtable.
9332
9333         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9334
9335         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9336         found.
9337
9338         * method-to-ir.c (mono_save_token_info): Don't save references made from
9339         wrappers.
9340
9341         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9342         of generic instances.
9343
9344         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9345
9346 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9347
9348         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9349         OP_JMP depends on the method signature.  Calculate it properly.
9350
9351 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9352         
9353         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9354         called directly.
9355
9356         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9357         instances.
9358         (emit_extra_methods): Add another table mapping method indexes to 
9359         offsets in the extra_method_info table.
9360
9361         * mini.h: Bump AOT file format version.
9362         
9363         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9364         and mono_aot_get_method_from_token () into one function.
9365
9366 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9367
9368         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9369         separate counter.
9370
9371 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9372
9373         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9374         methods.
9375
9376         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9377         disable_aot.
9378
9379         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9380
9381         * mini.h: Bump aot file format version.
9382
9383         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9384         AOT file can contain native code for methods which are not in the METHOD
9385         table. Generate code for non-sharable generic instances of generic methods
9386         found in the METHODSPEC table.
9387         
9388         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9389         encoding generic type handles.
9390
9391         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9392         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9393
9394         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9395         macros + MONO_ADD_INS.
9396
9397         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9398         context as well.
9399
9400         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9401
9402         * mini.h: Bump aot file format version.
9403
9404         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9405
9406 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9407
9408         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9409         platforms, with definable stack alignment value.  Set to 16 now
9410         for all platforms.
9411
9412         * mini.c, mini.h, driver.c: Command line option for disabling
9413         stack alignment.
9414
9415 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9416
9417         * basic-simd.cs: Tests for new methods in Vector4ui.
9418
9419 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9420
9421         * mini-ops.h: Add packed int shuffle.
9422         
9423         * cpu-x86.md: Same.
9424
9425         * mini-x86.c (mono_arch_output_basic_block): Same.
9426
9427         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9428         extract mask, max, min, shuffle.
9429
9430         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9431
9432 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9433
9434         * basic-simd.cs: Tests for new methods in Vector8us.
9435
9436 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9437
9438         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9439         RuntimeTypeHandle, not a TypedReference.
9440
9441 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9442
9443         * simd-intrinsics.c: remove relocations.
9444
9445 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9446
9447         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9448         optimizations from the x86 backend.
9449
9450 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9451
9452         * simd-methods.h, simd-intrinsics.c: debloat method names and
9453         prepare for no relocations.
9454
9455 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9456
9457         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9458         
9459         * cpu-x86.md: Same.
9460
9461         * mini-x86.c (mono_arch_output_basic_block): Same.
9462
9463         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9464         extract mask, max, min and sum of absolute differences.
9465
9466         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9467         method name.
9468
9469 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9470
9471         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9472         Renamed one test for consistency.
9473
9474 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9475
9476         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9477         fix to the code that deal with other blocks.
9478
9479 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9480
9481         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9482
9483 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9484
9485         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9486         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9487         able to process the source reg.
9488
9489 2008-10-16  Martin Baulig  <martin@ximian.com>
9490
9491         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9492
9493         * inssel.brg: Add `OP_HARD_NOP'.
9494
9495         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9496
9497         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9498         `OP_HARD_NOP' instruction when running inside the debugger.
9499
9500         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9501         `OP_HARD_NOP' instruction when running inside the debugger.
9502
9503 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9504
9505         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9506         now works. The issue with the regalloc tripping up no longer
9507         happens.
9508
9509         * simd-intrinsics.c (load_simd_vreg): Same.
9510
9511 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9512         
9513         * basic-simd.cs: Tests for new Vector8ui methods.
9514
9515 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9516
9517         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9518         only for type. This fixes crashes where MonoInst::klass is checked
9519         for ops of type != VTYPE or OBJ.
9520
9521         * simd-intrinsics.c (load_simd_vreg): Same.
9522
9523 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9524
9525         * mini-ops.h: Add ops for packed shuffle/max/avg and
9526         extract mask.
9527         
9528         * cpu-x86.md: Same.
9529
9530         * mini-x86.c (mono_arch_output_basic_block): Same.
9531
9532         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9533         extract mask.
9534
9535         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9536         to emit extract mask op.
9537
9538         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9539         to emit word shuffles.
9540
9541 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9542
9543         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9544         the largest alignment needed by a variable, but at least
9545         sizeof(gpointer).
9546
9547 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9548
9549         * basic-simd.cs: Tests for the fixes in the last commit.
9550
9551 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9552
9553         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9554         no longer handles STACK_PTR input.
9555
9556         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9557
9558         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9559         get_simd_vreg   but handles STACK_PTR input.
9560
9561         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9562         as the input can be an arbitrary pointer.
9563
9564         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9565         LDADDR local optimization directly otherwise use a store op.
9566
9567 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9568
9569         * basic-simd.cs: Tests for dup low and dup high.
9570
9571 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9572
9573         * mini-ops.h: Add dup low and dup high ops.
9574         
9575         * cpu-x86.md: Same.
9576
9577         * mini-x86.c (mono_arch_output_basic_block): Same.
9578
9579         * simd-intrinsics.c (vector4f_intrinsics): Same.
9580
9581 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9582
9583         * basic-simd.cs: Tests for recently added functionality.
9584
9585 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9586
9587         * mini-ops.h: Add remaining sse1 fp ops.
9588         
9589         * cpu-x86.md: Add remaining sse1 fp ops.
9590
9591         * mini-x86.c (mono_arch_output_basic_block): Same.
9592
9593         * mini.h: Add enum for simd FP compare conditions.
9594
9595         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9596
9597         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9598         so the backed can generate the appropriate op.
9599
9600 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9601         This patch squeese one more byte from the SimdIntrinsc struct.
9602
9603         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9604         a a shift amount intead of simply or'ing it.
9605
9606         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9607
9608         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9609         byte so we can have an aditional flags field without increasing struct size.
9610
9611         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9612         against the simd_supported_versions bitmask.
9613
9614         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9615
9616 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9617
9618         * mini.c: remove rawbuffer code (the only use here is unsafe because
9619         it takes locks during signal handling and the kernel now provides much
9620         better info in proc/pid/smaps these days).
9621
9622 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9623
9624         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9625         OP_X86_PUSH_OBJ. Fixes #434620.
9626
9627         * objects.cs: Add a test.
9628         
9629 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9630
9631         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9632         that the packuswb/packusdw don't work with unsigned numbers for what
9633         would be negative numbers in signed format.
9634
9635         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9636         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9637
9638         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9639
9640         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9641
9642         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9643
9644         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9645
9646         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9647         add more ops.
9648
9649         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9650         version as the enum in mini.h.
9651
9652         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9653         for sse3 ops, check the simd_version field if present. This way the code
9654         works with all versions of sse.
9655
9656 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9657
9658         * simd-intrinsics.c: Fixed intrinsic name typo.
9659
9660         * mini.h: Added missing simd exported function.
9661
9662         * basic-simd.cs: Added tests for Vector4ui.
9663         Fixed broken test for Vector16b.
9664
9665 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9666
9667         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9668         the max length to 64.
9669
9670 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9671
9672         * method-to-ir.c: Only do the fast virtual generic method call for
9673         non-wrapper methods.
9674
9675         * mini.h, mini-trampolines.c: The new generic virtual remoting
9676         trampoline handles virtual method calls via the vtable (as done by
9677         the fast virtual generic method calls) to remoting proxies.
9678
9679         * mini.c (mono_jit_create_remoting_trampoline): For generic
9680         methods reate a generic virtual remoting trampoline.
9681
9682         * mini-amd64.h: Enable fast virtual generic method calls again.
9683
9684 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9685
9686         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9687         restore registers when doing tail calls.
9688
9689 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9690
9691         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9692         Vector4ui.
9693
9694 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9695
9696         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9697
9698 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9699
9700         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9701
9702 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9703
9704         * basic-simd.cs: Retrofit for API changes.
9705
9706 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9707
9708         * mini-ppc.c: Handle integer stack arguments for tail calls.
9709
9710 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9711
9712         * optflags-def.h: Removed sse3 optimization.
9713
9714         * driver.c: Same.
9715
9716         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9717         sse3.
9718
9719         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9720
9721         * mini.h: Added enumeration with simd versions.
9722
9723         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9724         for detecting SSE3.
9725
9726         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9727
9728         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9729
9730 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9731
9732         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9733
9734         * basic-simd.cs: Fixed test naming.
9735
9736 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9737
9738         * mini-ops.h: Added ops for packed and saturated math, shifts
9739         and packing/unpacking.
9740
9741         * cpu-x86.md: Added descriptors for the above ops.
9742
9743         * mini-x86.c: Added code to emmit the above ops.
9744
9745         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9746
9747 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9748
9749         * aot-compiler.c (compile_method): Enable AOT for generic code.
9750
9751         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9752
9753 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9754
9755         * mini.c: add a workaround for a common screwup that ends up blamed
9756         to mono (other processes blocking signal delivery).
9757
9758 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9759
9760         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9761         in the LDFLD/STFLD opcodes. Fixes #432673.
9762
9763         * iltests.il.in: Add a new test.
9764
9765 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9766
9767         * mini-arm.c: attach the thread in unmanaged->managed transitions
9768         using delegates (bug #433148).
9769
9770 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9771
9772        * basic-simd.cs: Use new ShuffleSel constants.
9773
9774 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9775
9776         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9777
9778         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9779         only disable simd intrinsics if no sse2 is detected.
9780
9781         * optflags-def.h: Added sse3.
9782
9783         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9784         is disabled.
9785
9786 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9787
9788         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9789         when adding delegate-invoke wrappers.
9790
9791 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9792
9793         * Makefile.am: Reenable the simd tests.
9794
9795 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9796
9797         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9798           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9799           other vreg is allocated to that hreg.
9800
9801         Contributed under MIT/X11 license.
9802
9803 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9804
9805         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9806         yet checked in.
9807
9808 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9809
9810         * basic-simd.cs: New test suite for SIMD intrinsics.
9811
9812         * Makefile.am: Added new tests.
9813
9814 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9815
9816         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9817
9818         * mini-ops.h: Same.
9819
9820         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9821
9822         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9823         using SSE2 aware opcodes.
9824
9825         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9826         is enabled, this code path is only reachable if conversion ops are emmited after
9827         mono_method_to_ir.
9828
9829         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9830
9831         This optimization saves 6 bytes per conversion against the old version.
9832
9833 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9834
9835         * aot-compiler.c (compile_method): Don't skip methods referencing 
9836         generic methods without a corresponding entry in token_info_hash, since
9837         encode_method_ref () can handle all generic methods now.
9838
9839         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9840         generic context is set.
9841         
9842         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9843         generic sharing of LDTOKEN.
9844
9845 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9846
9847         * mini-amd64.h: Temporarily disabled fast virtual generic method
9848         calls because it breaks the System.Runtime.Remoting tests.
9849
9850 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9851
9852         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9853
9854         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9855         so inlining actually works.
9856         (check_inline_caller_method_name_limit): Ditto.
9857
9858 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9859
9860         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9861         64 bit safety (from Olaf Hering and Andreas Farber).
9862
9863 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9864         
9865         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9866         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9867         unused virtual call support code.
9868
9869         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9870         
9871         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9872         which can't use aot trampolines.
9873         (decode_patch): Don't create aot trampolines for methods which can't use
9874         them.
9875
9876         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9877         use aot trampolines.
9878
9879         * mini.h: Bump AOT image format version.
9880         
9881 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9882
9883         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9884         to save_token_info () since cmethod is inflated for constrained calls.
9885
9886         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9887
9888 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9889
9890         * Makefile.am: Add build rules for ppc64.
9891         This avoids the build failing at pedump with unresolved symbols
9892         due to lack of arch_sources. Instead it will now fail earlier
9893         due to lack of cpu-ppc64.md.
9894
9895         Contributed under MIT/X11 license.
9896
9897 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9898
9899         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9900         tail calls.
9901
9902         * iltests.il.in: Add test case for tail call with many arguments.
9903
9904 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9905
9906         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9907         to the fast virtual generic method code until the aot case is fixed.
9908
9909 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9910
9911         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9912
9913 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9914
9915         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9916         thunks.
9917
9918 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9919         
9920         * simd-intrinsics.c: Forgot to add this one.
9921
9922         * mini-codegen.c: Fix macro in case SIMD is not supported.
9923
9924 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9925         
9926         This patch land initial JIT support for simd intrinsics.
9927
9928         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9929
9930         * Makefile.am: Added simd-intrinsics.c
9931
9932         * simd-intrinsics.c: New file with simd instrinsic related
9933         code.
9934
9935         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
9936
9937         * cpu-x86.md: Add simd related instructions.
9938
9939         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
9940
9941         * driver.c: Added two new --regression variants.
9942
9943         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
9944
9945         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
9946
9947         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
9948         extract some complicated logic to helper functions.
9949
9950         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
9951
9952         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
9953
9954         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
9955         the specialized simplification pass.
9956
9957         * method-to-ir.c (mono_spill_global_vars): Use new macro.
9958
9959         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
9960
9961         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
9962         table.
9963
9964         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
9965         if MONO_ARCH_NEED_SIMD_BANK is defined.
9966
9967         * mini-ops.h: Added the new simd ops.
9968
9969         * mini-x86.c: Added mono_arch_xregname.
9970
9971         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
9972
9973         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
9974
9975         * mini-x86.h: Define simd related MONO_ARCH macros.
9976
9977         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
9978
9979         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
9980
9981         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
9982         MONO_CLASS_IS_SIMD to deal with simd related IR.
9983
9984         * mini.h (MonoInst): Added spill_var to the backend union.
9985
9986         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
9987
9988         * mini.h: Added forward declarations of the new simd fuctions.
9989
9990         * optflags-def.h: Added new optimization names SIMD.
9991
9992         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
9993
9994         * regalloc.h: Added support for working with 3 register banks.
9995
9996         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
9997
9998         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
9999
10000 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
10001
10002         * mini-exceptions.c: remove 64 bit related ifdef clutter.
10003
10004 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10005
10006         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
10007         instead of one on 64 bit systems.
10008
10009         * method-to-ir.c: Remove unused includes.
10010
10011 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
10012
10013         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
10014         cfg->used_int_regs, since the two are different on arm.
10015
10016 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10017
10018         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
10019         mono_method_get_vtable_index() to get the vtable index.
10020
10021 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10022
10023         * method-to-ir.c (mono_method_to_ir2): Don't create native
10024         wrappers for array methods, because they're never called (and if
10025         they were called they wouldn't work).
10026
10027 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10028
10029         * method-to-ir.c (mono_method_to_ir2): Array methods are
10030         special-cased and must not be invoked indirectly via the (M)RGCTX
10031         when generic sharing is turned on.  Fixes #431413.
10032
10033 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10034
10035         * method-to-ir.c: When generic sharing is active, call
10036         non-interface virtual generic methods via the standard trampoline.
10037
10038         * mini-trampolines.c: Handle virtual generic shared methods.
10039
10040         * mini.h, mini-x86.c, mini-x86.h: New argument for
10041         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
10042         method thunks and which is the trampoline to call if the lookup
10043         fails.  Enable the virtual generic method thunk for x86.
10044
10045         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
10046         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
10047         argument but assert that it's NULL, because these archs don't yet
10048         implement the virtual generic method thunk.  Changes in the IMT
10049         thunk data structures.
10050
10051 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10052
10053         * aot-compiler.c (emit_globals): Avoid invalid characters in
10054         the static linking symbol.
10055
10056         * objects.cs: Add a test for the range check optimization. Fix warnings.
10057
10058         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
10059         optimization from the current JIT.
10060
10061         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
10062         later in decompose_array_access_opts () to allow more optimizations.
10063
10064         * method-to-ir.c (mono_handle_soft_float): Rename this to 
10065         mono_decompose_soft_float () for consistency.
10066
10067         * mini-ops.h: Fix arguments of OP_STRLEN.
10068
10069         * method-to-ir.c (save_cast_details): Extract the cast details saving code
10070         into a separate function.
10071         (reset_cast_details): Ditto.
10072         (handle_unbox): Save cast details. Fixes #431254.
10073
10074         * method-to-ir.c: Remove some obsolete FIXMEs.
10075
10076 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10077
10078         * ir-emit.h (alloc_dreg): Write a warning before crashing.
10079
10080 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10081
10082         * mini-codegen.c: More work on macros to make them
10083         ready for multiple regbanks.
10084
10085 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10086
10087         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
10088
10089         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
10090
10091 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10092
10093         * mini-codegen.c (mono_spillvar_offset): Proper support for
10094         multiple regbanks.
10095
10096 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10097
10098         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
10099         the stack overflow changes.
10100
10101 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10102
10103         * mini-codegen.c: Make all bank macros depend on reg_bank.
10104
10105         * mini-codegen.c (mono_local_regalloc): Make free mask
10106         initialization regbank aware.
10107
10108 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10109
10110         * mini-codegen.c (mono_local_regalloc): Extract callee
10111         mask selection to a function and make it regbank aware.
10112
10113 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10114
10115         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
10116         code to deal with many regbanks.
10117
10118 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10119
10120         * mini-codegen.c: More fp->regbank changes.
10121
10122 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10123
10124         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
10125         of a hardcoded constant.
10126
10127 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10128
10129         * method-to-ir.c (type_from_stack_type): Fix typo.
10130
10131 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10132
10133         * mini-ia64.c (emit_move_return_value): Convert float return values to
10134         double.
10135
10136         * objects.cs: Add a new test.
10137         
10138         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
10139         VARARG methods to fix an assert later.
10140
10141         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
10142         end so it at least compiles.
10143
10144 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10145
10146         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
10147
10148 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
10149
10150         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
10151         optimization to a new function (emit_optimized_ldloca_ir) and enable
10152         it for both ldloca and ldloca_s.
10153
10154 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10155
10156         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
10157         gshared CASTCLASS code.
10158
10159         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
10160         amd64, where the libc stack unwinder encounters stack frames referring to
10161         native code in unmapped memory.
10162
10163         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
10164         sharing.
10165
10166         * generics.cs: Add new test.
10167
10168 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10169
10170         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
10171         add a check that one of the ARM_FPU_ constants is defined.
10172
10173         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
10174         
10175         * mini-exceptions.c: Fix build on non-altstack platforms.
10176
10177         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10178         sharing of vtypes.
10179
10180         * ir-emit.h: Add a comment to NEW_PCONST.
10181
10182         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10183
10184         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10185
10186         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10187         after the changes to MonoJitDomainInfo.
10188
10189 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10190
10191         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10192
10193 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10194
10195         * mini-ppc.c: Compiler warning fixes.
10196
10197 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10198
10199         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10200         for pinvokes.
10201
10202 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10203
10204         * exceptions-ppc.c, mini-ppc.h: Compile
10205         mono_arch_handle_altstack_exception() on Darwin, too.
10206
10207 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10208
10209         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10210         work on archs which don't have generic sharing implemented, only
10211         without the vtable_arg.
10212
10213 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10214
10215         * mini.c: Added comment explaining why delegate ctor icall
10216         wrappers are compiled.
10217
10218 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10219
10220         * mini.c: Don't produce trampolines to delegate ctor icall
10221         wrappers but compile them upfront.
10222
10223 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10224
10225         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10226         runtime-set function when going back to managed code. Currently this
10227         is used to set back the protection on the soft ovf pages and/or to
10228         throw the stack overflow exception that happened in unmanaged code.
10229
10230 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10231
10232         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10233         runtime-set function when going back to managed code. Currently this
10234         is used to set back the protection on the soft ovf pages and/or to
10235         throw the stack overflow exception that happened in unmanaged code.
10236
10237 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10238
10239         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10240         the support code for restoring stack protection after stack overflows
10241         that happen in unmanaged code. Don't set the exec permission on the
10242         soft overflow area.
10243
10244 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10245
10246         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10247         delegate->method_ptr is set. Fixes #428054.
10248
10249 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10250
10251         * tests.cs: Rename to ratests.cs.
10252
10253         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10254         emit_get_rgctx_... functions.
10255
10256 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10257
10258         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10259
10260 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10261
10262         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10263         before asserting that method is sharable.
10264
10265 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10266
10267         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10268         whether method needs a static RGCTX wrapper used instead of
10269         complex conditions.
10270
10271         * generic-sharing.c, mini.h: A few functions moved to
10272         metadata/generic-sharing.c.
10273
10274 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10275
10276         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10277         Generic code sharing for value types, which essentially means
10278         treating value type methods like static methods.  The RGCTX is
10279         passed in the same way.
10280
10281 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10282
10283         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10284         opcode when creating multi-dimensional arrays of open types.
10285
10286         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10287         open generic types.
10288
10289         * generics.cs: Add a test.
10290
10291         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10292
10293 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10294
10295         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10296
10297         * mini.c (mini_method_compile): Set it when running under the debugger. 
10298
10299         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10300         vreg optimization if the flag is set.
10301
10302         * driver.c (mono_main): Add --attach= option to pass options to
10303         the attach agent.
10304
10305         * mini.c (sigquit_signal_handler): Start the attach agent.
10306
10307         * ssapre.c: Disable this to save space since it is not yet ported to
10308         linear IR.
10309
10310         * regalloc2.c: Disable this to save space.
10311
10312         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10313
10314 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10315
10316         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10317         the -v option useful again.
10318
10319 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10320
10321         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10322         --break-at-bb.
10323
10324         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10325         arrays of arrays. Fixes #428406.
10326
10327         * method-to-ir.c (mini_emit_castclass): Ditto.
10328
10329         * objects.cs: Add new test.
10330         
10331 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10332
10333         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10334         was wrong at it choked against target_type_is_incompatible for byref types.
10335
10336 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10337
10338         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10339         places.
10340
10341 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10342
10343         * mini-exceptions.c: update a few more exceptions-related counters.
10344
10345 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10346
10347         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10348         new functions to allocate from persistent mempools.
10349
10350 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10351
10352         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10353         multiple register banks in the future.
10354
10355         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10356
10357 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10358
10359         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10360
10361         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10362
10363         * mini.h: Export type_to_eval_stack_type.
10364
10365         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10366         is only ins->klass of byref types.
10367
10368 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10369
10370         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10371         (mini_emit_memcpy2): Ditto.
10372
10373         * mini-amd64.c: Fix a warning.
10374
10375 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10376
10377         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10378         linking.
10379
10380 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10381
10382         * method-to-ir.c: Extract stloc micro-optimization to a
10383         function and apply it to all cases.
10384
10385 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10386
10387         * method-to-ir.c: Don't fail generic code sharing in cases we
10388         already support.
10389
10390 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10391
10392         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10393
10394 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10395
10396         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10397         implementation.
10398
10399 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10400
10401         * trace.c: make tracing more useful and correct, with per-thread
10402         id and indent info.
10403
10404 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10405
10406         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10407         doing a method call and the argument is an R4.
10408
10409 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10410
10411         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10412         generic methods.
10413
10414 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10415
10416         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10417
10418 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10419
10420         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10421         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10422
10423 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10424
10425         * driver.c: Add a --agent argument (not supported yet) to load managed
10426         agent assemblies before loading the main assembly, similarly to how the
10427         Java VM handles agents.
10428
10429 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10430
10431         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10432         function to do stack layout of local variables.
10433
10434 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10435
10436         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10437         calculation.
10438
10439 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10440
10441         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10442         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10443         JIT if DISABLE_JIT is defined.
10444
10445         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10446         defined.
10447
10448 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10449
10450         * iltests.il.in: Disable the fconv test on PPC (the result is
10451         undefined according to ECMA).
10452
10453 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10454
10455         * iltests.il.in: Enable tail call tests for PPC.
10456
10457         * mini.h: Add variable for storing incoming valuetype argument
10458         addresses for tail calls.
10459
10460         * mini-ppc.c: Implement valuetype arguments and return values for
10461         tailcalls on Linux.
10462
10463 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10464
10465         * mini-ppc.c: Partially implement tail calls (struct arguments and
10466         return values not supported).
10467
10468         * method-to-ir.c: Enable tail calls on PPC.
10469
10470 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10471
10472         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10473         runtime-invoke wrappers to work around the problem of them getting
10474         assigned to a random class.
10475
10476         * aot-runtime.c (mono_aot_get_method): Ditto.
10477         
10478 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10479
10480         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10481         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10482
10483 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10484
10485         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10486         until they're implemented properly.
10487
10488         * exceptions-ppc.c: Use arch-independent exception-handling code
10489         instead of custom one.
10490
10491         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10492         for Linear IR.
10493
10494         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10495
10496         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10497         applies when __powerpc__ is defined.
10498
10499 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10500
10501         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10502         methods to their code to avoid computing the full name of wrappers and
10503         doing a lookup in a string hash table.
10504
10505 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10506
10507         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10508         we identify bblocks before method_to_ir () is ran.
10509
10510         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10511         Also avoid optimizing branches pointing to themselves.
10512
10513         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10514
10515 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10516
10517         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10518
10519 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10520
10521         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10522         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10523         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10524         'buf'.
10525
10526         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10527         jumped to the same entry in plt_jump_table.
10528
10529 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10530
10531         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10532         dynamic images.
10533
10534 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10535
10536         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10537         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10538         #421807.
10539
10540 2008-08-29  Geoff Norton  <gnorton@novell.com>
10541
10542         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10543         segment, and doesn't properly handle .space as .text.  Fixes
10544         AOT Mach/ARM
10545
10546 2008-08-29  Geoff Norton  <gnorton@novell.com>
10547
10548         * mini.c: Disable the mach exception handler when running on 
10549         ARM
10550
10551 2008-08-29  Geoff Norton  <gnorton@novell.com>
10552
10553         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10554         globals on Darwin/ARM
10555
10556 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10557
10558         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10559         since too many things depend on it. Instead, call 
10560         mono_runtime_set_no_exec ().
10561         
10562         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10563         the new JIT.
10564
10565         * aot-compiler.c: Add an 'asm-only' AOT option.
10566
10567         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10568                 
10569         * aot-compiler.c (compile_method): Disable gshared support for now as it
10570         doesn't yet work.
10571
10572 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10573
10574         * mini-amd64.h : Fix a compiler warning.
10575
10576         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10577           Changed to use a callback function to retrieve the unwind info.
10578           This avoids problems observed when code blocks were removed by
10579           unloading an app domain.
10580
10581         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10582           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10583           to work properly.
10584
10585         Contributed under MIT/X11 license.
10586
10587 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10588
10589         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10590           case to keep the stack aligned to 8.
10591
10592         Contributed under MIT/X11 license.
10593
10594 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10595
10596         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10597         avoid repeated linear searches.
10598
10599 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10600
10601         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10602         methods it can't handle.
10603         
10604         * aot-compiler.c (add_method): Avoid adding a method twice.
10605         (add_wrappers): Add runtime invoke wrappers for all methods.
10606
10607         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10608         function to create an aot-compatible version of this trampoline.
10609
10610         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10611
10612 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10613
10614         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10615
10616         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10617         with a generic sharing failure.
10618
10619         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10620
10621         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10622         CEE_RETHROW. Fixes #419634.
10623
10624         * mini.c (mono_method_to_ir): Ditto.
10625
10626         * exceptions.cs: Add a new test.
10627         
10628         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10629         to mono_type_stack_size_internal () since some callers might not pass in
10630         an rgctx.
10631
10632         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10633         instrument_prolog. Fixes #419878.
10634
10635         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10636         doubles in soft float mode volatile.
10637
10638 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10639
10640         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10641
10642         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10643         to handle soft float correctly.
10644
10645         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10646         the fast path.
10647
10648         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10649
10650         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10651         to sp, since the generics catch code requires it.
10652
10653         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10654         copying.
10655
10656         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10657         mono_arch_emit_imt_argument ().
10658
10659         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10660
10661         * mini-arm.c tramp-arm.c: Generic sharing updates.
10662
10663 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10664
10665         * mini-arm.c: Fix the arm build.
10666
10667         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10668         handling enums, generic instances and generic sharing.
10669         (mini_type_stack_size_full): Ditto.
10670
10671         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10672         
10673         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10674
10675         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10676
10677         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10678         trampolines.
10679
10680         * mini-arm.c: Various small generic sharing changes.
10681
10682         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10683         this for x86.
10684         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10685         custom code.
10686
10687         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10688         helper function to return a generic class init trampoline.
10689
10690         * method-to-ir.c mini.c: Use it.
10691         
10692         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10693         arch-specfic function to return a generic class init trampoline.
10694
10695         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10696         the GENERIC_CLASS_INIT custom code.
10697
10698         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10699         a fatal error, not a sharing failure.
10700
10701         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10702         needed.
10703
10704         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10705         trampoline argument from MONO_ARCH_VTABLE_REG.
10706
10707         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10708         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10709         argument, and pass the vtable in VTABLE_REG.
10710
10711         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10712         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10713         argument, and pass the vtable in VTABLE_REG.
10714         (mono_arch_create_trampoline_code_full): Remove some special casing for
10715         the rgctx fetch trampoline.
10716
10717         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10718         Fixes #419273.
10719
10720         * iltests.il: Add a test for it.
10721
10722 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10723
10724         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10725
10726         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10727         no longer needed.
10728
10729         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10730         use mono_jit_info_table_find () to avoid recursion.
10731         (mono_delegate_trampoline): Add a sync wrapper here.
10732
10733         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10734         here.
10735
10736         * mini.c (mono_method_to_ir): Ditto.
10737         
10738         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10739         add_sync_wrapper argument. Don't add a sync wrapper here.
10740         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10741
10742         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10743         
10744 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10745
10746         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10747           of nonvolatile registers back from MonoContext to CONTEXT.
10748
10749         Contributed under MIT/X11 license.
10750
10751 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10752
10753         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10754           arguments on Winx64 there are only 4 argument registers.  For this
10755           logic to work the last argument must be pulled from the stack.  
10756
10757         Contributed under MIT/X11 license.
10758
10759 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10760
10761         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10762
10763         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10764         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10765         encode/decode_method_ref ().
10766
10767         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10768
10769         * aot-runtime.c (decode_patch): Ditto.  
10770
10771         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10772         MONO_PATCH_INFO_METHOD.
10773
10774         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10775         MonoGenericJitInfo.
10776
10777         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10778         MonoGenericJitInfo.
10779
10780         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10781
10782         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10783         one from the caller.
10784
10785         * aot-runtime.c (decode_generic_inst): New function to decode and
10786         return a interned generic inst.
10787         (decode_klass_ref): Use it.
10788         (decode_method_ref): Ditto.
10789
10790         * aot-compiler.c (emit_exception_debug_info): Save 
10791         jinfo->has_generic_jit_info too.
10792
10793 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10794
10795         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10796
10797         * iltests.il.in: Add a test for fconv_to_i.
10798
10799         * liveness.c: Disable the liveness2 pass for now to save space.
10800
10801         * regalloc2.c: Include mempool-internals.h to fix warnings.
10802
10803         * aot-compiler.c (encode_method_ref): Encode the context of generic
10804         instance methods.
10805
10806         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10807         the context saved in the aot file.
10808
10809         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10810
10811         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10812
10813         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10814         volatile so they won't be optimized away.
10815
10816 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10817
10818         * ssa.c:
10819         * ssa2.c:
10820         * mini.c:
10821         * regalloc2.c:
10822         * dominators.c: Remove duplicated functions that now are in
10823         mempool-internals.h.
10824
10825 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10826
10827         * aot-compiler.c: Fix warnings.
10828
10829         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10830
10831         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10832
10833         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10834         as the patch type.
10835
10836         * mini.c (mono_resolve_patch_target): Ditto.
10837         
10838         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10839         (encode_klass_ref): Add support for encoding VARs/MVARs.
10840
10841         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10842
10843         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10844         the handling of the got entries into a separate 'decode_got_entry' function.
10845         Add support for RGCTX_FETCH.
10846
10847         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10848         clobbered by the trampoline code.
10849
10850         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10851         not clobbered by the indirect calling code.
10852
10853 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10854
10855         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10856         to fix the build.
10857
10858 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10859
10860         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10861         signature using the compilation mempool otherwise we would leak it.
10862
10863 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10864
10865         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10866         mono_emit_abs_call ().
10867
10868         * patch-info.h: Add GENERIC_CLASS_INIT.
10869
10870         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10871
10872         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10873         as their target as a near call.
10874
10875         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10876         ABS handling code.
10877         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10878
10879         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10880         call to a runtime function described by a patch.
10881
10882         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10883         mono_emit_abs_call, this has the advantage that the ABS handling code in
10884         mono_codegen () can handle them both, and can handle other stuff in the
10885         future without additional code.
10886
10887         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10888         entry.
10889         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10890         abs addresses.
10891
10892         * mini.h: Add missing bblock related prototypes.
10893
10894         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10895         reverse_inst_list_len fields.
10896
10897         * mini.c: Refactor this file a bit by moving branch optimizations to 
10898         branch-opts.c.
10899
10900         * method-to-ir.c: Merge generic sharing changes missed earlier.
10901
10902         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10903
10904         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10905         shared patches. Process METHODCONST as a shared patch.
10906
10907         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10908         as it crashes on the 2.0 mscorlib.
10909
10910         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10911         to cause crashes.
10912         
10913         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10914         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10915         by IMT.
10916
10917         * aot-compiler.c: Reorganize the got handling code to be a bit more
10918         understandable.
10919
10920 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10921
10922         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10923         mono_patch_info_equals/hash, and use it to massively simplify
10924         get_plt_index ().
10925
10926         * mini.c (mono_patch_info_hash): Simplify this and add support for
10927         more patch types.
10928
10929         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
10930
10931         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
10932         handling code, since an offset is not enough to identify a trampoline.
10933
10934         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
10935
10936 2008-08-17  Mark Probst  <mark.probst@gmail.com>
10937
10938         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
10939
10940         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
10941
10942         * mini-ops.h: Argument and result types for OVF_CARRY ops.
10943
10944         * decompose.c: PPC decompositions for various ops.
10945
10946         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
10947
10948 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10949
10950         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
10951         call the generic trampoline code using a call, instead of a jump, to
10952         remove some special casing from the generic trampoline code.
10953
10954         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
10955         (mono_codegen): Ditto.
10956
10957         * aot-compiler.c aot-runtime.c: Ditto.
10958
10959         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
10960
10961         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
10962         helper function to find the offset corresponding to a lazy fetch trampoline.
10963
10964         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
10965         when doing generic sharing.
10966
10967         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
10968         places.
10969         
10970         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
10971         mini-trampolines.c to be with the other trampoline creation functions.
10972
10973         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
10974         as it is equal to method->signature in most cases, add a 
10975         mono_emit_method_call_full variant which takes a signature and an imt
10976         argument as well.
10977
10978 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10979
10980         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
10981         to this function, since it could be computed easily from the method 
10982         argument.
10983         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
10984         more.
10985
10986         * method-to-ir.c mini.c: Remove references to 
10987         compile_generic_method_wo_context.
10988
10989         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
10990         generic method calls.
10991         
10992         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
10993         dimensional non-szarrays.
10994
10995         * mini.c (mini_init): Register mono_array_new_1.
10996
10997         * jit-icalls.c (mono_array_new_1): New jit icall.
10998
10999         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
11000         pointing to the method.
11001
11002         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
11003         method addresses belonging to METHOD_JUMP patches in the 
11004         jump_target_got_slot_hash.
11005         (mono_aot_load_method): Ditto.
11006
11007         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
11008         METHOD_JUMP patches.
11009
11010         * mini.c (mini_create_jit_domain_info): New helper function which 
11011         initializes/frees domain->runtime_info.
11012         (mini_free_jit_domain_info): Ditto.
11013         (mini_init): Install the domain hook functions with the runtime.
11014
11015         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
11016         information maintained by the JIT.
11017
11018         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
11019         insertion into jump_table_hash into mono_codegen (), also implement proper
11020         locking.
11021
11022         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
11023         tail calls, it is already done by the aot code.
11024         
11025         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
11026         mechanism on amd64.
11027
11028         * iltests.il.in: Make the jmp test a bit more complex.
11029
11030         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
11031         generic instances which doesn't have a token.
11032
11033         * aot-runtime.c (decode_method_ref): Ditto.
11034         
11035         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
11036         can handle this case now.
11037         (handle_box): Ditto.
11038
11039 2008-08-15  Geoff Norton  <gnorton@novell.com>
11040
11041         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
11042         debugging check.
11043
11044 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
11045
11046         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
11047         calling generic methods.
11048
11049         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
11050
11051         * aot-runtime.c (decode_patch_info): Ditto.
11052
11053         * mini.c (mono_resolve_patch_target): Ditto.
11054         
11055         * patch-info.h: Add METHOD_RGCTX.
11056
11057         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
11058
11059 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
11060
11061         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
11062         arguments in registers.
11063
11064         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
11065         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
11066
11067         * mini.c (mini_method_compile): Abort aot compilation for generic
11068         methods if generic sharing is disabled.
11069         
11070         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
11071         an mrgctx.
11072
11073         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
11074         requiring an mrgctx.
11075
11076         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
11077         store instructions when converting a vcall to a normal call.
11078
11079         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
11080         mono_arch_find_jit_info.
11081
11082 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
11083
11084         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
11085         avoid calling mono_method_full_name () for every method even if the
11086         env var is not set.
11087         (check_inline_caller_method_name_limit): Ditto.
11088
11089 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11090
11091         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
11092         assemblies in one run.
11093
11094         * aot-compiler.c (mono_compile_assembly): Only print out a count of
11095         skipped methods if it is not 0.
11096
11097         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
11098
11099 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11100
11101         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
11102           MONO_ARCH_HAVE_UNWIND_TABLE.
11103
11104         Contributed under MIT/X11 license.
11105
11106 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11107
11108         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
11109           from default optimizaton list on Winx64.
11110
11111         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
11112
11113         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
11114           the LMF from the MonoJitTlsData structure.
11115
11116         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
11117
11118         Contributed under MIT/X11 license.
11119
11120 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11121
11122         * mini.c (sigsegv_signal_handler): Fix the build.
11123
11124         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
11125         assembly->aot_module.
11126
11127         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
11128         hash table. This simplifies and speeds up a lot of code, and fixes support
11129         for .netmodules.
11130
11131         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
11132         with the runtime.
11133
11134         * mini-exceptions.c: Ditto.
11135         
11136         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
11137         'native_offset' argument, since these are computed in the 
11138         mono_find_jit_info () function.
11139
11140         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
11141         is used by exceptions-ppc.c.
11142
11143         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
11144         mono_arch_find_jit_info ().
11145         
11146         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
11147         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
11148         generic code in mini-exceptions.c.
11149
11150 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
11151
11152         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
11153
11154         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
11155         
11156         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
11157         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
11158         called while holding the loader lock. Fixes #415608.
11159         (mono_aot_get_method_from_token_inner): Ditto.
11160
11161 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11162
11163         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
11164         to reduce differences between this and the generic implementation in
11165         mini-exceptions.c.
11166         (ves_icall_get_frame_info): Ditto.
11167
11168         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
11169
11170         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
11171         longer neccesarry.
11172
11173         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
11174         mono_arch_get_call_filter () and make it non-static, for consistency with the
11175         other architectures.
11176
11177 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11178
11179         * mini.c:
11180         * local-propagation.c:
11181         * mini-x86.c: Correct the name of arch defines.
11182
11183 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11184
11185         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11186         NO_EMULATE_LONG_SHIFT_OPS define.
11187
11188 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11189
11190         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11191         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11192
11193         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11194         MACH fixes. Merged from the 2.0 branch.
11195
11196         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11197
11198         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11199         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11200
11201         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11202
11203         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11204         mono_marshal_get_native_wrapper () signature changes.
11205
11206 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11207
11208         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11209         conversion bug under arm.
11210
11211 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11212
11213         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11214
11215         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11216         with overflow checking.
11217
11218 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11219
11220         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11221         to the genmdesc.pl file
11222
11223 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11224
11225         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11226         arg_array in the soft-float versions of the LOAD/STORE macros.
11227
11228         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11229         implementation.
11230
11231         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11232
11233 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11234
11235         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11236         a float HFA. Fixes #413621.
11237
11238 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11239
11240         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11241         frame_size to args_size. Fixes build.
11242
11243 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11244
11245         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11246         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11247
11248         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11249         the stack are not unaligned. Fixes #413247.
11250         
11251 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11252
11253         * mini.c: update jitted methods performance counters.
11254
11255 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11256
11257         * mini-exceptions.c: increase the exceptions thrown performance
11258         counter in mono_handle_exception ().
11259
11260 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11261
11262         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11263         can work with netmodules.
11264
11265 2008-07-28  Geoff Norton  <gnorton@novell.com>
11266
11267         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11268         regression tests.
11269
11270 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11271
11272         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11273         correct place.
11274
11275 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11276
11277         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11278           The float param registers and other param registers must be the 
11279           same index on Windows x64.
11280
11281         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11282           ArgValuetypeAddrInIReg argument case.  Setting the argument
11283           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11284
11285         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11286           variable computed above as the copy length for arguments of storage
11287           type ArgValuetypeAddrInIReg.
11288
11289         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11290           ArgValuetypeAddrInIReg argument case.  This case will rely on
11291           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11292
11293         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11294           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11295           jump and tail call instructoins as they do not follow the typical call behavior.
11296
11297         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11298           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11299           local variable and pass the local variable by reference to the called method.
11300
11301         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11302           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11303           of a struct is passed in a register it must be saved with the other
11304           volatile argument on the stack.
11305
11306         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11307           frame pointer the stack adjustment value must be saved to the unwind 
11308           info structure.
11309
11310         Contributed under MIT/X11 license.
11311
11312 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11313
11314         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11315         which got lost in the merge.
11316
11317 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11318
11319         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11320         build.
11321
11322         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11323         
11324         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11325         icalls, since they won't be patched.
11326
11327         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11328         different code sequence when running under valgrind to prevent some valgrind
11329         errors.
11330
11331         * iltests.il.in: Add new regression test.
11332
11333         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11334         end with a throw.
11335
11336         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11337         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11338
11339         * iltests.il.in: Add new test.
11340
11341         * aot-compiler.c: Fix some warnings.
11342
11343         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11344         Fixes #412494.
11345
11346 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11347
11348         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11349         (mini_usage_jitdeveloper): Add a missing --wapi option.
11350
11351 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11352
11353         * mini-codegen.c: Simplify the is_fp macros.
11354         (free_up_ireg): Remove, use free_up_reg instead.
11355         (free_up_reg): Fix the fp case.
11356
11357 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11358
11359         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11360         lowered earlier.
11361
11362         * exceptions-x86.c: Merge some changes which seemed to have got lost
11363         in the linear-ir merge.
11364
11365         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11366
11367         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11368         long vreg volatile even if the variable was already created.
11369
11370         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11371         volatile variables.
11372
11373 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11374
11375         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11376
11377         * mini.c (mono_jit_compile_method_inner): Add support for 
11378         MONO_EXCEPTION_BAD_IMAGE.
11379
11380         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11381         mini_method_get_context () returns NULL. Fixes #356531.
11382
11383         * mini.c (mono_method_to_ir): Ditto.
11384         
11385         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11386         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11387
11388 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11389
11390         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11391         in the LDFTN implementation.
11392
11393 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11394
11395         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11396         code, patch calls to icalls, too, even if they're not in the
11397         shared generic code hash.  Fixes #411962.
11398
11399 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11400
11401         * cpu-x86.md: Increase the length of the fcall opcodes.
11402
11403         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11404         calls returning floats.
11405
11406         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11407         on NEWARR.
11408         
11409         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11410         missed earlier.
11411
11412         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11413         into the domain->method_code_hash.
11414
11415         * aot-compiler.c: Fix win32 build.
11416
11417         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11418         
11419         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11420         gshared NEWARR implementation.
11421
11422         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11423
11424         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11425         can be used outside of method_to_ir.
11426
11427         * mini.h (MonoCompile): Add arg_types field.
11428
11429         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11430         
11431         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11432         the values of the local arg_array and param_types array.
11433
11434 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11435
11436         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11437         got accesses might only get generated later when NEWOBJ is decomposed.
11438         
11439         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11440         looking up the native code of the target method when a delegate is called
11441         for the first time.
11442
11443         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11444         optimization.
11445
11446         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11447
11448         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11449         AOT work on platforms without a working dlsym implementation.
11450
11451         * mini.h: Bump AOT image format version.
11452         
11453 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11454
11455         * mini-exceptions.c: Free a MonoType with
11456         mono_metadata_free_type() instead of g_free().
11457
11458         * aot-runtime.c: Free a MonoType.
11459
11460 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11461
11462         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11463         optimization.
11464
11465         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11466         fp stack on x86.
11467
11468 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11469         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11470         profiler hook.
11471
11472 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11473
11474         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11475         NEWOBJ calls on valuetypes.
11476
11477         * iltests.il.in: Add new test.
11478
11479         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11480
11481 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11482
11483         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11484         is no longer needed.
11485
11486         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11487         non register sized integer arguments.
11488         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11489         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11490         emit_memcpy2 ().
11491
11492         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11493         CEE_MONO_RETOBJ.
11494         
11495         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11496         two a binop with different sized arguments is emitted.
11497
11498         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11499         instruction in the ins==NULL case.
11500
11501 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11502
11503         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11504
11505         * mini-x86.c: Fix osx build.
11506
11507         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11508         opcodes as well.
11509
11510         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11511         instruction for non int sized variables.
11512
11513         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11514         implementation.
11515
11516 2008-07-23  Robert Jordan  <robertj@gmx.net>
11517
11518         * method-to-ir.c: Fix MSVC build.
11519
11520 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11521
11522         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11523         a non int sized type, widen it to an int since newer versions of gcc seem to
11524         generate code which needs this.
11525
11526         * ssa2.c abcremoval2.c: Fix warnings.
11527
11528         * *: Merge the Linear IR branch.
11529
11530         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11531         the ChangeLog file there describes all the changes done over the years. 
11532         Further documentation can be found at www.mono-project.com/Linear_IL.
11533
11534 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11535
11536         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11537           The float param registers and other param registers must be the 
11538           same index on Windows x64.
11539
11540         Contributed under MIT/X11 license.
11541
11542 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11543
11544         * mini.c: Make the previous fix GC safe.
11545
11546 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11547
11548         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11549
11550 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11551
11552         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11553           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11554           ArgValuetypeAddrInIReg instead.
11555
11556         Contributed under MIT/X11 license.
11557
11558 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11559
11560         * mini-codegen.c (get_register_spilling): Fix a warning.
11561
11562 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11563
11564         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11565         for types which the initialization fails. Raises the provided exception
11566         at the right stop after cleanup.
11567
11568 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11569
11570         * aot-compiler.c: Free most of the memory allocated during compilation.
11571
11572         * mini.c (mini_parse_debug_options): Fix a leak.
11573         
11574         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11575         during aot compilation.
11576
11577 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11578
11579         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11580         it has too much register pressure.
11581
11582 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11583
11584         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11585
11586 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11587
11588         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11589         on x86.
11590
11591         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11592         on amd64 similar to the way it is done on arm.
11593
11594         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11595
11596         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11597         consistency, normalize error messages, avoid loading aot-only modules in
11598         normal mode.
11599
11600         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11601         for consistency.
11602
11603         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11604
11605 2008-07-11  Martin Baulig  <martin@ximian.com>
11606
11607         * debug-debugger.h
11608         (MonoDebuggerInfo): Add `interruption_request'.
11609
11610 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11611
11612         * aot-compiler.c (emit_plt): Remove some dead code.
11613
11614         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11615
11616         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11617         return the plt info offset belonging to a given plt entry.
11618
11619         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11620         mono_aot_get_plt_info_offset.
11621         
11622         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11623         similar to the amd64 code by makeing jumps through a separate jump table 
11624         instead of embedding the jump addresses into the code.
11625
11626 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11627
11628         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11629         method.
11630
11631 2008-07-10  Martin Baulig  <martin@ximian.com>
11632
11633         * mini.c (mini_method_compile): Disable generics sharing when
11634         running in the debugger.
11635
11636 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11637
11638         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11639
11640         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11641         the local register allocator from running out of registers on x86 when 
11642         using aot.
11643
11644 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11645
11646         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11647         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11648         C4146.
11649
11650         Contributed under MIT/X11 license.
11651
11652 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11653
11654         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11655         speed up the assembler.
11656
11657 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11658
11659         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11660         support.
11661
11662         * mini.c: Move the soft float handling macros a bit earlier, add 
11663         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11664         place.
11665
11666         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11667
11668         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11669         read-only to help catch code allocation requests.
11670         
11671         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11672         and turn it off when using --aot-only or when compiling with --aot=full.
11673
11674         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11675         jump table for switches from the normal domain mempool, not the code
11676         manager.
11677
11678         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11679         unbox trampoline which handles aot-only mode too.
11680
11681         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11682         an AOTed unbox trampoline.
11683
11684         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11685
11686 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11687
11688         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11689         ""
11690
11691         Contributed under MIT/X11 license.
11692
11693 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11694
11695         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11696           the unwind information for the method at the end of the allocated block.
11697           
11698         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11699           MonoCompileArch to hold the unwind info for SEH on Winx64
11700         
11701         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11702           frame pointer info for the method being compiled.
11703           
11704         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11705           the call to mono_exception_from_token.
11706           
11707         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11708           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11709           information is stored a the end of the method block because it is all 32-bit offset based.
11710
11711         Contributed under MIT/X11 license.
11712
11713 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11714
11715         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11716
11717         * wapihandles.c: Fix warnings.
11718
11719         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11720         mode.
11721
11722         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11723         mono_jit_compile_method in aot-only mode since that calls the type 
11724         initializer.
11725         
11726         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11727         get_delegate_invoke_impl in aot-only mode.
11728
11729         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11730
11731 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11732
11733         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11734
11735         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11736         is on by default.
11737
11738         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11739
11740         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11741         init trampoline from the AOT file as well.
11742
11743         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11744         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11745         code.
11746
11747         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11748         mono_init.
11749
11750         * exceptions-amd64.c: Add _full variants for the remaining exception code
11751         creation functions as well, allow emission of relocatable code, remove
11752         caching since that is now done by the caller.
11753
11754         * mini-exceptions.c: Add _full variants for the remaining exception code
11755         creation functions as well, add aot-only support.
11756
11757         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11758         if we can determine a proper token for them.
11759         (add_wrappers): Add a few more wrappers.
11760         (emit_method_code): Remove some dead code.
11761         (emit_trampolines): Emit exception code too.
11762
11763         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11764
11765         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11766         mono_array_new_va which avoids varargs.
11767
11768         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11769
11770         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11771         mono_arch_create_specific_trampoline () in all places.
11772
11773         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11774         a bit so it can be used for other things as well.
11775         
11776         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11777         on demand as well.
11778
11779         * exceptions-amd64.c: Rename the caching from the exception code creation
11780         functions, it is done by the caller instead.
11781         
11782         * exceptions-amd64.c: Change the signature of the exception code creation 
11783         functions to allow the creation of relocatable code later.
11784
11785         * mini-exceptions.c: Add a set of functions to query the various 
11786         runtime-generated exception functions.
11787
11788         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11789         mono_arch_.. () functions.
11790         
11791 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11792
11793         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11794
11795         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11796
11797         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11798         (mini_get_vtable_trampoline): Ditto.
11799
11800         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11801         code in the AOT case by returning the code size and a list of relocations to
11802         the caller.
11803
11804         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11805
11806 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11807
11808         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11809           clean the stack.
11810
11811         Contributed under MIT/X11 license.
11812
11813 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11814
11815         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11816         so the buffer size can be computed correctly. Fixes #404735.
11817
11818         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11819         normally as cfg->debug_info is already freed.
11820
11821 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11822
11823         * mini-amd64.c: For calls returning vtypes in registers, don't store
11824         the return address on the stack, instead allocate a separate local for
11825         it. Fixes #404729.
11826
11827 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11828
11829         * mini-trampolines.c, mini.h: Add an argument to
11830         mono_create_jit_trampoline_in_domain() for turning off the adding
11831         of the sync wrapper.
11832
11833         * mini.c: Use the JIT trampoline without sync instead of
11834         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11835         be patched.
11836
11837 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11838
11839         * driver.c: Turn on GSHARED optimization by default.
11840
11841 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11842
11843         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11844         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11845
11846         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11847         create a variant of the generic trampoline code callable from AOTed trampolines.
11848
11849         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11850         trampoline code callable from AOTed trampolines.
11851
11852         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11853
11854 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11855
11856         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11857         pass-through manner.
11858
11859         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11860         and don't fail sharing for them anymore.
11861
11862         * mini-exceptions.c: Handle exceptions in shared generic methods.
11863
11864         * generic-sharing.c: When checking the context of a generic
11865         method, also check its class's context.  Don't treat wrappers as
11866         sharable.
11867
11868         * mini-trampolines.c: Some code factored out to
11869         metadata/generic-sharing.c.  Handle the MRGCTX case.
11870
11871         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11872         we must deal with the method being of another instantiation of the
11873         class.  Add static rgctx invoke wrappers to generic methods.
11874
11875 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11876
11877         * mini.c: Provide all jit infos of generic shared methods with a
11878         generic jit info.
11879
11880         * mini-exceptions.c: Handle the new situation that a generic info
11881         might be available, but not info about the this/vtable/mrgctx
11882         variable.
11883
11884 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11885
11886         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11887         generic methods.
11888
11889 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11890
11891         * dominators.c (check_dominance_frontier): Fix a warning.
11892
11893         * mini.h: Add some missing prototypes.
11894
11895         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11896
11897         * driver.c (mono_jit_init_version): Correct the comments since the first
11898         argument should be the name of the root domain, not a filename.
11899
11900         * aot-runtime.c (make_writable): Error out if this is called while running
11901         with --aot-only.
11902         (load_aot_module): Ditto.
11903
11904         * aot-compiler.c: Really fix the computation of method indexes.
11905
11906         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11907         optimizations as this is no longer called frequently.
11908
11909         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11910         method and the invoke impl code and pass it to the delegate trampoline instead of
11911         just the delegate class.
11912
11913 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11914
11915         * aot-compiler.c: Fixup the computation of method indexes.
11916         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11917         the method builder infrastructure.
11918
11919         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11920         has no header.
11921
11922         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11923         mode, load the method right away instead of creating a trampoline.
11924
11925         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11926
11927         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11928         some checks a bit.
11929
11930 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11931
11932         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
11933         (mono_aot_load_method): Use method_index instead of method->token.
11934
11935         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
11936         can handle icalls etc. properly.
11937
11938         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11939
11940         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
11941
11942         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
11943         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
11944         JIT_ICALL_ADDR patch type.
11945
11946         * patch-info.h: Add JIT_ICALL_ADDR patch type.
11947
11948         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
11949         request flag.
11950         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
11951
11952         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
11953
11954 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11955
11956         * mini.c: Use domain->jit_code_hash_lock for controlling access to
11957         domain->jit_code_hash.
11958
11959 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11960
11961         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
11962
11963 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11964
11965         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
11966         get_this_arg_from_call, let it compute it when needed.
11967
11968         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
11969         gsctx from code only when needed.
11970
11971         * mini-trampolines.c (get_generic_context): Rename this to 
11972         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
11973         it can be called by the arch backends.
11974
11975         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
11976
11977 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
11978
11979         * driver.c (mono_main): Add experimental --aot-only command line option.
11980
11981         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
11982         set.
11983
11984 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
11985
11986         * driver.c (DllMain): Remove mono_module_handle.
11987
11988         Contributed under MIT/X11 license.
11989
11990 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
11991
11992         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
11993         for emitting methods which are not in the source assembly. Detect and report
11994         failure of assembling+linking.
11995         
11996         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
11997
11998         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
11999
12000 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
12001
12002         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
12003
12004 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
12005
12006         * mini.h: Remove some obsolete prototypes.
12007
12008         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
12009
12010 2008-06-24  Mark Probst  <mark.probst@gmail.com>
12011
12012         * mini.c (get_object_generic_inst): Variable-sized arrays are not
12013         supported by Visual Studio, so use alloca().
12014
12015 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
12016
12017         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
12018         Fixes #402585.
12019
12020 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12021
12022         * mini.c: Fail sharing of a generic method if it contains an open
12023         catch clause (because we don't pass MRGCTXs yet).
12024
12025 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12026
12027         * mini.c: When compiling a method with generic sharing, insert the
12028         method instantiated with an all-Object generic context into the
12029         jit info table, instead of the context of the first instantiation
12030         of the method we happen to compile.
12031
12032 2008-06-18  Martin Baulig  <martin@ximian.com>
12033
12034         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
12035         `major_version' and `minor_version'.
12036
12037 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12038
12039         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
12040         mono_method_is_generic_sharable_impl() takes an additional
12041         argument specifying whether to treat type variables as reference
12042         types.
12043
12044 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12045
12046         * mini.h: Removed obsolete prototypes.
12047
12048 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12049
12050         * mini.c: Don't fail generic sharing for initobj and sizeof - we
12051         already handle them.
12052
12053 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12054
12055         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
12056         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
12057         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
12058         tramp-x86.c: Added a MonoGenericContext* argument to
12059         mono_arch_get_unbox_trampoline() so that it can call other
12060         functions which require it.
12061
12062 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12063
12064         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
12065         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
12066         mono_arch_get_this_arg_from_call() takes a
12067         MonoGenericSharingContext* as well.
12068
12069 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12070
12071         * mini.c: Factor out code for emitting unbox into emit_unbox() and
12072         implement generic sharing of unbox.
12073
12074 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12075
12076         * mini.c: Don't compute the vtable to determine whether a field is
12077         special static, because it might not work for open types.
12078
12079 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12080
12081         * mini.c: Removed the unused token_type and token_source arguments
12082         from get_runtime_generic_context_ptr().
12083
12084 2008-06-17  Marek Habersack  <mhabersack@novell.com>
12085
12086         * mini.c (ADD_BINOP): fix the build
12087
12088 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
12089
12090         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
12091         a widening op.
12092
12093 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12094
12095         * mini.h: Removed class relations enum that's not used anymore.
12096
12097 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12098
12099         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
12100
12101         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
12102         the lazy fetch trampoline access code.
12103
12104 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
12105
12106         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
12107
12108 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
12109
12110         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
12111
12112         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
12113
12114         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
12115
12116 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12117
12118         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
12119         intrinsics.
12120
12121         * mini-ops.h: Add MIN/MAX_UN opcodes.
12122
12123         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
12124         intrinsics.
12125
12126         * basic-math.cs: Add more min/max tests.
12127
12128         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12129
12130 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12131
12132         * mini.c: Small fix in the prologue of emit_castclass.
12133
12134 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12135
12136         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12137
12138         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
12139         do not work even for unsigned types. Fixes #400014.
12140
12141         * basic-math.cs: Add regression tests for unsigned Min/Max.
12142
12143 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12144
12145         * mini.c: Added additional context_used argument to several
12146         functions, which will be needed for sharing generic methods.  Use
12147         GET_RGCTX macro wherever appropriate.  Declare only one
12148         context_used in mono_method_to_ir().
12149
12150 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12151
12152         * mini.c, generic-sharing.c: Removed generic class relations.
12153
12154         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
12155         functions due to MRGCTX changes.
12156
12157 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12158
12159         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
12160         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
12161         with calculated IMT.
12162
12163         * mini.c: Generic sharing of calls via generic interfaces.
12164
12165         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
12166         generic method with non-constant MonoGenericContext*.  Instead,
12167         the context is taken out of the method itself.
12168
12169 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12170
12171         * mini.c: Generic sharing of ldvirtftn.
12172
12173 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12174
12175         * mini.c: Generic sharing of ldftn.
12176
12177 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12178
12179         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12180
12181 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12182
12183         * mini.c: Generic sharing of the special case of ldtoken followed
12184         by a call to GetTypeFromHandle.
12185
12186 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12187
12188         * mini.c: Generic sharing of box for nullable types.
12189
12190 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12191
12192         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12193         are passed on the stack. Fixes #324807.
12194
12195 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12196
12197         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12198         for the ArgValuetypeAddrInIReg case.
12199
12200         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12201         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12202
12203         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12204         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12205         local variable and pass the local variable by reference to the called method.
12206           
12207         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12208         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12209
12210         Contributed under MIT/X11 license.
12211
12212 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12213
12214         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12215
12216         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12217         everything.
12218
12219 2008-06-10  Martin Baulig  <martin@ximian.com>
12220
12221         * debug-mini.c
12222         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12223
12224 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12225
12226         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12227         possible error when no arguments are passed.
12228
12229         Contributed under MIT/X11 license.
12230
12231 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12232
12233         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12234         where the file name is NULL.
12235
12236 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12237
12238         * mini.c: Fix s390 build.
12239
12240 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12241
12242         * trace.c (mono_trace_parse_options): Fix warnings.
12243
12244         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12245
12246 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12247
12248         * mini.c (remove_block_if_useless): Avoid printing the method name.
12249         
12250         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12251         MONO_INST_NEW.
12252
12253         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12254         LMF. Not yet used.
12255
12256         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12257         translated code after it has been patched.
12258
12259 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12260
12261         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12262         avoid problems during code patching on SMP systems.
12263         (emit_call): Avoid adding a patch info which is already added by 
12264         emit_call_body.
12265         (mono_arch_emit_exceptions): Ditto.
12266
12267 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12268
12269         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12270         MONO_TYPE_ISSTRUCT already checks for it.
12271
12272 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12273
12274         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12275           structs with floats on Winx64 the float registers are not used.  
12276           The integer registers are always used..
12277         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12278           only one register will be used and only if the size of the struct 
12279           is 1,2,4, or 8 bytes.
12280
12281         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12282           to work for Winx64.
12283
12284         Contributed under MIT/X11 license.
12285
12286 2008-06-05  Martin Baulig  <martin@ximian.com>
12287
12288         * debug-debugger.c (debugger_lookup_class): Also call
12289         mono_class_setup_methods() here; we're only called from RTI.
12290
12291 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12292
12293         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12294         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12295         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12296         Post-process object files and add dtrace-generated object, if necessary.
12297
12298         Contributed under MIT/X11 license.
12299
12300 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12301
12302         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12303         element class.
12304
12305         * mini.c: Generic sharing for unbox.any and castclass.
12306
12307 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12308
12309         * mini.c: Ignore tailcall prefix in shared generic code and when
12310         doing calls which require a vtable/rgctx argument.
12311
12312 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12313
12314         * mini.c: Don't free the JIT info.
12315
12316         * driver.c: Changes in the JIT info table testing code.
12317
12318 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12319
12320         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12321         interruption. Fix some warnings.
12322
12323         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12324         interruption_checkpoint.
12325
12326 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12327
12328         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12329         from embedding applications.
12330
12331 2008-06-02  William Holmes  <billholmes54@gmail.com>
12332
12333         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12334           reserving 32 bytes on the stack when making calls. 
12335
12336         Contributed under MIT/X11 license.
12337
12338 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12339
12340         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12341         the linear IL branch.
12342
12343         * driver.c: Print out more information for --version on arm.
12344
12345 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12346
12347         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12348         bb_exit instead, since out of line bblocks might not actually be emitted
12349         out-of-line.
12350         
12351         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12352         maximum epilog size for out of line bblocks if tracing is enabled.
12353
12354         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12355
12356 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12357
12358         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12359
12360 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12361
12362         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12363         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12364         opcodes.
12365
12366 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12367
12368         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12369         the 'value' to store is a constant.
12370
12371         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12372
12373         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12374         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12375
12376 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12377
12378         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12379         for accessing method->generic_container.
12380
12381 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12382
12383         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12384         
12385         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12386
12387         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12388
12389         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12390         fails.
12391
12392 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12393
12394         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12395
12396         * mini.c: Handle the case when mono_class_vtable () fails.
12397
12398 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12399         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12400         the stat profiler.
12401
12402 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12403
12404         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12405         together with domain sharing.
12406
12407 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12408
12409         * mini.c: Treat callvirts to final methods like non-virtual calls
12410         when doing generic sharing, i.e. look them up in the runtime
12411         generic context.
12412
12413 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12414
12415         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12416         with computed types (for generic sharing).
12417
12418         * mini.c: Generic sharing for mkrefany and refanyval.
12419
12420 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12421
12422         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12423         possible.
12424
12425         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12426         the generic sharing code.
12427         
12428         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12429         when needed.
12430
12431 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12432
12433         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12434
12435 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12436
12437         * driver.c: updated copyright date
12438
12439 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12440
12441         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12442         needed.
12443
12444 2008-05-19  Martin Baulig  <martin@ximian.com>
12445
12446         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12447         pointing to the new `_mono_debug_using_mono_debugger' variable.
12448
12449         * driver.c
12450         (mono_main): Check mono_debug_using_mono_debugger() rather than
12451         the `MONO_INSIDE_MDB' environment variable to check whether we're
12452         inside the debugger.
12453
12454 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12455
12456         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12457         argument.
12458
12459 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12460
12461         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12462
12463         * mini.c: Added mini_assembly_can_skip_verification. This
12464         function checks if the assembly requested to skip verification. 
12465         Fixes part of #387274.
12466
12467 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12468
12469         * mini.c (mini_get_method): Disable the check for open generic classes when
12470         using generic sharing.
12471
12472         * generics.cs: Add a test for #387034.
12473
12474         * mini.c (mini_get_method): Check whenever the method class is an open generic
12475         type, and return NULL in that case, causing a verification error. Fixes
12476         #384123.
12477
12478 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12479
12480         * driver.c (mono_main): Revert r102623. The right
12481         thing to do is to enable the verifier under verifiable
12482         unless a --security flag was passed.
12483
12484         We need this non-trivial behavior for --verify-all otherwise
12485         mcs-compileall won't be able to use it. As it needs everything to
12486         be verified under validil.
12487
12488 2008-05-06  Martin Baulig  <martin@ximian.com>
12489
12490         Fix #383749.
12491
12492         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12493         (mono_debugger_thread_cleanup): Likewise.
12494         (mono_debugger_extended_notification): Likewise.
12495
12496 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12497
12498         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12499         against both inflated and non-inflated methods. We need to check against the
12500         generic definition for cases where the instantiated method is not visible.
12501         We need to check against the inflated types for cases where the instantiation
12502         changes any super type. This fixes #382986.
12503
12504         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12505         that check for visibiliy as generic params only appears as the type subject
12506         of tokens on call opcodes. Field manipulation and ldftn must always
12507         target an exact type.
12508
12509 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12510
12511         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12512         if no related --security flag is passed.
12513
12514 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12515
12516         * mini-arch.h: Prepare support for ppc64.
12517
12518         Contributed under MIT/X11 license.
12519
12520 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12521
12522         * aot-runtime.c: Prepare support for ppc64.
12523
12524         Contributed under MIT/X11 license.
12525
12526 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12527
12528         * mini-ops.h: Prepare support for ppc64.
12529
12530         Contributed under MIT/X11 license.
12531
12532 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12533
12534         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12535
12536         Contributed under MIT/X11 license.
12537
12538 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12539
12540         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12541         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12542         assemblies on windows.
12543
12544 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12545
12546         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12547         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12548         * main.c: Use UTF-8 encoded command line instead of Windows default code
12549         page on Windows to support Unicode.
12550         * driver.c (DllMain): New function for mixed-mode assembly support.
12551         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12552         export __stdcall functions without decoration.
12553
12554         Contributed under MIT/X11 license.
12555
12556 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12557
12558         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12559         saving it very early.
12560
12561 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12562
12563         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12564         deleted.  The only way to access the new RGCTX is via the
12565         trampline.
12566
12567         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12568         vtable instead of the RGCTX to static methods.
12569
12570         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12571         accessing the new RGCTX.
12572
12573         * generic-sharing.c: There is no separation between self, type
12574         arguments and other types in the RGCTX anymore.
12575
12576 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12577
12578         * mini-amd64.c (add_general): Remove previous stack adjustment.
12579         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12580         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12581         for 32 bytes of stack space reserved for all calls.
12582         
12583         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12584         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12585         adjustment.
12586         
12587         Code contributed under MIT/X11 license.
12588
12589 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12590
12591         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12592         against the root definition, peeling out method and type instantiations.
12593         Cache verify success results, code that fails verification is still
12594         checked multiple times.
12595
12596 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12597
12598         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12599
12600 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12601
12602         * mini-amd64.c (add_general): Always increment stack on Win64.
12603         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12604         on Win64.
12605         
12606         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12607         stack based argument handling on Win64.
12608         
12609         Code contributed under MIT/X11 license.
12610
12611 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12612
12613         * Makefile.am (version.h): Add support for git-svn.
12614
12615 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12616
12617         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12618         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12619         avoiding allocations and libc functions which might deadlock.
12620         
12621         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12622         'no-gdb-backtrace' option is set.
12623
12624         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12625
12626         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12627
12628 2008-04-21  Martin Baulig  <martin@ximian.com>
12629
12630         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12631         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12632
12633 2008-04-21  Martin Baulig  <martin@ximian.com>
12634
12635         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12636         `thread_vtable', `event_handler_ptr' and `event_handler'.
12637
12638 2008-04-21  Martin Baulig  <martin@ximian.com>
12639
12640         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12641         allows delayed initialization of the `executable_code_buffer' when
12642         attaching.
12643
12644 2008-04-21  Martin Baulig  <martin@ximian.com>
12645
12646         * mini.h (mono_debugger_create_notification_function): Removed.
12647         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12648
12649         * mdb-debug-info64.s
12650         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12651
12652         * mdb-debug-info32.s
12653         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12654
12655         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12656         currently only works on x86 and x86_64, so don't create it on ppc.
12657
12658 2008-04-21  Martin Baulig  <martin@ximian.com>
12659
12660         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12661
12662         * mini.c
12663         (mini_method_compile): In the fp elimination check, check
12664         `debug_options.mdb_optimizations' in addition to
12665         mono_debug_using_mono_debugger().       
12666
12667         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12668         disable some JIT optimizations which are only disabled when
12669         running inside the debugger.
12670         Added `--help-debug' option to describe the debugging options.
12671         (parse_debug_options): New static function to parse the `--debug'
12672         options, so we can easily add more stuff in future.
12673
12674 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12675
12676         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12677         the method has no body.
12678
12679 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12680
12681         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12682         assembly is not allowed in MSVC 64-bit compiler. 
12683         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12684         as we get floating point exceptions everywhere.
12685         
12686         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12687         correctly align arguments for call to throw_exception.
12688         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12689         
12690         Code contributed under MIT/X11 license.
12691
12692 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12693
12694         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12695
12696 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12697
12698         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12699
12700         * mini-amd64.c (NEW_INS): Set cil_code.
12701
12702         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12703         from mini-amd64.c so all debugger related logic is in one place.
12704
12705         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12706         later won't have a random ip assigned to them.
12707
12708 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12709
12710         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12711         the arch specific function initializes code_size.
12712         (mono_create_delegate_trampoline): Ditto.
12713
12714         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12715         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12716         platforms.
12717
12718         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12719         running under the debugger.
12720
12721         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12722         debugger.
12723
12724         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12725         debugger. Also move the disabling of optimizations here from driver.c.
12726         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12727         debugger.
12728
12729         * mini.h (MonoCompile): Add a few new flags.
12730
12731 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12732
12733         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12734         so the cil_code field of created MonoInst's is properly set.
12735         (mini_select_instructions): Ditto.
12736
12737         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12738         (MONO_INST_NEW_CALL): Ditto.
12739
12740         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12741         in many places so the ins->cil_code field is properly initialized.
12742
12743         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12744         place.
12745
12746 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12747
12748         * mini.c (mini_method_compile): Print a different message when compiling a 
12749         shared method.
12750         
12751         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12752         > 1.
12753
12754 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12755
12756         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12757         SSE2 instructions.
12758
12759         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12760         
12761 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12762
12763         * mini.c (handle_stack_args): Make this return void since its return value was
12764         never used. Also set cfg->unverifiable for invalid IL instead of calling
12765         G_BREAKPOINT ().
12766
12767 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12768
12769         * mini.c: Make sure "this" is live in catch clauses with type
12770         variables in shared generic code.
12771
12772 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12773
12774         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12775         generic_class_is_reference_type() to ensure the proper behaviour
12776         when sharing generic code and the type in question is a type
12777         argument.
12778
12779 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12780
12781         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12782         race conditions when printing thread dumps. Fixes #377738.
12783
12784 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12785         
12786         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12787         shows up when both MonoInst arguments can cause aliasig.
12788         There is likely no way in the current JIT to trigger this problem, but
12789         it showed up in the development of generics sharing, when in a new
12790         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12791         When the generics sharing code will be committed, its tests will be
12792         valid also for this bug.
12793
12794 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12795
12796         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12797         PATCH_INFO_METHOD.
12798
12799         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12800         NULL.
12801
12802 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12803
12804         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12805         use a more detailed exception message for InvalidCastException.
12806
12807         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12808
12809         * driver.c (mono_main): Add --debug=casts option to turn on better 
12810         InvalidCastException message details.
12811
12812         * mini.c (mini_get_debug_options): New helper function to return the address of
12813         the debug_options variable.
12814
12815         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12816         the jit_tls TLS variable.
12817
12818         * mini.c (mono_jit_tls): New TLS variable.
12819
12820         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12821         option is used.
12822
12823 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12824
12825         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12826
12827         * mini.c: Removed verifer related stuff, code moved to verify.c.
12828
12829         * driver.c: Using code from verify.c instead of mini.c.
12830
12831 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12832
12833         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12834         longer valid.
12835
12836 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12837
12838         * mini.c (check_for_method_verify): Enabling verification of
12839         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12840         have been fixed.
12841
12842 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12843
12844         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12845         caller saved registers as well.
12846         
12847         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12848         saved registers as well.
12849
12850 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12851
12852         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12853
12854         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12855         code.
12856
12857 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12858
12859         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12860         to get_call_info.
12861         (get_call_info): Take a gsctx argument instead of 'cfg'.
12862
12863 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12864
12865         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12866         mono_verify_all is set.
12867
12868         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12869
12870         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12871
12872 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12873
12874         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12875         an exception.
12876
12877         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12878         verifier and the code generated by the compiler.
12879
12880 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12881
12882         * mini.c: Generic sharing of the non-nullable case of the box
12883         instruction.
12884
12885 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12886
12887         * inssel.brg: Fix the build.
12888
12889         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12890
12891 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12892
12893         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12894         Array:Address. Fixes #372410.
12895
12896         * iltests.il.in: New tests for readonly prefix.
12897
12898 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12899
12900         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12901         mini-trampolines.c.
12902
12903         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12904         mini-exceptions.c.
12905
12906         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12907         
12908         * mini.c (mono_decompose_op_imm): New helper function.
12909
12910         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12911         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12912         return value.
12913
12914         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12915         mono_arch_output_basic_block. Fix warnings.
12916
12917         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12918         for now.
12919
12920 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12921
12922         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12923         since the extra frame is now detected automatically inside the loop.
12924
12925         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12926         opts which are now in mono_peephole_ins ().
12927         
12928         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12929
12930         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
12931         frames and skip duplicate managed-to-native frames. Fixes #367665.
12932
12933         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12934         opts which are now in mono_peephole_ins ().
12935         (mono_arch_peephole_pass_2): Ditto.
12936
12937         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
12938
12939         * mini-codegen.c (mono_peephole_ins): New helper function containing the
12940         arch independent peephole optimizations.
12941
12942         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12943         opts which are now in mono_peephole_ins ().
12944
12945         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
12946         
12947         * mini-s390.c (mono_arch_output_basic_block): Fix build.
12948
12949         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
12950         pattern.
12951
12952         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
12953         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
12954         opcode. 
12955
12956 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
12957
12958         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
12959         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12960         return value.
12961
12962         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12963         mono_arch_output_basic_block. Fix warnings.
12964
12965 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12966
12967         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12968         conv.ovf.u.un.
12969
12970 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12971
12972         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12973         conv.ovf.u.un.
12974
12975         * iltests.il: Add new tests.
12976
12977 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
12978
12979         * mini.c: Removed Windows version macros.
12980
12981 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12982
12983         * generic-sharing.c: Put reflection types in the extensible part
12984         of the runtime generic context.
12985
12986         * mini.c: Generic sharing of the GetTypeHandle special case of the
12987         ldtoken instruction.
12988
12989 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12990
12991         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
12992
12993         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
12994         
12995         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
12996         consistency with the other version on the linear IR branch.
12997
12998         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
12999
13000         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
13001
13002         * iltests.il.in: Add new tests.
13003
13004 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
13005
13006         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
13007
13008         * iltests.il.in: Add new tests.
13009
13010 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13011
13012         * mini.c: Two variables with the same name were declared in
13013         nesting contexts and one wasn't initialized.  Fixed.
13014
13015 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13016
13017         * mini.c: Generic sharing of the initobj instruction.
13018
13019 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13020
13021         * mini.c: make the test to optimize ldtoken from typeof() more
13022         precise.
13023
13024 2008-03-18  Mark Probst  <mark.probst@gmail.com>
13025
13026         * mini.c: Generic sharing of the initobj instruction for reference
13027         types.
13028
13029 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
13030
13031         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
13032         the mono_breakpoint_clean_code() code to perform bound checks.
13033
13034 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
13035
13036         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
13037         mono_arch_patch_callsite() to include the start of the managed method
13038         to be able to perform bound checks.
13039
13040 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13041
13042         * mini.c: Generic sharing for the isinst instruction.
13043
13044 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13045
13046         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13047         inssel-long32-mips.brg: Added opcodes for doing indirect calls
13048         with the runtime generic context argument.
13049
13050         * mini.c: Share calls to several types of unsharable methods by
13051         putting the address of the method code in the runtime generic
13052         context and doing an indirect call.
13053
13054         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13055         to switches.
13056
13057 2008-03-16  Mark Probst  <mark.probst@gmail.com>
13058
13059         * generic-sharing.c: Change due to a change in the runtime genric
13060         context API.
13061
13062 2008-03-15  Martin Baulig  <martin@ximian.com>
13063
13064         * tramp-x86.c
13065         (mono_arch_nullify_class_init_trampoline): Add call to
13066         mono_breakpoint_clean_code() to make things work when running
13067         inside the debugger.
13068
13069         * tramp-amd64.c
13070         (mono_arch_nullify_class_init_trampoline): Add call to
13071         mono_breakpoint_clean_code() to make things work when running
13072         inside the debugger.
13073
13074 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13075
13076         * inssel-long.brg (reg): Fix 64 bit build.
13077
13078 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13079
13080         * mini.c, mini.h: Share static generic code by passing it an
13081         implicit argument pointing to the runtime generic context.
13082
13083         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13084         inssel-long32-mips.brg: New opcodes for calling shared static,
13085         which need to be passed the runtime generic context.
13086
13087         * mini-amd64.c, mini-x86.c: Save the runtime generic context
13088         argument on the stack in the prologue if needed.  New function for
13089         finding the runtime generic context argument from the registers
13090         saved by the trampoline.
13091
13092         * mini-amd64.h, mini-x86.h: Specify which register to use for the
13093         runtime generic context argument.
13094
13095         * tramp-amd64.c: Also restore the register used for the runtime
13096         generic context argument.
13097
13098         * mini-trampoline.c: Resolve shared static calls by consulting the
13099         runtime generic context via the new argument.
13100
13101         * generic-sharing.c: Add an argument to sharability-checking
13102         functions that specifies whether type variables should be treated
13103         as sharable type arguments.
13104
13105         * inssel-x86.brg: Removed a superfluous, buggy rule.
13106
13107         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13108         to switches.
13109
13110 2008-03-14  Martin Baulig  <martin@ximian.com>
13111
13112         * debug-debugger.c (main_thread_handler): Call
13113         mono_runtime_run_main() without sending any notifications.
13114
13115         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
13116
13117 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13118
13119         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
13120
13121 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13122
13123         * tramp-x86.c: Fixed register restore offsets in the trampoline
13124         code for ECX and EDX.
13125
13126 2008-03-12  Geoff Norton  <gnorton@novell.com>
13127
13128         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
13129         different ucontext_t implementations.
13130         * exceptions-arm.c: Use the above defines to get exceptions working on 
13131         iPhone (based on a patch by Luke Howard lukeh@padl.com)
13132         * mini-arm.c: Implement iPhone icache support (based on a patch by
13133         Luke Howard lukeh@padl.com)
13134
13135 2008-03-12  Mark Probst  <mark.probst@gmail.com>
13136
13137         * mini.c: Enable generic sharing of calls to non-static
13138         non-interface non-generic non-value-type methods.
13139
13140         * mini-trampolines.c: Resolve calls from shared generic code.
13141
13142 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
13143
13144         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
13145
13146         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
13147
13148 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
13149
13150         * mini.c: some fixes for the AOT compiler.
13151
13152 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13153
13154         * cpu-amd64.md: Add clob:1 to some float opcodes.
13155
13156 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
13157
13158         * mini.h: Added MiniVerifierMode enumeration.
13159
13160         * mini.c: Added mini_verifier_set_mode to control
13161         the usage of the new verifier.
13162
13163         * mini.c (mono_method): Integrated the new verifier.
13164
13165         * driver.c: Extended --security option with validil and
13166         verifiable options to activate the new verifier.
13167
13168 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13169
13170         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
13171         optimization to ctors taking 0 or 2 arguments too.
13172
13173         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
13174         a bit.
13175
13176         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
13177
13178         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13179
13180 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13181
13182         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13183         non-aot case as well.
13184
13185         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13186
13187         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13188         changes.
13189
13190         * aot-compiler.c (encode_patch): Ditto.
13191
13192         * mini.h (G_MININT32): Fix the definition of this.
13193
13194 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13195
13196         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13197
13198         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13199
13200 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13201
13202         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13203         methods returning vtypes in registers.
13204         (mono_arch_allocate_vars): Ditto.
13205
13206         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13207
13208         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13209
13210         * generics.cs: Add a test from the linear IR branch.
13211
13212         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13213
13214         * mini.c (inline_method): Cache failed inline attempts.
13215
13216 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13217
13218         * mini.c: For shared methods of generic classes put the location
13219         of "this" into the MonoGenericJitInfo.
13220
13221         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13222         register out of a MonoContext by register number.  Add the generic
13223         sharing context as an argument to mono_arch_find_this_argument().
13224
13225         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13226         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13227         for new arch function.
13228
13229         * mini-exception.c: Handle open exception clauses in shared
13230         generic code.
13231
13232         * mini-trampolines.c: Supply additional argument to
13233         mono_arch_find_this_argument().
13234
13235 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13236
13237         * Makefile.am (regtests): Run the bench.exe tests last.
13238
13239 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13240
13241         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13242         a bit.
13243
13244 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13245
13246         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13247         with MS.
13248
13249         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13250         
13251         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13252
13253         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13254         whose class has no cctor.
13255
13256         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13257
13258 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13259
13260         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13261         unverified.
13262
13263 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13264
13265         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13266         to be in sync with the code on the linear IR branch.
13267
13268         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13269
13270         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13271
13272 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13273
13274         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13275
13276         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13277
13278         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13279
13280         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13281
13282         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13283         
13284         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13285         body.
13286
13287 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13288
13289         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13290         OP_LOADR4_MEMBASE emission.
13291
13292         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13293         (mono_spillvar_offset_float): Ditto.
13294
13295         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13296
13297         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13298         emission.
13299
13300         * basic-long.cs: Add regression tests for them.
13301
13302         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13303         use.
13304         (mono_arch_allocate_vars): Fix representation of single-precision float
13305         argument.
13306         (mono_arch_output_basic_block): Ditto.
13307
13308         * inssel-mips.brg: Ditto, remove duplicate items.
13309
13310         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13311         arguments of tail calls as on other platforms.
13312         (mono_arch_output_basic_block): Handle tail calls.
13313
13314         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13315         register.
13316
13317         * objects.cs (test_5_pass_static_struct): Add test for it.
13318
13319         Contributed under MIT/X11 license.
13320
13321 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13322
13323         * Makefile.am: Use gmcs for compiling the regression tests.
13324
13325         * *.2.cs *.2.il: Rename to *.cs and *.il.
13326
13327 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13328
13329         * regalloc.h: Make the vassign array smaller.
13330
13331         * mini.c (mini_method_compile): Remove an unused field in cfg.
13332
13333         * mini-codegen.c: Add a bunch of micro optimizations.
13334
13335 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13336
13337         * regalloc.h: Remove some unused fields.
13338
13339 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13340
13341         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13342
13343         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13344
13345 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13346
13347         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13348
13349         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13350         trampoline: Fetch an entry from the runtime generic context.  If
13351         it's NULL, jump to the actual trampoline to fill the runtime
13352         generic context.  Otherwise, return it.
13353
13354         * mini.c: Call the lazy fetch trampoline to get entries out of the
13355         runtime generic context.
13356
13357         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13358         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13359         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13360
13361 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13362
13363         * mini.c: Fetch data out of the extensible part of the runtime
13364         generic context instead of calling a helper function.
13365
13366         * generic-sharing.c: Some functions moved into
13367         metadata/generic-sharing.c.  Helper function for fetching other
13368         types now checks and asserts against extensible rgctx (just for
13369         debugging purposes - the helper function isn't called anymore
13370         unless for debugging).
13371
13372 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13373
13374         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13375         for tail calls up to the point that the tests in iltests.exe run. Also add a
13376         dummy CKFINITE implementation.
13377         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13378         needed for trampoline LMF frames.
13379
13380         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13381         trampoline LMF frames.
13382
13383 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13384
13385         * mini.c (inline_method): clean any pending loader error when inlining fail.
13386         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13387
13388 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13389
13390         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13391
13392         * aot-runtime.c (decode_patch_info): Ditto.
13393
13394         * mini.c (mono_resolve_patch_target): Ditto.
13395         
13396         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13397         icall wrappers.
13398
13399         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13400         
13401         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13402         if it references an icall address.
13403
13404 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13405
13406         * cpu-s390x.md: Remove some more unused opcodes.
13407         
13408         * cpu-s390x.md: Remove some unused opcodes.
13409
13410         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13411         mono_op_imm_to_op ().
13412
13413         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13414         instead of a switch statement.
13415         
13416         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13417         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13418
13419         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13420         
13421         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13422
13423         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13424         -1.
13425
13426 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13427
13428         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13429         opened. Fixes #362607.
13430
13431         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13432
13433         * iltests.il.in: Add a test for static methods in interfaces.
13434
13435 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13436
13437         * genmdesc.c (build_table): Fix a crash on older glib versions.
13438
13439         * cpu-sparc.md: Remove some unused opcodes.
13440         
13441         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13442         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13443
13444         * cpu-amd64.md: Remove some unused opcodes.
13445
13446         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13447         like the other opcodes.
13448
13449 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13450
13451         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13452
13453         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13454
13455         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13456         variables 'cfg' instead of 'm' for consistency.
13457
13458         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13459
13460         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13461         argument holding the vtype return address, to avoid the ambigious use of
13462         cfg->ret for this purpose.
13463
13464         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13465
13466         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13467         
13468         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13469         new mono_print_ins () function which only takes one argument.
13470
13471 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13472
13473         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13474         macro arguments.
13475
13476 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13477
13478         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13479
13480         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13481
13482         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13483         opcodes and other small changes.
13484
13485         * mini-ops.h: Add some new opcodes from the linear IR branch.
13486
13487         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13488
13489         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13490         opcodes, use the REG_MEMBASE opcodes instead.
13491         
13492         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13493         opcodes, use the REG_MEMBASE opcodes instead.
13494         
13495         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13496         linear IR branch.
13497
13498         * mini.c (mono_op_imm_to_op): New helper function.
13499
13500         * mini-ops.h: Add some opcodes from linear IR branch.
13501
13502 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13503
13504         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13505         <tsv@solvo.ru>.
13506
13507 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13508
13509         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13510         OP_ICONV_TO_R4/R8.
13511
13512         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13513
13514 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13515
13516         * aot-compiler.c (emit_method_code): Add an assert.
13517
13518         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13519         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13520         methods.
13521
13522 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13523
13524         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13525         some load/store opcodes so they are consistent. 
13526         (mono_arch_emit_prolog): Simplify some code.
13527
13528         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13529
13530         * objects.cs: Add tests for large argument offsets on ARM.
13531
13532         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13533         stack offsets. Fixes #359651.
13534
13535         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13536
13537         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13538
13539         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13540
13541         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13542
13543         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13544
13545         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13546         rid of CEE_CONV_R_UN.
13547
13548         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13549
13550 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13551
13552         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13553
13554         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13555
13556         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13557
13558         * cpu-amd64.md: Remove some unused opcodes.
13559
13560         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13561
13562         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13563
13564         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13565         arch specific functions for its parts. Call the peephole pass after local
13566         regalloc so the prolog can compute a more accurate max_offset.
13567         
13568         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13569         the corresponding OP_I/OP_L opcodes.
13570
13571         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13572
13573         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13574
13575 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13576
13577         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13578         as they are handled in mini.c.
13579
13580         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13581         
13582         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13583         case since it is handled in mini.c.
13584
13585         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13586
13587         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13588
13589         * *.c: Use the new opcodes in the IR and back end code.
13590
13591         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13592
13593         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13594
13595 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13596
13597         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13598         an assert because it has a race condition.
13599
13600 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13601
13602         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13603
13604         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13605
13606         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13607
13608         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13609         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13610
13611 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13612
13613         * cpu-amd64.md (move): Correct the maximum size of move.
13614
13615 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13616
13617         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13618         the generic class init trampoline to return quickly if the class
13619         is already inited.
13620
13621 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13622
13623         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13624         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13625
13626 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13627
13628         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13629         branch.
13630
13631 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13632
13633         * objects.cs: Add some soft-float tests.
13634
13635         * mini.c: Fix a couple more soft-float issues.
13636
13637         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13638
13639         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13640         avoid a REX prefix.
13641
13642 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13643
13644         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13645         exception happens while compiling a virtual method.
13646
13647 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13648
13649         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13650         
13651         * mini-sparc.c: Fix build.
13652
13653         * mini-sparc.c (get_call_info): Add support for generic sharing.
13654
13655         * mini-exceptions.c: Add a FIXME.
13656
13657 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13658
13659         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13660         altstack handling code.
13661
13662         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13663         
13664         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13665
13666         * mini-s390.c: Add support for generic sharing.
13667
13668         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13669         Fix CAS on s390.
13670         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13671
13672         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13673
13674         * mini-s390x.c: Add support for generic sharing.
13675         
13676         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13677         Fix CAS on ia64.
13678         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13679
13680         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13681         can be used since it takes a 16 bit signed immediate.
13682
13683         * inssel-s390x.brg: Fix OP_SETRET.
13684
13685         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13686
13687         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13688
13689         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13690
13691         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13692
13693         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13694         in one place.
13695
13696         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13697         stuff.
13698
13699         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13700         of the unused mono_arch_patch_delegate_trampoline stuff.
13701
13702 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13703
13704         * basic-long.cs: Move the fp related tests to basic-float.cs.
13705
13706         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13707
13708         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13709
13710         * basic-calls.cs: Add a test for proper float argument passing.
13711
13712         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13713         if the context corresponds to an exception received through a signal.
13714
13715         * exceptions.cs: Add a test for nullref handling at the start of a try
13716         clause.
13717
13718         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13719
13720         * jit-icalls.c (mono_break): New JIT icall.
13721
13722         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13723
13724         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13725
13726 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13727
13728         * cpu-*.md: Get rid of unused opcodes.
13729
13730         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13731
13732         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13733         by all platforms.
13734
13735         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13736         define.
13737
13738         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13739         the arch independent trampoline code in mini-trampolines.c.
13740
13741         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13742
13743         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13744
13745         * mini-s390.h: Remove an unused define.
13746         
13747         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13748         the arch independent trampoline code in mini-trampolines.c.
13749
13750         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13751
13752 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13753
13754         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13755
13756         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13757
13758         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13759
13760         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13761
13762         * cpu-amd64.md: Use smaller sizes for int opcodes.
13763
13764         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13765
13766         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13767         objects.cs.
13768
13769         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13770         debugging.
13771
13772         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13773         instead of though a pointer to save an indirection when accessing elements of
13774         the array.
13775
13776         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13777         some typos.
13778         (NOT_IMPLEMENTED): New helper macro.
13779         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13780         of a bb.
13781
13782         * *.c: Use the new helper macro.
13783
13784 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13785
13786         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13787
13788 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13789
13790         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13791         stack slots.
13792
13793 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13794
13795         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13796         profiling is enabled.
13797         
13798         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13799         the end.
13800         (mono_arch_emit_prolog): Add more first bblock optimizations.
13801
13802         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13803         in order if possible.
13804         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13805         bblock, since the arguments are still in their original registers.
13806
13807         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13808
13809 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13810
13811         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13812         as well.
13813
13814         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13815         offset 0.
13816
13817         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13818
13819         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13820         process async exceptions received while in unmanaged code.
13821
13822         * mini.c (mini_init): Install a callback with the runtime which will be called
13823         when a thread receives an async exception while in unmanaged code.
13824
13825         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13826
13827         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13828
13829 2008-01-16  Wade Berrier  <wberrier@novell.com>
13830
13831         * cpu-g4.md:
13832         * cpu-arm.md:
13833         * cpu-s390x.md:
13834         fix build
13835
13836 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13837
13838         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13839         compilation with sun cc.
13840
13841         * cpu-*.md: Fix the build.
13842
13843         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13844
13845         * mini-amd64.h: Add some comments to the MonoLMF structure.
13846
13847         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13848         
13849         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13850         in the LMF structure if possible. This saves two instructions in the
13851         managed->native wrappers.
13852
13853         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13854
13855 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13856
13857         * generic-sharing.c: New type argument lookup code which uses the
13858         runtime generic context template.
13859
13860 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13861
13862         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13863
13864         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13865         (mono_arch_output_basic_block): Fix localloc implementation.
13866
13867         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13868
13869         * mini-ia64.c (peephole_pass): Fix ia64 build.
13870
13871         * mini-amd64.c (peephole_pass): Fix a warning.
13872         
13873         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13874         at a constant offset from sp/fp.
13875
13876         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13877         instead of obtaining it from *lmf in the managed method case.
13878
13879 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13880
13881         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13882
13883 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13884
13885         * mini.h (MonoInstList): New type.
13886         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13887         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13888         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13889         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13890         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13891         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13892         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13893         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13894         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13895         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13896         MONO_INST_LIST_FOR_EACH_ENTRY,
13897         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13898         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13899         mono_inst_list_first, mono_inst_list_last,
13900         mono_inst_list_next, mono_inst_list_prev): New instruction
13901         list handling interfaces.
13902         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13903         list head 'ins_list'.
13904         (MonoInst): Replace next pointer with list head 'node'.
13905         (MonoCallInst): Make 'out_args' a MonoInstList.
13906         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13907         (MonoCompile): Delete reverse_inst_list and
13908         reverse_inst_list_len.
13909         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13910         mono_arch_lowering_pass, mono_arch_local_regalloc,
13911         mono_arch_output_basic_block, mono_arch_emit_prolog):
13912         Convert to new instruction lists.
13913         (insert_after_ins): Delete.
13914         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13915         instruction lists.
13916         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13917         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13918         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13919         mono_emulate_opcode, mono_emit_load_got_addr,
13920         inline_method, mono_method_to_ir, mono_print_bb_code,
13921         print_dfn, decompose_pass, nullify_basic_block,
13922         replace_out_block_in_code, remove_block_if_useless,
13923         merge_basic_blocks, move_basic_block_to_end,
13924         try_unsigned_compare, optimize_branches, mono_print_code,
13925         mini_select_instructions, remove_critical_edges): Likewise.
13926         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13927         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13928         mono_arch_output_basic_block, mono_arch_emit_prolog):
13929         Likewise.
13930         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
13931         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13932         mono_arch_output_basic_block): Likewise.
13933         (inst_list_prepend, insert_after_ins): Delete.
13934         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
13935         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
13936         instruction lists.
13937         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
13938         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
13939         mono_arch_emit_prolog): Likewise.
13940         * cfold.c (mono_constant_fold): Likewise.
13941         * liveness.c (visit_bb, mono_analyze_liveness,
13942         optimize_initlocals): Likewise.
13943         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
13944         * graph.c (mono_draw_code_cfg): Likewise.
13945         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
13946         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
13947         mono_ssa_cprop): Likewise.
13948         * abcremoval (get_relations_from_previous_bb, process_block):
13949         Likewise.
13950         * local-propagation (mono_cprop_invalidate_values,
13951         mono_local_cprop_bb): Likewise.
13952         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
13953         peephole_pass, mono_arch_output_basic_block,
13954         mono_arch_emit_prolog): Likewise.
13955         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
13956         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13957         mono_arch_emit_prolog): Likewise.
13958         (insert_after_ins): Delete.
13959         * aliasing.c (print_code_with_aliasing_information,
13960         mono_build_aliasing_information, mono_aliasing_deadce):
13961         Convert to new instruction lists.
13962         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
13963         peephole_pass, NEW_INS, mono_arch_lowering_pass,
13964         mono_arch_local_regalloc, mono_arch_output_basic_block):
13965         Likewise.
13966         (insert_after_ins): Delete.
13967         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
13968         peephole_pass, mono_arch_output_basic_block): Convert to
13969         new instruction lists.
13970         * mini-codegen (InstList, inst_list_prepend,
13971         insert_after_ins): Delete.
13972         (insert_before_ins, get_register_force_spilling,
13973         get_register_spilling, free_up_ireg, free_up_reg,
13974         create_copy_ins, create_spilled_store, alloc_int_reg,
13975         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
13976         to new instruction lists.
13977         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
13978         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13979         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
13980         (insert_after_ins): Delete.
13981         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
13982         mono_arch_local_regalloc, mono_arch_output_basic_block,
13983         mono_arch_call_opcode): Convert to new instruction lists.
13984         (insert_after_ins): Delete.
13985         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
13986         peephole_pass, mono_arch_output_basic_block,
13987         mono_arch_emit_prolog): Convert to new instruction lists.
13988
13989 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13990
13991         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
13992
13993         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
13994         Fixes #353182.
13995
13996         * Makefile.am (version.h): Make this work with non-bash shells.
13997
13998 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13999
14000         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
14001
14002 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
14003
14004         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
14005         the InitializeArray optimization.
14006
14007 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
14008
14009         * mini.c driver.c: Don't include os/gc_wrapper.h.
14010
14011 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
14012
14013         * mini.c (print_jit_stats): Print GC statistics if available.
14014
14015 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
14016
14017         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
14018
14019 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
14020
14021         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
14022
14023 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
14024
14025         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
14026         
14027         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14028
14029         * driver.c (mono_main): Ditto.
14030
14031 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14032
14033         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
14034
14035         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
14036         in the vtable can't be encoded.
14037         (compile_method): Ditto.
14038
14039 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14040
14041         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
14042         defined.
14043
14044         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
14045         lmf->rbp.
14046
14047         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
14048         the top LMF entry belongs to the current method.
14049
14050         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
14051
14052 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14053
14054         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
14055         
14056         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
14057
14058         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
14059
14060         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
14061
14062         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
14063
14064         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
14065         implementation.
14066
14067         * basic-float.cs: Add an ulong->double cast test.
14068
14069 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
14070
14071         * mini.c (mono_method_to_ir): Fix a warning.
14072
14073 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
14074
14075         * mini-ops.h: Add OP_SWITCH.
14076
14077         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
14078         CEE_SWITCH in back-end code, use OP_SWITCH instead.
14079
14080 2007-12-11  Geoff Norton  <gnorton@novell.com>
14081
14082         * mini-s390x.c: Minor change to the MAX() define to allow
14083         it to compile with other gcc versions.
14084
14085 2007-12-11  Geoff Norton  <gnorton@novell.com>
14086
14087         * cpu-s390x.md:
14088         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
14089
14090 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14091
14092         exceptions-arm.c (mono_arch_get_restore_context): Restore
14093         the frame pointer.
14094
14095         exceptions-arm.c (throw_exception): Save the frame pointer.
14096         This is a partial fix for #323747. Only the client side is
14097         fixed.
14098
14099 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14100
14101         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
14102         was using an unrelated variable to log the class which
14103         needed the cctor to be called. This was crashing on arm.
14104
14105 2007-12-09  Robert Jordan  <robertj@gmx.net>
14106
14107         * mini-x86.c (mono_arch_emit_epilog):
14108         Consider all kinds of 64-bit types. Fixes #323114.
14109
14110 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
14111
14112         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
14113
14114 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14115
14116         * mini-amd64.c (peephole_pass): Add a missing instruction check.
14117
14118 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14119
14120         * mini.c: run type ctor before allocating an object, not only
14121         when running it's constructor method (fixes at least part of bug #342507).
14122
14123 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14124         
14125         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
14126         
14127         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
14128         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
14129         function.
14130
14131         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
14132         mono_generic_class_init_trampoline () the same as it is done with the other
14133         trampolines.
14134
14135         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
14136         aot-runtime.c aot-compiler.c: Implement AOT support.    
14137
14138 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14139
14140         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
14141         build for archs which don't have the vtable trampoline defined
14142         yet.
14143
14144 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14145
14146         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
14147
14148         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
14149
14150         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
14151
14152         * tramp-<ARCH>.c: Use the new helper function.
14153
14154 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14155
14156         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
14157         trampoline call, which takes a vtable argument.
14158
14159         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
14160         OP_TRAMPCALL_VTABLEs like other calls.
14161
14162         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
14163         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
14164         call.  Implemented a support function which fetches the vtable
14165         from a register set.
14166
14167         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
14168         Implemented a generic class init trampoline, using the
14169         OP_TRAMPCALL_VTABLE opcode.
14170
14171         * mini.c: Implemented static field access when sharing generic
14172         code.  This implies initing the class using the new
14173         OP_TRAMPCALL_VTABLE call.
14174
14175 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14176
14177         * mini.c: Don't compile methods with sharing enabled if their
14178         classes are disabled for sharing.
14179
14180 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14181
14182         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14183         opcodes. Fixes #346563.
14184
14185         * objects.cs: Add a new test.
14186
14187         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14188
14189         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14190         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14191
14192 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14193
14194         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14195
14196 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14197
14198         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14199         code stream.
14200
14201 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14202
14203         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14204
14205         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14206         optimization in the AOT case.
14207         
14208 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14209
14210         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14211         
14212         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14213
14214         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14215
14216         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14217
14218         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14219         is created by the inlined delegate ctor.
14220
14221         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14222
14223         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14224
14225 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14226
14227         * cpu-x86.md: Fix the length of ckfinite.
14228
14229 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14230
14231         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14232         
14233         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14234         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14235
14236         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14237
14238         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14239         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14240
14241 2007-11-28  Martin Baulig  <martin@ximian.com>
14242
14243         * mini-x86.c
14244         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14245         after creating the trampoline.
14246
14247 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14248
14249         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14250
14251         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14252         the same version.
14253
14254         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14255         instead of the calling method to help AOT.
14256
14257         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14258
14259 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14260
14261         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14262         is defined.
14263
14264 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14265
14266         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14267         
14268         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14269         (encode_method_ref): No need to handle generic method definitions specially.
14270
14271         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14272
14273         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14274         decode_klass_info.
14275
14276         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14277         encode_klass_info.
14278         (compile_method): Enable generic sharing.
14279
14280 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14281
14282         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14283         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14284
14285         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14286         generic code.
14287
14288         * mini-trampolines.c: Fix a warning.
14289
14290         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14291         NEW_PCONST.
14292         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14293         (generic_class_is_reference_type): Remove unused function.
14294
14295         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14296         in the generic vtable trampoline case.
14297
14298         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14299         
14300         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14301         return an AOT method based on a vtable slot.
14302
14303         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14304
14305         * mini.c (mini_get_vtable_trampoline): Export this.
14306
14307 2007-11-22  Martin Baulig  <martin@ximian.com>
14308
14309         * debug-debugger.h
14310         (MonoDebuggerInfo): Move `debugger_version' up.
14311
14312 2007-11-22  Martin Baulig  <martin@ximian.com>
14313
14314         * mini-amd64.c
14315         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14316
14317         * mini-trampolines.c
14318         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14319         after compiling the method.
14320
14321 2007-11-20  Martin Baulig  <martin@ximian.com>
14322
14323         * debug-mini.c
14324         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14325         (mono_debugger_remove_breakpoint): Likewise.
14326         (mono_debugger_check_breakpoints): Likewise.
14327
14328         * debug-debugger.c: Implement the new breakpoint interface here.
14329
14330 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14331
14332         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14333         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14334
14335         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14336
14337 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14338
14339         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14340
14341         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14342         mini.c.
14343
14344         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14345         mini.c.
14346
14347         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14348         returning a vtype in a register.
14349
14350         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14351         here from the arch specific code.
14352
14353         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14354         mini.c.
14355
14356         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14357         (mono_arch_emit_prolog): Increment maximum prolog size.
14358
14359         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14360         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14361
14362         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14363         MonoGenericSharingContext.
14364
14365         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14366         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14367
14368 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14369
14370         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14371         which extract fields out of the runtime generic context.  Full
14372         sharing of the NEWARR opcode.
14373
14374 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14375
14376         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14377         --enable-minimal=ssa.
14378
14379 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14380
14381         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14382         mono_marshal_get_delegate_invoke () signature change.
14383
14384 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14385
14386         * mini.c: Removed the shared context in favor of the generic
14387         sharing context.  Allocate the MonoJitInfo structure with room for
14388         the generic sharing context if it's needed.
14389
14390         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14391         domain-internals.h now.
14392
14393         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14394
14395         * generic-sharing.c: Several changes for working without a shared
14396         context and instead operating on open types instead.
14397
14398 2007-11-12  David S. Miller  <davem@davemloft.net>
14399
14400        * inssel-sparc.brg: Fix double instruction emit.
14401
14402 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14403
14404         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14405         Get/Set/Address methods.
14406         
14407         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14408         mono_marshal_get_delegate_invoke signature change.
14409
14410 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14411
14412         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14413         This can happens with dynamic methods. Fixes the other bug in #322722.
14414
14415 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14416
14417         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14418         BX call sequence.
14419
14420         * mini-arm.c (arm_patch): Implement patching of BX call
14421         sequence. Fixes one of the bugs in #322722.
14422
14423 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14424
14425        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14426        under Linux.  We only need to flush every 32-byte cache line.    
14427
14428 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14429
14430         * mini.c:
14431         move_basic_block_to_end: Add branches when needed, eventually creating
14432         a new BB.
14433         optimize_branches: added a parameter that tells if it's ok to create
14434         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14435         and avoid calling move_basic_block_to_end when it's not ok.
14436         Fixes bug 318677.
14437
14438 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14439
14440         * mini.c: Abort inlining call to InitializeArray if something
14441         looks wrong.  Let the icall handle it, which now has proper safety
14442         checks.
14443
14444 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14445
14446         * mini.c (mono_spill_call): add support for soft-float.
14447
14448         * mini.c (mono_method_to_ir): add support for soft-float
14449         to inlined functions that return float.
14450
14451         * mini.c (mono_method_to_ir): add support for soft-float
14452         to cee_stsfld opcode on float fields.
14453
14454 2007-11-05  Geoff Norton  <gnorton@novell.com>
14455
14456         * mini-x86.h: Fix the structure access for X86 Leopard.
14457
14458
14459 2007-11-05  Martin Baulig  <martin@ximian.com>
14460
14461         * mini-trampolines.c
14462         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14463         after compiling the method to notify the debugger.
14464
14465 2007-11-05  Martin Baulig  <martin@ximian.com>
14466
14467         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14468
14469 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14470
14471         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14472         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14473
14474 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14475
14476         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14477         native-to-managed wrappers.
14478         
14479 2007-11-01  Geoff Norton  <gnorton@novell.com>
14480
14481         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14482         members.
14483
14484 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14485
14486         * mini.c, mini-x86.c: when getting back from unmanaged code
14487         to managed via a marshaled delegate we also need to set the
14488         right domain.
14489
14490 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14491
14492         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14493         for amd64.
14494
14495 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14496
14497         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14498         let the debugger or other external agents to tell the JIT when
14499         a sw breakpoint has been inserted in the code that the JIT needs
14500         to be able to inspect.
14501
14502 2007-10-31  Martin Baulig  <martin@ximian.com>
14503
14504         * debug-debugger.h
14505         (MonoDebuggerInfo): Remove `runtime_class_init'.
14506
14507 2007-10-30  Martin Baulig  <martin@ximian.com>
14508
14509         * debug-mini.h
14510         (mono_debugger_thread_created): Added `MonoThread *' argument.
14511         (mono_debugger_extended_notification): New public method.
14512         (mono_debugger_trampoline_compiled): New public method.
14513
14514         * debug-mini.c
14515         (MonoDebuggerThreadInfo): Added `thread' and
14516         `extended_notifications' fields.
14517
14518         * debug-debugger.c
14519         (debugger_executable_code_buffer): New static variable.
14520
14521         * debug-debugger.h
14522         (MonoDebuggerInfo): Added `executable_code_buffer',
14523         `executable_code_buffer_size', `breakpoint_info_area',
14524         `breakpoint_table' and `breakpoint_table_size'.
14525
14526 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14527
14528         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14529         that IP  either is an unused value or the vtable pointer. IMT 
14530         calls use vtable + offset now. Reduced by almost half the size
14531         of IMT entries.
14532
14533 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14534
14535         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14536         defines to access param registers. Replace long usage with
14537         gsize as sizeof(long) != sizeof(void*) on Win64.
14538
14539         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14540         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14541         instead of non-existant _GetAddressOfReturnAddress.
14542
14543         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14544         param registers. Save/restore %rdi and %rsi in MonoLMF.
14545
14546         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14547         param registers. Modify (throw_exception) signature to take 
14548         %rdi and %rsi on Win64. 
14549
14550         Code is contributed under MIT/X11 license.
14551
14552 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14553
14554         * helpers.c: unlink debugging output files.
14555
14556 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14557
14558         * mini.c: Move mono_create_ftnptr () to object.c.
14559
14560 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14561
14562         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14563         optional. This function can now be used to disassemble code generated
14564         outside the JIT such as trampolines and IMT thunks.
14565
14566         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14567
14568         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14569         vtable pointer from a ldr instruction.
14570
14571         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14572         new IMT call sequence.
14573
14574         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14575         call sequence for interface invocations.
14576
14577         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14578         for imt support. This function is empty since IMT on ARM requires no
14579         special handling on the IR side.
14580
14581         * mini-arm.c (mono_arch_find_imt_method): added, required for
14582         imt support.
14583
14584         * mini-arm.c (mono_arch_find_this_argument): added, required
14585         for imt support.
14586
14587         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14588         a ldr instruction to load a value stored in the code stream.
14589
14590         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14591         for imt support.
14592
14593
14594 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14595
14596         * mini.c (mini_init): Install the jump trampoline callback.
14597
14598 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14599
14600         * mini-trampolines.c: handle synchronized methods with the common
14601         vtable trampoline (bug #335601).
14602
14603 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14604
14605         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14606
14607         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14608         64 bit platforms.
14609
14610         * mini-ia64.h mini-ia64.c: Add support for IMT.
14611
14612         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14613         prolog. Fixes #331958.
14614
14615 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14616
14617         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14618
14619 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14620
14621         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14622         trampoline.
14623
14624 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14625
14626         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14627         trampoline.
14628
14629 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14630
14631         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14632         trampoline.
14633
14634 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14635
14636         * mini-trampolines.c: changed the magic rampoline to understand
14637         the common vtable trampoline method: the method to invoke is
14638         determined by the vtable displacement of the call.
14639
14640 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14641
14642         * mini.c, mini.h: register the common vtable trampoline if the
14643         architecture supports it.
14644
14645 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14646
14647         * cpu-amd64.md: use the correct max length for tls_get.
14648
14649 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14650
14651         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14652         CEE_STELEM_ANY. Fixes #333696.
14653
14654 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14655
14656         * exceptions-x86.c: provide more graceful handling of the case where
14657         we followed a bogus function pointer from managed code (bug #332866).
14658
14659 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14660
14661         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14662         replaces the generic_shared flag and will carry more information
14663         in the future.
14664
14665         * generic-sharing.c: Added mini_type_stack_size() which allows
14666         allows open types if given a generic sharing context.
14667         mini_get_basic_type_from_generic() takes a
14668         MonoGenericSharingContext* instead of a MonoCompile* now.
14669
14670         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14671         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14672         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14673         changes above.  Just passing arguments through to the right
14674         places.
14675
14676 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14677
14678         * mini-arm.c: unify the call emission to emit_code_seq().
14679
14680 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14681
14682         * tramp-arm.c: reduced the trampoline size.
14683
14684 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14685
14686         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14687         variable handling out of arch-specific code.
14688
14689 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14690
14691         * mini-arm.c: implemented fast delegate dispatch.
14692
14693 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14694
14695         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14696         that fp elimination is turned off if the space required by locals is too
14697         big. Fixes #331958.
14698
14699 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14700
14701         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14702         ARM to the new style trampoline.
14703
14704 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14705
14706         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14707
14708         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14709
14710 2007-10-09  Martin Baulig  <martin@ximian.com>
14711
14712         * debug-debugger.h
14713         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14714         `field_info_offset_offset'.     
14715
14716 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14717
14718         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14719         removed more internal usage of the r11 register and made it available
14720         to the register allocator.
14721
14722 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14723
14724         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14725         when sharing generics and treat type variables as references.
14726
14727 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14728
14729         * mini-ppc.c: started removing the internal uses of register r11
14730         to eventually allow the register allocator to manage it as an
14731         additional available register.
14732
14733 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14734
14735         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14736
14737 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14738
14739         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14740         specific trampolines as they are not performance critical as a jump
14741         target (maybe align as before only for AOT code?). This saves about
14742         200 KB of native code on x86 for monodevelop startup.
14743
14744 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14745
14746         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14747         monodevelop startup.
14748
14749 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14750
14751         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14752
14753         * mini-sparc.h mini-sparc.c: Implement IMT support.
14754
14755         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14756         its smaller and doesn't clobber sparc_g1.
14757
14758         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14759
14760 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14761
14762         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14763
14764 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14765
14766         * mini-ppc.c: implemented fast delegate invocation.
14767
14768 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14769
14770         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14771
14772 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14773
14774         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14775         code to the new style trampoline in preparation for IMT support.
14776
14777 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14778
14779         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14780         systems already. This also reduces the specific trampiline sizes and
14781         prepares for the use of r12 as the IMT identifier register.
14782
14783 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14784
14785         * mini-mips.h: endianess fix (simplified from a patch by
14786         Thomas Kunze <thommy@tabao.de>, bug #323737).
14787
14788 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14789
14790         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14791         to access ucontext fields and enable netbsd support
14792         (partially from Magnus Henoch <mange@freemail.hu>).
14793
14794 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14795
14796         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14797         use the preprocessor from the CPP env var if it is set.
14798
14799 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14800
14801         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14802         code, before interface_offset gets used.
14803
14804 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14805
14806         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14807         mono_class_setup_vtable () before accessing klass->vtable.
14808
14809 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14810
14811         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14812         hackish.
14813
14814 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14815
14816         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14817         IMT slots (this saves hundreds of KB of memory in programs like
14818         IronPython and Monodevelop).
14819
14820 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14821
14822         * mini.c: print the delegate counter.
14823
14824 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14825
14826         * mini-x86.c: make it easier to enable the debugging code for IMT
14827         slots.
14828
14829 2007-09-28  Martin Baulig  <martin@ximian.com>
14830
14831         * debug-debugger.h
14832         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14833         `mono_method_klass_offset' and `mono_method_token_offset'.
14834
14835 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14836
14837         * mini.c: First generics sharing implementation.  Can only share
14838         in very simple cases.  If sharing doesn't work it falls back to
14839         dedicated compilation.
14840
14841         * mini.h: Flag in MonoCompile to specify whether generic
14842         compilation is shared.  Flags enum for marking which generic inst
14843         of a context is used.  Prototypes for helper functions.
14844
14845         * generic-sharing.c: Helper functions for generic method sharing.
14846
14847         * optflags-def.h: Optimization flag (gshared) for enabling generic
14848         method sharing added.
14849
14850         * Makefile.am: generic-sharing.c added.
14851
14852 2007-09-19 Daniel Nauck <dna@mono-project.de>
14853
14854         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14855
14856 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14857         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14858         fixes bug 325507.
14859
14860 2007-09-19  Martin Baulig  <martin@ximian.com>
14861
14862         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14863         mono_debug_cleanup() is now part of mono_cleanup().
14864
14865 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14866
14867         * driver.c (mono_main): Fix a warning.
14868
14869 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14870
14871         * aot-compiler.c: Optimize various parts when processing large assemblies.
14872         Fixes ##325568.
14873
14874         * mini.c (mono_patch_info_hash): Improve hash function.
14875
14876 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14877
14878         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14879         
14880         Code is contributed under MIT/X11 license.
14881
14882 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14883
14884         * mini.c (mini_init): Fix a leak.
14885
14886         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14887
14888 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14889
14890         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14891
14892 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14893
14894         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14895
14896 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14897
14898         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14899         variance tests.
14900
14901         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14902
14903         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14904
14905         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14906
14907         * aot-runtime.c (decode_patch_info): Ditto.
14908
14909 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14910
14911         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14912         static case. Cache delegates in architecture specific code, 
14913         based on number of parameters.
14914         
14915         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14916         in architecture specific code, based on number of parameters.
14917         
14918         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14919         caching happen in architecture specific code now.
14920         
14921         Code is contributed under MIT/X11 license.
14922
14923 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14924
14925         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14926         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14927         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14928
14929         Code is contributed under MIT/X11 license.
14930
14931 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14932         * mini.c: (mono_thread_abort) Fixed bug #82416.
14933
14934 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14935
14936         * mini.: hook the new managed GC allocation feature into the JIT.
14937
14938 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14939
14940         * mini.c: implementation for the new runtime tls opcode.
14941
14942 2007-09-11  Martin Baulig  <martin@ximian.com>
14943
14944         * debug-debugger.h
14945         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
14946         `mono_method_inflated_offset'.
14947
14948 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
14949
14950         * driver.c mini.h mini.c: Add a new devel command line option for injecting
14951         async exceptions into a method.
14952
14953         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
14954         purpose of testing whenever the unwinder works at every instruction.
14955
14956 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
14957
14958         * mini.c: check accessibility of method used in ldftn (fixes
14959         bug #82635).
14960
14961 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
14962
14963         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
14964
14965         * inssel.brg: Fix a warning.
14966
14967 2007-09-03  Martin Baulig  <martin@ximian.com>
14968
14969         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
14970         now takes the `main_method' as argument.
14971
14972 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
14973
14974         * cpu-sparc.md (endfilter): Add missing src1:i argument.
14975
14976 2007-08-30  Jonathan Chambers <joncham@gmail.com>
14977
14978         * driver.c: include the cil-coff.h header on Windows.
14979         
14980         Code is contributed under MIT/X11 license.
14981
14982 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14983
14984         * mini.c, driver.c: don't include the cil-coff.h header.
14985
14986 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14987
14988         * mini.c: flag places that needs fixes fo soft-float support.
14989
14990 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
14991
14992         * mini.h, inssel-float.brg: fix soft-float constant loads on big
14993         endian systems (partially from Dean Jenkins, bug #81924).
14994
14995 2007-08-28  Mark Probst  <mark.probst@gmail.com>
14996
14997         * mini.c (check_linkdemand): Remove embedded reference object in
14998         call to LinkDemandSecurityException.
14999         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
15000         with an IntPtr instead of a reference object.
15001
15002 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15003
15004         * mini.c (handle_initobj): Handle alignment properly.
15005
15006         * inssel.brg (mini_emit_memset): Ditto. 
15007
15008         * inssel.brg (mini_emit_memcpy): Ditto. 
15009
15010         * inssel-sparc.brg: Ditto.              
15011
15012         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
15013
15014 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
15015
15016         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
15017         exceptions raised in unmanaged code. Fixes part of #82594.
15018
15019 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15020
15021         * mini.c (mono_method_to_ir), declsec.c
15022         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
15023
15024 2007-08-22  Martin Baulig  <martin@ximian.com>
15025
15026         * debug-mini.h
15027         (MonoDebuggerThreadInfo): New typedef.
15028         (mono_debugger_thread_table): New global variable.
15029         (mono_debugger_thread_created): New public function.
15030         (mono_debugger_thread_cleanup): New public function.
15031
15032         * debug-debugger.h
15033         (MonoDebuggerInfo):
15034         - removed `get_current_thread' and `lookup_assembly'.
15035         - removed `data_table'.
15036         - added `thread_table'.
15037
15038         * mini.c
15039         (mono_thread_start_cb): Call mono_debugger_thread_created().
15040         (mono_thread_attach_cb): Likewise.
15041         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
15042         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
15043         initial domain.
15044
15045         * driver.c (mono_main): Move mono_debug_init() up, before calling
15046         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
15047
15048 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15049
15050         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
15051         together when passing several arguments of type double (gives a small
15052         speedup and saves a few bytes of generated code).
15053
15054 2007-08-20  Jb Evain  <jbevain@novell.com>
15055
15056         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
15057
15058 2007-08-20  Jb Evain  <jbevain@novell.com>
15059
15060         * mini.c (mono_method_to_ir): throw MethodAccessException
15061         and FieldAccessException instead of InvalidProgramException.
15062
15063 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15064
15065         * mini.c: CoreCLR security checks.
15066
15067         * mini.h: Removed MonoSecurityMode (moved to
15068         metadata/security-manager.h) and mono_security_mode global var
15069         (replaced by set/get functions in security-manager.h).
15070
15071         * driver.c: Added "core-clr-test" security mode for testing.  Used
15072         set-function for setting security mode.
15073
15074 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15075
15076         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
15077         the new jit_info_table.
15078
15079         * driver.c: Test code for the new jit_info_table (enabled by the
15080         define MONO_JIT_INFO_TABLE_TEST).
15081
15082 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
15083
15084         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
15085         detection of call <REG> instruction sequence. Fixes build on freebsd.
15086
15087 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
15088
15089         * mini-exceptions.c: Fix a warning.
15090
15091 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15092
15093         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
15094         stack overflow handling code on amd64 too.
15095
15096         * mini-exceptions.c (mono_setup_altstack): Make this use 
15097         mono_thread_get_stack_bounds ().
15098
15099         * mini-x86.h: Disable sigaltstack on solaris x86.
15100
15101 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
15102
15103         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
15104
15105 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
15106
15107         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
15108
15109 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15110
15111         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
15112
15113         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
15114
15115 2007-08-03  Neale Ferguson <neale@sinenomine.net>
15116
15117         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
15118         due to alignment.
15119
15120 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15121
15122         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
15123         to be emitted (bug #82281).
15124
15125 2007-08-01  Martin Baulig  <martin@ximian.com>
15126
15127         Merged the `debugger-dublin' branch.
15128
15129         * debug-debugger.h (MonoDebuggerInfo):
15130         Removed the `old_*' compatibility entries.
15131         Added `debugger_version' and `data_table'.
15132         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
15133         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
15134
15135         * debug-mini.c
15136         (MiniDebugMethodBreakpointInfo): Add `address_list'.
15137         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
15138         instead of a `gconstpointer'.
15139         (mono_debugger_insert_method_breakpoint): Return a
15140         `MonoDebugMethodAddressList *'.
15141
15142 2007-06-28  Martin Baulig  <martin@ximian.com>
15143
15144         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15145
15146 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
15147
15148         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
15149         __builtin_frame_address () since it is broken on older gcc versions.
15150
15151 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15152
15153         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
15154         on the stack overflow handling and made the managed stack overflows
15155         catchable in most cases using soft guard pages.
15156         * exceptions-x86.c: added code to restore the protection in the soft
15157         guard pages at the end of exception handling.
15158
15159 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
15160
15161         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
15162
15163 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15164
15165         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
15166         exception handling.
15167
15168 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15169
15170         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
15171         signal handling support until it has been ported to the new mechanism.
15172         * mini.c: fixed stack overflow detection and use the new
15173         architecture code  to handle signals on the altstack.
15174
15175 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15176
15177         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15178         stack overflows on the alt stack.
15179
15180 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15181
15182         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15183         stack overflows on the alt stack.
15184
15185 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15186
15187         * exceptions-ppc.c: cleanup preparing for altstack support.
15188
15189 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15190
15191         * exceptions-arm.c: cleanup preparing for altstack support.
15192
15193 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15194
15195         * mini.c (print_jit_stats): Output hazard pointer stats.
15196
15197 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15198
15199         * driver.c, mini.c: Replaced security mode flags with a single
15200         enum variable.
15201
15202 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15203
15204         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15205
15206 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15207
15208         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15209         (which doesn't do anything yet) for activating Core CLR
15210         (Silverlight) security.
15211
15212 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15213
15214         * mini-codegen.c: work around a possible gcc bug on arm.
15215
15216 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15217
15218         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15219         message for platforms that don't support AOT compilation.
15220
15221 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15222
15223         * mini.h, mini.c, driver.c: temporary smcs hack.
15224
15225 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15226
15227         * mini-arm.h, mini-arm.c: arm EABI fixes.
15228
15229 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15230
15231         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15232         case.
15233
15234         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15235         trampolines taking a method argument.
15236
15237         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15238
15239         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15240         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15241
15242         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15243         JIT compilation throws an exception. Fixes #82050.
15244
15245 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15246
15247         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15248         with the MONO_EXCEPTION_ defines.
15249
15250 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15251
15252         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15253         #82117.
15254         
15255         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15256         the cause of an assertion.
15257
15258 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15259
15260         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15261         removed.
15262
15263 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15264
15265         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15266         assert. Should fix #82103.
15267
15268 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15269
15270         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15271         here too. Fixes #82095.
15272
15273         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15274         addresses.
15275
15276         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15277
15278         * mini-amd64.h: Enable IMT for amd64.
15279         
15280         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15281
15282 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15283
15284         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15285
15286 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15287
15288         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15289         as soon as check_linkdemand sets an exception_type.
15290
15291 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15292
15293         * mini-x86.c: fixed offsets for IMT call sequence.
15294         * mini-x86.h: enable IMT again.
15295
15296 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15297
15298         * trace.c (mono_trace_enter_method): Decode MonoType too.
15299
15300         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15301
15302         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15303
15304         * mini-amd64.c: Add preliminary IMT implementation.
15305         
15306 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15307
15308         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15309         understand the new IMT-base interface invocation (thanks to
15310         Daniel Nauck for the report and the remote debugging session).
15311
15312 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15313
15314         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15315
15316 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15317
15318         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15319
15320 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15321
15322         * mini-trampolines.c: implement AOT IMT support.
15323         * mini-x86.h: enable IMT support for wider testing.
15324
15325 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15326
15327         * inssel.brg (emit_imt_argument): Add aot support here.
15328
15329         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15330
15331 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15332
15333         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15334         of the IMT implementation, partially from massi, with my
15335         implementation of the bsearch sequence. Disabled by default until
15336         the AOT code is implemented.
15337
15338 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15339
15340         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15341
15342         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15343
15344 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15345
15346         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15347         arch-independent IMT JIT code from Massimiliano
15348         Mantione (massi@ximian.com) with small cleanups from me.
15349
15350 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15351
15352         * Makefile.am: fix svn invocation to get the svn revision to be
15353         independent of the local language (build fix).
15354
15355 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15356
15357         * mini.c (inline_method): Reset cfg->exception_type if the
15358         inlining is aborted.  Fixes: 82049.
15359
15360 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15361
15362         * mini.c: remove assert from exception handling code when exception_ptr
15363         is not set.
15364
15365 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15366
15367         * mini.c (mono_codegen): Add an assert.
15368
15369         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15370         enter and leave code.
15371         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15372
15373 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15374
15375         * mini-ppc.c: fixed memory corruption for localloc(0)
15376         (bug #81852).
15377
15378 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15379         
15380         * mini.c: Fix warnings.
15381
15382 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15383
15384         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15385         to emit better double->int conversions.
15386
15387 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15388
15389         * mini.c: the provided Min/Max optimizations are valid for unisgned
15390         ints.
15391
15392 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15393
15394         * 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
15395
15396 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15397
15398         * mini.c (mono_running_on_valgrind): Add support for reporting the
15399         method and  its boundaries to valgrind.
15400
15401 2007-06-28  Martin Baulig  <martin@ximian.com>
15402
15403         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15404
15405 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15406
15407         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15408
15409         * generic.2.cs: Add new test case.
15410
15411 2007-06-25  Martin Baulig  <martin@ximian.com>
15412
15413         Merged the `debugger-dublin' branch.
15414
15415         * debug-mini.c
15416         (mono_debugger_insert_method_breakpoint): New public method.
15417         (mono_debugger_remove_method_breakpoint): Likewise.
15418         (mono_debugger_check_breakpoints): New static method.
15419         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15420
15421         * debug-debugger.h (MonoDebuggerInfo):
15422         Renamed (to keep backward compatibility in the vtable):
15423         `insert_breakpoint' -> `old_insert_breakpoint'.
15424         `remove_breakpoint' -> `old_remove_breakpoint'.
15425         `create_string' -> `old_create_string'.
15426         `lookup_class' -> `old_lookup_class'.
15427         `lookup_type' -> removed; changed into a dummy field.
15428         `lookup_assembly' -> `old_lookup_assembly'.
15429         Added (same functionality, but different signature):
15430         `create_string', `lookup_class', `lookup_assembly'
15431         Added new:
15432         `get_method_addr_or_bpt', `remove_method_breakpoint',
15433         `runtime_class_init'.
15434
15435         * debug-debugger.c: Merged the `debugger-dublin' branch.
15436
15437 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15438
15439         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15440         well.
15441         (peephole_pass): Likewise.
15442
15443 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15444
15445         * driver.c: hopefully make setaffinity work also for ancient
15446         versions of linux.
15447
15448 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15449
15450         * driver.c : win32 build fix.
15451
15452 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15453
15454         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15455         processor if it is set.
15456
15457 2007-06-21  Martin Baulig  <martin@ximian.com>
15458
15459         * debug-mini.h: New file.
15460
15461         * debug-mini.c
15462         (mono_debugger_insert_breakpoint_full): Moved here from
15463         ../metadata/mono-debug-debugger.c.
15464         (mono_debugger_remove_breakpoint): Likewise.
15465         (mono_debugger_breakpoint_callback): Likewise.
15466
15467 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15468
15469         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15470         changes in MonoGenericClass.
15471
15472 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15473
15474         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15475
15476 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15477
15478         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15479         removal of MonoGenericMethod.
15480
15481 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15482
15483         * mini-exceptions.c: hooks for the exception events profiling API.
15484
15485 2007-06-14  Randolph Chung  <tausq@debian.org>
15486
15487         * Makefile.ma: Add hppa target.
15488         * mini-arch.h: Include mini-hppa.h
15489         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15490         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15491         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15492
15493 2007-06-14  Randolph Chung  <tausq@debian.org>
15494
15495         * inssel.brg: Add rules for "chained" compare-branch operations so that
15496         a single compare op can affect multiple branches.  Adjust cost for
15497         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15498         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15499         cost for some rules so that they can more easily be overridden by
15500         per-arch rules (with fixes from lupus).
15501         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15502
15503 2007-06-13  Randolph Chung  <tausq@debian.org>
15504
15505         * mini-ops.h: Reorder branch ops so that they match the order of the
15506         corresponding CEE_* ops.  The code expects them this way.
15507         Add new ops for HPPA target.
15508         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15509
15510 2007-06-13  Randolph Chung  <tausq@debian.org>
15511
15512         * mini-exceptions.c: Handle cases where the stack grows towards
15513         larger addresses.
15514         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15515
15516 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15517
15518         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15519         counter.
15520         * driver.c: explain where a non-matching corlib is found.
15521
15522 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15523
15524         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15525
15526 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15527
15528         * mini-exceptions.c: Generate a method profile leave event during
15529         an exception to ensure that the profiler gets notified.
15530
15531 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15532
15533         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15534         branch.
15535
15536         * cpu-amd64.md: Add long_and/or/xor opcodes.
15537
15538 2007-06-06  Wade Berrier  <wberrier@novell.com>
15539
15540         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15541         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15542         length of instruction shr_imm (expected 8, got 10)
15543
15544 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15545
15546         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15547
15548 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15549
15550         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15551         MonoInternalHashTable again (fixed bug in the internal hash table
15552         code).
15553
15554 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15555
15556         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15557         Have to figure out what makes it crash the SWF regression.
15558
15559 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15560
15561         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15562
15563 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15564
15565         * mini.c: optimize out the type check when storing null in a
15566         reference array.
15567
15568 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15569
15570         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15571         MonoInternalHashTable.
15572
15573 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15574
15575         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15576         signed integer methods.
15577
15578 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15579
15580         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15581         permanently since the current approach doesn't work.
15582
15583 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15584
15585         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15586         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15587
15588 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15589
15590         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15591         the sreg2==rdx case.
15592         
15593         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15594         account if it contains a rex prefix.
15595         (peephole_pass): Handle OP_FMOVE as well.
15596
15597 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15598
15599         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15600         as it causes regressions.
15601
15602 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15603
15604         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15605         static case as well.
15606
15607         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15608
15609         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15610         (mono_arch_get_this_arg_from_call): Ditto.
15611
15612         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15613
15614         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15615         invoke_impl field.
15616
15617         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15618         (mono_arch_get_this_arg_from_call): Ditto.
15619
15620         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15621         
15622         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15623         try to create optimized invoke code and use that for further invocations. 
15624         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15625
15626         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15627
15628 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15629
15630         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15631         sealed classes or methods.
15632         *devirtualization.cs: tests for the new optimization
15633
15634 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15635
15636         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15637         by the update_volatile () function.
15638
15639 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15640
15641         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15642         require it.
15643
15644         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15645
15646 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15647
15648         * mini.c: Add configure checks for header files.
15649         * mini-x86.c: Add configure checks for header files.
15650         * trace.c: Add configure checks for header files.
15651         * aot-runtime.c: Add configure checks for header files.
15652         * aot-compiler.c: Add configure checks for header files.
15653         * driver.c: Add configure checks for header files.
15654         * mini-codegen.c: Add configure checks for header files.
15655         
15656         Code is contributed under MIT/X11 license.
15657
15658 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15659
15660         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15661         icompare_imm -128 + op_iclt. Fixes #81703.
15662
15663 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15664
15665         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15666
15667 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15668
15669         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15670         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15671         so that all isinst checks now use "interface_bitmap".
15672
15673 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15674
15675         * cpu-amd64.md (jmp): Fix a warning.
15676
15677         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15678
15679         * basic.cs: Add new regression test.
15680
15681         * basic.cs: Remove test which is now in basic-long.cs.
15682
15683         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15684
15685         * basic-long.cs: Add new test.
15686         
15687 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15688
15689         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15690
15691 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15692
15693         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15694
15695         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15696         places.
15697         
15698         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15699         throwing code a bit.
15700
15701         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15702         the exception throwing code a bit.
15703
15704         * mini-x86.c (get_call_info): Allocate result from a mempool.
15705
15706 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15707
15708         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15709
15710         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15711
15712         * mini.h (MonoCompile): Add 'token_info_hash' field.
15713
15714         * mini.c: Save token->method associations during compilation so the AOT 
15715         compiler can use it.
15716         
15717         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15718         which reference generic classes and methods.
15719
15720 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15721
15722         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15723
15724         * aot-compiler.c (compile_method): Fix a typo in a comment.
15725
15726         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15727
15728         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15729         everything generic.
15730
15731         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15732
15733 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15734
15735         * mini.h (MonoCompile): Add 'args' field.
15736
15737         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15738         into cfg->args.
15739
15740         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15741
15742 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15743
15744         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15745
15746         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15747
15748         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15749         opcodes for some opcodes.
15750
15751         * mini.h *.brg *.c: Use the new opcodes.
15752
15753 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15754
15755         * mini.h: Bumped aot revision.
15756
15757         * inssel.brg: modified code generation of type checks for interfaces
15758         to use the new "MonoClass.interface_bitmap" instead of the old
15759         "MonoClass.interface_offsets".
15760
15761 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15762
15763         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15764
15765 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15766
15767         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15768         64 bit platforms.
15769
15770 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15771
15772         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15773
15774 2007-04-27  Wade Berrier  <wberrier@novell.com>
15775
15776         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15777         mini.h) to fix build.
15778
15779 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15780
15781         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15782         
15783         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15784         causes the corlib unit tests to fail.
15785
15786 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15787
15788         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15789
15790         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15791
15792         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15793         opcodes to the comparison relations.
15794
15795         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15796         opcodes to their types.
15797         
15798         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15799
15800         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15801         it in cfg->arch.cinfo.
15802
15803         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15804
15805         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15806         cfg->cil_offset_to_bb.
15807
15808 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15809
15810         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15811         created becase of initlocals.
15812
15813 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15814
15815         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15816         Sergey Tikhonov <tsv@solvo.ru>.
15817
15818 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15819
15820         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15821
15822 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15823
15824         * cpu-s390.md (break): Correct the length of break instruction.
15825
15826 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15827
15828         * mini.c: fix a couple of soft-float issues and comments.
15829
15830 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15831
15832         * trace.c (is_filenamechar): - is also a filename char.
15833
15834 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15835
15836         * mini-s390.c: Correct checking for enum type in return value processing.
15837
15838 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15839
15840         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15841         (version.h): Makefile is in the build directory.
15842
15843 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15844
15845         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15846
15847 2007-04-11  Martin Baulig  <martin@ximian.com>
15848
15849         * mini.c (can_access_member): Fix handling of generic classes;
15850         fixes #81259.
15851
15852 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15853
15854         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15855
15856 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15857
15858         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15859
15860 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15861
15862         * mini-codegen.c: make sure the right spill amount is
15863         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15864
15865 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15866
15867         * mini-ppc.c: fixes for the fp_branch_nan test.
15868
15869 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15870
15871         * basic.cs: Comment out new test which still fails on ia64.
15872
15873 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15874
15875         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15876
15877 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15878
15879         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15880
15881 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15882
15883         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15884         on 64 bit machines. Fixes part of #80738.
15885
15886         * basic.cs: Add regression test.
15887
15888 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15889
15890         * inssel.brg basic.cs: Revert previous change to fix build.
15891
15892         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15893         platforms.
15894         
15895         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15896
15897         * basic.cs: Add new regression test.
15898
15899 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15900
15901         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15902         many arguments.
15903
15904 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15905
15906         * cpu-s390x.md: Correct length of break instruction.
15907
15908 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15909
15910         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15911         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15912
15913 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15914
15915         * *.c: Begin WIN64 port.
15916         * mini.c:  Use correct register in profiler.
15917         * mini-amd64.c: No inline assembly on Win64.
15918         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15919         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15920         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15921         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15922         mono_arch_ip_from_context for Win64.
15923         
15924         Contributed under MIT/X11 license.
15925
15926 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15927
15928         * exceptions-amd64.c (seh_handler): Ditto.
15929
15930         * exceptions-x86.c (seh_handler): Fix a memory leak.
15931
15932 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
15933
15934         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
15935         mini-s390x.c: fixed peephole optimizations to deal
15936         correctly with 1 and 2 byte reload avoidance.
15937
15938 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15939
15940         * cpu-s390.md, cpu-s390x.md: update localloc length.
15941
15942 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15943
15944         * cpu-g4.md: added missing descriptions.
15945
15946 2007-03-14  Miguel de Icaza  <miguel@novell.com>
15947
15948         *  Makefile.am: Add support so the tail tests are not executed on
15949         PowerPC as that is a known limitation of the PowerPC port.
15950
15951 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15952
15953         * runmdesc.bat:  Move to msvc directory.
15954         
15955 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15956
15957         * runmdesc.bat:  Run executable that was produced by the current
15958         target and sent via an argument.
15959         
15960 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
15961
15962         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
15963         #81102.
15964
15965         * generics.2.cs: Add regression test.
15966
15967 2007-03-09  Wade berrier  <wberrier@novell.com>
15968
15969         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
15970
15971 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
15972
15973         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
15974         AOT code depends on this.
15975
15976 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15977
15978         * mini.c: more precise tracking of types in the eval stack
15979         (part of fix for bug #81044).
15980
15981 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
15982
15983         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
15984
15985         * aot-compiler.c (encode_patch): Remove an obsolete comment.
15986
15987 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
15988
15989         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
15990
15991         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
15992
15993 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
15994
15995         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
15996         a pointer on 64 bit systems. Fixes #80190.
15997
15998         * iltests.il: Add new regression test.
15999
16000 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16001
16002         * mini.c: inline a constant for Environment.IsRunningOnWindows.
16003
16004 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
16005
16006         * trace.c: Remove an erroneous alignemnt check when tracing.
16007           Fixes --trace on OSX86.
16008
16009 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16010
16011         * mini-$(arch).h: initialize SP in context for all the archs.
16012
16013 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
16014
16015         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
16016         regressions in the thread tests.
16017
16018 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
16019
16020         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
16021         - fixed implementation of LOCALLOC opcode
16022         - implemented non-un compare for floats
16023         - code cleanup
16024         - implementation of FDIV and CKFINITE opcodes
16025         - fixes for latest mono updates
16026         - additional arch opcodes
16027
16028 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16029
16030         * Makefile.am: simplify and merge rules for cross-compilation.
16031
16032 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
16033
16034         * local-propagation.c: Actually *apply* the fix for bug 80591...
16035
16036 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16037
16038         * mini-exceptions.c: backuot part of the last change
16039         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
16040
16041 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
16042         * inssel.brg: Fix bug 59286.
16043
16044
16045 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
16046
16047         * mini-exceptions.c: patch from Zoltan to correctly check for
16048         stack boundaries (using the stack register, not the frame register),
16049         fixes bugs #80724, #79717.
16050
16051 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
16052
16053         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
16054         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
16055
16056         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
16057         presence of frame pointer elimination.
16058
16059 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
16060         
16061         * mini-x86.h: NetBSD UCONTEX_REG defines.
16062
16063 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
16064
16065         * inssel-amd64.brg: Fix amd64 build.
16066
16067 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
16068
16069         * mini.h: remove extern to workaround what looks likes gcc bug 26905
16070         on amd64.
16071
16072 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
16073
16074         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
16075         ends.
16076
16077         * mini-<ARCH>.c: Use mono_is_regsize_var ().
16078
16079 2007-01-30 Mark Mason <mason@broadcom.com>
16080
16081            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
16082            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
16083            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
16084            beginning support for CEE_JMP [not quite working yet]
16085            * tramp-mips.c: LMF handling now works
16086         
16087 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
16088
16089         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
16090
16091         * mini.h (NULLIFY_INS): New macro.
16092
16093 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16094
16095         * mini.c: statistical profiler fix for windows, patch
16096         from Tor Lillqvist (tml@novell.com).
16097
16098 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
16099         * local-propagation.c: Fix bug 80591.
16100
16101 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16102
16103         * Makefile.am: put back the --export-dynamic option as with
16104         the previous gmodule flags (thanks to Robert Jordan).
16105
16106 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
16107
16108         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
16109
16110         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
16111         simplify and speed up the local register allocator. Also rename some fields
16112         like iassign->vassign.
16113         
16114         * regalloc.c: Remove some functions which are no longer used since their
16115         inlined version is in mini-codegen.c.
16116         
16117         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
16118
16119         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
16120
16121 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
16122
16123         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
16124         narrowing. Fixes #80622.
16125
16126         * iltests.il: Add new regresssion test. 
16127
16128 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16129
16130         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
16131         debug-debugger.c, debug-debugger.h: warning fixes.
16132         * driver.c: updated copyright year and made it fit in one line.
16133
16134 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
16135
16136         * aot-runtime.c: updated to use mono-dl instead of gmodule.
16137
16138 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
16139
16140         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
16141
16142         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
16143
16144         * iltests.il: Add new test for bug #80507.
16145
16146 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16147
16148         * mini-arm.h: use soft-float also on vfp for now.
16149
16150 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16151
16152         * mini.c: fix some more soft-float issues.
16153
16154 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
16155
16156         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
16157
16158 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
16159         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
16160         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
16161         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
16162
16163 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
16164
16165         * mini-arm.c: typo fix.
16166
16167 2007-01-23  Neale Ferguson <neale@sinenomine.net>
16168
16169         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
16170
16171 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
16172
16173         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
16174         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
16175
16176         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
16177
16178         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16179
16180         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16181         
16182         * inssel.brg: Fix a warning.
16183
16184         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16185
16186         * abcremoval.c ssa.c ssapre.c: Update after this change.
16187         
16188         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16189
16190         * dominators.c (df_set): Use mono_bitset_union_fast.    
16191
16192 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16193
16194         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16195         mini-codegen.c: reduce relocations and memory usage for the cpu
16196         description.
16197
16198 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16199
16200         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16201
16202         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16203         to reduce their size.
16204
16205 2007-01-19 Mark Mason <mason@broadcom.com>
16206
16207         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16208         * mini-mips.c: more configuration macros, support long conditional branches, additional
16209         asserts, fix epilog instrumentation.
16210         * mini-mips.h: use standard stack walk
16211         * cpu-mips.md: increase size of div, rem and conditional branches
16212         
16213 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16214
16215         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16216         to cpu spec data.
16217
16218 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16219
16220         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16221         (compile_method): Ditto.
16222
16223         * aot-runtime.c (decode_klass_info): Ditto.
16224
16225         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16226         needed by the code generated by inssel.brg. Also fix a warning.
16227
16228 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16229
16230         * mini.c: deal with enums that become genericinsts by
16231         being nested in a generic class (bug #79956).
16232
16233 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16234
16235         * mini.c: match the generic definition to check for
16236         private access with generic types (bug #78431).
16237
16238 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16239
16240         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16241         to make life easier for people cross-compiling that insist on not
16242         using scratchbox.
16243
16244 2007-01-17 Mark Mason <mason@broadcom.com>
16245
16246         * inssel-long.brg: patch to deal with mips missing flags
16247         * inssel-long32-mips.brg: implement overflow checks
16248         * insset-mips.brg: implement overflow checks
16249         * mini-mips.h: implement conditional exception handling
16250         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16251           Remove unused code, minor cleanups.
16252         * exceptions-mips.c: minor cleanups
16253         * mini-ops.h: add mips conditional exception ops
16254         * cpu-mips.md: add mips conditional exception ops
16255
16256         
16257 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16258
16259         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16260         to deal with mips missing of flags.
16261
16262 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16263
16264         * exceptions-ppc.c: execute fault handlers.
16265
16266 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16267
16268         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16269
16270 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16271
16272         * mini.c: handle also floating point values in initialize_array.
16273
16274 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16275
16276         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16277         array initialization and make it conditional on the intrins option.
16278
16279 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16280
16281         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16282         relocations and put the patch info names close to the enum definition.
16283
16284 2007-01-15 Mark Mason <mason@broadcom.com>
16285
16286         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16287
16288 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16289
16290         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16291
16292 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16293
16294         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16295
16296 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16297
16298         * Makefile.am: distribute the mips sources.
16299
16300 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16301
16302         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16303         directly.
16304
16305 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16306
16307         * cpu-x86.md: back out for now as this triggers other regressions.
16308
16309 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16310
16311         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16312         to eax:edx, so ecx can't get allocated to them (bug #80489).
16313
16314 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16315
16316         * mini.c, mini-exceptions.c: enabled running fault handlers
16317         (bug #80469).
16318
16319 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16320
16321         * driver.c: If nothing fail, do not use the string "failed",
16322         because it makes it very annoying to view test result logs on the
16323         web. 
16324
16325 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16326
16327         * debug-debugger.c (mono_debugger_main): Rename "main" to
16328         "main_method" to prevent a warning.
16329
16330         Remove a warning for unused field.
16331
16332 2006-12-28  Martin Baulig  <martin@ximian.com>
16333
16334         * debug-debugger.c
16335         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16336
16337 2006-12-22  Martin Baulig  <martin@ximian.com>
16338
16339         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16340         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16341         seperate `.mdb_debug_info' section, so we can access it from the
16342         debugger even if the binary is stripped.
16343
16344         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16345         from the `.mdb_debug_info' here to prevent the linker from
16346         removing that section.
16347
16348         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16349         mdb-debug-info64.s.
16350
16351 2006-12-19  Robert Jordan  <robertj@gmx.net>
16352
16353         * mini-x86: enable the code to return small structures in
16354         registers for FreeBSD as well. Fixes bug #80278.
16355         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16356
16357 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16358
16359         * mini-x86.c: align the stack when calling the profiler
16360         function instrumenting the prolog (on OSX).
16361
16362 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16363
16364         * mini.c: emit a break opcode where Debugger.Break () is called.
16365
16366 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16367
16368         * mini.c (mono_method_to_ir): Provide useful information on this
16369         assert, to prevent others from debugging like I did.
16370
16371 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16372
16373         * mini.c: enable code which was incorrectly commented
16374         (bug #80235).
16375
16376 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16377
16378         * mini-x86.c: enable on OSX, too, the code to return small
16379         structures in registers.
16380
16381 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16382
16383         * mini-x86.c: remove the use of the dynamic code manager here, too.
16384
16385 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16386
16387         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16388         mono_debugger_create_notification_function() to use
16389         mono_global_codeman_reserve () instead of a dynamic code manager.
16390
16391 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16392
16393         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16394         ves_array_element_address() jit icall and use a generated
16395         managed method instead (which is about 4 times faster for a rank 3
16396         array access).
16397
16398 2006-11-29  Mark Mason  <mason@broadcom.com>
16399
16400         * basic-calls.cs: additional tests for passing
16401         structures as function arguments.
16402
16403 2006-11-29  Mark Mason  <mason@broadcom.com>
16404
16405         * mini-mips.h: disable custom exception handling
16406         * mini-mips.c: throw/rethrow should use jalr to call
16407         exception stubs.  Fixed bug with passing structures
16408         by value. More support for tracing floating point
16409         functions.
16410
16411 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16412
16413         * mini.c: fixed typo in the soft-float ldind.r4 handling
16414         (bug #80086).
16415
16416 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16417
16418         * mini.c, mini.h, driver.c: added --runtime command line
16419         option to select a different runtime than the autodetected one.
16420         * jit.h: added API for embedders to initialize with a specific
16421         runtime version.
16422
16423 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16424
16425         * mini.c: handle also boxing of r4 values (bug #80024).
16426
16427 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16428
16429         * mini-ppc.c: force indirect calls until we reserve
16430         enough address space for all the generated code.
16431
16432 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16433
16434         * exceptions-arm.c: workaround bugs in the libc definition
16435         of struct ucontext.
16436
16437 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16438
16439         * inssel.brg: fixes from me and Mark Mason.
16440
16441 2006-11-23  Dick Porter  <dick@ximian.com>
16442
16443         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16444         semaphore display now we've fixed the initial value
16445
16446 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16447
16448         * inssel.brg: partially revert the last change to fix the build.
16449
16450 2006-11-21  Mark Mason  <mason@broadcom.com>
16451
16452         * inssel.brg: Add and use compare-and-branch macros to support
16453         architectures that do not have condition code registers (ie. MIPS).
16454         * *-mips.{c,brg,md}: Fix copyright statements
16455
16456 2006-11-20  Mark Mason  <mason@broadcom.com>
16457
16458         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16459         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16460         * mini.h: Added declaration for mono_print_ins()
16461         * mini-codegen.c: added ins_spec initializer for MIPS
16462         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16463         vreg to be virtual and hreg to be non-virtual.
16464         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16465         is not yet working/implemented correctly.
16466         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16467         non-static, fixup calls to print_ins() from other parts in the file.
16468
16469 2006-11-20  Mark Mason  <mason@broadcom.com>
16470
16471         * basic-calls.cs: added tests for passing structures as arguments
16472         to calls.
16473
16474 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16475
16476         * inssel-long32.brg: optimize signed division by power of two.
16477
16478 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16479
16480         * mini-arm.c: added support for interworking with thumb code
16481         (mono must be still be built using the ARM instruction encoding).
16482
16483 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16484
16485         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16486         verifier has different rules for it.   Fixes a few verifier issues
16487         in the test suite.
16488
16489         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16490         at the end, so people know what happened.
16491
16492 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16493
16494         * brach-opts.c: in optimize_exception_target() make sure we
16495         are in a catch clause (fixes bug #79871).
16496
16497 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16498
16499         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16500         more soft-float support fixes.
16501
16502 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16503
16504         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16505         that are passed half on the stack and half in registers.
16506
16507 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16508
16509         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16510         more mips integration work from Mark E Mason 
16511         <mark.e.mason@broadcom.com>.
16512
16513 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16514
16515         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16516         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16517         tramp-mips.c: added sources for the mips port, not
16518         integrated in the build yet. Contributed by
16519         Mark E Mason <mark.e.mason@broadcom.com>.
16520
16521 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16522
16523         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16524
16525 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16526
16527         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16528         put the soft-float rules in its own file since it seems to
16529         break s390 compilation.
16530
16531 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16532
16533         * mini-arm.c: fixed wrnings.
16534
16535 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16536
16537         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16538         inssel-arm.brg: ARM support for soft-float.
16539
16540 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16541
16542         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16543         loads and stores of 32 bit fp values.
16544
16545 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16546
16547         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16548
16549         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16550         works. Fixes #79852 and #79463.
16551
16552 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16553
16554         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16555         more soft-float support WIP and fixes.
16556
16557 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16558
16559         * mini-arm.c: some VFP updates.
16560
16561 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16562
16563         * mini-exceptions.c: 0 is a valid local var offset in some
16564         architectures, don't assert (bug #78508).
16565
16566 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16567
16568         * exceptions-arm.c: fixed off by one error in stack walk code.
16569
16570 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16571
16572         * mini.h, mini.c: more precise tracking of type load exceptions.
16573
16574 2006-11-03  Robert Jordan  <robertj@gmx.net>
16575
16576         * Makefile.am: [WIN32] Add monow.exe target.
16577         * driver.c: [WIN32] Don't detach the console when debugging.
16578         Fixes bug #79797.
16579         
16580 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16581
16582         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16583
16584 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16585
16586         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16587
16588         * driver.c (mini_regression): Fix --regression with AOT.
16589
16590         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16591
16592 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16593
16594         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16595
16596         * mini-sparc.h: Don't use sigaction on sparc/linux.
16597
16598         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16599
16600         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16601
16602         * mini-exceptions.c: Add proper include files for getpid ().
16603
16604 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16605
16606         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16607         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16608         method.
16609
16610         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16611         name cache to reduce its size.
16612
16613         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16614
16615 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16616
16617         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16618         the mono_lmf TLS variable.
16619
16620         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16621         trampoline lmf frames.  
16622
16623         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16624
16625 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16626
16627         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16628         the mono_lmf TLS variable.
16629
16630         * mini-exceptions.c: Access the LMF structure through accessors.
16631
16632         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16633         variable instead of in jit_tls->lmf.
16634
16635         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16636         
16637         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16638         trampoline lmf frames.
16639
16640         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16641
16642 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16643
16644        * mini.c trace.c mini-x86.c: Revert these too.
16645         
16646        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16647        signature change.
16648
16649 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16650
16651         * genmdesc.c: removed now dead code.
16652
16653 2006-10-09  Robert Jordan <robertj@gmx.net>
16654
16655         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16656
16657 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16658
16659         * mini.h: do not leave gaps in the opcode values.
16660
16661 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16662
16663         * jit-icalls.h: flag functions as internal here, too.
16664
16665 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16666
16667         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16668         functions with the internal attribute.
16669
16670 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16671
16672         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16673
16674 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16675
16676         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16677         for soft-float.
16678
16679 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16680
16681         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16682         tail calls as on other platforms.
16683
16684         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16685
16686         * iltests.il: Add a few tailcall tests.
16687
16688 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16689
16690         * driver.c: fix loop for old compilers (bug #79521).
16691
16692 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16693
16694         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16695
16696         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16697
16698         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16699         metadata without any code.
16700
16701         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16702         more precise debugging information using gdb.
16703
16704 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16705
16706         * inssel-ia64.brg: Make the helper methods static.
16707
16708 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16709
16710         * inssel-x86.brg: make the helper methods static.
16711
16712 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16713
16714         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16715
16716 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16717
16718         * mini.c: updates for monoburg changes.
16719         * inssel.brg: make a few helper functions static as they should.
16720
16721 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16722
16723         * Makefile.am: Move mini-codegen.c to common_sources.
16724
16725 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16726
16727         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16728         instructions.
16729         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16730         mini-ppc.h: port to use the common local register allocator.
16731
16732 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16733
16734         * mini.h: Remove the comment too then.
16735
16736 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16737
16738         * mini.h: put back backend.data which is to be used shortly and
16739         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16740         pointers on 4 byte boundaries it'd have much bigger issues running
16741         and you can ifdef it out anyway.
16742
16743 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16744
16745         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16746         MonoInst size by 4 bytes on 64 bit machines.
16747
16748 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16749
16750         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16751         replacement with more meaningful field names. Arch maintainers, please
16752         check the assigned names are good enough for your arch.
16753
16754 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16755
16756         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16757         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16758
16759 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16760
16761         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16762         relocations and memory requirements, put the optimization flags
16763         definitions in their own file.
16764
16765 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16766
16767         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16768
16769         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16770
16771 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16772
16773         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16774
16775 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16776
16777         * inssel.brg: use the correct function to get the size of an item
16778         in an array, given an element class.
16779         * aot-compiler.c: do not access class->class_size directly.
16780
16781 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16782
16783         * mini.h, debug-mini.c: added a debugging function to print
16784         info about local variables and arguments in a jitted method.
16785
16786 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16787
16788         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16789
16790         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16791
16792 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16793
16794         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16795         inner and outer loops when passing vtypes.
16796
16797 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16798
16799         * mini-ppc.c: take into account the cpu errata for cache flushing
16800         which caused some random errors (bug #79381).
16801
16802 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16803
16804         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16805         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16806
16807 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16808
16809         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16810         loaded.
16811
16812         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16813         freebsd ports tree.
16814
16815         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16816         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16817
16818         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16819         displacement.
16820
16821 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16822
16823         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16824
16825 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16826
16827         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16828         macro does not have to be changed during debugging.
16829
16830         * 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>.
16831
16832         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16833
16834         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16835         
16836         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16837         MONO_ARCH_NO_EMULATE_MUL is defined.
16838
16839         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16840
16841         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16842
16843         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16844
16845         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16846         
16847 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16848
16849         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16850         stuff to mini-exceptions.c where it is used.
16851
16852         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16853         setup code, the real one is in mini-exceptions.c.
16854
16855         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16856         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16857         some changes from the freebsd ports tree.
16858
16859         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16860         constants.
16861         
16862         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16863
16864 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16865
16866         * mini.c: on Linux, check for /proc to be mounted
16867         (bug# 79351, novell bug#201204).
16868
16869 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16870
16871         * mini.c: handle cases where pthread_attr_getstack() behaves
16872         incorrectly (bug #78096).
16873
16874 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16875
16876         * mini-arm.c: support larger stack frames (bug #79272).
16877
16878 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16879
16880         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16881
16882         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16883         tokens.
16884
16885         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16886         mono_class_from_name () to find a class from its name.
16887
16888         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16889
16890 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16891
16892         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16893
16894 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16895
16896         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16897
16898 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16899
16900         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16901         callinfo->trampoline.
16902
16903         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16904         fixes #79271.
16905         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16906         future.
16907
16908 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16909
16910         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16911
16912 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16913
16914         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16915         stats.method_trampolines, it is already done by the generic trampoline code.
16916
16917         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16918         
16919 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16920
16921         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16922
16923         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16924
16925         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16926
16927         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16928         
16929         * mini.c (print_jit_stats): Print new stats.
16930
16931         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16932
16933 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16934
16935         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
16936         Address on two dimensional arrays. Fixes #78729.
16937
16938         * mini.h (MonoCompile): Add a 'skip_visibility' field.
16939
16940         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
16941         a method.
16942
16943         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
16944
16945         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
16946         #79130.
16947         
16948         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
16949         a race condition.
16950         (mini_get_ldelema_ins): Ditto.
16951
16952 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
16953
16954         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
16955         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
16956         Fixes #79213.
16957
16958 2006-08-29 Neale Ferguson <neale@sinenomine.net>
16959
16960         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
16961         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
16962
16963         * exceptions-s390x.c: Cosmetic change.
16964
16965         * tramp-s390.c: Fix warning.
16966
16967         * cpu-s390.md: Correct length of mul_imm.
16968
16969 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
16970
16971         * aot-compiler.c: added binary writer with ELF backend
16972         implementation (only on Linux/x86 for now).
16973
16974 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16975
16976         * Makefile.am: Don't run net 2.0 AOT tests.
16977
16978         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
16979         (mono_compile_assembly): Skip net 2.0 assemblies as well.
16980
16981         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
16982
16983 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16984
16985         * aot-compiler.c: simplified and refactored the asm-writing code
16986         to allow different backends.
16987
16988 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16989
16990         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
16991
16992         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
16993         little. Share patches of type TYPE_FROM_HANDLE as well.
16994
16995         * mini.c (mono_patch_info_equal): New helper function.
16996         (mono_patch_info_hash): Ditto.
16997
16998         * aot-compiler.c (emit_method_code): Fix s390 build.
16999
17000         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
17001         is not handled because it is stored as a flag and not as a type ctor. Fixes
17002         #79016.
17003
17004 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
17005
17006         * aot-compiler.c: Fix computation of GOT slot statistics.
17007         
17008         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
17009         Also remove support for not PIC AOT.
17010
17011         * mini.h: Bump AOT file format version.
17012
17013         * objects.cs: Add a test for #78990.
17014
17015         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
17016         (peter.dettman@iinet.net.au). Fixes #79087.
17017
17018         * basic-long.cs: Add a test for the above.
17019
17020 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
17021
17022         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
17023         
17024         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
17025         code somewhat.
17026
17027 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
17028
17029         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
17030         exceptions.
17031
17032 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
17033
17034         * mini.c: Don't verify COM proxy invoke calls
17035         
17036
17037 2006-08-10  Dick Porter  <dick@ximian.com>
17038
17039         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
17040         which process is holding semaphores locked.
17041
17042 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
17043
17044         * mini-ia64.c mini-amd64.c: Fix #79027.
17045
17046         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
17047
17048         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
17049
17050         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
17051         implicit arguments in a vararg call. Fixes #79027.
17052
17053 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
17054
17055         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
17056         (mono_get_array_new_va_signature): Ditto.
17057
17058 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
17059
17060         * aot-runtime.c: Call init_plt lazily.
17061
17062         * inssel-long.brg: Fix unsigned long->int conversion.
17063
17064         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
17065
17066         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
17067         that most data is now in the .rss/.data section.
17068
17069 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
17070
17071         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
17072
17073         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
17074
17075         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
17076
17077         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
17078
17079         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
17080         virtual call. Fixes #79010.
17081
17082         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
17083         and use the result as the this argument in the real call.
17084
17085         * generics.2.cs: Add a new test for #79010.
17086         
17087 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
17088
17089         * mini-x86.c: Fix a warning.
17090
17091         * aot-compiler.c: Add a bunch of statistics.
17092
17093         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
17094
17095 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
17096
17097         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
17098
17099 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
17100
17101         * 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>.
17102
17103 2006-07-13  Miguel de Icaza  <miguel@novell.com>
17104
17105         * mini.c (mono_method_to_ir): Obtain the original method in the
17106         CIL stream and use this to perform validation.
17107
17108         Fixed: #78816
17109
17110 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
17111
17112         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
17113         (mono_arch_call_opcode): Ditto.
17114
17115         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
17116         #78826.
17117
17118         * mini.c (mono_patch_info_dup_mp): New helper function.
17119         
17120         * aot-compiler.c (compile_method): Fix some of the memory allocated during
17121         compilation. Fixes #78827.
17122
17123 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
17124
17125         * declsec.c: Use original security informations for
17126           MONO_WRAPPER_MANAGED_TO_MANAGED.
17127
17128 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
17129
17130         * mini.c: Allow Com Interop methods/classes and
17131         don't verify COM wrapper calls
17132         
17133
17134 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
17135
17136         * inssel-long32.brg: Fix long->i4 checked conversion.
17137
17138         * exceptions.cs: Add a test for the above.
17139
17140 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
17141
17142         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
17143
17144         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
17145         leaks.
17146
17147         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
17148         #78775.
17149
17150 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
17151
17152         * mini.c: Fix solaris/x86 exception handling.
17153
17154         * Makefile.am: Get rid of $(ICU_LIBS).
17155
17156 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
17157
17158         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
17159         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
17160         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
17161
17162         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
17163
17164         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
17165         this function causes a SIGSEGV.
17166
17167 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
17168
17169         * mini.c: Remove unused solaris/x86 includes.
17170
17171 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
17172
17173         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
17174
17175 2006-06-20  Jb Evain  <jbevain@gmail.com>
17176
17177         * cpu-g4.md: fix max length of start_handler instruction.
17178
17179 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17180         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17181
17182 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17183         * ssa.c: Fixed bug 78653 for SSA based deadce.
17184         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17185         MonoInst.flags, used in SSA based deadce.
17186         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17187         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17188
17189 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17190
17191         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17192         it can end up using non executable memory on ppc64 systems
17193         running ppc32 userspace (fix from Johannes Berg).
17194
17195 2006-06-14  Dick Porter  <dick@ximian.com>
17196
17197         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17198         4.1.1
17199
17200 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17201         * mini.c: Made so that inline is locally disabled if it would
17202         trigger a .cctor, because too many apps depend on this behavior
17203         (which seems to be also the one of the MS CLR).
17204
17205 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17206
17207         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17208         No idea why this worked before.
17209
17210         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17211         which branch to outer exception clauses since they could skip the
17212         inner finally clauses. Fixes #78633.
17213
17214         * exceptions.cs: Add a test for the above.
17215
17216         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17217         Fixes #78629.
17218
17219         * iltests.il: Add a test for the above.
17220
17221 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17222
17223         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17224         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17225
17226         * iltests.il: Add a test for the above.
17227
17228 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17229
17230         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17231         
17232         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17233         methods as instrinsics.
17234
17235 2006-06-09  Wade Berrier <wberrier@novell.com>
17236
17237         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17238         (simple-cee-ops.h ssapre-mini-ops.h)
17239
17240 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17241
17242         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17243         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17244         instruction).
17245         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17246         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17247
17248 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17249
17250         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17251
17252 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17253
17254         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17255         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17256         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17257         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17258         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17259         of opcodes, so that bug 78549 should not happen again.
17260         * ssapre.c: Updated to use the renamed files.
17261
17262 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17263
17264         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17265         in OP_ATOMIC_EXCHANGE_I4.
17266
17267 2006-06-07  Wade Berrier <wberrier@novell.com>
17268
17269         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17270         in mono_debugger_create_notification_function)
17271
17272 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17273
17274         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17275         
17276         * mini.c (type_from_stack_type): Disable some changes which do not
17277         seem to work.
17278
17279         * driver.c: Reenable opts.
17280
17281         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17282         of the evaluation stack.
17283         
17284         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17285         evaluation stack trace at entry to the bblock.
17286
17287         * mini.c (merge_stacks): New function to perform verification of stack merges.
17288         Turned off by default.
17289
17290         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17291         STACK_MP.
17292         
17293 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17294
17295         * local-propagation.c: Fixed bug 78549.
17296
17297 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17298
17299         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17300
17301 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17302
17303         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17304         tramp-arm.c, tramp-ia64.c
17305         (mono_debugger_create_notification_function): Update signature to
17306         new signature and use new protocol for creating the notification
17307         function.  
17308
17309         Should fix the build.
17310
17311 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17312
17313         * exceptions-ppc.c (mono_jit_walk_stack)
17314         (ves_icall_get_frame_info): Fix the build
17315
17316 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17317
17318         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17319
17320 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17321
17322         * il2tests.2.il: New file for generics CIL tests.  Add test for
17323         #78019.
17324         * Makefile.am: Update.
17325
17326         Fix #78019
17327         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17328         to nullable types.
17329
17330 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17331
17332         * aliasing.c: Fixed bug 78311.
17333
17334 2006-05-29  Martin Baulig  <martin@ximian.com>
17335
17336         * mini-exceptions.c (mono_find_jit_info): When computing the
17337         native offset, check whether we're actually inside the method's
17338         code; call mono_debug_print_stack_frame() to format the frame.
17339         (ves_icall_System_Exception_get_trace): Call
17340         mono_debug_print_stack_frame() to format the stack frame.
17341         (ves_icall_get_trace): Update to the new debugging API.
17342         (mono_jit_walk_stack_from_ctx): Likewise.
17343         (ves_icall_get_frame_info): Likewise.
17344
17345         * mini.c (get_method_from_ip): Use the new debugging API.
17346         (mono_print_method_from_ip): Likewise.
17347
17348         * exceptions-ppc.c
17349         (mono_jit_walk_stack): Use the new debugging API.
17350         (ves_icall_get_frame_info): Likewise.   
17351
17352 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17353
17354         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17355
17356 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17357
17358         * mini.c: Added "limitator" to inline for debugging.
17359
17360 2006-05-24  Martin Baulig  <martin@ximian.com>
17361
17362         * debug-debugger.c (mono_debugger_init): Create a private,
17363         malloc()-based code manager for the notification function and
17364         intentionally leak it on exit.  This fixes the crash-on-exit race
17365         condition.
17366
17367         * tramp-amd64.c
17368         (mono_debugger_create_notification_function): Added
17369         `MonoCodeManager *' argument.
17370
17371         * tramp-x86.c
17372         (mono_debugger_create_notification_function): Added
17373         `MonoCodeManager *' argument.
17374
17375 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17376
17377         * aliasing.c: Fixed 64 bit issue.
17378         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17379         default since all known bugs are fixed (one more time!).
17380
17381 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17382
17383         * mini.c: write barrier support.
17384
17385 2006-05-23  Martin Baulig  <martin@ximian.com>
17386
17387         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17388         check at the top of the file.
17389
17390 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17391
17392         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17393         reverting changes without reason and without changelog entries.
17394
17395 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17396
17397         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17398         to a few opcodes. Fixes #78439.
17399
17400         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17401         consistency with other archs.
17402
17403         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17404
17405 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17406
17407         * debug-debugger.c: fix the build.
17408
17409 2006-05-17  Martin Baulig  <martin@ximian.com>
17410
17411         * debug-debugger.c
17412         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17413         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17414         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17415         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17416
17417 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17418
17419         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17420
17421 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17422
17423         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17424         MONO_TYPE_GENERICINST.
17425         
17426         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17427         MONO_TYPE_GENERICINST.
17428
17429 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17430
17431         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17432         #78325.
17433
17434 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17435
17436         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17437         mempool.
17438         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17439
17440 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17441
17442         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17443         mono_trace_cleanup ().
17444
17445         * iltests.il: Fix problem with the newly added test.
17446
17447         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17448         due to register constraints, free up the previous hreg. Fixes #78314.
17449
17450         * iltests.il: Add new test for #78314.  
17451
17452         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17453         Interlocked.Add. Fixes #78312.
17454
17455         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17456         
17457 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17458
17459         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17460
17461 2006-05-05  Martin Baulig  <martin@ximian.com>
17462
17463         * debug-mini.c (mono_debug_open_block): New method.
17464
17465         * mini-amd64.c
17466         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17467         the beginning of each basic block.
17468
17469         * mini-x86.c
17470         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17471         the beginning of each basic block.
17472
17473 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17474
17475         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17476         default until I understand why they break the build on amd64.
17477
17478 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17479
17480         * mini.c (mini_cleanup): Call mono_cleanup ().
17481
17482         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17483         errors.
17484
17485 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17486
17487         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17488         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17489         default since all known bugs are fixed, and I cannot reproduce bug
17490         77944... I'm asking Matt Hargett to test again after this commit.
17491
17492 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17493
17494         * mini-codegen.c: Fixed typo that thrashed inline.
17495
17496 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17497
17498         * dominators.c (compute_dominators): Avoid using a worklist since
17499         it is not correct in some cases. Instead, iterate over all bblocks as
17500         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17501
17502 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17503
17504         * mini.c (mono_jit_compile_method_inner): Use
17505         mono_prepare_exception_from_error that resets the value
17506         internally.
17507
17508 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17509
17510         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17511         
17512 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17513
17514         * aliasing.c: Fixed bug 78210.
17515
17516 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17517
17518         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17519         default until all their problems (or the ones they trigger) are fixed.
17520
17521 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17522
17523         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17524         
17525         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17526         as loaded only after resolving patches since that could invoke the same method.
17527
17528         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17529
17530         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17531         functions.
17532
17533         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17534         AOT loader.
17535
17536         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17537         stack.
17538
17539         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17540         made from AOT code through the PLT table.
17541
17542         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17543         holding the plt offset when a call is made to the aot plt trampoline.
17544         
17545 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17546
17547         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17548         amd64 AOT support.
17549
17550         * Makefile.am (common_sources): Fix build breakage.
17551
17552         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17553         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17554         intra-assembly calls if possible.
17555         
17556         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17557
17558         * mini-trampolines.c: Handle PLT entries.
17559
17560         * mini.c: Avoid creating a GOT var for calls.
17561
17562         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17563         from mscorlib code.
17564
17565         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17566         from mscorlib code.
17567
17568         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17569         AOT code.       
17570
17571         * mini.h: Bump AOT file format version.
17572         
17573         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17574         covers more cases.
17575
17576 2006-04-25  Martin Baulig  <martin@ximian.com>
17577
17578         * driver.c: Disable copyprop, consprop and inline when running
17579         inside the debugger.
17580
17581 2006-04-25  Martin Baulig  <martin@ximian.com>
17582
17583         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17584         with `get_current_thread' and added `detach'.
17585         (MonoDebuggerMetadataInfo): Added `thread_size',
17586         `thread_tid_offset', `thread_stack_ptr_offset' and
17587         `thread_end_stack_offset'.
17588
17589 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17590
17591         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17592         aot-runtime.c.
17593
17594         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17595         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17596
17597         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17598
17599         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17600
17601         * aot.c: Add support for ADJUSTED_IID.  
17602
17603 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17604
17605         * aot.c (emit_method_order): Don't align method_order_end.
17606
17607         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17608         the interface ID changes.
17609
17610 2006-04-21  Dick Porter  <dick@ximian.com>
17611
17612         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17613         cleaning up a thread.  Fixes the new part of bug 77470.
17614
17615 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17616
17617         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17618         to managed wrapper.
17619                      
17620 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17621
17622         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17623         
17624         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17625         SIGSEGV. Fixes #78072.
17626
17627         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17628         unregister our SIGABRT handler.
17629
17630 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17631
17632         * mini.c: Disabled inline where it can alter the call stack in a
17633         way visible from managed code.
17634         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17635         default.
17636
17637 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17638
17639         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17640         on other platforms. Fixes #78089.
17641
17642 2006-04-13  Martin Baulig  <martin@ximian.com>
17643
17644         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17645         determine whether we're inside the debugger.
17646
17647         * debug-debugger.h
17648         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17649
17650 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17651
17652         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17653         handler clauses. Fixes #78024.
17654
17655         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17656         in the CALL_MEMBASE opcodes. Fixes #78088.
17657         (mono_arch_get_vcall_slot_addr): Ditto.
17658
17659 2006-04-10  Martin Baulig  <martin@ximian.com>
17660
17661         * debug-debugger.c: The thread handling code has now been moved
17662         into ../metadata/threads.c.
17663
17664 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17665
17666         * driver.c (mono_main): Fix --with-gc=none build.
17667
17668         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17669         (mono_spillvar_offset_float): Ditto.
17670         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17671         hreg, not when its !global, since on ia64, there is a third category: stacked
17672         registers.      
17673
17674 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17675
17676         * mini.c: set MonoInst->klass for load field address and a few other
17677         places.
17678
17679 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17680
17681         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17682
17683 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17684
17685         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17686         the branch opt changes.
17687
17688 2006-04-06  Dick Porter  <dick@ximian.com>
17689
17690         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17691         
17692         * wapihandles.c (mini_wapi_seminfo): 
17693         * driver.c (mono_main): Add semaphore info option
17694
17695 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17696
17697         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17698         branch optimization changes. Fixes #78009.
17699
17700 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17701
17702         * mini.c: ignore accessibility of methods in managed->native wrappers.
17703
17704 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17705
17706         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17707         
17708         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17709
17710 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17711
17712         * mini.c: Modify the branch optimizations to preserve the invariant that
17713         the entries inside the in_bb and out_bb arrays are unique.
17714         (mono_unlink_bblock): Avoid creation of new arrays.
17715
17716 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17717
17718         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17719         change (#77992).
17720
17721 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17722
17723         * mini.c (optimize_branches): Remove the "optimizations" in
17724         the cbranch1/cbranch2 -> branch cases which were causing several
17725         problems in the past. Fixes #77986.
17726
17727 2006-03-31  Chris Toshok  <toshok@ximian.com>
17728
17729         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17730         default optimizations :(
17731
17732 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17733
17734         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17735         branch.
17736
17737 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17738
17739         * local-propagation.c: Added comments to structs and removed
17740         "Mono" prefixes from local tree mover types.
17741
17742 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17743
17744         * Makefile.am (arch_sources): Define this for each architecture so 
17745         libmono_la_SOURCES is defined in one place.
17746
17747 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17748
17749         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17750         from handles/.
17751
17752 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17753
17754         * driver.c: print the GC name supplied by configure.
17755
17756 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17757
17758         * local-propagation.c: Added tree mover, and moved here all the
17759         local propagation code from mini.c
17760         * mini.c: Added support for treeprop, and moved all the local
17761         propagation code to local-propagation.c
17762         * mini.h: Added support for treeprop
17763         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17764         treeprop, inline and deadce by default
17765         * Makefile.am: Added local-propagation.c
17766
17767 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17768
17769         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17770
17771 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17772
17773         * debug-debugger.c: make it compile without the Boehm GC.
17774
17775 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17776
17777         * mini.c: fixed issue with mismatch when an icall is registered
17778         with multiple names but same address.
17779
17780 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17781
17782         * declsec.c, mini-exceptions.c: use write barrier to set reference
17783         fields of managed objects.
17784
17785 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17786
17787         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17788         (can_access_internals): Fix a warning.
17789
17790         * mini.c (print_method_from_ip): Rename this to 
17791         mono_print_method_from_ip so it gets exported.
17792
17793         * trace.c: Deal with strings inside StringBuilder's containing garbage
17794         and fix memory leaks. Fixes #77848.
17795
17796 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17797
17798         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17799         fixes #77787.
17800
17801 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17802         
17803         * mini-s390.c: Remove OP_X86_TEST_NULL.
17804
17805 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17806
17807         * mini.c: use the correct GetHashCode() for the moving collector.
17808
17809 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17810
17811         * liveness.c: Regalloc spill cost tuning.
17812
17813 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17814         
17815         * mini-s390x.h: Correct S390_LONG macro.
17816
17817         * mini-s390x.c: Cleanup unused code.
17818
17819 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17820
17821         * jit-icalls.h: New file.
17822
17823         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17824         icalls and include that instead of including jit-icalls.c.
17825
17826         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17827         OP_X86 opcodes.
17828
17829 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17830
17831         * mini.c: when checking for member accessibility, also check for
17832         friend assemblies and for explicit interface implementations.
17833
17834 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17835
17836         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17837
17838         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17839
17840         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17841         common cases are done first.    
17842
17843         * mini-ops.h: Only define platform specific opcodes on the given platform.
17844
17845         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17846         branch.
17847         
17848 2006-03-14  Martin Baulig  <martin@ximian.com>
17849
17850         Revert Paolo's change from r57348:
17851
17852         * mini.h: don't use gboolean for bitfields.
17853         * mini.c: verifier changes for fields and methods accessibility.
17854
17855 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17856
17857         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17858
17859         * mini-s390x.c: Fix conv_r_un.
17860
17861         * cpu-s390, cpu-s390x.md: Fix lengths.
17862
17863 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17864
17865         * mini.c: nested types have access to all the nesting
17866         levels, not just the enclosing types.
17867
17868 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17869
17870         * mini.c: added a few more verification checks.
17871
17872 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17873
17874         * liveness.c: Merge optimizations from the linear-il branch.
17875
17876 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17877
17878         * mini-ia64.c (emit_call): Add a comment.
17879
17880         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17881
17882         * tramp-ia64.c: Fix some warnings.
17883
17884 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17885
17886         * mini.h: don't use gboolean for bitfields.
17887         * mini.c: verifier changes for fields and methods accessibility.
17888
17889 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17890
17891         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17892         lazy icall wrapper changes.
17893
17894         * dominators.c: Replace all the dominator algorithms with faster
17895         ones from the linear-il branch.
17896
17897         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17898         the mempool.
17899
17900         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17901         common cases are done first.
17902
17903         * mini-amd64.c: Fix some warnings.
17904
17905         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17906         from the mempool.
17907
17908         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17909         added code.
17910
17911         * mini.h: Add a missing prototype.
17912
17913 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17914
17915         * mini.c: Compile icall wrappers lazily.
17916
17917         * mini-codegen.c: Use printf instead of g_print since its much faster.
17918
17919         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17920         function.
17921
17922         * mini.c (optimize_branches): Cache the negative result from 
17923         remove_block_if_useless ().
17924
17925         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17926         Also fix some bblock linking issues.
17927
17928         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17929         assembly files.
17930
17931         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
17932
17933         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
17934         accessed fields first, for better cache behavior.
17935         
17936 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
17937
17938         * mini.c: speedup IList<T> array accesses.
17939
17940 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17941
17942         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
17943         inline_costs counter. Fixes #77190.
17944
17945 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
17946
17947         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
17948         trace messages. Fixes #77706.
17949
17950 2006-03-04  Martin Baulig  <martin@ximian.com>
17951
17952         * tramp-amd64.c, tramp-x86.c
17953         (mono_debugger_create_notification_function): Use
17954         mono_global_codeman_reserve() to allocate a buffer at runtime and
17955         return it.
17956
17957         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
17958
17959         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
17960         notification function at runtime and then call `initialize' in the
17961         `MONO_DEBUGGER__debugger_info' vtable.
17962
17963 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
17964
17965         * iltests.il: Fix a visibility problem.
17966
17967 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17968
17969         * driver.c, mini.c: add hooks for the counters API.
17970
17971 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17972
17973         * driver.c: show disabled options.
17974
17975 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17976
17977         * linear-scan.c: always use cost-driven selection.
17978
17979 2006-02-28  Raja R Harinath  <rharinath@novell.com>
17980
17981         * jit-icalls.c (helper_compile_generic_method): Revert change from
17982         2006-02-24.
17983
17984 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
17985
17986         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
17987
17988 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
17989
17990         * inssel.brg: style fixes, mostly to force the updated monoburg
17991         to run for people using svn.
17992
17993 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
17994
17995         * mini.c: match monoburg changes.
17996
17997 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17998
17999         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
18000         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
18001         declaration in the header file.
18002
18003 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
18004
18005         * helpers.c: reduce relocations and mem usage.
18006
18007 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
18008
18009         * mini.h, mini-codegen.c: disable logging features if
18010         requested by configure.
18011
18012 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
18013
18014         * mini.c: tiny verifier changes.
18015
18016 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18017
18018         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
18019         cpu-pentium.md: stack alignment changes for osx/x86,
18020         partially from Geoff Norton <gnorton@customerdna.com>.
18021
18022 2006-02-24  Raja R Harinath  <harinath@gmail.com>
18023
18024         * jit-icalls.c (helper_compile_generic_method): Update to changes
18025         in metadata/class.c.
18026
18027 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
18028         
18029         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
18030         
18031         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
18032         interface calls with large offsets.
18033
18034 2006-02-23  Raja R Harinath  <rharinath@novell.com>
18035
18036         * jit-icalls.c (helper_compile_generic_method): Document the
18037         special-case we depend on so that we can inflate the method twice
18038         with the same context with no bad side-effects.
18039
18040 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18041
18042         * mini-x86.c, mini-amd64.c: fix for case when xen support
18043         is disabled.
18044
18045 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
18046
18047         * mini-x86.c, mini-amd64.c: generate code to access tls items
18048         in a faster way for Xen systems.
18049
18050 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18051
18052         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
18053         updates and compilation fixes for the OSX/x86 port, mostly from
18054         Geoff Norton <gnorton@customerdna.com>.
18055
18056 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
18057
18058         * inssel.brg: faster interface call implementation
18059         to sync with the interface_offsets MonoVTable changes.
18060
18061 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
18062
18063         * mini.c: more verification checks.
18064
18065 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
18066
18067         * mini.c: added a few more verification checks.
18068
18069 2006-02-17      Neale Ferguson <neale@sinenomine.net>
18070
18071         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
18072         facility on the processor and use it if available.
18073
18074 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18075
18076         * driver.c, aot.c, mini.c: throw exception if the IL code is
18077         invalid or unverifiable.
18078
18079 2006-02-17  Raja R Harinath  <rharinath@novell.com>
18080
18081         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
18082         m.StructField.
18083
18084 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
18085
18086         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
18087
18088 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18089
18090         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
18091         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
18092         handling of instantiated generic valuetypes.
18093
18094 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
18095
18096         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
18097         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
18098         instead.
18099
18100         * generics.2.cs: Revert the nullable reftypes tests.
18101
18102 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
18103
18104         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
18105         using __builtin_frame_address (1) as it doesn't work in the presence
18106         of optimizations. Hopefully fixes #77273.
18107
18108         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
18109         -> generics.cs change as it doesn't work with some automake versions.
18110
18111 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18112
18113         * mini.c: handle systems that sue a different way to
18114         retrieve the stack address of the current thread.
18115
18116 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
18117
18118         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
18119         it specially in the makefile.
18120
18121         * generics.2.cs: Add tests for nullable reference types.
18122
18123 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18124
18125         * mini.c: always handle the case when mono_jit_init()
18126         is called in a thread different from the main thread,
18127         confusing libgc (bug #77309).
18128
18129 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
18130
18131         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
18132
18133 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
18134
18135         * mini.c: change optimize_branches () to use a single loop
18136         and introduce a new optimization to simplify some range checks.
18137
18138 2006-02-03  Martin Baulig  <martin@ximian.com>
18139
18140         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
18141         and merged with debugger_thread_manager_add_thread().
18142         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
18143         inform the debugger about the main thread.
18144
18145 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18146
18147         * basic.cs: Add test for div.un/rem.un constant folding.
18148
18149 2006-02-03  Neale Ferguson <neale@sinenomine.net>
18150
18151         * cpu-s390x.md: correct int_xor_imm length
18152
18153 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18154
18155         * generics.2.cs: New test for #77442.
18156
18157         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
18158         #77442.
18159
18160 2006-02-02  Martin Baulig  <martin@ximian.com>
18161
18162         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
18163         <mono/metadata/mono-debug-debugger.h>   
18164
18165         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
18166
18167 2006-02-02  Martin Baulig  <martin@ximian.com>
18168
18169         * debug-debugger.h: New header file for debug-debugger.c.
18170
18171         * debug-debugger.c: Big API cleanup; don't run the managed Main()
18172         function is a separate thread anymore; add support for attaching.
18173
18174 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18175
18176         * tramp-x86.c: Fix a warning.
18177
18178 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18179
18180         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18181         on very large methods.
18182
18183         * aot.c (load_patch_info): Fix a warning.
18184
18185 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18186
18187         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18188         mini-ops.h: alu membase optimizations.
18189
18190 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18191
18192         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18193         to speedup StringBuilder.
18194
18195 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18196
18197         * dominators.c (mono_compute_natural_loops): Fix detection of
18198         loop body start blocks.
18199
18200         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18201
18202 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18203
18204         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18205         #75145.
18206
18207 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18208
18209         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18210
18211 2006-01-25  Martin Baulig  <martin@ximian.com>
18212
18213         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18214         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18215         started to cleanup this file a little bit.
18216
18217 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18218
18219         * mini.c: optimize a codepath frequently happening in generics code.
18220
18221 2006-01-23  Martin Baulig  <martin@ximian.com>
18222
18223         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18224
18225         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18226         functions directly.
18227
18228         * driver.c: debug-debugger.c is only available if
18229         `MONO_DEBUGGER_SUPPORTED' is defined.   
18230
18231 2006-01-23  Martin Baulig  <martin@ximian.com>
18232
18233         * debug-debugger.c: Only enable this on platforms where the Mono
18234         Debugger is working (x86 and x86_64).
18235
18236 2006-01-21  Martin Baulig  <martin@ximian.com>
18237
18238         The Mono Debugger is now using the normal `mono' instead of the
18239         `mono-debugger-mini-wrapper' when executing managed code.
18240
18241         * debug-debugger.c: New file; previously known as
18242         debugger/wrapper/wrapper.c.
18243
18244         * debug-mini.c (mono_init_debugger): Removed.
18245
18246         * driver.c (mono_main): Added new `--inside-mdb' command line
18247         argument which is used when running inside the debugger.
18248
18249 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18250
18251         * liveness.c (mono_analyze_liveness): Remove some unused data
18252         structures.
18253
18254 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18255
18256         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18257
18258 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18259
18260         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18261         depends on implementation details of monobitset.
18262
18263         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18264         Fixes #77271.
18265
18266 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18267
18268         * liveness.c: Update after monobitset changes.
18269
18270 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18271
18272         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18273
18274 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18275
18276         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18277
18278         * mini-s390x.c: Remove warning messages.
18279
18280 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18281
18282         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18283
18284 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18285
18286         * generics.2.cs: Add ldelem/stelem_any test.
18287
18288 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18289
18290         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18291
18292 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18293
18294         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18295         
18296 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18297
18298         * generics.2.cs: Reenable vtype tests.
18299
18300         * inssel-x86.brg: Remove an icorrect valuetype rule.
18301
18302 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18303
18304         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18305         initial support for OP_ABS.
18306
18307 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18308
18309         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18310
18311 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18312
18313         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18314         conversion and implement LADD/LSUB.
18315
18316         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18317         architectures.
18318
18319 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18320
18321         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18322
18323         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18324         architectures.
18325
18326 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18327
18328         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18329         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18330         (stack walk problem).
18331
18332 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18333
18334         * aot.c (mono_aot_load_method): Fix a warning.
18335
18336 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18337
18338         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18339
18340 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18341
18342         * iltests.il: Add test for #77148.
18343
18344         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18345         #77148.
18346
18347 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18348
18349         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18350
18351 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18352
18353         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18354         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18355
18356         * basic-long.cs: Add lconv-to-r4/r8 tests.
18357
18358 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18359
18360         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18361
18362         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18363         here as on other archs.
18364
18365 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18366
18367         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18368
18369 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18370
18371         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18372         
18373         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18374
18375         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18376         instrument_prolog; Add memory_barrier instruction.
18377
18378 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18379
18380         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18381
18382 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18383
18384         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18385
18386         * aliasing.c inssel.brg: Fix warnings.
18387
18388         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18389         could skip initialization of some parts of memory.
18390
18391         * mini.c mini-ia64.c: Fix warnings.
18392
18393         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18394
18395 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18396
18397         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18398         a crash seen on sparc.
18399
18400         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18401         
18402         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18403
18404 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18405
18406         * mini-ops.h: Add s390_backchain instruction
18407
18408         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18409
18410         * cpu-s390.md: Add s390_backchain instruction
18411
18412         * mini-s390.c: Significant ABI changes
18413
18414         * mini-s390.h: Cater for zero length structures
18415
18416 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18417
18418         * mini-s390.c: ABI fixes
18419
18420         * inssel-s390.brg: Remove debug statements
18421
18422         * cpu-s390.md: Fix length of ATOMIC_xx operations
18423
18424 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18425
18426         * basic-float.cs: Add float<->long conversion tests.
18427
18428 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18429
18430         * mini-s390.c: Fix LOCALLOC processing.
18431
18432         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18433
18434 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18435
18436         * iltests.il: Add tests for some opcodes not covered by the other
18437         tests.
18438
18439 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18440
18441         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18442         register loading for Tail processing; Correct trace output.
18443
18444         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18445
18446         * cpu-s390.md: Correct size of jmp instruction. 
18447
18448 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18449
18450         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18451
18452 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18453
18454         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18455           Bring s390 up to current level.
18456
18457 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18458
18459         * generics.2.cs: Disable the newly added tests as they do not work yet.
18460         
18461         * generics.2.cs: Add valuetype tests.
18462
18463 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18464
18465         * basic-long.cs: Add i4->u8 test.
18466
18467         * objects.cs: Add tests for JIT intrinsic.
18468
18469         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18470         optimizations lost by a mistake.
18471
18472 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18473
18474         * basic-long.cs: Remove a test moved to objects.cs.
18475
18476         * arrays.cs: Add more array tests.
18477
18478 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18479
18480         * arrays.cs: Add new tests for multi-dimensional arrays.
18481
18482 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18483
18484         * Makefile.am (test_sources2): Add generics.2.cs.
18485         (EXTRA_DIST): Add test_sources2.
18486
18487 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18488
18489         Support for boxing and unboxing nullable types as well as the
18490         isinst operation on nullables, per the CLI ammendment.
18491
18492         * inssel.brg (CEE_ISINST): Special case for nullable
18493
18494         * mini.c (handle_unbox_nullable): new method
18495         (handle_box): Special case for nullable types
18496         (mono_method_to_ir): Call handle_unbox_nullable in correct
18497         places.
18498
18499         * generics.2.cs: New test suite
18500
18501         * Makefile.am: Support for regression tests with generics.
18502
18503 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18504
18505         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18506         allocated to registers. Fixes #76800.
18507
18508 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18509
18510         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18511
18512 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18513
18514         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18515         of platforms.
18516
18517 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18518
18519         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18520         objects.cs.
18521
18522         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18523         
18524         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18525 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18526
18527         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18528         single precision before storing to a single precision location.
18529
18530 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18531
18532         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18533
18534 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18535
18536         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18537         correct files.
18538
18539         * basic.cs: Remove test_0_byte_compares test which was moved to
18540         objects.cs a long time ago.
18541
18542 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18543
18544         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18545
18546 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18547
18548         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18549         handlers are called.
18550
18551         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18552         throwing code.
18553
18554          * mini-ia64.c: Add support for the throw->branch exception 
18555         optimization.   
18556
18557         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18558
18559 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18560
18561         * mini.c: Enabled "fastpath" deadce :-)
18562         
18563 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18564
18565         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18566         alias analysis pass to support it.
18567         * mini.h: Likewise.
18568         * ssa.c: Likewise.
18569         * liveness.c: Likewise (liveness computation can use aliasing
18570         information to be more accurate).
18571         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18572         moreover made so that "--compile-all" uses the given optimization
18573         flags and not the default ones.
18574         * aliasing.c: Alias analysis (new file).
18575         * aliasing.h: Likewise.
18576         * Makefile.am: added "aliasing.c" and "aliasing.h".
18577         
18578 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18579
18580         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18581         OP_L opcodes.
18582
18583 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18584
18585         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18586         fp >= end_of_stack exit condition, as it is not needed, and it might
18587         become true for fp eliminated frames.
18588
18589 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18590
18591         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18592         coded offsets.
18593
18594 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18595
18596         * mini-arm.c: fixed alignment of doubles/longs to match
18597         the C ABI (bug #76635).
18598
18599 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18600
18601         * aot.c: fix compilation with --enable-minimal=aot.
18602
18603 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18604
18605         * mini-arm.c: fixed compatibility with the new
18606         floating point emulator package for compares.
18607
18608 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18609
18610         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18611
18612 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18613
18614         * mini-exceptions.c (print_stack_frame): Output to stderr.
18615         (mono_handle_native_sigsegv): Ditto.
18616
18617 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18618
18619         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18620         OP_LCONV_TO_OVF_I implementation.
18621
18622         * mini-amd64.c: Add support for the throw->branch exception 
18623         optimization.
18624
18625         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18626         when the catch clause catches a more general exception, i.e. Object.
18627
18628 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18629
18630         * cpu-ia64.md: Remove unused opcodes.
18631
18632         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18633         specific defines for architectures defining USE_SIGACTION.
18634
18635         * mini-ia64.c: Fix some warnings.
18636
18637         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18638         version seemed to skip a frame.
18639
18640 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18641
18642         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18643         only calls which are made to native code use this flag.
18644
18645 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18646
18647         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18648         varargs methods as well.
18649         
18650         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18651         which have save_lmf set. Reorganize methods prologs a bit.
18652
18653         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18654         debugger to the proper place.
18655
18656 2005-10-29  Martin Baulig  <martin@ximian.com>
18657
18658         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18659         when running inside the debugger until the debugger has support
18660         for it.
18661
18662 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18663
18664         * mini.h: Fix a warning.
18665
18666 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18667
18668         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18669         we expose publicly, this returns the string.
18670
18671 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18672
18673         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18674         with fp elimination.
18675
18676 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18677
18678         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18679         native stacktrace using the glibc 'backtrace' function if available.
18680
18681 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18682
18683         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18684
18685         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18686         handle SIGSEGVs received while in native code.
18687
18688         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18689         code, call mono_handle_native_sigsegv which will abort the runtime
18690         after printing some diagnostics, instead of converting it into a
18691         confusing NullReferenceException.
18692
18693 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18694
18695         * cpu-pentium.md: Remove unused opcodes.
18696
18697 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18698
18699         * mini-amd64.h (MonoLMF): Add rsp field.
18700
18701         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18702         the lmf too.
18703
18704 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18705
18706         * mini-codegen.c (get_register_spilling): Fix some warnings.
18707
18708 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18709
18710         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18711         elimination during exception handling. Enable fp elimination by
18712         default.
18713
18714         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18715         elimination.
18716
18717 2005-10-16  Martin Baulig  <martin@ximian.com>
18718
18719         * mini-exceptions.c
18720         (mono_debugger_run_finally): New public method for the debugger.
18721
18722 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18723
18724         * debug-mini.c (mono_debug_init_method): Fix warning.
18725
18726         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18727         the 'exname' parameter const to fix some warnings.
18728
18729 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18730
18731         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18732         introduced by the previous patch.
18733
18734 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18735
18736         * basic-float.cs: Add test for precision of float arithmetic.
18737
18738         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18739         when loading/storing single values from/to memory.
18740
18741         * mini.c (mono_jit_compile_method_with_opt): Create the function
18742         pointers in the correct domain.
18743
18744 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18745
18746         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18747         introduced by previous patch.
18748         
18749         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18750         when out_filter_idx is NULL.
18751
18752         * mini-exceptions.c: Don't run filter clauses twice during exception
18753         handling. Fixes #75755.
18754
18755 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18756
18757         * aot.c: Add support for ldflda wrappers.
18758
18759         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18760         #75902.
18761
18762 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18763
18764         * mini.c, mini.h: do not consider exception handlers blocks when
18765         setting up interface variables.
18766
18767 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18768
18769         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18770
18771 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18772
18773         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18774         causes a regression.
18775
18776         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18777
18778 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18779
18780         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18781         of the OP_P definitions.
18782
18783         * TODO: Add a proposal for dealing with the CEE/OP mess.
18784
18785         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18786         optimizations from the x86 port.
18787
18788         * cpu-amd64.md: Ditto.
18789
18790         * basic.cs basic-long.cs: Add tests.
18791
18792 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18793
18794         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18795         Patrik Torstensson's implementation of my exception-handling
18796         optimization idea, when the exception object is not used
18797         (bug #62150).
18798
18799 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18800
18801         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18802         of the mul_imm optimizations from the old jit.
18803
18804 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18805
18806         * mini.c, liveness.c: patch by Patrik Torstensson and
18807         Zoltan Varga to improve performance in methods with
18808         exception clauses.
18809
18810 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18811
18812         * driver.c: Remove 'Globalization' entry from --version.
18813
18814 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18815
18816         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18817         there is a profiler interested in JIT events.
18818
18819         * aot.c: Load profile files produced by the AOT profiling module, and
18820         reorder methods based on the profiling info. Add a 'method_order' table
18821         to the AOT file to make mono_aot_find_jit_info work with the reordered
18822         methods.
18823
18824         * mini.h: Bump AOT file version info.
18825
18826 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18827
18828         * mini-arm.h: work around what looks like a gcc bug when optimizations
18829         are enabled.
18830
18831 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18832
18833         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18834         conditionals.  Use ...
18835         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18836
18837 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18838
18839         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18840         to determine the amount of memory to copy when passing valuetypes.
18841
18842         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18843         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18844
18845 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18846
18847         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18848         information about aot.
18849
18850 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18851
18852         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18853         macros. This will allow a deadlock debugger to easily be plugged
18854         in.
18855
18856 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18857
18858         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18859
18860 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18861
18862         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18863         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18864         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18865         ($(arch_built)) [CROSS_COMPILING]: Error out.
18866
18867 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18868
18869         * aot.c: Add support for the no_special_static flag for classes.
18870
18871 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18872
18873         * Reapply reverted patches.
18874
18875         * *: Revert r50174 as well.
18876
18877         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18878
18879 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18880
18881         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18882
18883 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18884
18885         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18886         part of the SIG_HANDLER_SIGNATURE.  
18887
18888 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18889
18890         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18891         statistics.
18892
18893         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18894         introduced by previous patch.
18895
18896 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18897
18898         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18899         saved registers too.
18900
18901         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18902         upon the information returned by get_call_info ().
18903         
18904         * mini-x86.c (add_float): Fix stack size calculation.
18905         (mono_arch_call_opcode): Rewrite this so it works based up the
18906         information returned by get_call_info ().
18907         (mono_arch_get_this_vret_args): Ditto.
18908
18909 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18910
18911         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18912         in cinfo to determine the registers which need to be used.
18913
18914 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18915
18916         * driver.c (mono_main): Add --server and --desktop flags. 
18917
18918 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18919
18920         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18921         registers as global registers.
18922
18923         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18924         longer needed with the new register allocator.
18925
18926         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18927
18928         * cpu-ia64.md: Remove unused opcodes.
18929         
18930         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
18931         
18932 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
18933
18934         * cpu-amd64.md: Remove unused opcodes.
18935
18936         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
18937         needed with the new register allocator.
18938
18939         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
18940         reg-reg moves.
18941
18942 2005-09-16  Raja R Harinath  <rharinath@novell.com>
18943
18944         * Makefile.am (check-local): Don't invoke semdel-wrapper.
18945
18946 2005-09-16  Martin Baulig  <martin@ximian.com>
18947
18948         * exceptions-amd64.c
18949         (throw_exception): Don't call mono_debugger_throw_exception() if
18950         we're a rethrow - see the FIXME in the code.
18951
18952 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
18953
18954         * mini.c (mono_init_exceptions): This only works on some architectures.
18955         
18956 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18957
18958         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
18959         on ia64.
18960
18961         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
18962
18963         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
18964         now in mini-exceptions.c.
18965
18966 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
18967
18968         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
18969         now in mini-exceptions.c.
18970
18971 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18972
18973         * exceptions-x86.c: Applied patch from Patrik Torstensson 
18974         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
18975
18976         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
18977         code into mini-exceptions.c. Add some assertions to it.
18978
18979 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
18980
18981         * aot.c (emit_section_change): Applied patch from "The Software Team" 
18982         (<software@solmersa.com>). Fix as errors on windows.
18983
18984 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18985
18986         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
18987         method info into the LMF.
18988
18989 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18990         
18991         * mini-ia64.c: Add proper unwind info for method epilogs.
18992
18993         * exceptions-ia64.c: Add some code to help debugging.
18994         
18995         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
18996
18997         * mini-exceptions.c: Fix warning.
18998
18999 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19000
19001         * mini.c: Really fix build.
19002
19003         * mini-x86.c mini-amd64.c: Fix build.
19004
19005 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19006
19007         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
19008
19009         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
19010         some Interlocked methods as intrinsics.
19011
19012         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
19013         for Thread methods as well.
19014
19015         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
19016
19017         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
19018
19019         * mini-ia64.c mini-x86.c mini-amd64.c 
19020         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
19021         OP_MEMORY_BARRIER.
19022         
19023         * mini.c (mono_init_exceptions): Fix build breakage.
19024
19025 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
19026
19027         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
19028         of instructions. Use the new ia64_unw_op macros for emitting unwind
19029         info.
19030
19031         * mini.c (mono_init_exceptions): Initialize exception handling
19032         related trampolines at startup.
19033
19034 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
19035
19036         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
19037
19038 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
19039
19040         * mini.c: Handle type loading errors gracefully during compilation and
19041         throw the appropriate exception.
19042
19043 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
19044
19045         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
19046         for the mono binary.
19047
19048 2005-09-09  Martin Baulig  <martin@ximian.com>
19049
19050         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
19051         the release.
19052
19053 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19054
19055         * mini-arm.h: use emulation for conv.r.un for the release.
19056
19057 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19058
19059         * mini-arm.c, objects.cs: more fixes and tests for them.
19060
19061 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19062
19063         * mini-arm.c: align structures to at least 4 bytes to be able
19064         to keep our current optimized memcpy.
19065
19066 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
19067
19068         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
19069
19070 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19071
19072         * mini.c: ignore SIGPIPE.
19073
19074 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
19075
19076         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
19077
19078         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
19079
19080 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
19081
19082         * mini.h: Add prototype for mono_allocate_stack_slots_full.
19083
19084 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19085
19086         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
19087         exception handling support.
19088         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
19089         patch by Brian Koropoff <briank@marakicorp.com>).
19090
19091 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
19092
19093         * mini.c: revert another 'optimization' which breaks when
19094         items on the eval stack need to be saved at a basic block end
19095         (bug #75940).
19096
19097 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19098
19099         * jit-icalls.c: for arrays, ensure we always provide
19100         lower bounds.
19101
19102 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
19103
19104         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
19105         
19106         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
19107
19108 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
19109
19110         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
19111         arguments in their original register.
19112
19113 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
19114
19115         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
19116         memset/memcpy.
19117
19118         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
19119         when ssapre is enabled.
19120
19121         * inssel-long.brg: Fix bug in previous patch.
19122
19123         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
19124         multiplication by a constant.
19125
19126 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
19127
19128         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
19129         icc.
19130
19131         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
19132         saving registers.
19133
19134 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
19135
19136         * inssel-arm.brg: apply changes tested by Brian Koropoff
19137         <briank@marakicorp.com>.
19138
19139 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
19140
19141         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
19142         
19143 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
19144
19145         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
19146         to the same register if dreg is just a base register.
19147         (print_ins): Improve printing of membase opcodes.
19148
19149         * inssel-x86.brg: Add optimized ldind(reg) rules.
19150
19151         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
19152
19153 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
19154
19155         * mini.c: when running under valgrind, set the stack bottom for
19156         the GC at the actual approximate stack for the app (fixes running
19157         mono with valgrind).
19158
19159 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
19160
19161         * mini.c: do no break at the first valuetype to init found
19162         (fixes bug #75791).
19163
19164 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
19165
19166         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
19167
19168 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
19169
19170         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
19171
19172 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
19173
19174         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
19175
19176 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19177
19178         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19179
19180         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19181         code.
19182
19183         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19184         code.
19185
19186         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19187         methods.
19188
19189 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19190
19191         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19192
19193 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19194
19195         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19196         in the tail recursion optimization.
19197
19198         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19199         debug info into the assembly file.
19200
19201         * iltests.il: Add test for filter regions.
19202
19203         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19204         initial stack of filter regions. Fixes #75755.
19205
19206 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19207
19208         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19209         stack requirements.
19210
19211 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19212
19213         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19214         the check for an already compiled method on non-ia64 platforms.
19215         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19216         proper domain.
19217
19218         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19219
19220         * inssel-x86.brg: Add some optimized call rules.
19221
19222 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19223
19224         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19225         method here.
19226
19227         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19228         mono_arch_patch_delegate_trampoline.
19229
19230         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19231
19232         * mini-trampolines.c: Fix build.
19233
19234         * mini-amd64.h: Add delegate trampolines.
19235
19236         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19237
19238         * inssel-amd64.brg: Add optimized call rules.
19239         
19240         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19241
19242         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19243
19244 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19245
19246         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19247         change.
19248
19249         * mini-ia64.c: Remove LMF fixmes.
19250
19251         * mini-ia64.h: Remove most fields from LMF.
19252
19253         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19254
19255         * mini-trampolines.c: Add support for IA64 function descriptors.
19256
19257         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19258         for IA64 function descriptors.
19259
19260 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19261
19262         * tramp-arm.c: patch the vtable for virtual calls. Added
19263         support code to register/unregister the LMF.
19264         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19265         more LMF work.
19266
19267 2005-08-19  Dick Porter  <dick@ximian.com>
19268
19269         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19270         bit value if needed.
19271
19272 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19273
19274         * mini.c (mini_get_method): Move handling of wrapper data here.
19275
19276         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19277
19278         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19279         virtual.
19280
19281         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19282         bblock->code does not remain empty.
19283
19284 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19285
19286         * arrays.cs: Add regression test for #75832.
19287
19288         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19289         rules. Fixes #75832.
19290
19291         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19292         instruction scheduling.
19293
19294 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19295
19296         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19297
19298 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19299
19300         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19301
19302         * mini-codegen.c: Fix VC build.
19303
19304         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19305
19306 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19307
19308         * mini.h: fix signature for mono_register_opcode_emulation.
19309
19310 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19311
19312         * mini.c: Get rid of most of the helper_sig_... constants using
19313         mono_create_icall_signature ().
19314
19315 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19316
19317         * jit-icalls.c (helper_ldstr): New helper function.
19318
19319         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19320
19321         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19322         throw, load the string using a helper call instead of creating a string object.
19323
19324         * aot.c: Update after LDSTR changes.
19325
19326         * mini.h: Bump AOT file version.
19327         
19328         * aot.c: Save class size info into the AOT file. Print more statistics during
19329         compilation.
19330
19331         * mini.h: Bump AOT file version.
19332
19333         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19334         ordering of disasm cases. Fixes #74957.
19335
19336 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19337
19338         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19339         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19340         the generic code needed for the ARM port.
19341
19342 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19343
19344         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19345         inssel-arm.brg: more ARM features and fixes.
19346
19347 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19348
19349         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19350         ARM port work in progress.
19351
19352 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19353
19354         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19355
19356         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19357
19358         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19359
19360         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19361
19362         * *-ia64.*: Ongoing IA64 work.
19363         
19364         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19365
19366 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19367
19368         * TODO: Remove out-of-data todo stuff.
19369
19370         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19371         dead code.
19372
19373         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19374
19375         * mini.h: Bump corlib version.
19376
19377 2005-07-27  Martin Baulig  <martin@ximian.com>
19378
19379         * mini-codegen.c
19380         (create_copy_ins): Added `const unsigned char *ip' argument; set
19381         `copy->cil_code' from it.
19382
19383 2005-07-27  Martin Baulig  <martin@ximian.com>
19384
19385         * mini-exceptions.c (mono_handle_exception): Don't call
19386         mono_debugger_handle_exception() for filters.
19387
19388 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19389
19390         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19391         as well.
19392
19393 2005-07-26  Martin Baulig  <martin@ximian.com>
19394
19395         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19396
19397         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19398         helper_compile_generic_method() if the method is actually virtual
19399         and non-final.
19400
19401 2005-07-26  Martin Baulig  <martin@ximian.com>
19402
19403         * mini.c
19404         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19405         public; this is now accessed directly by the debugger.
19406         (mono_generic_trampoline_code): Removed.
19407
19408         * debug-mini.c
19409         (mono_debug_init_method): Also add interncalls and wrappers.
19410
19411 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19412
19413         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19414
19415 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19416
19417         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19418
19419 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19420
19421         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19422
19423 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19424
19425         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19426         getting TLS offsets on AMD64 too.
19427
19428 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19429
19430         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19431
19432 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19433
19434         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19435         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19436
19437 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19438
19439         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19440
19441         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19442         to mini.c.
19443
19444         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19445         mono_sparc_is_virtual_call ().
19446         
19447         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19448
19449         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19450         trampoline parameters.
19451
19452         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19453         
19454         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19455         to mono_arch_get_vcall_slot_addr.
19456
19457         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19458         trampoline code.
19459
19460         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19461
19462 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19463
19464         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19465
19466 2005-07-19  Martin Baulig  <martin@ximian.com>
19467
19468         * exceptions-amd64.c (throw_exception): Call
19469         mono_debugger_throw_exception() here like we're doing it on i386.
19470
19471 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19472
19473         * mini-ia64.c: Add optimized TLS access support.
19474
19475 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19476
19477         * mini-exceptions.c: Ongoing IA64 work.
19478
19479         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19480
19481         * mini.c: Use the default optimization set when embedding. Fixes
19482         #75194.
19483
19484 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19485
19486         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19487         of trampolines to a separate file.
19488
19489         * mini-trampolines.c: New file.
19490
19491         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19492         separate file.
19493         
19494         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19495         amd64/ia64 code.
19496
19497         * mini-codegen.c: Fix cygwin build.
19498
19499 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19500
19501         * mini.c: Add some minor changes needed by the IA64 port.
19502
19503         * *-ia64.*: Ongoing IA64 work.
19504
19505 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19506
19507         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19508         trampolines into arch-independent and arch-dependent parts.
19509
19510         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19511
19512 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19513
19514         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19515
19516         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19517         the xp-regalloc-branch for amd64.
19518
19519         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19520         xp-regalloc-branch for x86.
19521
19522 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19523
19524         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19525
19526 2005-07-06  Martin Baulig  <martin@ximian.com>
19527
19528         * mini.c
19529         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19530         (mono_jit_runtime_invoke): Likewise.
19531
19532 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19533
19534         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19535         on x86 too.
19536         
19537         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19538         without loading their metadata. Reorganize the file format so exception handling+
19539         debug info is kept separate from normal method info. Create MonoJitInfo 
19540         structures for methods lazily.
19541
19542         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19543         loading metadata.
19544         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19545
19546         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19547
19548         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19549         in AOT code.
19550
19551         * mini.h: Bump AOT file version.
19552
19553 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19554
19555         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19556
19557 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19558
19559         * Makefile.am (check-local): Call semdel-wrapper.
19560
19561 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19562
19563         * mini-x86.c: Revert the last change as it seems to break the build..
19564
19565 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19566
19567         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19568         
19569         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19570
19571 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19572
19573         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19574         outside of the macro, so strange stuff doesn't happen with gcc4
19575         (NEW_AOTCONST_TOKEN): Likewise.
19576
19577 2005-06-28  Martin Baulig  <martin@ximian.com>
19578
19579         * mini.c (mini_class_is_system_array): New static method; use this
19580         instead of `klass->parent == mono_defaults.array_class' everywhere
19581         since this also works for the new generic array class.
19582
19583 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19584
19585         * inssel.brg: Remove warnings.
19586
19587 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19588
19589         * mini-ia64.c: Ongoing IA64 work.
19590
19591         * basic-float.cs: Add float->i1 conversion test.
19592
19593         * iltests.il: Add conv.u4 test.
19594
19595 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19596
19597         * inssel-long.brg: Fix bug caused by last change.
19598
19599 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19600
19601         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19602         BSDs.  Allows the x86 JIT to work on OSX86
19603
19604 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19605
19606         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19607         u4->i8 conversion.
19608
19609         * mini-ia64.c: Ongoing IA64 work.
19610
19611 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19612
19613         * mini-ia64.c: Ongoing IA64 work.
19614
19615         * driver.c: Clean up jit_code_hash as well when using --regression.
19616
19617         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19618
19619         * basic-long.cs: Add tests for long->u4 conversion.
19620
19621 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19622
19623         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19624         that we do not depend on undefined C behavior: the order stuff
19625         gets evaluated within an expression. Fixes mono when compiled on
19626         GCC 4.
19627
19628 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19629
19630         * *-ia64.*: Ongoing IA64 work.
19631
19632         * aot.c: Lower memory usage while loading AOT methods.
19633
19634         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19635
19636         * mini.h: Bump AOT file format version.
19637
19638 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19639
19640         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19641
19642 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19643
19644         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19645         not on callee assembly). Fixed some comments.
19646
19647 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19648
19649         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19650         it gets proper disassembly.
19651         (emit_method_info): Remove some dead code.
19652
19653         * mini.c (mini_method_compile): Allways allocate the GOT var in
19654         mono_method_to_ir for emulating opcodes.
19655
19656 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19657
19658         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19659         before freeing the code memory. Fixes #74990.
19660
19661         * objects.cs: Add regression test for #74992.
19662
19663         * liveness.c: Extend live ranges of arguments to the beginning of the
19664         method. Fixes #74992.
19665
19666         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19667         so it points into the faulting instruction.
19668
19669 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19670
19671         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19672
19673         * *-ia64.*: Ongoing IA64 work.
19674
19675         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19676
19677 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19678
19679         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19680
19681         * *-ia64.*: Ongoing IA64 work.
19682
19683 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19684
19685         * basic-long.cs: Add tests for add/sub.ovf.
19686
19687         * basic.cs: Add tests for sub.ovf.
19688
19689         * *-ia64.*: Ongoing IA64 work.
19690
19691 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19692
19693         * *-ia64.*: Ongoing IA64 work.
19694
19695         * basic.cs: Add conv.ovf.i4.un test.
19696
19697 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19698
19699         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19700         
19701 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19702
19703         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19704
19705 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19706
19707         * *-ia64.*: Ongoing IA64 work.
19708
19709 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19710
19711         * trace.[ch]:
19712         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19713
19714 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19715
19716         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19717
19718 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19719
19720         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19721
19722         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19723         of a call is callable by a near call.
19724
19725 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19726
19727         * mini-ia64.c: Ongoing IA64 work.
19728
19729 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19730
19731         * genmdesc.c: Make the generated array non-static.
19732
19733         * inssel-long.brg: Fix LSHR_IMM rule.
19734
19735         * *-ia64.*: Ongoing IA64 work.
19736
19737         * *-ia64.*: Ongoing IA64 work.
19738
19739 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19740
19741         * *-ia64.*: Ongoing IA64 work.
19742
19743         * *-ia64.*: Ongoing IA64 work.
19744         
19745         * mini-ia64.c: Ongoing IA64 work.
19746
19747         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19748
19749 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19750
19751         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19752         
19753         * objects.cs basic-long.cs: Move some tests to objects.cs.
19754
19755 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19756
19757         * *-ia64.*: Ongoing IA64 work.
19758
19759         * iltests.il: Add a new test.
19760
19761         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19762         newobj. Fixes #75042.
19763
19764 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19765
19766         * *-ia64.*: Ongoing IA64 work.
19767         
19768         * *-ia64.*: Ongoing IA64 work.
19769         
19770         * *-ia64.*: Ongoing IA64 work.
19771
19772         * basic.cs objects.cs: Move tests accessing static variables as well.
19773
19774         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19775
19776 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19777
19778         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19779
19780         * driver.c: Always print failed tests.
19781
19782         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19783         frame pointer.
19784
19785         * *ia64*: Ongoing IA64 work.
19786
19787 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19788
19789         * basic.cs: Add tests for add.ovf. Fix warnings.
19790
19791 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19792
19793         * driver.c (mono_main): Avoid crash if no argument is passed to
19794         --break;  Do not use g_error, but f_printf.   And fix all other
19795         ocurrences of the same crash.
19796
19797 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19798
19799         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19800         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19801         Fixes #74742.
19802
19803 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19804
19805         * *-ia64.*: Add beginnings of IA64 backend.
19806
19807         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19808
19809 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19810
19811         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19812         Fixes #74925.
19813
19814         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19815
19816         * mini-amd64.c: Fix a warning.
19817
19818 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19819
19820         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19821         in float_neg. Fixes #74897.
19822
19823         * mini-amd64.c (emit_call): Fix another near call bug.
19824
19825 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19826
19827         * declsec.c: Keep the appdomain information in the structure. Added a 
19828         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19829         value gets overwritten).
19830         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19831         an MonoAppDomain member to MonoSecurityFrame.
19832         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19833         used in the stack walk. Now use a MonoArray which grow (double) when
19834         it gets full.
19835
19836 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19837
19838         * mini.c: Re-enabled runtime cleanup, since running threads should
19839         now properly stop when exiting.
19840
19841 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19842
19843         * mini-codegen.c: New file contaning the arch-independent local
19844         register allocator. Not used by any architectures yet.
19845
19846         * mini.h linear-scan.c: Merge some changes from the 
19847         mini-xp-local-regalloc branch.
19848
19849 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19850
19851         * mini-amd64.c (emit_call): Fix calls to native functions when the
19852         runtime is compiled as a shared library. Fixes #74756.
19853
19854         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19855         on a literal field. Fixes #74751.
19856
19857 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19858
19859         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19860
19861 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19862
19863         * objects.cs: Add missing null casting test.
19864
19865 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19866
19867         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19868         in wrapper methods. Also rename 'address' variable to 'offset'.
19869
19870 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19871
19872         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19873         warnings.
19874         
19875         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19876
19877         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19878         work on windows.
19879
19880 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19881
19882         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19883
19884 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19885
19886         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19887         just the last bytes.
19888
19889 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19890
19891         * aot.c (mono_compile_assembly): Fix warning.
19892
19893         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19894         by the _MSC_VER stuff.
19895
19896 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19897
19898         * inssel-long.brg: Fix #74588.
19899
19900         * cpu-amd64.md: Fix #74591.
19901
19902         * iltests.il: Add new regression tests.
19903
19904 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19905
19906         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19907         valuetype.
19908
19909 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19910
19911         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19912
19913         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19914         from Bill Middleton <flashdict@gmail.com>.
19915
19916 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19917
19918         * arrays.cs: Add new regression test. Fix warnings.
19919
19920 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19921
19922         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19923         and leakage in CKFINITE.
19924
19925         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19926         this to a null op since it is called on amd64 too.
19927
19928         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19929
19930         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
19931         body since this is not used on amd64.
19932         
19933         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
19934
19935         * mini-amd64.c: Remove obsolete fixmes.
19936
19937         * mini.c (print_method_from_ip): Fix debugging support.
19938
19939 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19940
19941         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
19942         so that expressions that don't give much gain are not reduced.
19943         * ssapre.h: Likewise.
19944
19945 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19946
19947         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
19948
19949         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
19950
19951         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
19952
19953 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
19954
19955         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
19956
19957         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
19958
19959 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
19960
19961         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
19962         stack touching.
19963
19964         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
19965
19966         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
19967
19968         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
19969
19970         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
19971         MONO_ARCH_USE_SIGACTION. Fixes #74252.
19972
19973         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
19974
19975         * mini-x86.c: Fix up stack overflow handling.   
19976
19977         * exceptions.cs: Add new regression test.
19978
19979 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
19980
19981         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
19982         mono_jit_thread_attach.
19983
19984         * mini.c (mono_method_to_ir): Verify called method is not abstract.
19985
19986 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19987
19988         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
19989         avoid calling constructors using callvirt.
19990
19991         * inssel.brg: Fix #74073.
19992
19993 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
19994
19995         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
19996         compilation with non-GCC compilers.
19997         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
19998         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
19999
20000 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
20001
20002         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
20003         klass->interface_offsets (will likely fix bug#74073).
20004
20005 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20006
20007         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
20008
20009 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
20010
20011         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
20012         to amd64_div_reg_size ().
20013         
20014         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
20015
20016 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
20017
20018         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
20019
20020 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20021
20022         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
20023
20024 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20025
20026         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
20027         
20028         * mini.c (mono_precompile_assembly): Load and precompile referenced
20029         assemblies as well. Fixes #74015.
20030
20031 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
20032
20033         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
20034
20035 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
20036
20037         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
20038         a lot of checks and (anyway) permissions cannot work until corlib is 
20039         loaded.
20040
20041 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
20042
20043         * mini-ppc.c: fixed ABI issue on sysv/ppc.
20044
20045 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
20046
20047         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
20048         calls (fixes bug#72824).
20049
20050 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20051
20052         * mini.c: fix tail recursion elimination (see test in bug#73936).
20053
20054 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
20055
20056         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
20057         some fp functions in sse2 mode.
20058
20059 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
20060
20061         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
20062
20063 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
20064
20065         * mini.h mini.c: Add mono_get_jit_tls_key ().
20066
20067         * mini-x86.c: Enable fast TLS support on windows.
20068
20069 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
20070
20071         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
20072         * mini.c: Check for p/invoke method when generating code. If a
20073         p/invoke method, or it's class, isn't decorated with [Suppress
20074         UnmanagedCodeSecurity] then generate code to call System.Security.
20075         UnmanagedDemand (only if the security manager is active).
20076
20077 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20078
20079         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
20080         last change as it seems to cause strange crashes.
20081         
20082 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20083
20084         * *.c: handle unsafe function pointers where needed.
20085
20086 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20087
20088         * mini.c (mono_jit_free_method): Remove the fixme too.
20089
20090 2005-03-15  Miguel de Icaza  <miguel@novell.com>
20091
20092         * mini.c: As discussed, make the code actually free the delegate
20093         thunk now, to enable the debugging of delegate problems, use
20094         MONO_DEBUG=1 when running Mono. 
20095
20096         This takes also care of parts of the leaks as seen by Joe.
20097
20098 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
20099
20100         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
20101         thread_tls_offset calculation.
20102
20103 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
20104
20105         * declsec.c: Reworked linkdemand checks for icall. The previous code
20106         was using the declaration code (untrusted) and didn't work as expected
20107         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
20108         specific case.
20109
20110 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
20111
20112         * iltests.il: Add new localloc test.
20113
20114         * mini-amd64.c: Handle large stack allocations the same way as on
20115         windows if stack overflow handling is working.
20116         
20117         * mini-amd64.c: Allocate the signal stack using mmap.
20118
20119         * mini.c (sigsegv_signal_handler): Fix reading of context.
20120
20121         * mini-exceptions.c: Fix up stack overflow handling.
20122
20123         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
20124
20125         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
20126
20127         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
20128
20129         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
20130
20131         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
20132         tramp_init functions as they are no longer needed.
20133
20134 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
20135
20136         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
20137         
20138         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
20139
20140         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
20141         
20142         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
20143         support that now.
20144
20145         * mini-ops.h: Add OP_LMUL_IMM.
20146
20147         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
20148         long mul/div opcodes as intrinsic.
20149
20150         * mini-amd64.c (emit_call): Handle the case when the callee might be
20151         an AOT method.
20152
20153 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
20154
20155         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
20156         extra safe.
20157         
20158         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
20159
20160         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
20161
20162 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
20163
20164         * mini.c (mono_codegen): Don't leak here, to help people running
20165         monogrind.
20166
20167 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
20168
20169         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
20170         conversions in sse2 mode.
20171
20172         * basic-float.cs: Add regression test.
20173         
20174         * mini-amd64.c: Reenable sse2.
20175
20176 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20177
20178         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20179
20180 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20181
20182         * driver.c: Copyright text should include 2005.
20183         
20184 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20185
20186         * cpu-amd64.md (load_membase): Fix more max lengths.
20187
20188 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20189
20190         * cpu-amd64.md (load_membase): Fix max length.
20191
20192         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20193
20194         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20195
20196         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20197         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20198
20199         * basic-float.cs: Add rounding regression test.
20200
20201         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20202
20203 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20204
20205         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20206         structures in registers for pinvoke wrappers.
20207
20208 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20209
20210         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20211
20212 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20213
20214         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20215         wrapper to mono_jit_thread_attach.
20216
20217         * mini.c (mini_jit_thread_attach): New jit icall.
20218
20219         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20220         native->managed wrappers.
20221
20222         * exceptions.cs: Add new regression test.
20223
20224         * mini.c (optimize_branches): Check regions in the cbranch to throw
20225         block case as well. Fixes #73242.
20226
20227 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20228
20229         * mini.c: thread safety fixes.
20230
20231 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20232
20233         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20234         patching stuff, since delegates use jump trampolines so there is
20235         no caller.
20236
20237         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20238         jump trampolines.
20239         
20240         * tramp-amd64.c: Fix build.
20241
20242         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20243         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20244
20245         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20246         Rename this to mono_arch....
20247         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20248
20249         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20250
20251         * mini-amd64.c (emit_call): If both the caller and the callee is
20252         guaranteed to have 32 bit addresses, emit a normal call.
20253
20254         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20255
20256         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20257         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20258         method_ptr inside delegates.
20259
20260 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20261
20262         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20263         invalidated. Fixes #73001.
20264
20265         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20266
20267         * mini-x86.c: Only use stdcall for pinvokes on windows.
20268
20269 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20270
20271         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20272         * mini-x86.c: remove unreliable __thread var offset detection,
20273         use the correct accessors and enable by default.
20274
20275 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20276
20277         * mini.c (mono_jit_free_method): Fix memory leak.
20278
20279 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20280
20281         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20282
20283 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20284
20285         * cpu-amd64.md: Fix lengths of atomic opcodes.
20286
20287 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20288
20289         * driver.c: try to not imply using ICU is any good.
20290
20291 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20292
20293         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20294         functions as inline ops.
20295
20296         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20297         some Interlocked functions as inline ops.
20298
20299         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20300
20301         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20302
20303         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20304
20305         * mini.c: Add support for OP_NOT_TAKEN.
20306
20307         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20308         structures in registers for pinvoke wrappers.
20309
20310         * mini-amd64.c: Fix warnings.
20311
20312 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20313
20314         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20315
20316         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20317
20318         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20319         address instead of loading the address from it.
20320
20321         * mini-x86.c: Add support for returning small structs in registers
20322         on Win32. Fixes part of #70864.
20323         
20324 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20325
20326         * trace.c (get_token): Improve error checking.
20327
20328 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20329
20330         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20331
20332 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20333  
20334         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20335         it can be reused for MonoClass.
20336         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20337         _LINKDEMAND.
20338
20339 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20340
20341         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20342         instead of a MonoReflectionMethod. The method information wasn't used
20343         when displaying SecurityException details (but will be now).
20344
20345 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20346
20347         * Makefile.am : windows build fix.
20348
20349 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20350
20351         * iltests.il: Add new regression test.
20352
20353         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20354         #72522.
20355
20356 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20357  
20358         * mini.c: Moved linkdemand check into helper function check_linkdemand
20359         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20360         LDFTN, LDVIRTFTN).
20361
20362 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20363
20364         * declsec.c: Added statistics counter for different kinds of 
20365         LinkDemands.
20366         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20367         (and commented) declaration.
20368         * mini.c: Added statistics counter for security Demand code 
20369         generation. Added display of security statistics.
20370
20371 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20372
20373         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20374         Fix compilation errors under gcc-2.95.
20375
20376 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20377
20378         * mini.c, driver.c: Use the new jit trampoline hashtable
20379
20380 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20381
20382         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20383
20384 2005-02-11  Martin Baulig  <martin@ximian.com>
20385
20386         * debug-mini.c (mono_debug_close_method): Free the line number array.
20387
20388 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20389
20390         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20391         icalls.
20392
20393         * mini.h: Bump AOT file format version. 
20394
20395 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20396
20397         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20398         APTC and P/Invoke.
20399         * declsec.h: Added macros to get/set lazyly initialized security 
20400         informations about assemblies. Added new enum for different type of
20401         possible LinkDemand violation. Added function to check LinkDemands.
20402         * mini.h: Added a field to MonoCompile to hold any security violation
20403         detected when JITting a method (so it can be thrown later).
20404         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20405         and CEE_CALLVIRT. Added code to throw exception at the end of
20406         mini_method_compile (note: the exception is unhandled right now).
20407
20408 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20409
20410         * mini.c, jit-icalls.c: use the managed implementation of
20411         memset for initobj and memset, to avoid managed <-> unmanaged
20412         transitions.
20413
20414 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20415
20416         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20417         optimization if it would need a GOT var.
20418
20419         * basic.cs: Add tests for constant propagation and switch statements.
20420
20421         * ssa.c: Fix out-of-range constant propagation and switch statements.
20422
20423 2005-02-09    <vargaz@freemail.hu>
20424
20425         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20426
20427 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20428
20429         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20430
20431 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20432
20433         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20434
20435 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20436
20437         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20438         arithmetic operations.
20439
20440 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20441
20442         * mini-ppc.c: add a workaround for broken user code that
20443         DllImports vararg functions with non-vararg signatures.
20444
20445 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20446
20447         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20448         meaningfull error message for assemblies written in Managed C++.
20449
20450         * tramp-amd64.c mini-amd64.h: Add support for 
20451         create_trampoline_from_token ().
20452
20453         * aot.c mini-x86.c abcremoval.c: Applied patch from
20454         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20455
20456 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20457
20458         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20459         which takes a MonoImage/token as parameter instead of a MonoMethod.
20460
20461         * aot.c: Use the new trampoline for initializing vtables.
20462
20463         * aot.c: Add support for ldfld/stfld_remote wrappers.
20464
20465         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20466         rules for compare <MEM>, IMM.
20467
20468         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20469
20470         * aot.c: Handle inherited finalizers correctly.
20471
20472 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20473
20474         * inssel.brg (stmt): Add a missing _setup_... ().
20475
20476         * aot.c: Save some parts of the class state to the AOT file and use it
20477         to recompute that state when a class is initialized.
20478
20479         * mini.c: Install AOT hooks into the runtime.
20480
20481         * mini.h: Bump AOT file format version.
20482         
20483         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20484         Fixes #72148.
20485
20486         * iltests.il: Add new test.
20487
20488 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20489
20490         * mini.c: fix typo.
20491
20492 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20493
20494         * mini.c: setup the statistical profiler in the thread attach
20495         callback to cope with the new single thread code.
20496
20497 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20498
20499         * mini-ppc.c: ensure we have enough room for the profiler
20500         calls (fixed bug#72084).
20501
20502 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20503
20504         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20505         it.
20506
20507 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20508
20509         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20510
20511 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20512
20513         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20514         to succesfully execute parrotbench).
20515         * ssapre.h: Likewise.
20516
20517 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20518
20519         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20520         variable for stores to method arguments (fixes a SSAPRE issue).
20521
20522 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20523
20524         * mini.c: handle value types in dup, fixes gen-112.cs.
20525
20526 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20527
20528         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20529         sequence for calls in dynamic methods to avoid thunks.
20530
20531 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20532
20533         * mini.c: correctly remove dynamic methods from the hashtable.
20534
20535 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20536
20537         * driver.c: Disabled SSAPRE until fix the bug that appears
20538         in IronPython's parrotbench.
20539
20540 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20541
20542         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20543
20544         * mini.c (mono_method_to_ir): Revert the previous change.
20545         
20546         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20547         when AOT compiling.
20548
20549         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20550         mono_jit_info_table_find () etc. when running under valgrind.
20551
20552         * inssel.brg: Fix warnings.
20553
20554         * mini-exceptions.c: Fix warnings.
20555
20556 2005-01-31  Martin Baulig  <martin@ximian.com>
20557
20558         * driver.c (compile_all_methods_thread_main): Don't try to compile
20559         generic methods or anything which has type parameters.
20560
20561 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20562
20563         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20564
20565         * TestDriver.cs: Add --verbose flags.
20566
20567         * graph.c ssa.c: Fix 64 bit warnings.
20568         
20569         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20570         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20571         Fix 64 bit warnings.
20572
20573         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20574         variable not spotted by gcc.
20575         
20576         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20577         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20578         X86_COMPARE_MEMBASE opcodes.
20579
20580         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20581
20582 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20583
20584         * *: MonoMethod->signature might be NULL now. You *MUST* use
20585         mono_method_signature.
20586
20587 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20588
20589         * driver.c (compile_all_methods_thread_main): Compile the methods
20590         without invoking cctors.
20591
20592 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20593
20594         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20595         * basic-calls.cs: test for the above.
20596
20597 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20598
20599         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20600         MonoJitInfo changes.
20601
20602 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20603
20604         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20605         eagerly if it contains dynamic methods.
20606         
20607         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20608
20609         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20610         trace, it is now computed by an icall from trace_ips.
20611         
20612         * mini-exceptions.c: Fix a warning.
20613
20614 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20615
20616         * mini-exceptions.c: don't bother getting stack trace info if
20617         it's not going to be used.
20618
20619 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20620
20621         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20622         ssapre-mini-ops.h.
20623
20624 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20625
20626         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20627
20628         * aot.c: Avoid calling mono_method_get_header () if not needed.
20629
20630         * mini.h: Bump AOT file format version.
20631         
20632         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20633
20634         * mini.c (mono_print_tree): Print more info for calls.
20635
20636 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20637
20638         * declsec.h: Remove warning by adding missing include for marshal.h
20639
20640 2005-01-26  Martin Baulig  <martin@ximian.com>
20641
20642         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20643         `ip' twice.
20644
20645 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20646
20647         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20648         flags.
20649
20650         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20651
20652         * aot.c (mono_compile_assembly): Fix a warning.
20653
20654 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20655
20656         * declsec.c: Look for security attributes on the original MonoMethod 
20657         (and not the wrapped one). This fix permissions on icalls.
20658
20659 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20660
20661         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20662
20663         * mini.c (mono_allocate_stack_slots): Add a fixme.
20664
20665         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20666
20667 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20668
20669         * inssel.brg: optimize casts of sealed types (more
20670         optimizations waiting for fixes in remoting).
20671
20672 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20673
20674         * inssel.brg (stmt): Add another dummy rule.
20675
20676         * driver.c: Fix warnings.
20677
20678         * driver.c (mono_main): If running under valgrind, instruct glib to use
20679         the system allocation functions so valgrind can track the memory
20680         allocated by the g_... functions.
20681
20682         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20683
20684         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20685
20686         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20687
20688         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20689         variables in try regions.
20690
20691         * mini.c (mini_method_compile): Don't disable optimizations on large
20692         methods when AOT compiling.
20693
20694         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20695         allocate stack slots. Not yet used.
20696
20697 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20698
20699         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20700
20701 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20702
20703         * mini-ppc.c: make the branch info relative as the code
20704         buffer can be reallocated.
20705
20706 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20707
20708         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20709         * driver.c: Removed the AOT/security restriction. Now initialize the
20710         security manager (in metadata) if --security is used.
20711         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20712         rather than the pointer to declarative security, when AOT is used.
20713
20714 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20715
20716         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20717         basic blocks, reduced intrinsic exception throwing code size.
20718
20719 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20720
20721         * driver.c (mini_usage): Reorder the usage screen.
20722
20723 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20724
20725         * mini.c (mono_resolve_patch_target): Fix warning.
20726
20727 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20728
20729         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20730         previous patch.
20731
20732         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20733
20734         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20735         breaks the amd64 build.
20736
20737         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20738         register allocation. Fixes #71454.
20739
20740         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20741
20742         * arrays.cs: Add new regression test.   
20743
20744 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20745
20746         * ssapre.c: Turned usage of snprintf to GString.
20747         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20748         (I left it on by mistake in my previous commit).
20749
20750 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20751
20752         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20753         on cond branch optimization (fixes bug# 71515).
20754
20755 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20756
20757         * abcremoval.c: Fixed bug 71062.
20758         * abcremoval.h: Likewise.
20759
20760 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20761
20762         * mini.c: Added a new functionality to optimize_branches, the removal
20763         of useless basic blocks, and fixed some problem in the removal of
20764         critical edges; some utility functions added for both purposes.
20765         * ssapre.c: Added complex expression support, and fixed bug 70637.
20766         * ssapre.h: Likewise.
20767         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20768         enabled in SSAPRE.
20769         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20770         * driver.c: Re-enabled SSAPRE.
20771
20772 2005-01-19  Martin Baulig  <martin@ximian.com>
20773
20774         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20775         the result of mono_get_method_constrained().
20776
20777 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20778
20779         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20780         manager.
20781
20782 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20783
20784         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20785         be detected.  Fixes #59296.
20786
20787 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20788
20789         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20790         which can happen. Fixes #71361.
20791
20792 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20793
20794         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20795         manager.
20796
20797 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20798
20799         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20800         appdomain-unload.exe to fail.
20801         
20802         * mini.c: Fix some memory leaks.
20803
20804 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20805
20806         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20807         Fixed bug and sped up some codepaths.
20808
20809 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20810
20811         * mini.c: Fix some memory leaks.
20812
20813         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20814         conversion.
20815
20816         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20817
20818         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20819         #71320.
20820
20821         * iltests.il: Add regression test for #71320.
20822
20823 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20824
20825         * mini.c (mono_codegen): Fix installation of profiler hooks.
20826
20827         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20828
20829 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20830
20831         * mini.h, mini.c, cfold.c: optimize access to enum
20832         readonly fields, too. Eval conditional branches if possible
20833         to perform unreachable code removal in more cases.
20834
20835 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20836
20837         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20838
20839         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20840         code manager.
20841
20842         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20843         WinXP DEP. Fixes #71244.
20844
20845 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20846
20847         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20848
20849 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20850
20851         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20852
20853 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20854
20855         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20856         changes.
20857
20858         * mini.h: Bump AOT version.
20859
20860         * mini.h (MonoCompile): Change exvar to a hash table.
20861
20862         * mini.c: Allocate a separate exvar for each handler block.
20863
20864         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20865
20866         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20867         ex var with the pending exception and only throw if the two are equal.
20868         Fixes #68552.
20869         
20870         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20871
20872         * mini-x86.c: Fix warnings.
20873
20874         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20875         used by all the ports now.
20876
20877         * aot.c: Add write-symbols and save-temps options.
20878
20879 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20880
20881         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20882
20883 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20884
20885         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20886         operations.
20887
20888         * tramp-s390.c: Check vtable slot belongs to the domain.
20889
20890         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20891         as per other platforms.
20892
20893         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20894
20895 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20896
20897         * driver.c: we don't run the Main() code in a subthread anymore.
20898
20899 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20900
20901         * mini.c: added experimental rtc support in the statistical
20902         profiler: if the user has the permission, more accurate statistics
20903         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20904         The MONO_RTC value must be restricted to what the linux rtc allows:
20905         power of two from 64 to 8192 Hz.
20906
20907 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20908
20909         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20910
20911 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20912
20913         * mini-ppc.c: better icache flush for smp.
20914
20915 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20916
20917         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20918
20919         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20920         amd64 port, not yet used.
20921
20922 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20923
20924         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20925         a struct type.
20926
20927 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20928
20929         * driver.c: Added --security option to activate the security manager.
20930         Right now this will allow code generation for declarative demands and
20931         is disabled when AOT is specified.
20932         * mini.c: Add code generation for declarative security demands.
20933         * mini.h: Add mono_use_security_manager as an extern gboolean.
20934
20935 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20936
20937         * aot.c (mono_compile_assembly): Speed up compilation a bit by
20938         emitting more dense assembly code.
20939
20940         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
20941         exception throwing stuff.
20942
20943 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20944
20945         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
20946         dead code.
20947
20948         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
20949         left in by mistake.
20950
20951         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
20952         fixed.
20953
20954         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
20955
20956         * tramp-*.c: Only patch vtable slots if the object is in the current
20957         domain. Fixes appdomain-unload.exe.
20958
20959         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
20960         
20961         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
20962         x86 branch.
20963
20964 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20965
20966         * mini.c (reverse_branch_op): New helper function.
20967
20968         * mini.c (optimize_branches): Run the new optimization only on 
20969         platforms which support it. Also reverse all kinds of branches.
20970
20971         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
20972
20973         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
20974         a throw statement.
20975
20976         * mini.c (optimize_branches): Reverse not-equals branches if the false
20977         bblock is a throw. This happens a lot of time with argument checking in
20978         corlib.
20979
20980         * mini.c (mono_codegen): Add support for placing basic blocks after
20981         the function epilogue.
20982
20983         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
20984         function epilogue.
20985         
20986 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
20987
20988         * mini.c (setup_stat_profiler): Only set this up if the platform
20989         supports ITIMER_PROF.
20990
20991 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20992
20993         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
20994         previous patch.
20995
20996         * inssel.brg: Fix a warning.
20997
20998 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
20999
21000         * mini.c: added support for statistical profiler 
21001         (run with: --profile=default:stat).
21002
21003 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
21004
21005         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
21006
21007         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
21008
21009         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
21010         related to global registers from the amd64 port.
21011
21012 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
21013
21014         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
21015
21016         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
21017         with global registers.
21018         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
21019
21020         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
21021
21022 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
21023
21024         * debug-mini.c (encode_value): Fix off-by-one.
21025
21026         * aot.c (encode_value): Likewise.
21027
21028         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
21029
21030 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
21031
21032         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
21033         AOT.
21034
21035         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
21036         
21037         * aot.c (emit_method_info): Increase size of temp buffer.
21038
21039         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
21040         the AOT case.
21041
21042 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
21043
21044         * aot.c (emit_method_info): Fix build.
21045         
21046         * aot.c: Further rework of the AOT file format to reduce the size of
21047         the method info data.
21048
21049         * mini.h: Bump AOT file format version.
21050
21051 2004-12-27  Martin Baulig  <martin@ximian.com>
21052
21053         * mini.c (mini_get_method): New static method; call
21054         mono_get_method_full() and mono_get_inflated_method().
21055         (mono_method_to_ir): Use mini_get_method() instead of
21056         mono_get_method_full(). 
21057
21058 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
21059
21060         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
21061
21062 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
21063
21064         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
21065
21066         * inssel-amd64.brg: Add some optimization rules.
21067
21068 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
21069
21070         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
21071         standard not GC'd stuff is fine.
21072
21073 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
21074
21075         * aot.c: Rework the AOT file format to get rid of most of the global
21076         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
21077
21078         * mini.h: Bump AOT file format version.
21079         
21080 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
21081
21082         * mini.h: Bump AOT file format version.
21083
21084         * aot.c (mono_aot_is_got_entry): New function to determine if an 
21085         address is inside a GOT.
21086
21087         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
21088
21089         * cpu-pentium.md: Increase the maximum size of some instructions which
21090         might involve a got access.
21091         
21092         * mini.c (get_method_from_ip): Another debug helper function.
21093
21094         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
21095         when got var accesses are created during the decompose phase.
21096
21097         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
21098
21099         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
21100         argument mini_compile_method and to MonoCompile, and use this to
21101         determine whenever a given method is compiled for AOT. This allows the
21102         other methods compiled during AOT compilation to be free of AOT stuff,
21103         so the backends does not need to add special support for them by
21104         creating a fake GOT etc.
21105
21106         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
21107         longer needed.
21108
21109 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21110
21111         * mini.c (mono_method_to_ir): It turns out that some of the
21112         x-appdomain wrappers are lax with types, so just ignore this for
21113         all wrappers.
21114
21115         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
21116         at the vtable->klass. If it is non-shared code we can just use the
21117         vtable.
21118
21119 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
21120
21121         * mini-ppc.c: access MonoDomain from tls, too.
21122
21123 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
21124
21125         * declsec.c: Removed unused variable (and related warning ;-)
21126
21127 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21128
21129         * iltests.il: New test for LDELEMA on an array of ref types.
21130
21131         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
21132         all ldelema's on reftypes.
21133         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
21134         it was the wrong place to put it.
21135
21136         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
21137         register to pop to make this cleaner, at the request of Paolo.
21138
21139 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21140
21141         * mini-ops.h (OP_GETHASHCODE): New op.
21142
21143         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
21144
21145         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
21146         operation.
21147
21148         For a microbenchmark, this reduces the cost of Hashtable.get_Item
21149         by 25%.
21150         
21151         * mini-x86.c (mono_arch_output_basic_block): Rather than
21152
21153         add ebp, 4
21154
21155         Emit
21156
21157         pop edx
21158
21159         The first is 3 bytes while the second is 1. This saves 36 kb on
21160         mscorlib, quite a big saving. When bootstraping mcs, I was able to
21161         see a small boost because of icache locality.
21162
21163         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
21164
21165 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
21166
21167         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
21168         started code sharing with the generic code.
21169
21170 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
21171
21172         * mini-ppc.c, cpu-g4.md: added code for direct access to
21173         tls data slots.
21174
21175 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
21176
21177         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21178          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21179         to OP_TLS_GET.
21180
21181 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21182
21183         * declsec.c|h: Added functions to cache the declarative stack modifiers
21184         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21185         structure.
21186         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21187         created. Register internal calls for System.Security.SecurityFrame::
21188         _GetSecurityFrame and _GetSecurityStack.
21189         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21190         the definitions for the new stack walk/callback mechanism.
21191         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21192         first security frame for LinkDemands and InheritanceDemands) and
21193         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21194         from lupus.
21195         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21196         walk initialization (lupus).
21197
21198 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21199
21200         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21201         idiom.
21202         (handle_loaded_temps): Do not create a temporary variable for
21203         things that we know are temps. They will never be modified.
21204         (mono_spill_call): Set MONO_INST_IS_TEMP
21205         (mono_emulate_opcode): ditto
21206         (emit_tree): ditto
21207         (mono_method_to_ir.CEE_DUP): ditto
21208
21209 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21210
21211         * mini.c (type_to_eval_stack_type): Make this handle the void type
21212         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21213         (emit_tree): use ip_in_bb to special case some common idioms
21214         Update all callers to pass in the IP.
21215         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21216
21217         This gives us a nice 2% speedup in mcs bootstrap.
21218
21219         * mini-x86.c (peephole_pass): Peephole pass to make
21220         mov  [foo], eax
21221         push [foo]
21222
21223         into
21224
21225         mov [foo], eax
21226         push eax
21227
21228         * mini.c (ip_in_bb): new method.
21229         (mono_method_to_ir): use this method rather than doing the hash
21230         lookup ourselves.
21231
21232         * linear-scan.c (mono_linear_scan): When expiring actives, you
21233         don't need to keep around variables that expire on this
21234         instruction. This makes it so that:
21235              a = b + 1
21236         will turn into:
21237              store (ebx add (ebx, 1))
21238         which will become
21239              add ebx, 1
21240
21241 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21242
21243         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21244         combination to avoid doing two copies. Fix up problems with previous
21245         patch.
21246
21247         * mini.c: Fix 64 bit warnings.
21248
21249         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21250
21251 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21252
21253         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21254         changes from the x86 code.
21255
21256         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21257
21258 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21259
21260         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21261         throwing code to reduce its size, unify the AOT and non-aot code and 
21262         get rid of relocations in the AOT case.
21263
21264         * mini-x86.h mini.c exceptions-x86.c 
21265         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21266         raise corlib exceptions which doesn't require relocations in the 
21267         caller.
21268
21269         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21270
21271 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21272
21273         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21274         needed.
21275
21276         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21277         in the AOT case.
21278
21279 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21280
21281         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21282         with add function when used from Inc/dec atomic 
21283         functions. Re-enabled optimization on x86.
21284         * mini-ops.h: renamed atomic_add functions to
21285         allow _add to match the Interlocked::Add and
21286         _add_next to match Interlocked::Inc/Dec.
21287
21288 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21289
21290         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21291         linking of BBs to the end BB, and enabled SSAPRE also with
21292         consprop and copyprop (which was prevented by that bug).
21293
21294 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21295
21296         * mini-x86.c: disabling the Interlocked optimizing code. 
21297
21298 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21299
21300         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21301         file version check.
21302         
21303 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21304
21305         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21306         interlocked optimization due lack of support on x86, rewrote 
21307         exchange to take into account that base may be in eax.
21308         
21309         xsp works again; activated Interlocked optimizing code.
21310         
21311 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21312
21313         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21314
21315 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21316
21317         * mini-ops.h: Add new opcodes.
21318
21319         * mini.h: Add new patch types. Add got_var to MonoCompile.
21320
21321         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21322         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21323         make it work with all kinds of patchable code.
21324
21325         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21326         address of the GOT, and referencing entries in the GOT.
21327
21328         * mini.c: Add code to load the GOT address if needed by an opcode.
21329
21330         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21331         independent AOT code on the x86 using an elf-style Global Offset Table.
21332
21333 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21334
21335         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21336
21337 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21338
21339         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21340         when running xsp.
21341
21342 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21343
21344         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21345         of Interlocked:Increment/Decrement/Add as inline ops.
21346         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21347
21348 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21349
21350         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21351         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21352
21353 2004-12-12  Duncan Mak  <duncan@ximian.com>
21354
21355         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21356         again. `patch_info->table_size' is no longer valid after Zoltan's
21357         commit #37636.
21358
21359 2004-12-12  Martin Baulig  <martin@ximian.com>
21360
21361         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21362         if we are the "real" method, ie. not an inlined method inside it.
21363
21364 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21365
21366         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21367         before we look in the special fields table. This fixes
21368         ../tests/thread-static-init.cs.
21369
21370 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21371
21372         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21373         for Array get_Rank and get_Length. Fixes bug #70465.
21374
21375 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21376
21377         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21378         separate structure to reduce the size of MonoJumpInfo.
21379
21380 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21381
21382         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21383
21384 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21385
21386         * mini.c (mini_get_inst_for_method): Changed to allow ports
21387         to return a MonoInst instead of opcode 
21388         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21389         
21390         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21391         Allow ports to return a created MonoInst instead of op-code, will enable
21392         new optimizations.
21393         (renamed mini_get_opcode_for_method to better reflected the functionality)
21394
21395 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21396
21397         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21398
21399 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21400
21401         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21402         Fixes #69985.
21403
21404 2004-12-08  Martin Baulig  <martin@ximian.com>
21405
21406         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21407         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21408
21409 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21410
21411         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21412         correctly.
21413
21414         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21415         arithmetic.
21416
21417 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21418
21419         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21420
21421 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21422
21423         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21424         bug introduced by the previous patch.
21425
21426 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21427
21428         * mini-ppc.c, objectc.cs: handle large structs passed by value
21429         (fixes bug #69972).
21430
21431 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21432
21433         * mini-ppc.c: OP_ARGLIST implementation from
21434         Geoff Norton  <gnorton@customerdna.com>.
21435
21436 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21437
21438         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21439         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21440
21441 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21442
21443         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21444
21445 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21446
21447         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21448         support.
21449
21450 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21451
21452         * mini-sparc.c: Zero out localled-ed memory.
21453
21454         * iltests.il: Add tests for zeroing out localloc-ed memory.
21455
21456 2004-12-04  Martin Baulig  <martin@ximian.com>
21457
21458         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21459         mono_method_get_signature_full().       
21460
21461 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21462
21463         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21464         and some utility functions (always for SSAPRE), integrated SSAPRE.
21465         * mini.h: Likewise.
21466         * driver.c: Added ssapre option.
21467         * ssa.c: Small fix on OP_ARG handling.
21468         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21469         * Makefile.am: Likewise.
21470
21471 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21472
21473         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21474         now in the xp code.
21475
21476         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21477         icall.
21478
21479 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21480
21481         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21482         
21483         * cpu-s390.md : Increase instruction length of oparglist.
21484
21485         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21486
21487 2004-11-30  Martin Baulig  <martin@ximian.com>
21488
21489         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21490         virtual generic methods.  We call a special helper_compile_generic_method()
21491         icall to retrieve the method from the vtable, inflate and compile
21492         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21493
21494         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21495
21496 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21497
21498         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21499
21500 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21501
21502         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21503         Fixes #69929.
21504
21505 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21506
21507         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21508         platforms with PIC aot.
21509
21510 2004-11-28  Martin Baulig  <martin@ximian.com>
21511
21512         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21513         Fixes gen-112.cs.
21514
21515 2004-11-28  Martin Baulig  <martin@ximian.com>
21516
21517         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21518         the result of mono_type_get_underlying_type() to check whether
21519         we're byref.
21520
21521 2004-11-26  Martin Baulig  <martin@ximian.com>
21522
21523         * mini.c
21524         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21525         in the g_assert().
21526
21527 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21528
21529         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21530         the same way as the other arguments so they won't get clobbered.
21531
21532         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21533         calls through R11 since it is clobbered by the trampoline code.
21534
21535 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21536
21537         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21538         pick up in-tree mscorlib.dll.
21539
21540 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21541
21542         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21543
21544         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21545         runtime data/code are now stored in a table similar to the GOT in ELF. 
21546         This allows the code itself to be position independent.
21547
21548         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21549         loading changes.
21550
21551         * aot.c: Attach ELF type (object/function) directives to all global
21552         symbols.
21553
21554         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21555
21556         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21557
21558         * mini-amd64.h: Turn on PIC AOT code.
21559
21560         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21561         returning the offset within an OP_AOTCONST instruction where the GOT
21562         offset needs to be added.
21563
21564         * mini.h: Bump AOT file format version.
21565
21566 2004-11-25  Martin Baulig  <martin@ximian.com>
21567
21568         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21569         uninflated generic methods.
21570
21571 2004-11-25  Martin Baulig  <martin@ximian.com>
21572
21573         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21574
21575 2004-11-24  Martin Baulig  <martin@ximian.com>
21576
21577         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21578         original klass (this only applies for generic instances).
21579
21580 2004-11-24  Martin Baulig  <martin@ximian.com>
21581
21582         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21583         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21584         that array).
21585
21586 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21587
21588         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21589         localloc. Fixes #69678.
21590
21591         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21592         
21593 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21594
21595         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21596         used SSE registers on pinvoke calls. Fixes #69774.
21597
21598 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21599
21600         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21601         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21602
21603 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21604
21605         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21606         Refer directly to the mcs/ tree.
21607
21608 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21609
21610         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21611         Check if a trampoline for a synchronized method is required. 
21612
21613 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21614
21615         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21616         with localloc if needed. Throe arithmetric exception in
21617         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21618         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21619
21620 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21621
21622         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21623         types before switching on type.  Fixes #69622.
21624
21625 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21626
21627         * Makefile.am (check-local): New.  Integrate into 'make check'.
21628         (MCS,RUNTIME): Define using in-tree mono and mcs.
21629         (ILASM): New.
21630         (%.exe): Use $(ILASM).
21631
21632 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21633
21634         * mini-ppc.c: adjust initial prolog size (bug #69691).
21635
21636 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21637
21638         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21639         #69664.
21640
21641 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21642
21643         * Makefile.am (clean-local): Rename from 'clean'.
21644
21645 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21646
21647         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21648         to mono_arch_is_int_overflow. 
21649         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21650         SIGFPE events.
21651
21652 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21653
21654         * declsec.c|h: New files to support declarative security attributes.
21655         Added function to check if a method has (applicable) security.
21656         * mini.c|h: Add check for declarative security attributes in
21657         mono_method_check_inlining.
21658         * Makefile.am: Added declsec.c and declsec.h to the build.
21659
21660 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21661
21662         * mini.c, mini.h: update to keep dynamic code info per-domain.
21663
21664 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21665
21666         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21667         (mini_init): Get rid of it from here too.
21668
21669 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21670
21671         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21672         implemented OP_RETHROW (patch by Geoff Norton
21673         <gnorton@customerdna.com>).
21674
21675 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21676
21677         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21678         between appdomains.  Fixes appdomain-unload on PPC.
21679
21680 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21681
21682         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21683         mini-exceptions.c: handle the new wrapper types.
21684         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21685         token value as a MonoClass* when compiling a wrapper.
21686         mono_jit_create_remoting_trampoline now takes an additional
21687         MonoRemotingTarget parameter.
21688         
21689 2004-11-10  Martin Baulig  <martin@localhost>
21690
21691         * mini.c (mono_method_to_ir): Use `generic_container->context'
21692         rather than creating a new one.
21693
21694 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21695
21696         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21697
21698         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21699
21700 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21701
21702         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21703         the experimental aot cache stuff.
21704
21705 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21706
21707         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21708         mini-exceptions.c: update to exception clause structure changes.
21709
21710 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21711
21712         * exceptions-x86.c (throw_exception): Fix warnings.
21713
21714         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21715         for OP_RETHROW.
21716
21717 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21718
21719         * exceptions-sparc.c (get_throw_exception): Really fix this.
21720
21721 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21722
21723         * tramp-*.c: we no longer support icalls without wrappers, so
21724         a bit of code can be removed here
21725
21726 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21727
21728         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21729         patch.
21730
21731         * cpu-sparc.md: Add op_rethrow.
21732
21733         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21734
21735         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21736
21737         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21738         * mini-ops.h: Add OP_RETHROW.
21739
21740         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21741
21742         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21743
21744 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21745         
21746         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21747         Makes the output much easier to read
21748
21749 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21750
21751         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21752         prevents another huge leak when compiling with ssa. Secondly, the
21753         performance of doing this rather than freeing the lists is much
21754         better. GList does a lock every time you allocate a list link,
21755         so that it can use a memory pool. So, it is better to just use
21756         a memory pool of our own.
21757         
21758         * ssa.c, linear-scan.c: replace g_list_remove_link with
21759         g_list_delete.  The remove one does not free the GList, so we were
21760         leaking memory. On -O=all --compile-all with corlib, this cut down
21761         3 MB of allocations.
21762
21763 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21764
21765         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21766
21767         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21768
21769         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21770         into a new function mono_create_jit_trampoline ().
21771
21772 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21773
21774         * trace.c (get_spec): Allow tracing of classes without a namespace.
21775
21776 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21777
21778         * mini.c: Fix pointer overwrite in mini_method_compile.
21779
21780 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21781
21782         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21783         The darwin ABI needs some special handling for 1 and 2 byte structs
21784         Lets use lbz/lhz instead of lwz everywhere.
21785         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21786         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21787         Use stb/sth for the former, and put the latter always on stack instead of in
21788         argument registers.
21789
21790 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21791
21792         * trace.c (is_filenamechar): Add '_'.
21793
21794 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21795
21796         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21797
21798         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21799
21800 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21801
21802         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21803         depends on libmonogc. Fixes #68805.
21804
21805 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21806
21807         * mini.c (mono_jit_free_method): Provide extra information for
21808         this error.  Currently this leaks, but will be turned into a
21809         developer option in the future.
21810
21811 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21812
21813         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21814
21815 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21816
21817         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21818         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21819         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21820
21821 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21822
21823         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21824         trampolines for AOT code.
21825
21826 2004-10-22    <vargaz@freemail.hu>
21827
21828         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21829         constructed types. Fixes #68136.
21830
21831 2004-10-21  Martin Baulig  <martin@ximian.com>
21832
21833         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21834         if it returns true, unwind the stack to the call instruction.
21835
21836 2004-10-21    <vargaz@freemail.hu>
21837
21838         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21839
21840         * mini.h: Bump AOT version number.
21841
21842         * objects.cs: Add another test for unbox trampolines.
21843
21844         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21845         valuetype methods.
21846
21847 2004-10-20    <vargaz@freemail.hu>
21848
21849         * driver.c: Add SHARED to the set of optimizations tested.
21850
21851         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21852
21853         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21854         used by CEE_NEWARR.
21855
21856         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21857
21858 2004-10-20  Martin Baulig  <martin@ximian.com>
21859
21860         * mini-exceptions.c (mono_handle_exception): Call
21861         mono_debugger_handle_exception() to tell the debugger about
21862         catch/finally clauses.
21863
21864 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21865
21866         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21867
21868         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21869         #68447.
21870
21871 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21872
21873         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21874         methods as their native size, fixed bug #57543, #57545.
21875         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21876         This saves a temporary register and mullw call down into 1 (minor perf
21877         increase for cases like sum = sum * 5;  This use to translate into:
21878             li r11,5
21879             mullw r28,r28,r11
21880         It now translates to
21881             mulli r28,r28,5
21882
21883 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21884
21885         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21886         #68388.
21887
21888 2004-10-11  Martin Baulig  <martin@ximian.com>
21889
21890         * mini.c (mono_method_to_ir): If we're a generic method, get the
21891         MonoGenericContainer from our MonoMethodNormal and create a
21892         MonoGenericContext from it.
21893
21894 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21895
21896         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21897
21898         * basic-long.cs: Add test for checked i8->i2 cast.
21899
21900 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21901
21902         * inssel-ppc.brg: added a couple of speedup rules.
21903
21904 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21905
21906         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21907         to speed up rebuilds.
21908
21909 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21910
21911         * mini-s390.c: Minor fix to OP_OR_IMM.
21912
21913 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21914
21915         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21916         better. Fixes appdomain-unload.exe on sparc.
21917
21918 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21919
21920         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21921         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21922         see bug 67324.
21923
21924 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21925
21926         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21927
21928 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21929
21930         * mini.c: Always generate a field read/write wrapper for members
21931         of the class MarshalByRefObject since the actual instance could
21932         be a CBO.
21933
21934 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21935
21936         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
21937
21938 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21939
21940         * driver.c mini.h trace.c: Move the setting of the main assembly into
21941         a separate function called mono_trace_set_assembly () and call it after
21942         actually loading the main assembly. Fixes #66872.
21943
21944 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21945
21946         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
21947         using the code manager.
21948
21949 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21950
21951         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
21952
21953 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21954
21955         * cpu-amd64.md: Fix bug in previous patch.
21956         
21957         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
21958         #66650.
21959
21960 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
21961
21962         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21963         mini-exceptions.c: updates for changed stack walk interface.
21964
21965 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21966
21967         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
21968
21969 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
21970
21971         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
21972
21973 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
21974
21975         * driver.c (mini_regression_list): Do not call mono_assembly_close 
21976         since assemblies can't be unloaded.
21977         
21978 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21979
21980         * cpu-amd64.md: Fix more instruction lengths.
21981
21982         * cpu-amd64.md: Fix lengths of some instructions.
21983
21984 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
21985
21986         * inssel.brg: Make the array ldelema check aot friendly.
21987
21988 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21989
21990         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
21991
21992         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
21993
21994 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
21995
21996         * mini-x86.c: Fix build.
21997
21998         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
21999         mono_type_get_underlying_type () helper function to simplify code.
22000         
22001 2004-09-09  Martin Baulig  <martin@ximian.com>
22002
22003         * mini-amd64.c: Don't access `type->data.klass' directly, call
22004         mono_class_from_mono_type() instead since the type may be a
22005         generic instance.
22006
22007 2004-09-09  Martin Baulig  <martin@ximian.com>
22008
22009         * mini-amd64.c (get_call_info): Fix support for generic instances.
22010         (add_valuetype): Use mono_class_from_mono_type() to get the class
22011         since we can be a generic instance.
22012
22013 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
22014
22015         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
22016
22017 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22018
22019         * liveness.c: reset spill costs on each scan: bug 62107
22020
22021 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
22022
22023         * exceptions-sparc.c (mono_arch_find_jit_info): remove
22024         unnecessary line that doesn't compile
22025
22026 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
22027
22028         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
22029         trampolines, make them call an error function so people can fix their
22030         code.
22031
22032 2004-09-06  Martin Baulig  <martin@ximian.com>
22033
22034         * mini.c (mono_method_to_ir): When initializing locals, handle a
22035         generic instances like a valuetype if it's a valuetype and like a
22036         class if it's a class.
22037
22038 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22039
22040         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
22041         stack. Fixes #64674.
22042
22043         * exceptions.cs: Add test for unwinding of call arguments.
22044
22045 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
22046
22047         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
22048         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
22049         set the carry/borrow flag). The sparc and s390 implementations
22050         can now use optimized versions (and simplify the code). ppc bugfixes.
22051
22052 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22053
22054         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
22055
22056 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
22057
22058         * inssel-amd64.brg: Remove leftover 32 bit rule.
22059
22060         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
22061
22062 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
22063
22064         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
22065         mono_arch_find_jit_info functions into a new function. Fix a memory
22066         leak.
22067
22068         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
22069         refactored code.
22070         
22071 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22072
22073         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
22074         as well.
22075         
22076         * exceptions.cs: Add array size tests.
22077
22078         * mini.c: Allocate a separate icall wrapper for each arity of 
22079         mono_array_new_va. Fixes #59509.
22080
22081         * exceptions.cs: Add testcase for 64578.
22082
22083         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
22084
22085         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
22086         
22087 2004-09-02  Martin Baulig  <martin@ximian.com>
22088
22089         * mini.c (mono_method_to_ir): When initializing the locals, call
22090         handle_initobj() on the generic instance itself, not its
22091         underlying type.
22092
22093 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22094
22095         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
22096         MonoJitInfo for dynamic methods.
22097
22098         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
22099
22100         * mini.c: Add support for freeing JIT data for dynamic methods.
22101         
22102 2004-09-01  Martin Baulig  <martin@ximian.com>
22103
22104         * mini-x86.c (is_regsize_var): Added support for generic
22105         instances.
22106         (mono_arch_emit_prolog): Make this compile again, use
22107         `x86_push_imm_template (code)'.
22108
22109 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
22110
22111         * mini-x86.c: make all push_imm instructions that get
22112         patched always emit the long form
22113
22114 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
22115
22116         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
22117         in a per-domain hash.
22118
22119         * mini-amd64.c (merge_argument_class_from_type): Handle generic
22120         types.
22121
22122 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
22123
22124         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
22125         work.
22126         
22127         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
22128         work.
22129
22130         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
22131         Beginnings of SSE2 support.
22132
22133         * exceptions.cs: Add more tests for checked int<->uint casts.
22134
22135 2004-08-28  Martin Baulig  <martin@ximian.com>
22136
22137         * mini-x86.c (mono_arch_instrument_epilog): Added support for
22138         generic instances.
22139
22140         * mini.c
22141         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
22142         Handle generic instances recursively.
22143
22144 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22145
22146         * iltests.il: test for conv.u8 on a constant
22147
22148 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22149
22150         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
22151         LCONV_x4 (shrun_32 (membase)).
22152
22153 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22154
22155         * inssel-x86.brg: c&p rules for push/setret of long
22156
22157 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22158
22159         * inssel-x86.brg: c&p rules for compare (base, regvar) and
22160         compare (regvar, base)
22161
22162         * inssel-x86.brg: more burg love
22163
22164         * inssel.brg: more cleanup
22165
22166         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
22167
22168 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22169
22170         * basic-long.cs, basic-calls.cs: new tests for optimization.
22171
22172 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
22173
22174         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
22175         patch.
22176
22177 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22178
22179         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22180         
22181 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22182
22183         * inssel.brg (mini_emit_memcpy): use 
22184         NO_UNALIGNED_ACCESS to disable memcpy optimization
22185
22186 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22187
22188         * mini-amd64.c: Handle generic types in various places.
22189
22190         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22191
22192 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22193
22194         * mini.c (handle_box): Fix warning.
22195
22196         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22197
22198         * mini-amd64.h: Enable the emit_state optimization.
22199
22200         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22201
22202         * mini-amd64.c: Add some new 64 bit peephole opts.
22203
22204         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22205
22206         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22207
22208         * mini-amd64.c: Register allocator fixes.
22209
22210         * mini.c: Add an optimization to emit_state to avoid allocation of new
22211         registers on some platforms.
22212
22213 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22214
22215         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22216
22217         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22218         allocation. Fixes #63085.
22219
22220         * basic-long.cs: Add new regression test.
22221
22222         * mini-amd64.c: Register allocator improvements.
22223
22224 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22225
22226         * mini-amd64.c (read_tls_offset_from_method): Add another code
22227         sequence.
22228
22229         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22230         instruction sequence for nullifying class init trampolines.
22231
22232         * objects.cs: Add new regalloc test.
22233
22234         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22235
22236 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22237
22238         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22239         
22240         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22241         arguments.
22242
22243         * driver.c: Fix profiling after TLS changes.
22244         
22245         * driver.c (mono_main): Set mono_stats.enabled if needed.
22246
22247         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22248         CEE_BOX.
22249
22250 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22251
22252         * mini-x86.c: use a 1 op rather than a 2 op tls access
22253         instruction -> faster.
22254
22255 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22256
22257         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22258         x86 backend.
22259
22260 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22261
22262         * exceptions-sparc.c (throw_exception): fix typo
22263
22264 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22265
22266         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22267         set tree->dreg correctly with tls. Allow any
22268         register to be used.
22269
22270         * mini-x86.c (read_tls_offset_from_method): add new code
22271         generation pattern seen with GCC.
22272
22273
22274 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22275
22276         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22277         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22278         exceptions-sparc.c: fix some performance issues in exception
22279         handling and setting of the stack trace for exceptions that were
22280         already thrown.
22281
22282 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22283
22284         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22285         x86 backend.
22286         
22287         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22288         registers.
22289
22290 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22291
22292         This patch inlines tls access, when possible.
22293         
22294         * mini.h: new arch functions for TLS intrinsics.
22295         All platforms updated with a stub.
22296
22297         * mini.c: use the new intrinsics
22298
22299         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22300         arch specific intrinsic for tls variables
22301
22302 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22303
22304         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22305         under windows.
22306
22307 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22308
22309         * mini.c: thread local allocation
22310
22311 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22312
22313         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22314
22315         * Makefile.am: Link against the static version of libmonogc.
22316         
22317         * Makefile.am: Link the static versions of the convenience libraries
22318         into the mono executable.
22319
22320         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22321
22322 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22323
22324         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22325         on integer overflow.
22326
22327         * mini-amd64.c: Reorganize function call code.
22328
22329         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22330
22331 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22332
22333         * inssel-x86.brg: use xor eax,eax.
22334         
22335         * basic.cs: new tests
22336
22337 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22338
22339         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22340         in exception throwing code.
22341         
22342 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22343
22344         * inssel-x86.brg: use xor esi,esi.
22345
22346 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22347
22348         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22349         can trace methods compiled during mini_init () too.
22350
22351         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22352         CEE_CONV_U4.
22353
22354 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22355
22356         * Makefile.am: static link on x86 (r=zoltan)
22357
22358 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22359
22360         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22361         code since it causes some programs to fail.
22362
22363 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22364
22365         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22366
22367 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22368
22369         * mini.c: ovfops_op_map - add STACK_OBJ case for
22370         CONV_I 
22371         * basic.cs: add test_0_pin_string as test
22372         case for above.
22373
22374 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22375
22376         * Makefile.am: build C# if srcdir != builddir
22377
22378 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22379
22380         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22381         fall-through blocks.
22382
22383 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22384
22385         * driver.c: enable loop by default again and include abcrem in -O=all.
22386
22387 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22388
22389         * iltests.il: Add some localloc tests.
22390
22391         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22392
22393         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22394         Fixes #62574.
22395
22396         * inssel-amd64.brg: Add some optimizations.
22397
22398         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22399         for gcc-3.4.
22400
22401         * Makefile.am: Statically link mono against libmono on AMD64.
22402         
22403         * mini-amd64.c inssel-amd64.brg: Optimizations.
22404
22405 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22406
22407         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22408
22409         * tramp-amd64.c: Patch calling code in trampolines.
22410
22411 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22412
22413         * mini-amd64.c: pinvoke struct passing fixes.
22414
22415 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22416
22417         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22418         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22419
22420 2004-08-05  Duncan Mak  <duncan@ximian.com>
22421
22422         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22423         CEE_LDELEM_ANY.
22424
22425 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22426
22427         * mini-amd64.c (emit_move_return_value): Move return value for normal
22428         calls too.
22429
22430 2004-08-05  Martin Baulig  <martin@ximian.com>
22431
22432         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22433         `type->type'; just modify `type' itself when dealing with enums
22434         and generic instances.
22435         (check_call_signature): Make `simple_type' a `MonoType *'.
22436
22437 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22438
22439         * mini.c: Use OP_PADD to add offsets to addresses.
22440
22441         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22442
22443 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22444
22445         * mini-sparc.c (mono_arch_emit_epilog): fix check
22446         for folding last op into restore instruction
22447
22448 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22449
22450         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22451         helper methods using the code manager.
22452         
22453         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22454
22455         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22456
22457 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22458         
22459         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22460           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22461
22462         * mini-s390.c: fix tail processing
22463
22464 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22465
22466         * mini-ppc.c: mul.ovf.un exception name fix.
22467
22468 2004-08-03  Martin Baulig  <martin@ximian.com>
22469
22470         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22471         instances; before jumping to `handle_enum', also modify `ptype'.
22472
22473 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22474
22475         * cpu-sparc.md: fcall maximal length too small.
22476
22477 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22478
22479         * mini-amd64.c mini.h: Add initial support for passing/returning 
22480         structures to/from pinvoked methods.
22481
22482 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22483
22484         * mini-ppc.c: reg allocator fix.
22485
22486 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22487
22488         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22489
22490         * inssel.brg: Optimize memset on 64 bit machines.
22491
22492         * mini-amd64.c: Fix some vararg cases.
22493
22494 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22495
22496         * mini-s390.c: Corrected macro in emit_float_to_int
22497
22498         * s390-abi.cs: Tests to exercise the s390 ABI
22499
22500 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22501
22502         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22503         caller saved regs.
22504
22505         * basic.cs: Add a test for add.ovf.un.
22506
22507 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22508
22509         * mini-sparc.c: add case for OP_IDIV_UN
22510
22511 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22512
22513         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22514         
22515         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22516
22517 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22518
22519         * basic.cs: regression tests.
22520
22521         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22522         regressions.
22523
22524 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22525
22526         * basic.cs: Add a new test.
22527
22528         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22529         and AOT. Various fixes and optimizations.
22530
22531         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22532
22533 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22534
22535         * mini-ppc.c: make sure temp regs are not used for global reg
22536         allocation.
22537
22538 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22539
22540         * cpu-sparc.md: conv_i8 fix for 64bits
22541
22542         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22543
22544 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22545         
22546         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22547         add opcode for cmp BYTE PTR [eax], imm.
22548
22549         * inssel.brg: Make memcpy and memset takes bases.
22550
22551 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22552
22553         * *-amd64.*: More AMD64 work.
22554         
22555 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22556
22557         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22558         add a compare-not-equal opcode.
22559         
22560 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22561
22562         * mini.c: Use mono_init_from_assembly instead of mono_init.
22563         
22564 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22565
22566         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22567
22568         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22569
22570         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22571
22572         * inssel.brg: 64 bit fixes.
22573
22574         * mini.h (MonoCallInst): Add some AMD64 specific data.
22575
22576         * mini.h: Add some OP_P opcodes.
22577
22578 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22579
22580         * basic.cs: tests for 61797 and 61740
22581
22582 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22583
22584         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22585         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22586
22587 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22588
22589         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22590
22591         * *-amd64*.*: Ongoing AMD64 work.
22592
22593 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22594
22595         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22596
22597         * *-amd64*: Ongoing AMD64 work.
22598
22599         * mini-arch.h: Add AMD64 support.
22600
22601         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22602
22603         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22604
22605         * mini-ops.h: Add new opcodes.
22606
22607         * Makefile.am: Add AMD64 support.
22608
22609         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22610         rules into the inssel-long*.brg files.
22611
22612         * *-amd64.*: Add beginnings of AMD64 backend.
22613
22614 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22615
22616         * mini.c (print_dfn): commenting out the code that prints
22617         the cil. With -O=deadce, this makes -v -v crash.
22618         
22619         * cpu-pentium.md: make checkthis have a length of 2
22620
22621 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22622
22623         * mini-sparc.h: fix implementations of __builtin
22624         functions for Sun compiler for V9.
22625
22626 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22627
22628         * mini.c: use the new stelem.ref wrapper
22629         * exceptions.cs, arrays.cs: new stelem.ref tests
22630
22631 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22632
22633         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22634         new XSP should work with these changes).
22635
22636 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22637         
22638         * inssel-{long32,x86,}.brg: trivial optimizations.
22639         
22640 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22641
22642         * mini.c: load value when emitting box operation in
22643         constrained calls.
22644
22645 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22646
22647         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22648         is one byte shorter than cmp DWORD PTR [eax], 0.
22649
22650 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22651
22652         * inssel-ppc.brg: arguments on the stack are always
22653         relative to the stack pointer (spotted by Neale Ferguson).
22654
22655 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22656
22657         * exceptions-x86.c: delay appending the method name to the trace until
22658         after mono_jit_info_table_find is called, as this gets the real
22659         MonoMethod.
22660
22661 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22662
22663         * aot.c: register roots
22664
22665 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22666
22667         * aot.c : I could just use PLATFORM_WIN32 flag.
22668
22669 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22670
22671         * aot.c : Reverting the previous fix. This time it broke linux build.
22672
22673 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22674
22675         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22676
22677 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22678
22679         * mini.c (handle_stack_args): Remove some more debugging code.
22680         
22681         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22682
22683         * driver.c mini.h aot.c: Allow additional options to be specified with
22684         --aot and pass them to mono_compile_assembly.
22685
22686         * aot.c: Add experimental code to AOT compile all loaded assemblies
22687         on demand and save the code into a cache in the filesystem.
22688
22689         * aot.c: Add support for more wrapper methods.
22690         
22691         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22692         58863.
22693
22694         * cpu-*.md: Remove removed opcodes.
22695
22696         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22697         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22698         related icalls to marshal.c.
22699
22700 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22701
22702         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22703
22704         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22705
22706         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22707
22708 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22709         * liveness.c: If liveness is recomputated we need to reset the information
22710         for each variable. This way, if the liveness range has been narrowed
22711         by optimizations that happened after the last computation, we can return
22712         a smaller range.
22713         
22714         For example, if you have
22715         
22716         {
22717                 int i = 0;
22718                 
22719                 // Tons of code that does not affect i
22720                 
22721                 i = foo ();
22722                 ...
22723         }
22724         
22725         i = 0 is dead code and will be removed by SSA. However, when
22726         linear scan gets to the code, i will still appear to be live
22727         throughout the entire block. This prevents good register allocation.
22728
22729 2004-07-06  Martin Baulig  <martin@ximian.com>
22730
22731         * debug-mini.c (mono_debug_init_method): Allow
22732         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22733         (mono_debug_add_icall_wrapper): New method.
22734
22735         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22736
22737 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22738
22739         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22740         optimization.
22741
22742 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22743
22744         * aot.c (mono_aot_load_method): Fix loading of debug info.
22745
22746 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22747
22748         * aot.c: Add logging support.
22749
22750 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22751
22752         * mini.h: Add prototype for mono_print_method_from_ip.
22753
22754         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22755
22756         * inssel.brg: 64 bit fixes.
22757
22758         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22759         inssel-long32.brg.
22760
22761         * Makefile.am: Add SPARC64 support.
22762
22763 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22764
22765         * aot.c: Fix alignment problems on 32 bit platforms.
22766
22767 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22768
22769         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22770         SPARC64.
22771
22772         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22773         problems.
22774
22775         * mini.h: Bump AOT file version. Some 64 bit fixes.
22776
22777 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22778
22779         * inssel-sparc.brg: Add new rule to avoid register moves.
22780
22781         * inssel.brg: Add ldind_to_load_membase helper function.
22782
22783 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22784
22785         * mini.c: OffsetToStringData intrinsic.
22786         
22787 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22788
22789         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22790
22791         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22792         regression tests.
22793
22794         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22795 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22796
22797         * mini.c: reinstated mono_compile_get_interface_var()
22798         on x86, too, since the change breaks the Gtk# build there as well.
22799
22800 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22801
22802         * driver.c: remove loop from the default optimizations: it seems to
22803         interact badly with some of the other options (see bug #60613).
22804
22805 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22806
22807         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22808         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22809
22810 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22811
22812         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22813         vararg-using methods.
22814
22815 2004-06-21  Martin Baulig  <martin@ximian.com>
22816
22817         * mini/mini-exceptions.c
22818         (mono_handle_exception): Added `gpointer original_ip' argument.
22819         After calling mono_unhandled_exception(), call
22820         mono_debugger_unhandled_exception() and if that returns true,
22821         restore the context and return.
22822
22823 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22824
22825         * mini-ppc.c: prefer the use of relative branches so
22826         they won't need to be patched in aot code (patch from Patrick Beard).
22827
22828 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22829
22830         * aot.c: patch from Patrick Beard to make the output assembly
22831         more correct for the MacOSX assembler. Small tweak to
22832         generate sane images on Linux/PPC, too.
22833
22834 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22835
22836         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22837         case until bug #59509 is fixed (shows up in #60332).
22838
22839 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22840
22841         * mini.c: make sure the needed wrappers are compiled, too, with
22842         precomp.
22843
22844 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22845
22846         * driver.c: remove NPTL reference in --version output.
22847
22848 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22849
22850         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22851         generate valid assembly for the Mach-O assembler.
22852
22853 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22854
22855         * driver.c: don't include abcrem in the all optimization specifier
22856         since it slows down jit compilation too much for now.
22857
22858 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22859
22860         * mini.c: use BIGMUL only if both operands have the same signage.
22861         * iltests.il: Test for bug 60056. (errors related to signage in
22862         BIGMUL).
22863
22864         r=lupus.
22865
22866 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22867
22868         * mini.c, aot.c: memory leak fixes.
22869
22870 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22871
22872         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22873
22874 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22875
22876         * Makefile.am: remove the -static hack completely, it links in
22877         statically glib as well.
22878
22879 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22880
22881         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22882         * exceptions.cs: make it compile with new mcs/csc.
22883
22884 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22885         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22886         and added relevant test case.
22887
22888 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22889
22890         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22891         regressions in gtk-sharp.
22892
22893 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22894
22895         * exceptions.cs: New regression tests.
22896
22897         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22898
22899 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22900
22901         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22902
22903 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22904
22905         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22906
22907         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22908
22909 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22910
22911         * mini.c (mono_jit_runtime_invoke): Init class in this
22912         method instead of trusting mono_jit_compile_method to
22913         do the work (because wrappers can be in object class)
22914
22915 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22916
22917         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22918
22919         * basic-long.cs: New regression test.
22920
22921 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22922
22923         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22924         and div/rem checks.
22925
22926 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22927
22928         * Makefile.am: fix miguel's change to build mono statically against
22929         libmono (track build dependencies).
22930
22931 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22932
22933         * cfold.c: Some glib versions do not have G_MININT32.
22934
22935 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
22936
22937         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
22938         with precision of tan, atan, sin and cos, and implemented related
22939         regressions tests (fixes bug 54467, but one new problem appeared and
22940         is not fixed yet).
22941
22942 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22943
22944         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
22945
22946         * exceptions.cs: Add test for constant folding && division by zero.
22947
22948         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
22949         since driver.c is in libmono too, so the optimization was useless.
22950
22951         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
22952         variable to driver.c so the compiler can emit more efficient code to
22953         access them.
22954
22955 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22956
22957         * Makefile.am: don't distribute generated inssel.[ch] files.
22958
22959 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22960
22961         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
22962         into the default appdomain. Fixes #58707.
22963
22964         * jit-icalls.c: Remove the broken approximation for truncl, doing
22965         no conversion is better.
22966
22967         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
22968         Fixes #58863.
22969
22970 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22971
22972         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
22973         of the mcrxr instruction which is not available on some processors
22974         even if it's documented to be. Implement add and sub overflow correctly
22975         (still not complete for long unsigned). Speed up icalls a bit.
22976
22977 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
22978
22979         * mini.c (mono_jit_compile_method_with_opt): Make sure that
22980         we run .cctor in the current domain instead of target_domain.
22981         
22982         Fixes bug #58558, .cctor not being called in -O=shared.
22983
22984 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22985
22986         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
22987
22988 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
22989
22990         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
22991         which can be done with an imm8, do it that way.
22992         (mono_arch_output_basic_block): ditto for a jmp
22993         (mono_arch_emit_prolog): Computate maximum offset of a label.
22994
22995 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
22996
22997         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
22998         now tries to allocate prefered physical reg's for virtual
22999         regs. This reduces the number of emited spills/loads with
23000         20-30% on our core assemblies.
23001
23002 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23003
23004         * jit-icalls.c: truncl() is not needed and trunc() is
23005         the correct thing to do anyway (bug #58287).
23006
23007 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
23008
23009         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
23010         if available.
23011
23012 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
23013
23014         * driver.c: enable loop optimizations by default.
23015
23016 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
23017
23018         * mini-x86.c: fix calc of max loop size when aligning loops start.
23019
23020 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
23021
23022         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
23023         the stack.
23024
23025 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
23026
23027         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
23028         should set carry.
23029
23030         * basic-long.cs: Add tests for add/subtract of immediates with carry.
23031
23032         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
23033         
23034         * mini.c (inline_method): Allways inline some wrappers even if the cost
23035         is too large. Fixes #58785.
23036
23037         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
23038         
23039 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
23040
23041         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
23042         (crichton@gimp.org). Beginning of support for sparc/linux.
23043
23044         * mini-sparc.c: Optimize retrieval of LMF address.
23045
23046 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
23047
23048         * exceptions-ppc.c:  handle alloca in methods with clauses.
23049
23050 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
23051
23052         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
23053
23054 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
23055
23056         * mini.c: Delegate most of the abort signal work to 
23057           mono_thread_request_interruption, which also handles Stop and Suspend
23058           states.
23059
23060 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
23061
23062         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
23063         supports the save/restore lmf opcodes.
23064
23065 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
23066
23067         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
23068         by gcc-3.4 as well.
23069
23070         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
23071
23072 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23073
23074         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
23075         methods which contain array accesses.
23076
23077         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
23078         boundaries. Fixes #58537.
23079
23080         * iltests.il: Add regression test for #58537.
23081
23082 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23083
23084         * mini-x86.c (mono_arch_local_regalloc): Last part of
23085         fix for bug #58633 (releasing register to early).
23086
23087 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
23088
23089         * basic-long.cs: Add new regression test.
23090
23091 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23092
23093         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
23094         register too early on the chain.
23095
23096 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23097
23098         * mini.c (create_helper_signature): Use a helper function to reduce
23099         the code which needs to be written. Also set the calling convention of
23100         icalls on windows. Fixes #57840.
23101
23102 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
23103
23104         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
23105         exceptions-ppc.c: added helper function to get the instruction address
23106         from a signal handler context.
23107
23108 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23109
23110         * helpers.c: use g_get_tmp_dir. Invokes happyness 
23111         from gonzalo.
23112
23113 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23114
23115         * helpers.c: Add new env variable to pass args to objdump.
23116         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
23117
23118 2004-05-17  Radek Doulik  <rodo@ximian.com>
23119
23120         * Makefile.am (common_sources): added abcremoval.h so it get
23121         disted and daily mono packages on go-mono.com will build again
23122
23123 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
23124
23125         * abcremoval.c: Fixed coding style, added copyright header.
23126
23127         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
23128
23129         * mini.h: Added prototype for abc removal main function.
23130
23131         * build_relations_propagation_table.pl: Added copyright header.
23132
23133 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23134
23135         * basic-long.cs: reg test for complex ceq_long bug.
23136
23137 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23138
23139         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
23140         reg in long and clob case (bug #58343). Fixed/added comments.
23141
23142 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
23143
23144         * mini.c (mono_jit_runtime_invoke): Follow new convention
23145         of calling the invoke method with an function pointer.
23146
23147 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
23148
23149         * ChangeLog: Fix author of memory leak patch.
23150
23151 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
23152
23153         * Makefile.am: fix make dist as well...
23154
23155
23156 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
23157
23158         * cfold.c: Made so that conversions from pointer to int4 are no-ops
23159         on archs where pointers are 4 bytes long.
23160
23161         * Makefile.am: Added abcremoval.c source file.
23162
23163         * abcremoval.c: Added abcremoval.c.
23164
23165         * abcremoval.h: Added abcremoval.h.
23166
23167         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
23168
23169         * inssel.brg: Enabled bounds check removal.
23170
23171         * mini.c: Added support for abcrem optimization.
23172
23173         * mini.h: Added abcrem optimization label.
23174
23175         * driver.c: Added support for abcrem optimization.
23176
23177         * propagated_relations_table.def: Added propagated_relations_table.def.
23178
23179 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23180
23181         * mini.c, cfold.c: fix style.
23182
23183 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23184
23185         * mini.c: handle issue with the low-level implementation of
23186         some long opcodes (bug #54209).
23187
23188 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23189
23190         * basic.cs: test for my new cmov stuff.
23191
23192 2004-05-13      Patrik Torstensson
23193
23194         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23195         opt and added peephole documentation.
23196
23197 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23198
23199         * tramp-ppc.c: rewrote the generic trampoline code.
23200
23201 2004-05-11      Patrik Torstensson
23202
23203         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23204
23205 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23206
23207         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23208
23209         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23210         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23211
23212         * mini.c: Add new icalls for AsAny marshalling.
23213
23214 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23215
23216         * tramp-ppc.c, mini-ppc.c: more cleanups.
23217
23218 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23219
23220         * mini.c: no warnings.
23221
23222 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23223
23224         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23225
23226 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23227
23228         * mini.c: In the thread abort signal handler, if the thread is in the
23229         process of being stoped, don't throw the Abort exception, just stop the
23230         thread.
23231
23232 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23233
23234         * tramp-ppc.c: removed old code.
23235
23236 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23237
23238         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23239         do some simple speed optimizations on ppc.
23240
23241 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23242
23243         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23244         and large offsets in load/store.
23245
23246 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23247
23248         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23249         it causes regressions.
23250
23251 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23252
23253         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23254         support.
23255
23256 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23257
23258         * jit-icalls.c: remove warnings.
23259         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23260         speedups for unsafe code.
23261
23262 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23263
23264         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23265
23266 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23267
23268         * basic-calls.cs: Add new regression test.
23269
23270         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23271         more portable.
23272
23273         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23274
23275         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23276         is no longer used.
23277
23278 2004-05-06      Patrik Torstensson
23279
23280         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23281         long reg allocation in any reg (not only eax:edx) and implemented 
23282         long shl/shr ops in asm instead of helpers.
23283
23284 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23285
23286         * mini-sparc.h: Fix warnings.
23287
23288         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23289         stack.
23290
23291         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23292         separate statement for clarity.
23293
23294         * mini-sparc.c: Update status.
23295
23296 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23297
23298         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23299         here.
23300
23301 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23302
23303         * inssel-ppc.brg: another small pre-release workaround:
23304         we don't do overflow detection for long_sub_un.
23305
23306 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23307
23308         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23309         (also works around a weird ppc bug: 57957).
23310
23311 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23312
23313         * tramp-ppc.c: trampoline fixes.
23314
23315 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23316
23317         * mini-ppc.c: fixed typos.
23318
23319 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23320
23321         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23322         at the top of the stack. Fixed typos. Use a frame registers
23323         for all the methods with exception clauses.
23324
23325 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23326
23327         * exceptions-ppc.c: restore fp registers.
23328
23329 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23330
23331         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23332         order from the stack top (moved the stack room to save the
23333         return value for trace after the param area). Fixed corruption
23334         in restoring registers on unwind.
23335
23336 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23337
23338         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23339
23340 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23341
23342         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23343         and prolog/epilog for methods that use it. Allow
23344         enough param area room for varargs methods. Fix miguel's
23345         breakage in exception handling.
23346
23347 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23348
23349         * Makefile.am: run genmdesc only on current arch.
23350
23351 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23352
23353         * exceptions-x86.c:
23354         * mini-x86.h: fix the build on windows.
23355
23356 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23357
23358         * 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.
23359
23360         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23361
23362         * mini-exceptions.c: New file.
23363         
23364         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23365         Move some parts of the x86 exception handling code to an 
23366         arch-independent file so it can be shared with other ports.
23367
23368 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23369
23370         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23371
23372 2004-04-26  David Waite  <mass@akuma.org>
23373
23374         * driver.c: remove comma from end of enumeration declaration
23375
23376 2004-04-26  Jackson Harper  <jackson@ximian.com>
23377
23378         * driver.c: parse config file before loading first assembly. This
23379         allows the user gac to be enabled/disabled. 
23380         
23381 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23382
23383         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23384         simpler mechanism: we do not care what is encoded initially
23385         (branch absolute or relative), we care about the code and its
23386         target.  I kept the old code for reference for now.
23387
23388         The new code tries first to determine if the jump is anywhere in
23389         the -/+32 absolute meg range, if it succeeds, it encodes using the
23390         absolute branch;  If not, it tried to find something in the
23391         relative range, if not, it uses the handle_thunk code. 
23392
23393 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23394
23395         * exceptions-ppc.c: use the correct ip register on macosx.
23396
23397 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23398
23399         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23400
23401 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23402
23403         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23404         Raise exception on integer divide by zero by hand since the hw
23405         doesn't support it. Handle NaNs in FP compares.
23406
23407 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23408
23409         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23410         code reducing duplication between the platforms and enabled
23411         signal exception handling (on linux for now).
23412
23413 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23414
23415         * exceptions-ppc.c: more macosx support.
23416
23417 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23418
23419         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23420
23421 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23422
23423         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23424
23425 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23426
23427         * iltests.il: more tests.
23428
23429 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23430
23431         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23432         vars as well.
23433
23434 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23435
23436         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23437
23438 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23439
23440         * liveness.c: Mark variables as volatile in all basic blocks reachable
23441         from exception clauses.
23442
23443 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23444
23445         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23446         inlining.
23447
23448 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23449
23450         * iltests.il, basic.cs: more tests for regalloc.
23451
23452 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23453
23454         * iltests.il: Some tests for register allocation modifications
23455         I have locally.
23456
23457 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23458
23459         * exceptions.cs: Add regression test for bug #56782.
23460
23461         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23462         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23463         the beauty of fixing the same thing in 5 different files...
23464
23465 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23466
23467         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23468         methods.
23469
23470 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23471
23472         * mini.c: Add support for STRWLPARRAY marshalling convention.
23473
23474 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23475
23476         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23477         to init the context to setup the regs pointer).
23478
23479 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23480
23481         * exceptions-ppc.c: more exceptions work.
23482
23483 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23484
23485         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23486         not allowed.
23487
23488 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23489
23490         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23491         can use the memory directly.
23492
23493         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23494
23495         add x86_add_membase, x86_sub_membase, x86_mul_membase
23496
23497 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23498
23499         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23500         GENERAL_REGS they were also hardcoded for all PPC ports.
23501
23502         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23503
23504         Remove hard-coded limit for floating point registers, use
23505         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23506
23507         Notice that in MacOS X calling conventions you can fit a lot more
23508         floating point values in registers, so I should update the PInvoke
23509         test to excercise the passing of floating point values on the
23510         stack (currently broken).
23511         
23512 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23513
23514         * tramp-ppc.c (create_trampoline_code): Added
23515         JUMP_TRAMPOLINE_SIZE. 
23516         (ppc_magic_trampoline): Follow the pattern from
23517         x86_magic_trampoline: if code is set to zero, return. 
23518         (create_trampoline_code): Always pass MonoMethod to the jump
23519         trampoline, before it was passing a null.
23520         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23521         share the code with mono_arch_create_jit_trampoline. 
23522
23523         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23524         implemented.
23525         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23526         implemented.  
23527
23528         * cpu-g4.md: Added length for jmp instruction, the worst case
23529         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23530         for save_lmf).
23531
23532 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23533
23534         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23535
23536 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23537
23538         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23539         before each IL instruction.
23540
23541         * mini.c (CEE_BOX): Fix warnings.
23542
23543 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23544
23545         * mini.c: removed a few unused vars and extra whitespace.
23546
23547 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23548
23549         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23550         checks.
23551         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23552         index.
23553         (OP_GETCHR): use the above
23554         (CEE_LDELEMA): use the above.
23555
23556         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23557         version of the generic impl.
23558         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23559         (CEE_LDELEMA): use the above.
23560
23561 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23562
23563         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23564         Fixes #56317.
23565
23566         * iltests.il: Added new regression test for #56317.
23567
23568 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23569
23570         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23571         under NetBSD. Fixes #56450.
23572
23573         * liveness.c (update_gen_kill_set): Fix previous patch.
23574
23575 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23576
23577         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23578
23579 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23580
23581         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23582         ldsfld and ldsflda.
23583
23584         * inssel-sparc.brg: Add more optimizations.
23585
23586         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23587
23588 2004-04-01  Martin Baulig  <martin@ximian.com>
23589
23590         * mini.c (handle_box): New static function; moved the
23591         implementation of CEE_BOX here.
23592         (mono_method_to_ir): Added `constrained_call' variable.
23593         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23594         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23595         mono_method_get_constrained() to get the method.
23596
23597 2004-04-01  Martin Baulig  <martin@ximian.com>
23598
23599         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23600         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23601         (mono_method_to_ir): We don't need these macros anymore since
23602         mono_class_get_full() already takes care of it. 
23603
23604 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23605
23606         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23607         use @function (as doesn't accept #function here) and check the return
23608         value of system and stop if fails.
23609
23610 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23611
23612         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23613
23614 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23615
23616         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23617
23618         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23619
23620         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23621         #56223.
23622
23623         * basic-long.cs: Add test for negation of Int64.MinValue.
23624
23625 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23626
23627         * mini-sparc.c: Update status.
23628
23629         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23630
23631         * exceptions-sparc.c: Fix return value in filters.
23632
23633         * inssel-sparc.brg: Fix register allocation in some rules.
23634
23635 2004-03-28  Martin Baulig  <martin@ximian.com>
23636
23637         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23638         if neccessary.  
23639
23640 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23641
23642         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23643         
23644         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23645         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23646         remove unused conv_u4 opcode.
23647
23648         * mini-x86.c: Remove valgrind workaround since it slows down things
23649         even when mono is not run under valgrind.
23650
23651 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23652
23653         * mini-sparc.c: Update status.
23654
23655         * inssel-sparc.brg: Add some optimizations.
23656
23657         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23658         future delay slot filling. Add support for varargs, tail calls and JMP.
23659
23660         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23661         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23662
23663         * inssel.brg: Fix register allocation in OP_ARGLIST.
23664
23665         * inssel.brg: Fix warnings.
23666
23667 2004-03-25  Martin Baulig  <martin@ximian.com>
23668
23669         * mini.c (inflate_generic_field): Removed.
23670         (mini_get_method): Removed, use mono_get_method_full(),
23671         (mini_get_class): Removed, use mono_class_get_full().
23672         (mono_method_to_ir): Pass our generic context to
23673         mono_field_from_token().        
23674
23675 2004-03-25  Martin Baulig  <martin@ximian.com>
23676
23677         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23678         of a `MonoMethod *'.
23679         (mini_get_method): Take a `MonoGenericContext *' instead
23680         of a `MonoMethod *'.
23681         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23682         a new local variable called `generic_context' which holds the
23683         current `MonoGenericContext *'; use it to lookup things.
23684
23685 2004-03-24  Martin Baulig  <martin@ximian.com>
23686
23687         * mini.c (mini_get_class): New static method; if we're inside a
23688         generic instance, inflate the class if neccessary.
23689         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23690
23691 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23692
23693         * iltests.il: New regression test for #55976.
23694
23695         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23696         #55976.
23697
23698 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23699
23700         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23701         output.
23702
23703 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23704
23705         * liveness.c: Consider SSA stores as well as loads when making vars
23706         volatile.
23707
23708         * exceptions.cs: New regression tests for register allocation.
23709         
23710 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23711
23712         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23713         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23714           domain lock only to protect puntual access to data structures.
23715           Added access lock for sighash, jit_icall_hash_name, 
23716           jit_icall_hash_addr and domain->code_mp.
23717
23718 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23719
23720         * driver.c: Print SIGSEGV handling method.
23721
23722         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23723
23724         * mini.c (setup_jit_tls_data): Handle case when this is called
23725         multiple times for a thread.
23726
23727         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23728         is different from fbxx_un. Fixes #54303. Also use constants instead of
23729         magic numbers in a lot of places.
23730
23731 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23732
23733         * exceptions.cs: Fix cctor test when --regression is used.
23734
23735 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23736
23737         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23738         for Linux/ppc.
23739
23740 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23741
23742         * inssel-ppc.brg: fixed register assignments for some rules.
23743
23744 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23745
23746         * exceptions.cs: Add test for exceptions in static constructors.
23747
23748         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23749         static constructors outside the domain lock. Fixes #55720.
23750
23751 2004-03-17  Martin Baulig  <martin@ximian.com>
23752
23753         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23754         (inflate_generic_field): Take the `MonoMethod *' instead of the
23755         `MonoClass *' and added support for generic method.
23756         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23757         have a `field->parent->gen_params', only inflate the field if it's
23758         an open constructed type.
23759
23760 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23761
23762         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23763         exception object instead of the preconstructed ones.
23764
23765 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23766
23767         * mini.c: reverted changed to sigsegv_signal_handler commited
23768         accidentally in the previous patch.
23769
23770 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23771
23772         * mini.c:
23773         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23774         running --aot with an old assembly.
23775
23776 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23777
23778         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23779         point values.
23780
23781         * mini-sparc.c: Add support for v9 branches with prediction.
23782
23783 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23784
23785         * mini.c (mini_init): #warning is GNUC only
23786
23787         * mini-sparc.h: implement __builtin_frame_address
23788         and __builtin_return_address for Sun C compiler
23789
23790 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23791
23792         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23793
23794 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23795
23796         * basic-calls.cs: Add test for unaligned byref long argument passing.
23797
23798         * mini-ops.h: Add sparcv9 compare and branch instructions.
23799
23800         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23801         v9 instructions if we have a v9 cpu.
23802
23803         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23804         registers for global allocation.
23805
23806         * exceptions-sparc.c: Fixes.
23807         
23808 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23809
23810         * liveness.c (mono_analyze_liveness): Optimized version.
23811
23812         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23813
23814         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23815         sparc work.
23816
23817         * basic-float.cs basic-calls.cs: New regression tests.
23818
23819 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23820
23821         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23822         sigaltstack implementation.
23823
23824         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23825         
23826         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23827         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23828
23829 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23830
23831         * mini.c: Fix warnings.
23832         
23833         * mini.c (mono_resolve_patch_target): New function which contains the
23834         arch independent part of the patching process.
23835
23836         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23837         patching code to a separate function.
23838
23839 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23840
23841         * mini.c (add_signal_handler): ifdef out on Windows
23842
23843 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23844
23845         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23846         cpu-sparc.md: Add exception handling support + other fixes.
23847
23848         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23849         typed GC detection in --version.
23850
23851         * basic.cs exceptions.cs: New regression tests.
23852
23853         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23854         the arch specific code can store data during a compilation.
23855
23856         * mini-ops.h: Add OP_SETFRET.
23857
23858         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23859         function, register a separate icall for each arity, so the icalls can
23860         get a wrapper.
23861         
23862         * mini.c (mono_print_tree): Print negative offsets in a more readable
23863         form.
23864         
23865         * mini.c: Make signal handling work on sparc.
23866         
23867         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23868
23869         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23870
23871         * jit-icalls.c: Emulate truncl by aintl on solaris.
23872
23873         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23874
23875 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23876
23877         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23878
23879 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23880
23881         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23882         a MarshalByRef type, inline a method that performs the check, taking into
23883         account that the object can be a proxy. Also implemented tow new opcodes:
23884         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23885         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23886         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23887
23888 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23889
23890         * mini-ppc.c: if a relative branch displacement is too big
23891         but it points to and area reachable with an absolute branch, 
23892         avoid the thunks.
23893
23894 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23895
23896         * mini.c: optimize small copies in cpblk.
23897
23898 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23899
23900         * basic-calls.cs basic-float.cs: New regression tests.
23901
23902         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23903         negative offsets from %fp. Implement localloc. Fix local register 
23904         allocation. Fix the case when the this argument needs to be saved to
23905         the stack. Implement some missing opcodes.
23906
23907 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23908
23909         * mini.c (mini_method_compile): Reenable global regalloc in methods
23910         with exception handlers.
23911
23912         * linear-scan.c (mono_varlist_sort): Fix warning.
23913
23914         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23915
23916         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23917         regalloc costs.
23918
23919         * liveness.c: Make all variables uses in exception clauses volatile, to
23920         prevent them from being allocated to registers. Fixes #42136.
23921
23922 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23923
23924         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23925         causes regressions.
23926
23927         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23928         argument to mono_arch_regalloc_cost.
23929
23930         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
23931         precisely.
23932
23933 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
23934
23935         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
23936         Make the cost of allocating a variable to a register arch dependent.
23937
23938         * basic-calls.cs: Fix compilation of tests.
23939         
23940         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
23941         helper function to cut back on the number of #ifdefs needed.
23942
23943         * mini-ppc.c: Fix compilation.
23944
23945         * basic-calls.cs: New regression tests.
23946
23947         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
23948
23949         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
23950         of l0 since that is callee saved.
23951
23952         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
23953         to virtual calls.
23954
23955         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
23956         of delay instruction.
23957
23958         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
23959
23960         * mini.h (MonoCallInst): Add 'virtual' flag.
23961
23962         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
23963
23964 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23965
23966         * *.cs: New regression tests.
23967
23968         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
23969         work.
23970
23971         * mini.c (mono_runtime_install_handlers): Fix build.
23972
23973         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
23974         'signal_stack_size' members.
23975
23976         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
23977         alternate signal stack.
23978
23979         * exceptions-x86.c: Add stack overflow handling.
23980
23981         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
23982         functions to arch independent code.
23983
23984         * mini.c (mono_print_tree): Print more detailed info for load_membase
23985         opcodes.
23986         
23987 2004-02-23  Martin Baulig  <martin@ximian.com>
23988
23989         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
23990
23991 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23992
23993         * mini-x86.c: fixed reg allocation for div/rem.
23994
23995 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
23996
23997         * driver.c (mono_main): Report some configuratio options on --version.
23998
23999 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
24000
24001         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
24002         low in the address space. Correctly flush memory in thunks where we
24003         output native code.
24004
24005 2004-02-20  Martin Baulig  <martin@ximian.com>
24006
24007         * mini.c (mini_get_method): New static method; inflate all generic
24008         methods and methods in open generic instances.
24009         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
24010         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
24011
24012 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24013
24014         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
24015
24016         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
24017
24018 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
24019
24020         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
24021
24022         * mini-sparc.c (flushi mono_arch_output_basic_block): make
24023         it compile using Sun's compiler.
24024
24025 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24026
24027         * 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.
24028
24029         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
24030
24031 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
24032
24033         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
24034         code.
24035         * mini-ppc.c: handle calls outside of the allowed range with thunks
24036         allocated using the code manager.
24037         * tramp-ppc.c: use the code manager to hold generated native code.
24038         Fixed the magic trampoline to just patch vtable entries.
24039
24040 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
24041
24042         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
24043         independent file.
24044
24045 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
24046
24047         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
24048         PPC.
24049
24050         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
24051         if we have a working __thread implementation.
24052
24053         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
24054         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
24055
24056 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
24057
24058         * mini-x86.c: Fix compilation under gcc 2.
24059         
24060 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
24061
24062         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
24063         contains a call to the wrapped function.
24064
24065         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
24066         OP_<CALL>_IMM opcodes, and use them under X86.
24067         
24068         * mini.c (mono_jit_find_compiled_method): Fix warning.
24069
24070         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
24071
24072         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
24073
24074         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
24075         functionality to mini.c.
24076
24077         * mini.c (mono_create_jump_trampoline): New function to create a jump
24078         trampoline. Return a compiled method instead of a trampoline if it
24079         exists. Add a cache for jump trampolines.
24080
24081         * mini.c (mono_jit_find_compiled_method): New function to return a
24082         compiled method if it exists.
24083
24084         * mini-x86.c: Call mono_create_jump_trampoline instead of 
24085         mono_arch_create_jit_trampoline.
24086
24087         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
24088         a jump trampoline. Fixes #52092.
24089         
24090 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
24091
24092         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
24093         which is not up-to-date. Add check_corlib_version () instead.
24094
24095         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
24096         have to call it.
24097         
24098         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
24099         since newer valgrind versions do not need it.
24100
24101         * mini.c (mono_jit_compile_method_with_opt): New helper function to
24102         compile a method with a given set of optimizations.
24103
24104         * mini.c: Compile icall wrappers on-demand instead of at startup.
24105
24106         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
24107         wrapper for an icall.
24108
24109 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
24110
24111         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
24112         #54063.
24113
24114         * iltests.il: Add test for non-empty stack before switch instruction.
24115
24116 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
24117
24118         * mini.c: Add support for new stringbuilder marshalling conventions.
24119
24120         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
24121
24122 2004-02-01  Martin Baulig  <martin@ximian.com>
24123
24124         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
24125         in `ginst->mtype_argv'.
24126
24127 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
24128
24129         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
24130         facilitate grepping.
24131
24132 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
24133
24134         * mini.c: fixed buglet in initobj generic implementation for references.
24135
24136 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
24137
24138         * Makefile.am: make the version script conditional.
24139         * jit-icalls.c: handle missing truncl().
24140
24141 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
24142
24143         * exceptions.cs: Add more tests for double->int conversion.
24144
24145         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
24146         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
24147
24148 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
24149
24150         * driver.c: make --verbose --version emit an error
24151         if the loaded corlib doesn't match the runtime version.
24152
24153 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24154
24155         * mini-ppc.h: export ppc_patch().
24156         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
24157         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
24158         on par or better than on MacOSX.
24159
24160 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
24161
24162         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
24163         mono_lookup_pinvoke_call.
24164
24165         * mini-x86.c: Under windows, the default pinvoke calling convention is
24166         stdcall. Fixes #52834.
24167
24168         * mini.c (optimize_branches): Add an upper bound to the number of
24169         iterations to prevent infinite loops on strange loops. Fixes #53003.
24170
24171 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24172
24173         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
24174         and ISINST. Fixes #52093.
24175
24176         * objects.cs (test_0_vector_array_cast): New tests.
24177         
24178 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24179
24180         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24181         checking in Array.Set ().
24182
24183         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24184         #52590.
24185
24186         * object.cs (test_0_multi_array_cast): New regression test.
24187
24188 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24189
24190         * exceptions-ppc.c: fix build on Linux/PPC.
24191
24192 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24193
24194         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24195         running under valgrind.
24196         (x86_magic_trampoline): Fix build bustage.
24197
24198         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24199         negative values as well. This is needed for the encoding of the line number
24200         info, since sometimes the line numbers are not in increasing order.
24201
24202 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24203
24204         * cpu-pentium.md (localloc): Increase the size of the localloc 
24205         instruction since it is a loop under Win32.
24206
24207         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24208         allocation.
24209
24210 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24211
24212         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24213         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24214         Max Horn (max@quendi.de). Fix file names in comments.
24215
24216 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24217
24218         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24219         avoid stack overflow.
24220         (replace_usage): Avoid uninitialized variable warnings.
24221
24222         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24223         and taking the address of valuetype variables.
24224
24225 2004-01-03  Patrik Torstensson
24226
24227         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24228         for other purposes than FP later on.
24229
24230 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24231
24232         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24233         of tail calls.
24234
24235 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24236
24237         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24238
24239 2003-12-30  Patrik Torstensson <p@rxc.se>
24240
24241         * mini-x86.h: Decreased number of availiable fp regs.
24242         Solves corner cases with FP spilling.
24243
24244 2003-12-23  Patrik Torstensson <p@rxc.se>
24245
24246         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24247         for floating point stack tracking / spilling on x86. 
24248         Fixes bug #49012.
24249         
24250         * basic-float.cs: added float mul overflow test.
24251
24252 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24253
24254         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24255
24256 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24257
24258         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24259         supports for cond branches that overflow the immediate
24260         overflow offset. mcs can compile simple programs.
24261
24262 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24263
24264         * exceptions-ppc.c: exception handling support wip:
24265         finally handlers get run on exception.
24266
24267 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24268
24269         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24270         profiling.
24271
24272 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24273
24274         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24275         initial support for stack walking and unwinding.
24276
24277 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24278
24279         * driver.c (mono_main): Make corlib-out-of-sync message more 
24280         descriptive. Also remove verify_corlib call.
24281
24282 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24283
24284         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24285         not overlap with other call's arguments, too.
24286
24287 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24288
24289         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24290         move to arch-specific code the choice of arch-specific
24291         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24292         * mini.c: ensure emulation calls will not interleave
24293         with other calls.
24294
24295 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24296
24297         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24298         the magic trampoline stack frame is dropped before executing
24299         the new method.
24300
24301 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24302
24303         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24304         and integer to fp conversions. Added support for overflowing
24305         arguments on the stack. Reserve a couple more registers as temps.
24306         Added support for aot compilation (as output still needs to be
24307         tweaked, though).
24308
24309 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24310
24311         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24312         Don't overwrite return register in some corner cases.
24313
24314 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24315
24316         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24317         static constructors when AOT compiling.
24318
24319         * driver.c (mono_main): Call mono_check_corlib_version.
24320
24321 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24322
24323         * cpu-g4.md, basic.cs: fixed div target register.
24324
24325 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24326
24327         * mini-ppc.c, basic.cs: shl_imm fix with test.
24328
24329 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24330
24331         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24332         structures by value. Misc fixes.
24333         * objects.cs: more tests.
24334
24335 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24336
24337         * mini-ppc.c: lconv.ovf.i implemented.
24338
24339 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24340
24341         * mini.c:
24342         (mini_init): don't error out if someone already called g_thread_init.
24343
24344 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24345
24346         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24347         to be any type per the spec. Fix abnormal memory usage when
24348         the same object is repeatedly thrown.
24349
24350 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24351
24352         * mini.c: check for overruns in IL code.
24353
24354 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24355
24356         * TODO: Add/remove some todo entries.
24357
24358 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24359
24360         * driver.c (mono_main): Call mono_verify_corlib.
24361
24362 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24363
24364         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24365         This has been moved to mini.c
24366         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24367         type being casted is marshalbyref it could be a proxy, so instead of
24368         emitting the type check code, emit a call to a runtime method that will
24369         perform the check by calling CanCastTo if needed.
24370
24371 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24372
24373         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24374         methods with large stack frames under Win32.
24375
24376 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24377
24378         * Makefile.am: Distribute regression tests.
24379
24380         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24381         at the end instead of inserting each variable into the sorted list.
24382
24383         * linear-scan.c (mono_varlist_sort): New helper function.
24384         
24385 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24386
24387         * mini.c: ensure arguments and locals are within bounds.
24388
24389 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24390
24391         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24392         related fixes.
24393
24394 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24395
24396         * mini.c (mono_cprop_copy_values): Fix crash.
24397
24398         * aot.c: Set verbosity back to 0.
24399         
24400 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24401
24402         * regalloc.c: complete memory leak fix by Laurent Morichetti
24403         (l_m@pacbell.net).
24404
24405 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24406
24407         * driver.c (main_thread_handler): Revert the previous patch.
24408
24409         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24410         under valgrind.
24411
24412         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24413         memory from the memory pool.
24414
24415         * driver.c (main_thread_handler): Turn on all optimizations when
24416         --aot is used.
24417
24418         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24419         an array for better performance.
24420
24421         * regalloc.c (mono_regstate_assign): Fix memory leak.
24422
24423         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24424         serialize the debug info.
24425
24426         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24427         debug info from the serialized representation.
24428
24429         * aot.c: Save debug info into the generated file and load it when 
24430         loading a method.
24431
24432         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24433
24434 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24435
24436         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24437         More FP-related fixes.
24438
24439 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24440
24441         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24442         and register allocation buglet. Hello world now runs.
24443
24444 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24445
24446         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24447         * tramp-ppc.c: fixed class init trampoline.
24448         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24449
24450 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24451
24452         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24453         mini.c: more ppc changes/fixes.
24454
24455 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24456
24457         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24458         Also optimize the case when the arguments are the same in the caller 
24459         and in the callee.
24460
24461         * iltests.il: Add tests for tail calls with valuetype arguments.
24462
24463 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24464
24465         * mini-ppc.c: fixes for struct return type.
24466
24467 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24468
24469         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24470         mono_spillvar_offset() to arch-specific code.
24471
24472 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24473
24474         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24475
24476 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24477
24478         * exceptions-x86.c: Fix stack space leaks.
24479         
24480         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24481         registers from the lmf if the method has save_lmf set.
24482
24483 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24484
24485         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24486         of icall wrappers into InvokeInDomain, since these are now per-domain.
24487
24488 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24489
24490         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24491         make some opcode emulation and intrinsic ops enabled/disabled 
24492         according to the architecture. More fixes.
24493
24494 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24495
24496         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24497
24498 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24499
24500         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24501         arch-specific handling for 'this' and struct return type to
24502         arch-specific code.
24503
24504 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24505
24506         * aot.c: prevent divide by zero error when reporting (it happened with
24507         Accessibility.dll).
24508
24509 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24510
24511         * mini.h (inst_switch): Remove unused macro.
24512
24513 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24514
24515         * aot.c:
24516         (load_aot_module): free 'info->methods' and 'info' properly. No more
24517         "free(): invalid pointer blah" messages when you have an old aot
24518         compiled assembly.
24519
24520 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24521
24522         * jit-icalls.c, mini.c: Added support for context static fields.
24523
24524 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24525
24526         * mini.c (mono_method_blittable): Methods which set LastError are not 
24527         blittable either. Fixes #51108.
24528         
24529 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24530
24531         * mini.c: flush icache.
24532         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24533
24534 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24535
24536         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24537
24538 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24539
24540         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24541         safe on IA32.
24542
24543         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24544         vararg calls.
24545
24546         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24547
24548 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24549
24550         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24551         instruction when the result is discarded.
24552
24553         * iltests.il (test_0_div_regalloc): New regression test.
24554
24555         * arrays.cs: Fix compilation error.
24556
24557 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24558
24559         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24560         float rules to inssel-x86.brg: sane architectures with FP registers
24561         don't need to implement these rules.
24562
24563 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24564
24565         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24566
24567 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24568
24569         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24570         implementation of 32 bit systems.
24571
24572 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24573
24574         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24575         (Jeroen Zwartepoorte).
24576
24577 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24578
24579         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24580         the caller and the callee matches.
24581         
24582         * mini.c (mono_method_to_ir): Add comment.
24583
24584         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24585         signbit is missing on some platforms.
24586
24587 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24588
24589         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24590
24591         * mini.c (setup_jit_tls_data): Call the new function.
24592         
24593         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24594
24595         * mini-x86.c: Add experimental support for fast access to the lmf
24596         structure under NPTL/Linux 2.6.x.
24597
24598 2003-11-06  Martin Baulig  <martin@ximian.com>
24599
24600         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24601         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24602         the debugger.
24603
24604 2003-11-02  Martin Baulig  <martin@ximian.com>
24605
24606         * mini.c (inflate_generic_field): New static method.
24607         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24608         generic instance and the field is declared in a generic type, call
24609         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24610
24611 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24612
24613         * mini.h mini.c (mono_method_same_domain): New function to return
24614         whenever the caller and the callee are in the same domain.
24615
24616         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24617
24618 2003-10-30  Martin Baulig  <martin@ximian.com>
24619
24620         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24621         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24622         method parameters.
24623         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24624         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24625
24626 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24627
24628         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24629         propagation.
24630
24631         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24632         object here, so it is in the correct appdomain etc.
24633
24634 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24635
24636         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24637         already done.
24638         (mono_method_to_ir): Avoid freeing the type created returned from
24639         mono_type_create_from_typespec, since it is put into an internal cache
24640         by the function. Fixes pointer.exe.
24641
24642         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24643         trampolines for icalls and pinvokes as well. Fixes #33569.
24644
24645 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24646
24647         * mini.c: Update after appdomain changes.
24648
24649         * mini.c (mono_jit_compile_method_inner): Allways compile native
24650         method wrappers in the root domain, since there can only be one
24651         instance of them, whose address is stored in method->info.
24652
24653 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24654
24655         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24656         environment variable. Instead detect automatically whenever running
24657         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24658         valgrind.h.
24659
24660 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24661
24662         * trace.c, trace.h: New files that implement the new trace option
24663         parsing. 
24664
24665         * driver.c: Document new --trace options.
24666
24667         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24668         mini-x86.c: Apply:
24669
24670         -       if (mono_jit_trace_calls)
24671         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24672
24673         * mini.h: prototypes.
24674         
24675 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24676
24677         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24678
24679         * mini.c inssel.brg: Implement typedefbyref opcodes.
24680
24681         * mini.c (mono_jit_compile_method): Remove unused local variable.
24682
24683         * mini.c (mono_jit_compile_method_inner): Ditto.
24684         
24685 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24686
24687         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24688         
24689         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24690
24691 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24692
24693         * mini.c (mono_no_aot): Remove unused global variable.
24694
24695         * mini.c: Thread safety fixes.
24696
24697 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24698
24699         * mini.c (mono_create_class_init_trampoline): Add a lock around
24700         class_init_hash_addr.
24701
24702         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24703         #30073.
24704
24705         * mini.c: Decompose the NEWARR instruction before decomposing its
24706         arguments. Fixes #30073.
24707
24708 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24709
24710         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24711         convention.
24712
24713 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24714
24715         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24716
24717         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24718
24719         * driver.c: Add support for compiling icall wrappers to --compile.
24720
24721 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24722
24723         * inssel.brg: The empty value in class->interface_offsets is -1, not
24724         0. Fixes #49287.
24725
24726 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24727
24728         * objects.cs: New test for 'is' operator on an array of interfaces.
24729
24730 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24731
24732         * tramp-ppc.c: update trampoline code to support jumps
24733         and class initialization.
24734
24735 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24736
24737         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24738
24739         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24740
24741         * inssel.brg (OP_UNBOX): Remove unused rule.
24742
24743         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24744         region instead of one for each method. Fixes #47813.
24745
24746 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24747
24748         * exceptions.cs (test_0_nested_finally): New regression test for
24749         nested exception handlers.
24750
24751         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24752
24753         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24754
24755         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24756         inlining.
24757
24758         * mini.c (mono_method_check_inlining): Make the inlining limit 
24759         configurable by an environment variable.
24760         
24761         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24762
24763         * mini.h: Bump AOT file version.
24764
24765         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24766         token, store the image along with the token, since the token might not 
24767         refer to the same image as the method containing the relocation, 
24768         because of inlining.
24769
24770 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24771
24772         * mini.c (mono_precompile_assemblies): New function to compile
24773         all methods in all loaded assemblies.
24774
24775         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24776
24777         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24778         iassign and fassign to int*, since they can contain large negative
24779         values if the register is spilled. Also added some comments. Fixes
24780         #45817.
24781
24782         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24783         under Win32. Fixes #42964.
24784
24785 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24786
24787         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24788
24789         * aot.c: Added support for AOT compiling methods which contain calls
24790         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24791         handled.
24792         
24793         * driver.c (compile_all_methods): Run the compilation in a thread
24794         managed by mono. Fixes #44023.
24795
24796         * mini.c (mono_codegen): Print full method name in verbose output.
24797
24798         * mini-x86.c (mono_arch_patch_code): Fix warning.
24799         
24800         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24801         jumps, since the method we are jumping to might be domain-specific.
24802
24803         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24804
24805 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24806
24807         * inssel.brg: string chars are unsigned.
24808
24809 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24810
24811         * TODO: New todo item.
24812
24813         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24814         which calls mono_runtime_class_init and patches the call site to
24815         avoid further calls.
24816         (mono_arch_create_class_init_trampoline): New arch specific function 
24817         to create a class init trampoline.
24818         (create_trampoline_code): Generalized so it can create
24819         class init trampolines as well.
24820
24821         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24822         (mono_create_class_init_trampoline): New function to create and cache
24823         class init trampolines.
24824         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24825         vtable given the address of a class init trampoline. Used by the
24826         patching process.
24827         (mono_codegen): Generate a call to a trampoline instead of
24828         mono_runtime_class_init in LDSFLD[A].
24829         (mono_codegen): Add relocations for the new trampoline.
24830         
24831         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24832         MONO_PATCH_INFO_CLASS_INIT.
24833
24834         * mini.h: Bump AOT version number.
24835
24836         * aot.c: Create a copy of the loaded code instead of using the original
24837         so methods which call each other will be close in memory, improving
24838         cache behaviour.
24839         
24840         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24841         patch since it breaks the regression tests.
24842         
24843         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24844         for the register saving instruction sequence since the 
24845         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24846
24847 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24848
24849         * TODO: Fix todo item && remove another.
24850
24851 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24852
24853         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24854         previous checkin.
24855
24856         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24857         function of the module.
24858
24859         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24860         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24861         --no-aot command line option.
24862
24863 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24864
24865         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24866         by Bernie Solomon (bernard@ugsolutions.com).
24867
24868         * inssel.brg: Refactor the interface offset table related code into
24869         its separate functions and add support for the AOT case.
24870
24871 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24872
24873         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24874         
24875         * aot.c: Added mono_aot_verbose variable and made all debugging
24876         output depend on the value of this variable.
24877
24878         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24879         method_label and info_label.
24880
24881         * mini.h mini-x86.c aot.c: Added a new relocation type 
24882         MONO_PATCH_INFO_IID for klass->interface_id.
24883
24884         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24885         the MonoJitInfo structure.
24886
24887         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24888         a non-root appdomain in shared mode.
24889
24890 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24891
24892         * aot.c: make aot loader less verbose. Remove free of unused variable.
24893
24894 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24895
24896         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24897
24898         * .cvsignore: Added *.dll.
24899
24900         * mini.c (mono_print_tree_nl): New function callable while debugging.
24901
24902         * mini.c (mono_print_code): Export this.
24903
24904         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24905         patched code.
24906
24907 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24908
24909         * mini.h (MonoCompile): Added 'jit_info' field.
24910
24911         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24912         the cfg structure, since it is needed by the AOT compiler.
24913
24914         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24915
24916         * aot.c: A major rewrite. Changes include:
24917         - save exception tables for methods which have them.
24918         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24919         to g_module_symbol.
24920         - reworked the file format so it is now much smaller and needs
24921         fewer relocation entries.
24922         
24923 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24924
24925         * aot.c (load_aot_module): Fix build bustage on platforms without
24926         Boehm GC.
24927
24928 2003-09-04  Martin Baulig  <martin@ximian.com>
24929
24930         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
24931
24932 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24933
24934         * TODO: Some new optimization ideas.
24935
24936         * aot.c: Move AOT module loading logic here from mono_assembly_open.
24937
24938         * aot.c: Save the optimization flags used to compile the code into
24939         the AOT module.
24940
24941         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
24942         support emitting domain specific code.
24943         
24944         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
24945         no longer domain neutral. It can be made domain neutral by compiling 
24946         with --optimize=shared.
24947
24948         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
24949         between appdomains.
24950
24951         * driver.c mini.h mini.c: New --no-aot debugging option which disables
24952         loading of AOT code.
24953
24954         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
24955         
24956         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
24957         if there is no domain neutrality information.
24958
24959 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
24960
24961         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
24962         format version into the generated library.
24963
24964         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
24965         callee method into the caller since one of them could be shared.
24966
24967         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
24968         system exceptions from AOT code now works.
24969
24970         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
24971         method if it is domain neutral and the callee is not.
24972
24973         * graph.c (cfg_emit_one_loop_level): Fix warning.
24974
24975 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
24976
24977         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
24978         last checkin.
24979
24980 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
24981
24982         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
24983         is needed  by code which is executed before mono_runtime_init ().
24984         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
24985         
24986         * mini.c (mono_thread_abort): Fix warning.
24987         (mono_jit_compile_method): Call static constructor in the AOT case too.
24988
24989         * aot.c (mono_compile_assembly): Fix warning.
24990
24991 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24992
24993         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
24994
24995 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
24996
24997         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
24998
24999         * cpu-pentium.md: Fix the length of call opcodes so they include the
25000         ESP restoring instruction. Fixes #47968.
25001
25002 2003-08-28  Martin Baulig  <martin@ximian.com>
25003
25004         * mini-x86.c (mono_arch_call_opcode): Added support for
25005         MONO_TYPE_GENERICINST.
25006
25007         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
25008
25009 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
25010
25011         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
25012         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
25013
25014         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
25015         metadata_section.
25016
25017 2003-08-26  Martin Baulig  <martin@ximian.com>
25018
25019         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
25020         when reporting an error, set this to the actual error location.
25021         (mono_method_to_ir): Report the correct error location if
25022         get_basic_blocks() returned an error.
25023
25024 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25025
25026         * mini.c (mono_type_blittable): OBJECT is not blittable.
25027         (mono_method_blittable): Methods which have marshalling descriptors
25028         are not blittable either. Fixes #47842.
25029
25030 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
25031
25032         * driver.c mini.c: Use an environment variable instead of a global 
25033         variable. Also fix the build.
25034
25035         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
25036         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
25037         reporting this. 
25038
25039         * driver.c mini.c: Added --with-valgrind option to turn off some
25040         code which prevents mono from running under valgrind.
25041
25042         * mini.c (mono_emit_call_args): Fixed warning.
25043
25044         * mini.c (mono_emulate_opcode): Fixed warning.
25045
25046 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25047
25048         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
25049         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
25050         regalloc.c, regalloc.h: specify available registers in arch-specific
25051         code and support floats in the regallocator (patch by Laurent Morichetti 
25052         <l_m@pacbell.net>)
25053
25054 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25055
25056         * mini.c: mono_thread_current() can be called only after
25057         mono_runtime_init(): rearrange code to not call it early on.
25058
25059 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25060
25061         * mini.c: allocate jump tables in the code mempools.
25062
25063 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25064
25065         * mini.c, mini.h: make sure per-thread data allocated by the jit is
25066         freed.
25067
25068 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
25069
25070         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
25071         12 to 16.  This fixes bug #47453.
25072
25073
25074 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
25075
25076         * mini-ppc.c: fixed indexed load and unsigned compares.
25077
25078 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
25079
25080         * mini.c: reenabled installation of handler for
25081           thread abort signal.
25082
25083 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25084
25085         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
25086         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
25087         until it's fixed and actually useful.
25088
25089 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25090
25091         * inssel-long32.brg: couple more opcodes implemented.
25092
25093 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25094         
25095         * mini-sparc.c: Even more opcodes implemeted.
25096
25097 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
25098
25099         * mini-sparc.c: More opcodes implemented.
25100
25101 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
25102
25103         * mini-sparc.c: More opcodes implemented.
25104
25105 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25106
25107         * inssel-sparc.brg: Add some needed rules.  Direct
25108         copy from PPC.
25109         * Makefile.am: Use inssel-sparc.brg
25110         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
25111         an assert happy for now.
25112
25113 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
25114
25115         * mini-sparc.c: Fixed compile errors.
25116         * exceptions-sparc.c: Same.  We now produce a mono binary 
25117         on sparc-linux.  Yea.
25118
25119 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
25120
25121         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
25122         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
25123         They compile, but do not work.
25124
25125 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25126
25127         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
25128         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
25129         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
25130         (ct@gentoo.org).
25131
25132 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25133
25134         * mini.c: more opcodes implemented and better support for generics.
25135
25136 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25137
25138         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
25139         * mini.c, mini.h: first cut at generics support: some new instructions 
25140         added and changed the behaviour of some of the existing ones.
25141
25142 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25143
25144         * mini.c: Removed definition of metadata_shared mutex here.
25145
25146 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25147
25148         * mini-x86.c: make vararg calls work for instance methods.
25149
25150 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25151
25152         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
25153         returns the arguments in a separte list, now.
25154
25155 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25156
25157         * aot.c, mini.c: updates for array type representation changes.
25158
25159 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
25160
25161         * mini.c: register function to perform jit shutdown.
25162
25163 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25164
25165         * mini.c: use a faster allocator if possible.
25166
25167 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25168
25169         * aot.c: some cleanups and portability changes.
25170
25171 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25172
25173         * mini.c: use faster allocation for CEE_BOX if possible.
25174
25175 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25176
25177         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25178         Moved inlined mempcy code to its own function so that is can be
25179         reused. Added an inline memset function as well (optimized initobj).
25180         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25181
25182 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25183
25184         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25185
25186 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25187
25188         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25189         arch code can setup the cpu for CLR execution, if needed.
25190         We use it on x86 to set the precision of FP operations.
25191
25192 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25193
25194         * mini.c: disable some optimizations if we can guess they'll cost too
25195         much for a given method.
25196
25197 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25198
25199         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25200         
25201 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25202         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25203         info collection support.
25204
25205 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25206
25207         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25208         is now implemented in the profiling API. Get rid of a couple of
25209         unnecessary global variables.
25210
25211 2003-06-15  Nick Drochak <ndrochak@gol.com>
25212
25213         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25214         * cpu-g4.md: add op_bigmul and op_bigmul_un
25215         * cpu_pentium.md: add op_bigmul_un
25216         * inssel-long32.brg: add rule for unsigned bigmul
25217         * mini-ops.h: define OP_BIGMUL_UN
25218         * mini-x86.c: THE BUG: handle (un)signed properly
25219         * mini.c: choose unsigned opcode if needed.
25220         This set of patches fixes bug #44291
25221
25222 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25223
25224         * mini.c (optimize_branches): improved to handle all kinds of
25225         conditional branches.
25226
25227 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25228
25229         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25230         don't raise exceptions.
25231
25232 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25233
25234         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25235         to arch-specific files.
25236
25237 2003-06-09  Martin Baulig  <martin@ximian.com>
25238
25239         * Makefile.am (libs): Added $(LIBGC_LIBS).
25240
25241 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25242
25243         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25244         and OP_ATAN (fixes bug#44293).
25245
25246 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25247
25248         * Makefile.am, mini-x86.c: rename cpu description array to
25249         pentium_desc, since some compilers define the 'pentium' preprocessor
25250         symbol.
25251
25252 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25253
25254         * mini.c (mini_select_instructions): add explicit branch if the
25255         following block is not the false target of a conditional branch -
25256         we need this with any optimization that reorder or remove bblocks
25257
25258         * mini.c (optimize_branches): bug fixes
25259
25260 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25261
25262         * mini.c (mono_method_to_ir): inline static readonly fields
25263
25264         * ssa.c (fold_tree): start cfold support for long (very simple
25265         cases only)
25266
25267         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25268
25269 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25270
25271         * inssel.brg: fixed memcpy (bug #44219).
25272
25273 2003-06-05  Dick Porter  <dick@ximian.com>
25274
25275         * driver.c: Set the glib log levels to not abort if g_message
25276         recurses.
25277
25278         g_set_prgname() has to happen before mini_init() so that the
25279         process handle gets the info.
25280         
25281 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25282
25283         * driver.c: add intrins to the default optimizations to get wider
25284         exposure.
25285
25286 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25287
25288         * mini.h: some large basic blocks will overflow a 16-bit
25289         integers for symbolic registers.
25290
25291 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25292
25293         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25294         (mono_arch_output_basic_block): fix bug 43499 
25295
25296 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25297
25298         * mini.c: kill duplicated definition of mono_debug_format.
25299
25300 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25301
25302         * mini-x86.c, arrays.cs: fixed register allocation bug.
25303
25304 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25305
25306         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25307
25308         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25309
25310 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25311
25312         * mini.c:
25313         (print_method_from_ip): also print source location information if
25314         available.
25315
25316 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25317
25318         * mini.c (mono_find_block_region): bug fix in region code
25319         (mini_method_compile): enable removing unreachable code again, but
25320         only in methods without exception clauses.
25321
25322 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25323
25324         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25325         Implemented arglist opcode and handling of TypedReference type.
25326         Fixed x86 call convention when a structure is returned.
25327         Minimal support for calling static vararg methods.
25328
25329 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25330
25331         * mini.c (mini_method_compile):  always remove unreachable code,
25332         because the code in them may be inconsistent  (access to dead
25333         variables for example).
25334
25335 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25336
25337         * driver.c, debug-mini.c: warning fixes.
25338
25339 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25340
25341         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25342
25343 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25344
25345         * mini.c: thread-static fields are registered in mono_class_vtable(),
25346         so ensure the function is called before checking for them.
25347
25348 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25349
25350         * mini.c (optimize_branches): fix for bug 43586
25351
25352         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25353         overflow (fixes Bug #43639)
25354
25355 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25356
25357         * mini.c, objects.cs: allow the use of stobj for primitive types.
25358
25359 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25360
25361         * mini.c: be less strict about argument checking until we support
25362         running the verifier.
25363
25364 2003-05-27  Nick Drochak <ndrochak@gol.com>
25365
25366         * basic-long.cs: tests for (ulong)int * (ulong)int also
25367         * mini.c: use the same trick for (ulong)int * (ulong)int
25368
25369 2003-05-27  Nick Drochak <ndrochak@gol.com>
25370
25371         * basic-long.cs: add regression test for (long)int * (long)int
25372         * cpu-pentium.md: add op_bigmul specification
25373         * inssel-long32.brg: add OP_BIGMUL rule
25374         * mini-ops.h: add OP_BIGMUL
25375         * mini-x86.c: register allocator: handle case where src1 needs to be
25376         in EAX.
25377         * mini.c: substitute special BIGMUL opcode in the tree for 
25378         (long)int * (long)int
25379
25380 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25381
25382         * jit-icalls.c: call the type ctor on field access if needed.
25383
25384 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25385
25386         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25387         to a method (including results of ldelema, bug#43207).
25388
25389 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25390
25391         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25392         colors to show exception handler blocks.
25393
25394         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25395         (fix for pinvoke7.cs).
25396
25397 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25398
25399         * mini.h, mini.c: ensure correct initialization order for types that
25400         require it. Prepare for lazy compilation of jit icall wrappers.
25401         Provide a name for opcode emulation to reduce unneeded mallocing.
25402
25403 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25404
25405         * mini-x86.c: better register restoring code and profiling
25406         support for tail calls.
25407
25408 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25409
25410         * mini.h, driver.c: prepare for leaf methods optimization.
25411
25412 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25413
25414         * mini.c: get targets of branches before converting a method.
25415
25416 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25417
25418         * mini.c (optimize_branches): added some experimental code (disbaled) 
25419
25420 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25421
25422         * mini.c (optimize_branches): fix branch to branch optimization 
25423
25424         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25425
25426         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25427
25428         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25429
25430         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25431         if needed.
25432
25433 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25434
25435         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25436         enable use of interface variables again.
25437
25438         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25439         I1 to registers because there is no simply way to sign extend 8bit
25440         quantities in caller saved registers on x86.
25441
25442         * inssel-float.brg: set costs of some rules to 2 so
25443         that monobure always select the arch. specific ones if supplied,
25444         regardless of the order we pass the files to monoburg.
25445
25446 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25447
25448         * mini.c, mini-x86.c: since the magic trampoline for jumps
25449         can't patch the code directly, we do it as soon as the
25450         method gets compiled.
25451
25452 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25453
25454         * mini-x86.c, mini.h: introduce a new patching method
25455         to support CEE_JMP and tail calls.
25456         * mini.c: obey tail.call. Don't precompile methods target
25457         of CEE_JMP.
25458         * tramp-x86.c: new trampoline code to handle methods
25459         reached through a jump.
25460
25461 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25462
25463         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25464         bit values to registers
25465
25466 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25467
25468         * mini.c (mono_compile_get_interface_var): share interface
25469         variables if possible.
25470
25471 2003-05-16  Martin Baulig  <martin@ximian.com>
25472
25473         * debug-mini.c (mono_init_debugger): New function to initialize
25474         the debugger.  This is not in the debugger since it needs to
25475         access some of mini's internals.
25476
25477 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25478
25479         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25480
25481 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25482
25483         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25484         for value type handling.
25485
25486 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25487
25488         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25489         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25490
25491 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25492
25493         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25494           the constructor through a proxy.
25495
25496 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25497
25498         * jit-icalls.c, inssel.brg: fixes to array element address
25499         calculations.
25500
25501 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25502
25503         * mini-x86.c (is_regsize_var): allocate pointer to registers
25504
25505 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25506
25507         * driver.c: fixed typo, added intrins to the set of optimizations
25508         tested with regressions.
25509
25510 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25511
25512         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25513         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25514         test case.
25515
25516 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25517
25518         * inssel.brg: remove some common pop instructions without side effects
25519
25520 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25521
25522         * inssel-x86.brg: fixed thinko in int to double conversions.
25523
25524 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25525
25526         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25527
25528 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25529
25530         * inssel-long32.brg: two more missing instructions.
25531
25532 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25533
25534         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25535         if not already set.
25536
25537 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25538
25539         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25540         correctly.
25541
25542         * basic-float.cs: Added tests for negative zero.
25543
25544 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25545
25546         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25547         a couple of missing operations for long casts, with test cases.
25548
25549 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25550
25551         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25552
25553 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25554
25555         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25556         code size estimation.
25557
25558 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25559
25560         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25561         abstract methods (fix bug 42542)
25562
25563         * aot.c: add ability to handle array types
25564         
25565 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25566
25567         * mini.c: Call the _specific versions of the object allocation
25568         functions if possible.
25569
25570 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25571
25572         * driver.c: call setlocale ().
25573
25574 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25575
25576         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25577         windows build.
25578
25579 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25580
25581         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25582
25583         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25584         wrappers (fix bug 42122)
25585
25586 2003-05-04  Martin Baulig  <martin@ximian.com>
25587
25588         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25589
25590         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25591         s/mini_set_defaults/mono_set_defaults/g.
25592
25593 2003-05-04  Martin Baulig  <martin@ximian.com>
25594
25595         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25596
25597 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25598
25599         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25600         (reported by Don Roberts).
25601
25602 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25603
25604         * mini.c: temporarily work around two bugs for this release.
25605
25606 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25607
25608         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25609         that contains -export-dynamic and it makes using the ld script
25610         useless.
25611         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25612
25613 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25614
25615         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25616         specific cpu.
25617
25618 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25619
25620         * mini.c: make sure leave calls all the needed finally blocks,
25621         even when the target jumps out of multiple exception clauses.
25622
25623 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25624
25625         * ldscript, Makefile.am: add linker script to reduce the number of
25626         exported symbols (should also fix the issues with libwine defining
25627         some of the same symbols in io-layer).
25628
25629 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25630
25631         * driver.c (mini_main): Avoid assertion when no file name is given on 
25632         the command line.
25633
25634 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25635
25636         * driver.c: added --version/-V command line option.
25637         Added the inline optimization in the regression tests.
25638
25639 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25640
25641         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25642         to the type in the method signature (fixes bug#42134).
25643
25644 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25645
25646         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25647
25648 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25649
25650         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25651
25652 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25653
25654         * driver.c: fixed bug #42100.
25655
25656 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25657
25658         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25659
25660 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25661
25662         * mini.c: moved most of the code required to do inlining to its own
25663         function so it can be reused. Inline also ctors if appropriate.
25664
25665 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25666
25667         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25668         the runtime can call mono API functions.
25669
25670 2003-04-27  Martin Baulig  <martin@ximian.com>
25671
25672         * debug-mini.c (mono_debug_init_method): Added
25673         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25674         send a notification to the debugger.
25675
25676         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25677         running in the Mono Debugger, just pass the breakpoint number to
25678         mono_debug_init_method().
25679
25680         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25681
25682 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25683
25684         * mini.c: allow some more unsafe compares.
25685
25686 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25687
25688         * mini-x86.c, Makefile.am: make distcheck works (partially from
25689         a patch by Richard Lee <r.h.lee@attbi.com>).
25690         * regset.c, regset.h: removed, they are unused.
25691
25692 2003-04-25  Dick Porter  <dick@ximian.com>
25693
25694         * driver.c: Usage reports the name as 'mono' not 'mini'
25695         * exceptions-x86.c: Build and run on freebsd
25696
25697 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25698
25699         * Makefile.am: install the program with the 'mono' name and
25700         the library as libmono instead of mini and libmini.
25701
25702 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25703
25704         * driver.c: provide the APIs for the embedding interface of the old jit.
25705
25706 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25707
25708         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25709
25710 2003-04-23  Martin Baulig  <martin@ximian.com>
25711
25712         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25713
25714         * driver.c: Added `--debug' command line argument to enable
25715         debugging support.
25716
25717 2003-04-23  Martin Baulig  <martin@ximian.com>
25718
25719         * debug.[ch]: Removed.  The code is now in
25720         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25721
25722         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25723         last six months.
25724
25725 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25726
25727         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25728
25729 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25730
25731         * mini.c:
25732         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25733         mono_domain_finalize.
25734         (mini_method_compile): use mono_method_profile* if the the option is
25735         enabled.
25736
25737 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25738
25739         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25740         methods with their wrapper.
25741
25742         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25743         methods with their wrapper.
25744
25745         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25746         their wrapper.
25747
25748         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25749         wrapper.
25750
25751         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25752         methods.
25753
25754 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25755
25756         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25757
25758 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25759
25760         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25761         of the mempool. This is slightly faster and uses less memory
25762
25763 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25764
25765         * mini.c: avoid O(n) allocation for variables.
25766
25767 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25768
25769         * mini.c: handle items on the stack after inlining methods.
25770
25771 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25772
25773         * mini.c: make the method->opcode optimization dependent
25774         on MONO_OPT_INSTRINS and do it lazily.
25775
25776 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25777
25778         * driver.c: print overall results at the end of regression run.
25779
25780 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25781
25782         * inssel.brg: don't overwrite symbolic registers.
25783
25784 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25785
25786         * inssel-x86.brg: fix conversion from long to float.
25787
25788 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25789
25790         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25791
25792 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25793
25794         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25795
25796         * driver.c: Added --print-vtable option as in the old JIT.
25797
25798 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25799
25800         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25801
25802 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25803
25804         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25805
25806 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25807
25808         * mini.c regalloc.c regalloc.h: Fix memory leak.
25809
25810 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25811
25812         * aot.c (mono_aot_get_method): register all used strings
25813
25814 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25815
25816         * mini.c: always intern strings references with ldstr at compile time.
25817
25818 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25819
25820         * Makefile.am: add BUILT_SOURCES.
25821
25822 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25823
25824         * driver.c: give a better error message when the assembly to execute
25825         doesn't have an entry point.
25826
25827 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25828
25829         * Makefile.am: added hack for automake
25830
25831         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25832         correct sematics.
25833
25834         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25835
25836 22003-04-07  Martin Baulig  <martin@ximian.com>
25837
25838         * Makefile.am: Added Makefile.am.
25839
25840         * debugger-main.c: Removed, this is now in the debugger where it
25841         belongs.
25842
25843         * mini.pc.in: Call this package `mini' for the moment.
25844
25845
25846
25847
25848
25849
25850
25851
25852
25853
25854
25855
25856
25857
25858