Revert "2010-06-25 Mark Probst <mark.probst@gmail.com>"
[mono.git] / mono / mini / ChangeLog
1 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
2
3         * debugger-agent.c (get_objref): Implement support for sgen.
4
5         * driver.c: Remove the unused gc_wrapper.h include.
6
7         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
8         implementation.
9
10 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
11
12         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
13
14         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
15         in MonoCompile.
16
17         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
18         instead.
19
20 2010-06-23  Miguel de Icaza  <miguel@novell.com>
21
22         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
23         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
24
25         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
26         it only for Boehm diagnostics.
27
28         * Makefile.am: Make the file a bit more consistent.
29
30         * debug-debugger.c: Wrap the entire file with an #ifdef
31         MONO_DEBUGGER_SUPPORTED to simplify the build.
32
33         * Makefile.am: Fix the opcodes build issue by including the
34         source, not by including the .lo file directly
35
36         Always bring the MDB sources into the build, to drop the
37         dependency on the AM_CONDITIONAL from configure.in as the hard
38         debugger supports Boehm, but not Sgen, this simplifies the build. 
39
40         * Renamed the *.s files into *.S
41
42 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
43
44         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
45         wb for now on 64bits systems while issues with valuetype returns
46         are not fixed.
47
48 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
49
50         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
51         passes by calling createStandardFunctionPasses ().
52
53 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
54
55         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
56
57 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
58
59         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
60         MONO_INST_FAULT.
61
62         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
63         allow better optimization if the OP_LDADDR which caused the flag to be set was
64         optimized away.
65
66         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
67
68         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
69         the type token.
70
71         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
72
73         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
74
75 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
76
77         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
78         to handle the code sequence generated for non-near calls. Fixes #616056.
79
80 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
81
82         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
83
84         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
85
86         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
87         nesting clause too.
88         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
89         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
90         trampoline which saves the context, so changes made to callee saved registers in
91         finally clauses are visible to a nesting catch clause.
92
93         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
94
95         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
96         in LLVM compiled code.
97         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
98         the finally handler has ran.
99
100         * mini.h (ResumeState): New structure containing information required to resume
101         exception handling after executing LLVM compiled finally clauses.
102
103         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
104         bit, by passing all the registers as one argument.
105
106 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
107
108         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
109         to avoid an assert.
110
111 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
112
113         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
114
115         * aot-compiler.c aot-runtime.c: Fix LLVM support.
116
117         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
118         pad, branch to a new bblock instead.
119
120         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
121         orig_method.
122
123         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
124
125         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
126
127 2010-06-17  Geoff Norton  <gnorton@novell.com>
128
129         * mini-arm.h:
130         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
131         can be used by sgen.
132
133 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
134
135         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
136
137         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
138         fails.
139
140         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
141         the ip done by throw_exception (), it is not needed for corlib exceptions.
142
143 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
144
145         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
146         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
147         of size > 5 words. This support fast barriers for value types up to
148         256/512 bytes which     beyond that the copying itself is the major issue.
149
150         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
151         for gsharing, so use it.
152
153         This eliminate all calls to mono_value_copy from managed code in
154         gmcs, fsharp and ipy.
155
156         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
157
158         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
159         performance kept
160
161         * mini.c (mini_init): Register new icall.
162
163 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
164
165         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
166         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
167
168 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
169
170         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
171         value types as the overhead is huge. Manually expand it up to 5 words to
172         avoid code bloat.
173
174         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
175         is an exception that performance is dominated by mono_value_copy.
176
177         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
178
179 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
180
181         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
182         trampolines on x86, since those have their own cconv.
183
184         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
185         exception trampolines.
186
187         * tramp-x86.c: Add xdebug info for a few trampolines.
188
189         * mini-llvm.c: Set the name of the arguments.
190
191         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
192         using a block address if using the LLVM mono branch.
193
194         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
195         trampolines.
196
197 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
198
199         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
200
201         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
202
203         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
204
205         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
206
207         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
208         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
209         to identify the vtable slot address plus the method which needs to be compiled.
210
211         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
212         using llvm.
213
214         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
215         'this' is always passed as the first argument, before the vtype ret arg. This
216         simplifies get_this_arg_reg () and LLVM integration.
217
218         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
219         the latest changes.
220
221         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
222         these trampolines.
223
224         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
225
226         * mini-llvm.c: Fix compilation with llvm 2.6.
227
228         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
229
230         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
231         defined.
232
233         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
234         is always passed as the first argument, before the vtype ret arg. This simplifies
235         get_this_arg_reg () and LLVM integration.
236
237 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
238
239         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
240
241         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
242         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
243         translate into much nicer code.
244
245 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
246
247         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
248         parameter index information. Use this to simplify a lot of code.
249
250         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
251
252 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
253
254         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
255         to fix infinite generic recursion. Fixes #612702.
256
257 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
258
259         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
260         imt trampoline per imt slot when using LLVM.
261
262 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
263
264         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
265
266 2010-06-09  Levi Bard  <levi@unity3d.com>
267
268         * debugger-agent.c: Clear unloaded types on appdomain unload.
269
270 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
271
272         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
273         Fixes #612206.
274
275         * exceptions.cs: Add a test.
276
277 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
278
279         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
280
281         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
282
283         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
284         so it doesn't have to do it.
285
286         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
287         process does not mix with ours.
288
289         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
290         ones.
291
292         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
293         loads/stores which can throw exceptions inside clauses.
294
295 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
296
297         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
298         one ENDFINALLY.
299
300         * mini.c (mini_init): Register mono_resume_unwind as an icall.
301
302 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
303
304         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
305
306         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
307         locals.
308
309 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
310
311         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
312         appdomain.
313
314 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
315
316         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
317         Use a separate generic class init trampoline for llvm, since it needs a different
318         signature.
319
320         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
321         includes the location of this/rgctx.
322
323         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
324         branch.
325
326 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
327
328         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
329
330         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
331         clause.
332
333 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
334
335         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
336         says so.
337
338         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
339
340         * aot-compiler.c (patch_to_string): New debugging helper function.
341
342 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
343
344         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
345         trampoline.
346
347         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
348
349         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
350
351         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
352
353         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
354         clauses.
355
356         * mini.c (create_jit_info): Print EH clause info for LLVM too.
357
358 2010-05-28  Mark Probst  <mark.probst@gmail.com>
359
360         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
361         cpobj with reference types.
362
363 2010-05-28  Mark Probst  <mark.probst@gmail.com>
364
365         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
366         write barrier for reference types.
367
368 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
369
370         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
371         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
372
373 2010-05-31  Martin Baulig  <martin@ximian.com>
374
375         Fix #608271.
376
377         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
378         clear_breakpoint() on all breakpoint events and remove them from the list.
379
380 2010-05-27  Martin Baulig  <martin@ximian.com>
381
382         Fix #605698.
383
384         * debugger-agent.c (method_commands, type_commands): Temporarily
385         set the appdomain while executing this method; do all metadata
386         calls in the debuggee's appdomain where user assemblies are loaded.
387
388 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
389
390         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
391
392 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
393
394         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
395
396 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
397
398         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
399         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
400         be referenced even after the header is freed.
401
402         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
403         section.
404
405 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
406
407 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
408
409         * genmdesc.c (main): Fixing the detection of the nacl switch.
410
411         Code is contributed under MIT/X11 license.
412
413 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
414
415         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
416
417         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
418
419         * mini.h (LLVM_CHECK_VERSION): New helper macro.
420
421 2010-05-25  Miguel de Icaza  <miguel@novell.com>
422
423         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
424         the Perl program
425
426         * genmdesc.c: Added support for nacl: key on the machine
427         description files to support the extra space required by Google
428         Native Client.
429
430 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
431
432         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
433
434 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
435
436         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
437         mono_runtime_class_init_full ().
438         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
439
440 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
441
442         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
443
444 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
445
446         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
447         two are not the same on ilp32.
448
449 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
450
451         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
452         added by mistake.
453
454         * mini-ppc.c: Fix the DISABLE_JIT build.
455
456 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
457
458         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
459         (make_writable): Remove this unused function.
460
461 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
462
463         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
464         structure. Make the labels to plt entries local symbols instead of assembler local
465         labels, since tha latter causes problems for the iphone linker.
466
467 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
468
469         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
470
471 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
472
473         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
474         (ppc_patch_full): Ditto.
475
476         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
477
478         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
479         if gshared is enabled, to avoid asserts in the trampoline code.
480
481         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
482         on ia64.
483
484 2010-05-15  Geoff Norton  <gnorton@novell.com>
485
486         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
487         xdebug mode.
488
489 2010-05-14  Geoff Norton  <gnorton@novell.com>
490
491         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
492         misaligned stack on darwin.
493
494 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
495
496         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
497         arm.
498
499 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
500
501         * xdebug.c: Fix ARM support.
502
503 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
504
505         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
506         and do most of the work on the normal stack.
507         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
508
509 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
510
511         * aot-compiler.c: Put non-code data into the .rodata section on linux.
512
513 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
514
515         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
516
517 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
518
519         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
520         and do most of the work on the normal stack.
521
522 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
523
524         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
525         and do most of the work on the normal stack even if sigaltstack is disabled.
526
527 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
528
529         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
530         UCONTEXT_REG_ constants are available on linux as well.
531         (mono_arch_monoctx_to_sigctx): Ditto.
532         (mono_arch_ip_from_context): Ditto.
533
534 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
535
536         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
537         other domains.
538
539 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
540
541         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
542         no longer needed.
543
544 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
545
546         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
547         if a breakpoint cannot be inserted.
548
549 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
550
551         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
552
553 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
554
555         * debugger-agent.c (frame_commands): Return an error instead of asserting if
556         no JIT info is found for the method.
557
558 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
559
560         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
561         in debug printf.
562
563 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
564
565         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
566         a list of arch specific trampolines.
567
568         * aot-compiler.c (emit_trampolines): Use it.
569
570 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
571
572         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
573         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
574         get rid of the _full from their name.
575
576 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
577
578         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
579         get_nullified_class_init_trampoline to remove some code duplication.
580
581 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
582
583         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
584         attach.
585
586 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
587
588         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
589
590         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
591
592         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
593         there is no need to jump through the first plt entry.
594
595         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
596
597         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
598         arch-specific function.
599         (mono_aot_get_plt_info_offset): Ditto.
600
601         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
602         mono_arch_init () to register jit icalls called from full-aot trampolines.
603         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
604         to mini-<ARCH>.c.
605
606         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
607         the specialized throw corlib exception trampoline, use a variant of the normal
608         trampoline along with a new C function which does the call to
609         mono_exception_from_token (), just like on x86.
610
611 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
612
613         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
614         Reorganize the full aot trampoline creation functions, instead of taking a bunch
615         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
616         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
617         creation functions on architectures which have the full-aot ones.
618
619 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
620
621         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
622
623 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
624
625         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
626         explicitly, this seems to be required by some gcc versions at -O2.
627
628         * mini-arm.c: Ditto.
629
630 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
631
632         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
633         has_target delegate invokes.
634
635 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
636
637         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
638         info fields.
639
640         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
641         add patches/unwind info arguments, move to mini.c.
642
643         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
644
645 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
646
647         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
648         command which returns full path names.
649
650 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
651
652         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
653         code_size output variable.
654
655         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
656         mono_get_lmf_addr.
657         
658 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
659
660         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
661         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
662         (mono_arch_cpu_enumerate_simd_versions): Ditto.
663
664 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
665
666         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
667         apple assembler.
668
669 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
670
671         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
672
673 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
674
675         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
676
677 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
678
679         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
680
681 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
682
683         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
684         line number support works with eglib.
685
686 2010-04-27  Miguel de Icaza  <miguel@novell.com>
687
688         * driver.c, mini.c: Since linking with LLVM makes the default Mono
689         dirty an extra 70kb pages on startup we are now going to choose a
690         different strategy: ship mono and mono-llvm binaries, with the
691         second being the one that links with LLVM and defaults to LLVM
692         being enabled.
693
694 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
695
696         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
697         Implement full-aot support on x86.
698
699         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
700         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
701         the first register returned by get_global_int_regs ().
702
703         * cpu-x86.md: Fix the length of insertx_u1_slow.
704
705         * iltests.il.in: Disable tail call tests when running with full-aot.
706
707 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
708
709         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
710
711 2010-04-24  Mark Probst  <mark.probst@gmail.com>
712
713         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
714         in the initializer, because it's non-constant.
715
716 2010-04-23  Miguel de Icaza  <miguel@novell.com>
717
718         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
719         of LLVM on by default.   Used for buildbots and other setups.
720
721 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
722
723         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
724
725 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
726
727         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
728         initonly static fields when using moving GC.
729
730         Contributed under MIT/X11 license.
731
732 2010-04-23  Geoff Norton  <gnorton@novell.com>
733
734         * mini-amd64.h: Darwin x86_64 support.
735
736 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
737
738         * exceptions-arm.c: Remove platform checks in favor of configure checks.
739
740 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
741
742         * exceptions-arm.c: Add Android support for sigcontext structure.
743
744 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
745
746         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
747         wrappers correctly now that their wrapper info is NULL.
748
749 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
750
751         * mini.c (mono_jit_compile_method_inner): Avoid calling
752         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
753
754 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
755
756         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
757         so the latter can be #ifndef DISABLE_JIT-ed.
758
759         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
760
761 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
762
763         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
764
765 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
766
767         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
768         stack.
769
770 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
771
772         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
773         calling mono_class_num_methods (). Fixes #592244.
774
775 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
776
777         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
778
779         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
780
781 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
782
783         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
784         version.
785         * (handle_alloc): Ditto.
786         (mono_method_to_ir): Remove the constrained call restriction added by a previous
787         change, its not needed anymore.
788
789 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
790
791         * mini-posix.c (sigusr1_signal_handler): Fix build on
792         non x86/amd64 systems.
793
794 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
795
796         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
797         calls where the constrained class needs a context. Fixes #595863.
798
799         * iltests.il.in: Add a test.
800
801 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
802
803         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
804         2.6/SVN seems to have broken support for them.
805
806 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
807
808         * mini-llvm.c: Fix support for LLVM 2.6.
809
810 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
811
812         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
813         MonoInternalThread belonging to the thread.
814
815 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
816
817         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
818         unsafe optimization that will remove bound checks.
819
820 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
821
822         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
823         CompareExchange not to be inlined for I8.
824
825         Contributed under MIT/X11 license.
826
827 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
828
829         * array.cs: Add tests for cast between primitive array types.
830
831 2010-04-07 Andreia Gaita  <avidigal@novell.com>
832
833         * Makefile.am: create a convenience library for moon to link with
834
835 2010-04-07 Paolo Molaro <lupus@ximian.com>
836
837         * method-to-ir.c: optimize array accesses from generic interfaces.
838
839 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
840
841         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
842
843 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
844
845         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
846         of marshalbyref classes.
847
848         Fixes #515884.
849
850 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
851
852         * aot-compiler.c (emit_exception_debug_info): Encode try holes
853         information.
854
855         * aot-runtime.c (decode_exception_debug_info): Decode try holes
856         information.
857
858         * mini.h: Increase AOT version.
859
860 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
861
862         * mini-x86.h: Only enable soft debugger when using sigaction or on
863         Windows. Fixes build on Haiku (lacks siginfo_t).
864
865         Code is contributed under MIT/X11 license.
866
867 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
868
869         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
870         BeOS-style signal handlers.
871
872         Code is contributed under MIT/X11 license.
873         
874 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
875
876         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
877
878 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
879
880         * mini-exceptions.c: Fix win32 build.
881
882 2010-04-01  Mark Probst  <mark.probst@gmail.com>
883
884         * mini.c, driver.c: Call mono_gc_base_init() before
885         mono_debug_init().
886
887 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
888
889         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
890         call_method]): Delegate the actual work in security-core-clr.c
891         to ease code sharing.
892
893 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
894
895         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
896         float conv.ovf.un opcodes are encountered, instead of asserting later.
897         Fixes #566296.
898
899 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
900
901         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
902
903         * iltests.il.in: Add a test.
904
905 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
906
907         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
908         large. Fixes #567040.
909
910         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
911
912 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
913
914         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
915         #592711.
916
917 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
918
919         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
920         mono_create_handler_block_trampoline with the proper #ifdef so that it
921         compiles on amd64.
922
923 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
924
925         * mini-exceptions.c: Introduce mono_walk_stack_full, which
926         allows to select if it's new or old context that is passed to 
927         the callback.
928
929         * mini-exceptions.c (mono_handle_exception_internal): Handle the
930         case when executing a guarded handler from the EH machinery.
931
932         * mini-exceptions.c (mono_install_handler_block_guard): New function
933         responsible for checking for handler blocks, installing the guard and
934         clearing abort state.
935
936         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
937         to check for handler blocks and skip interruption logic if one was found.
938
939         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
940         by the handler block guard trampoline. Resumes interruption by raising the
941         pending ThreadAbortException.
942
943         * mini.c (create_jit_info): Calculate the end address of a finally block.
944
945         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
946         of a finally block to a specified address and return the old one.
947
948         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
949         trampoline patches the original return address and calls the trampoline function.
950
951 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
952
953         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
954
955         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
956         does the patching if the callee is in the same domain.
957
958         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
959         of mono_arch_patch_plt_entry ().
960
961 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
962
963         * mini.c (create_jit_info): Fix try block hole length encoding.
964
965 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
966
967         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
968         duplicate information and print offsets instead of absolute addresses.
969
970 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
971
972         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
973         event is sent. Fixes #591733.
974
975 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
976
977         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
978         OpenBSD.
979
980 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
981
982         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
983         thread_to_tls hash table.
984
985         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
986         section. Fixes #591000.
987
988 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
989
990         * Makefile.am (version.h): Check for pure .git directory only,
991         fixes SVN revision when using git without git-svn.
992
993         Contributed under MIT/X11 license.
994
995 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
996
997         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
998
999 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1000
1001         * basic-simd.cs: Test for vector x scalar binary operators.
1002
1003 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1004
1005         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1006         intrinsics with expanded scalar arguments.
1007
1008 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1009
1010         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1011         don't have an exception class, so don't decode it. This would crash
1012         with filter clauses.
1013
1014 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1015
1016         Make sure that trunk builds with DISABLE_JIT, an update to the
1017         PlayStation 3 port.
1018         
1019         * mini.c (mini_get_shared_method): this code seems to be necessary
1020         regardless of whether DISABLE_JIT has been defined.
1021
1022         (mono_jit_compile_method_inner): it seems that this method is
1023         required even in full AOT mode, so ifdef out only the pieces that
1024         try to genrate code (the body of code that applies patches to the
1025         code).  
1026
1027         (mini_method_compile): do not compile when using DISABLE_JIT.
1028
1029         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1030         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1031         compile when DISABLE_JIT is set.
1032
1033 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1034
1035         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1036         arch really supports it.
1037
1038 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1039
1040         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1041
1042 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1043
1044         * exceptions-s390x.c: Add support for
1045         mono_arch_get_throw_corlib_exception and fix throw by name.
1046
1047         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1048         logic (especially for varargs); Correct localloc sizing; Add
1049         mono_arch_get_this_arg_from_call and
1050         mono_arch_get_this_arg_from_call.
1051
1052         * mini-s390x.h: Add support for facility list extraction;
1053         Correct/update MONO_ARCH_xxx settings.
1054
1055         * mini-s390.c: Minor corrections to instruction output for
1056         varargs. No IMT implementation - I think it's time to deprecate
1057         s390 and just leave s390x.
1058
1059         * tramp-s390x.c: Correct creation of trampoline instruction
1060
1061
1062         * cpu-s390x.md: Update some instruction lengths
1063
1064 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1065
1066         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1067         can be hit with partial sharing.
1068
1069         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1070         in non-shared classes correctly.
1071         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1072         Turn on partial sharing.
1073
1074 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1075
1076         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1077         by mistake.
1078
1079 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1080
1081         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1082         mono_method_signature ().
1083
1084         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1085
1086         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1087         error checking, so later calls do not need error checking.
1088
1089 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1090
1091         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1092
1093         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1094
1095 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1096
1097         * mini-exceptions.c (mono_handle_exception_internal): Don't
1098         check try_end for archs different than s390. 
1099
1100         * mini.c (create_jit_info): Don't crash if the finallt block is the
1101         last one.
1102
1103 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1104
1105         * driver.c (mono_main): Don't free global codeman under linux since
1106         glic now peeks at code on stack for more archs than just amd64.
1107
1108 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1109
1110         * mini.c, method-to-ir.c: changes to support compressed interface
1111         bitmaps.
1112
1113 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1114
1115         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1116         Use sigaction on OpenBSD too.
1117
1118 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1119
1120         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1121
1122 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1123
1124         * debugger-agent.c: #include sys/select.h for fd_set.
1125
1126         Code is contributed under MIT/X11 license.
1127
1128 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1129
1130         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1131         (openbsd+amd64 ?).
1132
1133 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1134
1135         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1136         some large methods with lots of exception handlers. Fixes #440924.
1137
1138 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1139
1140         * method-to-ir.c: remove code duplication for interface checks.
1141
1142 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1143
1144         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1145         (assembly_unload): Clear all event requests referencing the to-be unloaded
1146         assembly.
1147
1148
1149 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1150
1151         * mini.h, mini-exceptions.c: restore the state of the stack
1152         guard page permissions.
1153
1154 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1155
1156         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1157         call site patching code, it doesn't appear to be needed.
1158
1159 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1160
1161         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1162         sharing generic methods whose type arguments are a mix of reference and
1163         non-reference types. Not yet turned on.
1164
1165         * mini.c (mini_get_shared_method): New helper function to return
1166         the method which will be compiled/registered in the JIT tables when doing
1167         generic sharing.
1168         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1169         use mini_get_shared_method ().
1170
1171         * mini.c (mini_method_compile): Register the same method which is compiled when
1172         doing generic sharing.
1173
1174         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1175
1176         * generics.cs: Add partial sharing tests.
1177
1178 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1179
1180         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1181                    Add an enum value that or's all possable values together. Add an enum value
1182                    that marks the end of the used bit indexes.
1183
1184         * mini-amd64.c : Make changes to match the changes in mini.h 
1185
1186         * mini-x86.c : Make changes to match the changes in mini.h
1187
1188         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1189                    simd_version to support more simd versions. Changed the name of
1190                    simd_version to simd_version_flags to make it more intuitive that
1191                    it now contains bit flags. Reordered the *_intrinsics arrays to
1192                    match the changes above. Changed emit_intrinsics() to use the new
1193                    setup mentioned above.
1194
1195         Code is contributed under MIT/X11 license.
1196
1197 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1198
1199         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1200         remaining archs. Alpha and hppa maintainers, please stand up.
1201
1202 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1203
1204         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1205         is needed even when fail_tramp!=NULL.
1206
1207 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1208
1209         * debugger-agent.c (insert_breakpoint): Write a log message.
1210
1211 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1212
1213         * iltests.il.in: Add a few tests for LEAVE going over multiple
1214         finally clauses.
1215
1216 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1217
1218          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1219
1220 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1221
1222         * mini.h (MonoBasicBlock): Add native_length field.
1223         * mini.h (MonoCompile): Add try_block_holes field.
1224         * mini.h (MonoInst): Add exception_clause pointer to
1225         the data union.
1226
1227         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1228         * mini.c (mono_cfg_add_try_hole): New function to register possible
1229         holes in try blocks.
1230         * mini.c (create_jit_info): Fill in the holes information.
1231
1232         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1233         by a try block.
1234
1235         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1236
1237 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1238
1239         * jit-icalls.c: adjusted for the array API changes.
1240
1241 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1242
1243         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1244
1245 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1246
1247         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1248         the 'pending' flag. This fixes support for appdomains too.
1249
1250
1251 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1252
1253         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1254
1255 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1256
1257         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1258         when using LLVM, LLVM generates it itself when needed.
1259
1260         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1261
1262         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1263         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1264         OP_ANDNPS/OP_ANDNPD.
1265
1266 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1267
1268         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1269         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1270         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1271
1272 2010-03-11  Martin Baulig  <martin@ximian.com>
1273
1274         * debugger-agent.c (type_commands): Add NULL check to
1275         `CMD_TYPE_GET_SOURCE_FILES'.
1276
1277 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1278
1279         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1280
1281 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1282
1283         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1284         #586664.
1285
1286         * iltests.il.in: Add a test.
1287
1288 2010-03-05  Martin Baulig  <martin@ximian.com>
1289
1290         Add support for aborting invocations.
1291
1292         * debugger-agent.c
1293         (InvokeData): Added `InvokeData *last_invoke'.
1294         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1295         added a new `invoke' field to keep the `InvokeData *' throughout
1296         the invocation.
1297         (ErrorCode): Added `ERR_NO_INVOCATION'.
1298         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1299         (mono_debugger_agent_handle_exception): Don't report any exception
1300         if an abort was requested.
1301         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1302         a thread abort if necessary.
1303         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1304
1305 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1306
1307         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1308         so we can release the whole list and not just the first one. Free
1309         it in more places as well.
1310
1311 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1312
1313         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1314
1315 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1316
1317         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1318
1319 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1320
1321         * driver.c: report also other misc build options.
1322
1323 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1324
1325         * method-to-ir.c: Generate better code for the NewObject
1326         intrinsic.
1327         
1328 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1329
1330         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1331         is disabled. Fixes #582322.
1332
1333         * iltests.il.in: Add a test.
1334
1335 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1336
1337         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1338         the handling of obj->synchronization == null and owner != current thread to
1339         mono_monitor_exit ().
1340
1341         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1342
1343
1344 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1345
1346         * mini.c: change the way emulated opcode info is stored and save about
1347         4 KB of runtime memory.
1348
1349 2010-03-04  David S. Miller  <davem@davemloft.net>
1350
1351        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1352        that don't provide the siginfo in the second signal handler argument
1353        are buggy, and this has been fixed for years.
1354        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1355        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1356
1357 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1358
1359         * aot-runtime.c (find_symbol): Fix a leak.
1360         (decode_patch): Ditto.
1361
1362 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1363
1364         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1365
1366 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1367
1368         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1369
1370 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1371
1372         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1373
1374 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1375
1376         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1377         to check for errors, it's enough to create the metadata open.
1378
1379         Fixes #562150
1380
1381 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1382
1383         * trace.c|h:
1384         * mini-exceptions.c: Add support for printing stack traces when handling
1385         exceptions, and when printing exceptions thrown while tracing also print
1386         the exception message.
1387
1388 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1389
1390         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1391         since the exclude token is a valid string character.
1392
1393 2010-03-02  Levi Bard  <levi@unity3d.com>
1394
1395         * debugger-agent.c: Invalidate thread stacks on domain unload.
1396
1397 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1398
1399         * method-to-ir.c: Emit dummy_use for stored reference after write
1400         barriers to make sure the object is pinned if the GC interrupts
1401         before the write barrier is done.
1402
1403 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1404
1405         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1406
1407 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1408
1409         * debugger-agent.c: Add a log message printing the protocol version.
1410
1411 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1412
1413         * debugger-agent.c: Add a new command to communicate the protocol version used
1414         by the client. This could be used to allow newer runtimes to communicate with
1415         older clients.
1416
1417 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1418
1419         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1420
1421 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1422
1423         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1424         type.
1425
1426 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1427
1428         * mini-arm.c: make the arm cpu arch configurable with the
1429         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1430         Bug #584198.
1431
1432 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1433
1434         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1435         support for the perf tool on Linux.
1436
1437 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1438
1439         * method-to-ir.c: make string.InsertenalSetChar() specialization
1440         effective.
1441
1442 2010-03-01  Robert Jordan  <robertj@gmx.net>
1443
1444         * Makefile.am: fix the non-static build.
1445
1446 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1447
1448         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1449         here.
1450
1451 2010-02-26  Robert Jordan  <robertj@gmx.net>
1452
1453         * tasklets.c (continuation_store): Return from an error condition
1454         immediately.
1455
1456 2010-02-26  Martin Baulig  <martin@ximian.com>
1457
1458         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1459
1460         * debug-mini.c
1461         (MonoDebuggerThreadInfo): Added `internal_flags'.
1462         (MonoDebuggerInternalThreadFlags): New enum.
1463         (_mono_debugger_throw_exception): Don't signal the debugger if a
1464         type abort was requested.
1465         (_mono_debugger_unhandled_exception): Likewise.
1466         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1467         (mono_debugger_runtime_invoke): If the debugger requested a thread
1468         abort during the invocation, reset it here.
1469
1470 2010-02-26  Martin Baulig  <martin@ximian.com>
1471
1472         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1473         instead of `MonoThread *'.
1474
1475 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1476
1477         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1478         code offsets table, as it is mostly sorted.
1479
1480 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1481
1482         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1483         Fixes #582991.
1484
1485 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1486
1487         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1488
1489 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1490
1491         * Makefile.am: build the new ABI version of the libmono library.
1492         * debugger-agent.c, mini.c: fix warnings with the new API.
1493         * jit.h: don't depend on glib.h being included.
1494
1495 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1496
1497         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1498
1499 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1500
1501         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1502         ThreadStatic variables.
1503
1504 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1505
1506         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1507         data is not freed yet. Fixes #582460.
1508
1509 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1510
1511         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1512         event requests. Bump protocol minor version.
1513
1514 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1515
1516         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1517
1518 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1519
1520         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1521         #581950.
1522
1523         * iltests.il.in: Add a test.
1524
1525 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1526
1527         * mini.c (inline_method): Check for loader errors.
1528
1529 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1530
1531         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1532         instead of mono_method_get_header as it doesn't decode locals
1533         so the called method can have unresolved dependencies that will only
1534         be satisfied after the current method is JIT'd.
1535
1536         Fixes #550968.
1537
1538 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1539
1540         * basic.cs (test_0_div_opt): Speed this up a bit.
1541
1542 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1543
1544         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1545
1546         * mini.c (mono_jit_create_remoting_trampoline): Call
1547         mono_create_specific_trampoline () instead of
1548         mono_arch_create_specific_trampoline ().
1549
1550         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1551
1552 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1553
1554         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1555         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1556
1557         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1558
1559         * mini-amd64.c: Fix DISABLE_JIT support.
1560
1561 2010-02-20  Geoff Norton  <gnorton@novell.com>
1562
1563         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1564
1565 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1566
1567         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1568         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1569         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1570         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1571         handle_exception.
1572
1573 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1574
1575         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1576         edx/ecx too. This is needed to support OP_SEQ_POINT.
1577
1578 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1579
1580         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1581
1582         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1583
1584 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1585
1586         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1587         LLVM+AOT+exceptions, not enabled yet.
1588
1589 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1590
1591         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1592
1593 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1594
1595         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1596         xdebug info for these.
1597
1598         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1599         in a few places.
1600
1601         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1602         not used yet.
1603
1604 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1605
1606         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1607
1608 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1609
1610         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1611         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1612
1613         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1614         for mtouch.
1615
1616 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1617
1618         * debugger-agent.c: handle incomplete reads and EINTR in
1619         recv()/send(). This could have been causing random
1620         disconnections.
1621
1622 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1623
1624         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1625         points.
1626
1627         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1628         so they have small offsets. Fixes #566311.
1629
1630 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1631
1632         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1633
1634 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1635
1636         * mini-amd64.c: Remove the special casing of byref in a few places now that
1637         mini_type_get_underlying_type () handles it.
1638
1639         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1640         by returning native int. Fixes #577984.
1641
1642 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1643
1644         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1645         a macro.
1646
1647         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1648         of putting the clause itself.
1649
1650         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1651
1652 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1653
1654         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1655         might be unaligned.
1656
1657 2010-02-10  Geoff Norton  <gnorton@novell.com>
1658
1659         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1660
1661 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1662
1663         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1664         llvm methods too.
1665
1666         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1667         it is not an LLVM generated symbol.
1668
1669         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1670
1671         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1672         implementation in gshared mode because it causes regressions.
1673
1674         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1675
1676         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1677         should be done by the caller.
1678
1679         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1680
1681         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1682
1683         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1684         since mono_jit_info_table_find () doesn't do it anymore.
1685
1686         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1687         instead of mono_jit_info_table_find ().
1688
1689 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1690
1691         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1692
1693         * aot-compiler.c (encode_method_ref): Update after the removal of
1694         mono_gc_get_managed_allocator_type ().
1695
1696         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1697         Fixes #564538.
1698
1699 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1700
1701         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1702         generic params as well.
1703         (handle_isinst): Ditto.
1704
1705         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1706         instead of always calling an icall.
1707
1708         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1709         computing the size of the got.
1710
1711         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1712         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1713         the assembly directive '.set' so it points to the first LLVM emitted method.
1714
1715 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1716
1717         * mini.c (mini_method_verify): Report the method which failed to verify.
1718
1719 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1720
1721         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1722         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1723         runtime MS verifier.
1724
1725 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1726
1727         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1728         #561962.
1729
1730 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1731
1732         * mini-llvm.c: Init the jit module only when first JITting.
1733
1734         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1735
1736         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1737
1738         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1739         replaced with the real got.
1740
1741         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1742
1743         * image-writer.c: Reduce the amount of #ifdefs a bit.
1744
1745         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1746         llvm on darwin/arm.
1747
1748         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1749
1750         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1751         global.
1752
1753 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1754
1755         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
1756         (mono_llvm_emit_method): Fix unaligned stores too.
1757
1758         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
1759         so async stack walks don't crash.
1760
1761 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1762
1763         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
1764         was not patched if the callee needed an rgctx trampoline.
1765
1766 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1767
1768         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
1769         vtable address in AOT code.
1770
1771 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1772
1773         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
1774         MonoInst's.
1775
1776 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
1777
1778         * genmdesc.pl: remove dependency on external cpp.
1779
1780 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1781
1782         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
1783         using LLVM, its not needed, and abcrem can't handle it.
1784
1785 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1786
1787         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
1788         it easier to group instructions and reduce duplication.
1789
1790 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1791
1792         * decompose.c: Move the array/soft float decompose routines here from
1793         method-to-ir.c.
1794
1795         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
1796
1797 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
1798
1799         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
1800         to tell LLVM that the got is constant, not used yet.
1801
1802         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
1803
1804 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1805
1806         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
1807         managed wrappers.
1808
1809 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1810
1811         * aot-compiler.c (add_wrappers): Commit the hack which generates
1812         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
1813         custom attribute.
1814
1815 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1816
1817         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
1818         a fault, only used by the LLVM backend.
1819
1820         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
1821         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
1822
1823         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
1824         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
1825
1826         * mini-llvm.c: Only generate volatile loads from load instructions which have
1827         the MONO_INST_FAULT flag set.
1828
1829 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1830
1831         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
1832         64 bit platforms.
1833
1834 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1835
1836         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
1837         sequence points. Fixes #571236.
1838
1839 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1840
1841         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
1842         end of the appdomain unload process, after assemblies have been unloaded.
1843         Fixes #574842.
1844
1845 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
1846
1847         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
1848         works.
1849
1850         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
1851         Fixes #573988.
1852
1853 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
1854
1855         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
1856
1857 2010-01-26  Geoff Norton  <gnorton@novell.com>
1858
1859         * aot-compiler.c: Fix a logic error introduced when guarding against enums
1860         with struct marshalability.
1861
1862 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1863
1864         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
1865         it supports class names as well.
1866
1867         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
1868         needed by the GC map code.
1869
1870         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
1871         flags if needed.
1872
1873         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
1874         if cfg->init_ref_vars is set.
1875
1876         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
1877         cfg->disable_initlocals_op_refs is set.
1878
1879         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
1880         using liveness info if cfg->compute_precise_live_ranges is set.
1881
1882         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
1883         volatile variables correctly. Add comments about the live ranges. Not enabled
1884         yet.
1885
1886 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1887
1888         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
1889         0x2a into them in method prologs.
1890
1891         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
1892
1893 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
1894
1895         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
1896         classes, since llvm is compiled with -fno-rtti.
1897
1898         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
1899
1900         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
1901         llvm does not require it.
1902
1903         * aot-runtime.c (load_method): Print the full name of the last aot method.
1904
1905 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1906
1907         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
1908         thread has not fully started yet.
1909
1910 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1911
1912         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
1913
1914 2010-01-21  Miguel de Icaza  <miguel@novell.com>
1915
1916         * driver.c: Do not abort if LLVM is not supported, print a
1917         warning and add the information to the Mono JIT information.
1918
1919 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1920
1921         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
1922         using explicit null checks.
1923
1924 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
1925
1926         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
1927         related code.
1928
1929         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
1930         () in one place.
1931         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
1932         its no longer needed.
1933
1934         * method-to-ir.c (mono_method_to_ir): Fix a warning.
1935
1936         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
1937         define for platforms still using it (s390). Get rid of the
1938         mono_arch_get_throw_exception_by_name () routines on all other platforms.
1939
1940         * exceptions-x86.c: Rework the throw trampolines so there is only one function
1941         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
1942
1943         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
1944         the caller pushed the arguments.
1945
1946         * mini-llvm.c: Enable throwing exceptions on x86.
1947
1948         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
1949         "Thread (nil) may have been prematurely finalized" messages if this is called
1950         on a thread not registered with the runtime.
1951
1952         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
1953
1954 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1955
1956         * jit-icalls.c (mono_array_new_3): New jit icall.
1957
1958         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
1959
1960         * arrays.cs: Add a test for 3 dimensional arrays.
1961
1962 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1963
1964         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
1965         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
1966         used.
1967
1968         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
1969         thrown on x86.
1970
1971         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
1972
1973         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
1974
1975         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
1976
1977 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
1978
1979         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
1980           HOST_WIN32.  Also including winsock2. to define struct in_addr.
1981
1982         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1983
1984         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1985
1986         Code is contributed under MIT/X11 license.
1987
1988 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1989
1990         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
1991
1992         * branch-opts.c (mono_optimize_branches): Honor the new flag.
1993
1994         * mini.c (mini_method_compile): Set the new flag when running under the
1995         debugger.
1996
1997 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1998
1999         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2000         a ref/noref value + a global pin flag, so parts of stack frames can still be
2001         precisely marked even if they include stuff which needs pinning. Improve logging.
2002         Fix many bugs. Not enabled yet.
2003
2004         * gc-test.cs: Add a few tests.
2005
2006         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2007         the normal -v options. Avoid propagating liveness information through bblocks
2008         which end with a NOT_REACHED opcode.
2009
2010         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2011         after cfg has been freed.
2012
2013 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2014
2015         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2016         if a clause is skipped because it uses the exception object, since it could
2017         have caught the exception.
2018
2019         * exceptions.cs: Add a test.
2020
2021 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2022
2023        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2024
2025         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2026         ICollection<T> wrappers.
2027
2028 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2029
2030         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2031
2032 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2033
2034         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2035         NOMAP32BIT or optimize_for_xen is set.
2036
2037 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2038
2039         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2040         mono_metadata_str_hash () instead.
2041
2042 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2043
2044         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2045         sizeof (void*).
2046
2047         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2048
2049 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2050
2051         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2052         flag is set.
2053
2054         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2055         throwing code correctly.
2056
2057         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2058
2059 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2060
2061         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2062         ftnptrs created by us, handle RGCTX_FETCH correctly.
2063         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2064
2065         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2066         ftnptr added by mono_aot_get_named_code ().
2067
2068 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2069
2070         * mini-arm.c: Fix a few LLVM problems.
2071
2072         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2073
2074 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2075
2076         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2077         AOT compiling.
2078
2079 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2080
2081         * jit.h, method-to-ir.c: added ability to set the policy for
2082         inserting breakpoints from the break IL instruction or the
2083         Debugger.Break () API call.
2084
2085 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2086
2087         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2088         assemblies need to be eagerly loaded.
2089
2090 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2091
2092         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2093
2094 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2095
2096         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2097         an argument which matches any exception.
2098
2099 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2100
2101         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2102         optimization if the called method is gshared and marshalbyref, since gshared
2103         methods can' have wrappers. Fixes #569390.
2104
2105         * generics.cs: Add a test.
2106
2107 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2108
2109         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2110         callable from gdb.
2111
2112 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2113
2114         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2115
2116 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2117
2118         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2119         since it is not supported in win2000.
2120
2121 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2122
2123         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2124         error if loading an assembly fails.
2125         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2126
2127         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2128         if exists.
2129
2130         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2131         compiled methods.
2132
2133         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2134
2135         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2136         is not supported yet.
2137
2138         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2139
2140 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2141
2142         * method-to-ir.c: All types with variant arguments must fallback to the
2143         slow path. This makes cast of variant delegates work.
2144
2145         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2146         argument that is set to TRUE is the returned vtable slot is for a variant
2147         interface. Changed a g_print + g_assert_not_reached to a g_error.
2148
2149         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2150         a similar fashion of generic virtual methods.
2151
2152 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2153
2154         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2155         when cfg is null.
2156
2157         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2158         method using a variance aware function.
2159
2160         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2161
2162 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2163
2164         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2165         do an icall for now.
2166
2167 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2168
2169         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2170         If LLVM decides to set the code model to Large, reset it to Default.
2171
2172 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2173
2174         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2175         stripped binaries as well.
2176
2177 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2178
2179         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2180         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2181
2182         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2183         reg.
2184
2185 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2186
2187         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2188         separate function.
2189
2190         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2191         as the type info to llvm.eh.selector.
2192         (exception_cb): Use the type info for filling out some fields of
2193         MonoJitExceptionInfo like the flags and the exception class. This is needed
2194         because the LLVM produced exception handling clauses might not match the original
2195         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2196
2197         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2198         separate function. Add an extra argument which returns the type infos
2199         corresponding to the exception clauses.
2200
2201         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2202         exception handling clauses.
2203
2204 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2205
2206         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2207         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2208         to fix an AOT case.
2209
2210 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2211
2212         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2213         internal assembly.
2214
2215 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2216
2217         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2218         llvm code.
2219
2220 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2221
2222         * mini.c (mini_method_compile): Verify the method before calling
2223         mono_compile_create_vars as this might crash since it uses method
2224         information.
2225
2226         Fixes #560196.
2227
2228 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2229
2230         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2231         one case if AOTing, since the class might not be a concrete class.
2232
2233 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2234
2235         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2236         functions which are now defined in mempool-internals.h.
2237
2238         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2239
2240         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2241
2242 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2243
2244         * mini.c:
2245         * method-to.ir.c:
2246         * mini-*.c: Properly handle generic enums.
2247
2248         Fixes #566294
2249
2250 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2251
2252         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2253         in a few more places.
2254
2255 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2256
2257         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2258         nullable parameters. Fixes #567351.
2259
2260 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2261
2262         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2263
2264 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2265
2266         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2267         mono_get_generic_context_from_code () call.
2268
2269         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2270
2271 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2272
2273         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2274         needed.
2275
2276 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2277
2278         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2279         mono_method_get_signature returns NULL. Fix #567084
2280
2281 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2282
2283         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2284         instead of once for each module.
2285
2286 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2287
2288         * debugger-agent.c (ss_start): Implement step over for the last sequence
2289         point in methods.
2290
2291         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2292         have the STEP_LOC flag set.
2293
2294         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2295         fails. Fixes #566689.
2296
2297 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2298
2299         * mini.c (mono_add_seq_point): New helper function.
2300         (mono_save_seq_point_info): New function to save sequence point info, extracted
2301         from mini_method_compile ().
2302
2303         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2304
2305         * mini.h (MonoSeqPointInfo): New structure containing information about
2306         the sequence points of a JITted method.
2307         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2308         'bucket' field.
2309
2310         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2311         point information is stored, use a MonoSeqPointInfo structure instead of a
2312         GPtrArray. For each seq point, compute a list of successor seq points.
2313
2314         * debugger-agent.c: Use the successor list to implement step-over more
2315         efficiently: instead of single stepping until a different line/IL offset is
2316         reached, place breakpoints into all successor seq points.
2317
2318         * mini.h: Bump AOT file format version.
2319
2320 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2321
2322         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2323
2324         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2325
2326 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2327
2328         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2329         build.
2330
2331 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2332
2333         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2334         alloca as g_malloc is not signal safe.
2335
2336 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2337
2338         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2339         VALGRIND_DISCARD_TRANSLATIONS.
2340
2341         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2342         checks, they are no longer needed.
2343
2344         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2345         a function into a sigctx which can handle function pointers.
2346
2347         * mini-ppc.c: Implement soft debugger support on ppc64.
2348
2349         * mini-ppc.c: Implement soft debugger support.
2350
2351 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2352
2353         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2354
2355 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2356
2357         * mini.c (mono_get_runtime_build_info): include Mono version in
2358         the returned value.
2359
2360         * driver.c (mono_main): VERSION is now included in the string
2361         returned from mono_get_runtime_build_info()
2362
2363 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2364
2365         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2366         signatures. Fixes #565143.
2367
2368         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2369
2370 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2371
2372         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2373
2374 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2375
2376         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2377         making max stack 10x smaller.
2378
2379 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2380
2381         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2382
2383 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2384
2385         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2386
2387 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2388
2389         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2390         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2391
2392         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2393
2394         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2395
2396         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2397
2398         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2399         the compilation.
2400
2401 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2402
2403         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2404         raise an invalid program exception.   
2405
2406         For other opcodes that we might not handle use a g_warning and
2407         raise the exception.   Beats termination.
2408
2409         Fixes #561724
2410
2411 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2412
2413         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2414
2415         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2416         by merging the LLVM and !MAP_32BIT cases.
2417
2418 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2419
2420         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2421         sigctx being passed in, as we have no CONTEXT available in the APC.
2422
2423         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2424         for now.
2425
2426         Code contributed under MIT/X11 license.
2427
2428 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2429
2430         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2431         in the LLVM backend on AMD64.
2432
2433         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2434         FDE.
2435
2436         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2437
2438         * mini-llvm.c: Export mono_personality for AOT.
2439
2440         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2441
2442         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2443         implicit exception can occur.
2444
2445         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2446         OP_IMPLICIT_EXCEPTION instruction.
2447
2448         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2449
2450         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2451
2452         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2453         inside a protected block.
2454
2455         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2456         trampolines doesn't include the argument.
2457
2458         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2459         trampolines on amd64.
2460
2461         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2462         of RDI.
2463
2464         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2465         disabled for methods with clauses.
2466
2467         * mini-llvm.c: Enable support for catch clauses.
2468
2469         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2470         end of an LLVM compiled finally clause.
2471         (mono_handle_exception_internal): Save the exception handling state in TLS
2472         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2473         resume unwinding from that point.
2474
2475         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2476         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2477         to obtain the addresses of the exception handling regions.
2478
2479         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2480         finally clauses are supported.
2481
2482         * mini.c (mini_method_compile): Add support for LLVM code with exception
2483         handlers.
2484
2485 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2486
2487         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2488         proper size.
2489
2490 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2491
2492         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2493         as a primitive type.
2494
2495 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2496
2497         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2498         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2499         #564000.
2500
2501 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2502
2503         * method-to-ir.c (mini_redirect_call): do not redirect the
2504         InternalAllocateStr internal call if string profiling is enabled.
2505
2506 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2507
2508         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2509         generic methods.
2510
2511         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2512         unwind.h header file.
2513
2514         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2515         newer valgrind versions seems to handle this fine.
2516
2517 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2518
2519         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2520         on the debugger thread.
2521
2522 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2523
2524         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2525
2526         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2527
2528         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2529
2530         * cpu-<ARCH>.md: Make call_handler clob:c.
2531
2532         * mini.c: Reenable SSA for methods with clauses.
2533
2534         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2535         as it causes failures on x86.
2536
2537 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2538
2539         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2540         returns NULL (e.g. a bad assembly).
2541
2542 2009-12-08  Geoff Norton  <gnorton@novell.com>
2543
2544         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2545         stepping out into native code.  There were issues with nested invokes
2546         like .cctors.
2547
2548 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2549
2550         * mini.c (mini_method_compile): Do the disable_llvm checks early
2551         and avoid the LLVM compile pass if the checks fail.
2552
2553         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2554
2555         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2556         LLVM optimizations don't try to remove them.
2557
2558         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2559         different file so the original remains.
2560
2561 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2562
2563         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2564
2565         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2566
2567         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2568         support for non-inline unwind descriptors.
2569
2570 2009-12-07  Geoff Norton  <gnorton@novell.com>
2571
2572         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2573         the interrupt_count slightly differently.  Native threads were never
2574         marked as resumed.
2575
2576 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2577
2578         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2579         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2580         yet generate this info.
2581
2582         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2583
2584         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2585         client can distinguish between intptrs and longs.
2586
2587 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2588
2589         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2590         blob.
2591
2592         * aot-runtime.c (load_function): Update after the change above.
2593
2594         * mini.h: Bump AOT file format version.
2595
2596         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2597         if the delegate class is dynamic.
2598
2599         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2600         in gshared code too using the new rgctx info type
2601         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2602
2603 2009-12-04  Geoff Norton  <gnorton@novell.com>
2604
2605         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2606         we need to track the original suspend count so the thread properly
2607         wakes up in resume_thread.
2608
2609 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2610
2611         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2612         code.
2613
2614         * generics.cs: Add a test.
2615
2616         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2617         is 0. Simplify a lot of code using this.
2618
2619         * mini-trampolines.c (mono_delegate_trampoline): Call
2620         mono_create_static_rgctx_trampoline () before saving the final address in
2621         delegate->method_code, to avoid calling it each time a delegate is first called.
2622
2623         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2624         which need static rgctx trampolines.
2625
2626         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2627         keyed on the method+addr pair, since addr could be either the method addr or
2628         an unbox trampoline in the AOT case. Fixes #560246.
2629
2630 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2631
2632         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2633         place it was called before too.
2634
2635 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2636
2637         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2638         if no security manager is present, to speed up the AOT case. Call
2639         mono_class_vtable () full with raise_on_error == TRUE instead.
2640
2641 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2642
2643         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2644         the local optimization passes can take its result into account. Fixes
2645         #559876.
2646
2647         * exceptions.cs: Add a test.
2648
2649 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2650
2651         This patch is contributed under the terms of the MIT/X11 license
2652
2653         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2654
2655 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2656
2657         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2658
2659         * debugger-agent.c: Rework the handling of stack traces of running threads to
2660         avoid crashes if compute_frames () tries to walk the stack of running thread.
2661
2662         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2663
2664         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2665
2666         * mini.h (StackFrameInfo): Add an 'lmf' field.
2667
2668 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2669
2670         * debugger-agent.c (suspend_current): Always set really_suspended.
2671
2672         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2673
2674         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2675
2676 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2677
2678         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2679         really suspended.
2680
2681 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2682
2683         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2684
2685 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2686
2687         * mini-trampolines.c: Fix MSVC build.
2688
2689 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2690
2691         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2692
2693 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2694
2695         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2696         the instruction following an OP_FCOMPARE is optimized away.
2697
2698 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2699
2700         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2701         emit_autoreg () into this arch-specific function.
2702
2703         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2704         code, it is no longer needed.
2705
2706         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2707
2708         * mini.h: Bump AOT file format version.
2709
2710         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2711         using the sorted_code_offsets array, instead of reading it from the
2712         exception debug info.
2713         (load_method): Call mono_aot_find_jit_info instead of
2714         decode_exception_debug_info ().
2715
2716         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2717         LLVM compiled as a flag.
2718
2719 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2720
2721         * debugger-agent.c (resume_thread): Fix a warning.
2722
2723         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2724         generated.
2725
2726 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2727
2728         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2729         contents to MonoAotFileInfo.
2730
2731 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2732
2733         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2734         Put all binary data into a giant blob, similarly to the way .net assemblies
2735         store binary data. Emit offset tables in a compact form to reduce their size.
2736
2737         * mini.h: Bump AOT file format version.
2738
2739         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2740         places.
2741
2742         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2743         avoid linear searches at runtime.
2744
2745         * aot-runtime.c (find_symbol): Update this to use the hash.
2746
2747         * mini.h: Bump AOT file format version.
2748
2749 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2750
2751         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
2752         container.
2753
2754         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
2755         too.
2756
2757         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
2758         the distribution of got slot types.
2759
2760         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
2761
2762         * method-to-ir.c: Add support for generating explicit null checks.
2763
2764 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2765
2766         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
2767         on a random thread if possible.
2768
2769         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
2770         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
2771         correctly.
2772
2773         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
2774         regs. Pass the real size of the regs array to mono_unwind_frame ().
2775
2776         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
2777         ones instead.
2778
2779 2009-11-24  Geoff Norton  <gnorton@novell.com>
2780
2781         * mini-darwin.c: Work around apple bug rdar://7209349  See
2782         http://openradar.appspot.com/7209349 for details.  Synopsis,
2783         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
2784         never been initialized before.
2785
2786 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2787
2788         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
2789
2790         * mini-arm.c (mono_arm_thumb_supported): New helper function.
2791
2792 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2793
2794         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
2795         OP_SHL_IMM is not 32 bit.
2796
2797 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2798
2799         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
2800
2801 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2802
2803         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
2804         encountered.
2805
2806         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
2807         > 0 since some threads can resume if their resume_count is > 0.
2808         (invoke_method): Avoid reading freed memory.
2809
2810         * debugger-agent.c (process_suspend): Extract the suspend code from
2811         process_single_step_inner () to a separate function. Rework the code to prevent
2812         races between this function and thread interrupts.
2813
2814         * debugger-agent.c (suspend_current): Check the resume_count field instead
2815         of resume_one so suspends+resumes during single threaded invokes work
2816         correctly.
2817
2818 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
2819
2820         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
2821         to make the generated code smaller.
2822
2823         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
2824         sequence generated by recent LLVM versions.
2825
2826         * mini-llvm.c: Add support for a few simple cases which weren't supported
2827         before.
2828
2829         * mini-trampolines.c (mono_magic_trampoline): Don't call
2830         mono_arch_get_vcall_slot () when llvm is enabled.
2831
2832         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
2833
2834         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
2835         into a new function called common_call_trampoline () which is used by the
2836         llvm vcall trampoline as well.
2837
2838         * debugger-agent.c: Implement single threaded invokes.
2839
2840         * debugger-agent.c: Revert change which broke the agent on linux.
2841
2842         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
2843         #557606.
2844
2845         * generics.cs: Add a test.
2846
2847 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
2848
2849         * debugger-agent.c: Fix the cygwin build.
2850
2851 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2852
2853         * cprop.c: Remove this unused file.
2854
2855 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2856
2857         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
2858         #557262.
2859
2860         * basic.cs: Add a test.
2861
2862 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2863
2864         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
2865         in one more place.
2866
2867 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
2868
2869         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
2870         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
2871         it. Use this flag to control llvm related code paths instead of #ifdef
2872         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
2873         AOT code.
2874
2875         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
2876
2877         * mini.h: Bump AOT file format version.
2878
2879         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
2880         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
2881
2882         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
2883         was used as an assembly filter.
2884
2885 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2886
2887         * unwind.c: Fix support for ppc.
2888
2889         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
2890         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
2891
2892 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2893
2894         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
2895         port.
2896         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
2897         added by the ps3 changes.
2898
2899 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2900
2901         * mini-gc.c: Resurrect this, so at least it compiles.
2902
2903         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
2904
2905 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
2906
2907         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
2908         create_event_list () so assembly filters can be used.
2909
2910         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
2911         from the LMF.
2912
2913 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
2914
2915         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
2916         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
2917         is disabled.
2918
2919         * aot-compiler.c (add_generic_instances): Emit instances of common generic
2920         classes for char/bool too.
2921
2922         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
2923
2924         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
2925         used.
2926
2927         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
2928         Fix warnings.
2929
2930 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
2931
2932         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
2933         
2934         Code contributed under MIT/X11 license.
2935
2936 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
2937
2938         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
2939         threads in native code work.
2940
2941         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
2942         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
2943         version.
2944
2945 2009-11-13 Jonathan Chambers <joncham@gmail.com>
2946
2947         * debugger-agent.c: Implementation for Windows platform.
2948
2949         * mini-x86.c: Add support for Windows. Use mono-* synchronization
2950         primitives. Use SEH to implement breakpoints and single stepping.
2951
2952         * mini-x86.h: Enable soft debugger on Windows.
2953
2954         Code contributed under MIT/X11 license.
2955
2956 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2957
2958         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
2959         under XEN. Fixes #522894.
2960
2961         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
2962
2963         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
2964         interface calls in LLVM AOT code.
2965
2966         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
2967         is found.
2968
2969         * mini-llvm.c: Add support for OP_VPHI.
2970
2971         * objects.cs: Add a test.
2972
2973 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2974
2975         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
2976         this is called on the debugger thread.
2977
2978 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
2979
2980         * mini-llvm.c: Add soft-float support.
2981
2982         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
2983         FCALL which returns an R4.
2984
2985         * driver.c (mono_main): Add a missing '\n'.
2986
2987         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
2988         platforms which doesn't support the LLVM IMT trampoline.
2989
2990 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
2991
2992         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
2993
2994         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
2995
2996         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
2997         virtual calls.
2998
2999         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3000
3001 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3002
3003         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3004         Instead of emitting a method_order table, sort the contents of the code_offsets
3005         table and do a binary search in the sorted table. The previous approach doesn't
3006         work with LLVM which emits methods in a arbitrary order.
3007
3008         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3009         in the .eh_frame section in ELF files.
3010
3011         * mini.h: Bump corlib file format version.
3012
3013         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3014
3015         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3016         LDMIA->LDM macro name change.
3017
3018 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3019
3020         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3021         x86.
3022
3023         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3024         SVN.
3025
3026         * aot-compiler.c: Ditto.
3027
3028         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3029         &align to mini_type_stack_size_full ().
3030
3031         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3032
3033         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3034
3035 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3036
3037         * mini-arm.c: Compute the stack space used by arguments using
3038         mini_type_stack_size_full ().
3039
3040 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3041
3042         * optflags-def.h: Remove dead TREEPROP optimization.
3043
3044 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3045
3046         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3047
3048         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3049
3050 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3051
3052         * driver.c (mono_jit_parse_options): New public API function to parse options
3053         as done by the runtime executable.
3054
3055         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3056         when handling named arguments.
3057
3058 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3059
3060         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3061         for passing small vtypes in registers, make the CallInfo structures more
3062         similar to the code on the other platforms.
3063
3064         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3065         the code in the prolog requires it.
3066
3067 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3068
3069         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3070         (koush@koushikdutta.com).
3071
3072         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3073         where the thunk memory should be allocated from. Fixes appdomain unloading
3074         on arm.
3075
3076 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3077
3078         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3079         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3080
3081 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3082
3083         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3084         AOT, as it is not implemented yet.
3085
3086         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3087
3088 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3089
3090         * debugger-agent.c: Fix windows build.
3091
3092 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3093
3094         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3095         after the client connects/disconnects.
3096
3097         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3098         when an exception of a given type is thrown.
3099
3100         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3101         only on an uncaught exception.
3102
3103         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3104
3105         * debugger-agent.c: Add a 'launch' option.
3106
3107 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3108
3109         * debugger-agent.c: Add a 'timeout' option.
3110
3111 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3112
3113         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3114         the JDWP agent.
3115
3116 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3117
3118         * debugger-agent.c (set_breakpoint): Emit a log message.
3119
3120 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3121
3122         * mini-arm.c: Fix the arm build.
3123
3124 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3125
3126         * aot-compiler.c: don't leak the value returned from
3127         mono_type_full_name().
3128
3129 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3130
3131         * debugger-agent.c: defer including mono-mutex.h until we know the
3132         agent is supported.
3133
3134 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3135
3136         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3137         of pthreads directly.
3138
3139         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3140         exception handlers. Pass info argument.
3141
3142         * mini.h: Adjust signatures of soft debugger functions to pass void*
3143         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3144
3145         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3146         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3147         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3148         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3149
3150         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3151
3152         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3153         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3154         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3155         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3156
3157         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3158
3159         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3160
3161         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3162
3163         * mono-semaphore.h: Skeleton implementation for Windows.
3164
3165         Code contributed under MIT/X11 license.
3166
3167 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3168
3169         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3170
3171         Code contributed under MIT/X11 license.
3172
3173 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3174
3175         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3176
3177         Code contributed under MIT/X11 license.
3178
3179 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3180
3181         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3182         debug info to 100 because 10 still slows down gdb too much.
3183
3184         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3185         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3186         them in the wrappers.
3187
3188 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3189
3190         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3191
3192         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3193
3194         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3195         function mono_aot_get_array_helper_from_wrapper ().
3196
3197         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3198         array helper methods.
3199
3200 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3201
3202         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3203         the value was loaded from memory.
3204
3205         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3206         the value was loader from there.
3207
3208         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3209         without constant swizzle.
3210
3211 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3212
3213         * mini-amd64.c: Put soft debugger functions behind a
3214         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3215
3216         * mini-amd64.h: disable the soft debugger in windows.
3217
3218         Code contributed under MIT/X11 license.
3219
3220 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3221
3222         * mini-x86.c: Put soft debugger functions behind a
3223         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3224
3225         Code contributed under MIT/X11 license.
3226
3227 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3228
3229         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3230         to mono_arch_find_jit_info_ext.
3231
3232         Code contributed under MIT/X11 license.
3233
3234 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3235
3236         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3237
3238         * debugger-agent.c: Add support for filtering events by assemblies.
3239
3240         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3241         the agent is not enabled.
3242
3243 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3244
3245         * exceptions-x86.c: hopefully last change to fix the windows build.
3246         This one courtesy of Jonathan Chambers.
3247
3248 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3249
3250         * debugger-agent.c: remove unused function.
3251
3252 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3253
3254         * debugger-agent.c: add #ifdefs for a few header files.
3255         * mini-x86.h: disable the soft debugger in windows.
3256         Step 1 of 2 to make this compile on windows with gcc.
3257
3258 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3259
3260         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3261         as it breaks the build.
3262
3263 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3264
3265         Merge the soft debugger branch.
3266
3267         * debugger-agent.h debugger-agent.c: New files containing the soft
3268         mode debugger module.
3269
3270         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3271         at the appropriate locations.
3272
3273         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3274         opcode.
3275
3276         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3277         enable/disable single stepping.
3278
3279         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3280         which returns all information in a StackFrameInfo structure, and can handle the
3281         LMF frames added by the debugger.
3282
3283         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3284         about an LMF frame.
3285
3286         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3287         walker function which works on a specific thread and passes a StackFrameInfo
3288         structure to its callback.
3289
3290         * mini.c (mini_init): Initialize the debugger agent.
3291
3292         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3293
3294         * mini-ops.h: Add OP_SEQ_POINT opcode.
3295
3296         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3297         arguments to the debugger agent.
3298
3299 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3300
3301         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3302         speed things up.
3303
3304         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3305
3306         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3307
3308         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3309
3310         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3311         if needed.
3312         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3313         sets the IMT argument and makes a virtual call.
3314
3315         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3316
3317 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3318
3319         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3320         the windows build.
3321
3322 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3323
3324         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3325         runtime. Fixes #551228.
3326
3327 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3328
3329         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3330
3331         * basic.cs: Add a test.
3332
3333         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3334         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3335         CONSTRAINED. Fixes #550964.
3336
3337         * generics.cs: Add a test.
3338
3339 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3340
3341         * mini-posix.c (add_signal_handler): Use
3342         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3343
3344 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3345
3346         Contributed under the terms of the MIT/X11 license by
3347         Jerry Maine <crashfourit@gail.com>.
3348
3349         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3350         sse4a for simd intrinsics.
3351
3352         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3353         sse4a for simd intrinsics.
3354
3355 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3356
3357         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3358         instead of inst_p1 which is not the same on ILP32 platforms.
3359
3360 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3361
3362         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3363         not the mscorlib one before calling mono_get_lmf_addr.
3364
3365         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3366         of the ip to the LMF.
3367
3368         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3369         immediate in the op->op_imm optimization.
3370
3371         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3372         understand. VTypes now work, but are not abi compliant, as they are
3373         split into 4 byte parts instead of 8.
3374         (emit_memcpy): Fix the unrolled case to work on the PS3.
3375
3376         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3377
3378         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3379         the default when static linking.
3380
3381         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3382
3383         * aot-compiler.c: Add an autoreg option to automatically register
3384         statically linked aot modules using ELF .ctors.
3385
3386         * genmdesc.pl: Add __ppc64__ to allowed defines.
3387
3388 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3389
3390         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3391         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3392
3393 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3394
3395         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3396
3397 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3398
3399         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3400         which will contain the domain where the method was found.
3401
3402         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3403         mini_jit_info_table_find ().
3404
3405         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3406
3407         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3408
3409 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3410
3411         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3412         set, its not supported yet.
3413
3414 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3415
3416         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3417         iface wrapper is not found.
3418         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3419
3420 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3421
3422         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3423         which have a different name.
3424
3425         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3426         wrappers and Array.GetGenericValueImpl ().
3427
3428         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3429         because of the change above.
3430
3431         * generics.cs: Add a test for full aot + generic array ifaces.
3432
3433 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3434
3435         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3436         that hides the previous one.
3437
3438 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3439
3440         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3441         marshalled. Fixes #541623.
3442
3443 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3444
3445         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3446
3447 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3448
3449         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3450
3451 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3452
3453         * mini-posix.c (sigprof_signal_handler):
3454         Implemented support for building stat call chans in different ways.
3455
3456 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3457
3458         * mini-exceptions.c (mono_find_jit_info):
3459         Also check that a jit info has been found (fixes a profiler crash).
3460
3461 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3462
3463         * mini.c (mono_codegen):
3464         Call mono_profiler_code_buffer_new with correct code address.
3465
3466 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3467
3468         * driver.c (mono_main): Change the date in the copyright.
3469
3470 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3471
3472         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3473         allocator in shared generic code for open classes, because we
3474         can't get those classes' vtables.  We need to make managed
3475         allocators not depend on the vtable at compile-time to solve this.
3476
3477 2009-10-13  Martin Baulig  <martin@ximian.com>
3478
3479         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3480         `const guint8 *trampoline' argument; send both the old and the new
3481         notification.
3482
3483 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3484
3485         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3486         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3487         (can_marshal_struct): Skip structures with auto layout.
3488
3489         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3490
3491 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3492
3493         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3494         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3495         a variable to hold the stack slot used by the int<->float conversion opcodes.
3496
3497         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3498
3499 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3500
3501         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3502         when using full-aot.
3503
3504 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3505
3506         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3507         each instance of Comparer<T>.
3508
3509         * generics.cs: Add a new test.
3510
3511 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3512
3513         * driver.c (parse_debug_options): Add a 'gdb' option.
3514
3515         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3516
3517         * image-writer.c: Add support for emitting the image into a memory buffer.
3518
3519         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3520
3521         * aot-compiler.c: Add support for registering debug info with GDB using the
3522         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3523         MONO_XDEBUG to 'gdb'.
3524
3525 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3526
3527         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3528         gdb mode.
3529
3530 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3531
3532         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3533         can be used to set breakpoints in gdb.
3534
3535         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3536         segment to an absolute address.
3537
3538 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3539
3540         * method-to-ir.c: Use the managed array allocator method if
3541         available.
3542
3543 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3544
3545         * aot-compiler.c : Fix the MSVC builds
3546
3547         Code is contributed under MIT/X11 license.
3548
3549 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3550
3551         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3552         avoid registering 1 symbol file per method with gdb.
3553
3554 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3555
3556         * mini-sparc.c: Fix the handling of enums with base type long.
3557
3558         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3559
3560         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3561         instead of using type->data.klass as the later doesn't work with generics.
3562
3563 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3564
3565         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3566         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3567         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3568         works differently now and we don't handle it in the JIT anymore.
3569
3570         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3571         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3572         the Thread class split.
3573
3574 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3575
3576         * driver.c: Don't run tests with the obsolete treeprop optimization.
3577
3578         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3579         variable volatile. Fixes #541577.
3580
3581         * basic-calls.cs: Add a new test.
3582
3583         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3584
3585 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3586
3587         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3588         work/required with recent iphone sdk versions.
3589
3590         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3591         structures.
3592
3593         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3594         in the VCALL decomposition code.
3595
3596 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3597
3598         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3599
3600         * basic.cs: Add a test.
3601
3602         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3603         generic invokes.
3604
3605         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3606         searches all the domains of the current thread.
3607
3608         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3609
3610 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3611
3612         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3613         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3614
3615         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3616         for non-jit trampolines.
3617
3618         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3619
3620         * aot-compiler.c (add_wrappers): Ditto.
3621
3622         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3623         the size of the param area used by dyn_call to 6 which covers the majority of
3624         methods.
3625
3626         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3627
3628         * mini-arm.c: Implement support for passing/receiving
3629         longs and receiving floats in the dyn_call code.
3630
3631         * mini-amd64.c: Implement support for receiving vtypes in registers in
3632         the dyn_call code.
3633
3634         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3635         the dyn_call code.
3636
3637 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3638
3639         * mini-arm.c (get_call_info): Return more precise information in
3640         ArgInfo->regtype.
3641         (dyn_call_supported): Use the information in CallInfo.
3642
3643         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3644
3645         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3646         code.
3647
3648         * mini-arm.c: Update after the dyn_call api changes.
3649
3650         * mini.c (mini_create_jit_domain_info): Register a destructor function
3651         for the runtime_invoke_hash.
3652
3653         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3654         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3655         this function.
3656         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3657         (dyn_call_supported): Simplify this by using get_call_info ().
3658         (mono_arch_dyn_call_free): New destructor function.
3659
3660         * generics.cs: Remove a printf.
3661
3662         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3663
3664         * mini-arm.c: Add support for enum return values and passing a few arguments
3665         on the stack.
3666         
3667         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3668         dyn invoke.
3669
3670         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3671
3672         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3673         the dynamic invoke wrappers.
3674
3675         * mini-arm.c: Implement OP_DYN_CALL for arm.
3676
3677         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3678         supported by the dynamic runtime invoke wrapper.
3679
3680         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3681         runtime invoke wrapper.
3682
3683         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3684         if possible when running with full-aot.
3685
3686         * mini-ops.h: Add OP_DYN_CALL opcode.
3687
3688         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3689         with dynamic arguments lists similar to libffi.
3690
3691 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3692
3693         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3694         
3695         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3696         to NEWARR.
3697
3698         * iltests.il.in: Add a new test.
3699         
3700 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3701
3702         * aot-compiler.c (add_generic_instances): Add more instances of
3703         GenericEqualityComparer.
3704
3705 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3706
3707         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3708
3709 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3710
3711         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3712         comments on some functions that now can fail.
3713
3714 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3715
3716         * Makefile.am: Add Info.plist to EXTRA_DIST
3717
3718 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3719
3720         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3721         static synchronized wrappers. Fixes #539500.
3722
3723 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3724
3725         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3726         properly.
3727
3728 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3729
3730         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3731         lmf before calling filter clauses as well. Fixes #539550.
3732
3733         * exceptions.cs: Add a test.
3734         
3735 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3736
3737         * aot-compiler.c (add_generic_class): Add instances of
3738         Array.GetGenericValueImpl as well.
3739
3740         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3741         can be tested too.
3742
3743         * generics.cs: Add a fullaot linq test.
3744
3745 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3746
3747         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3748         reg r1 on arm.
3749
3750 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3751
3752         * mini-trampolines.c (mono_delegate_trampoline) : Call
3753           mono_cominterop_get_invoke if the delegate target object
3754           is a COM object.
3755
3756         Code is contributed under MIT/X11 license.
3757
3758 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
3759
3760         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
3761         internal call is defined outside platform code. Reduce code 
3762         duplication with existing [Method|Field]AccessException
3763
3764 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3765
3766         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
3767         if the return value is a small struct passed on regs.
3768
3769 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
3770
3771         * cpu-arm.md mini-arm.c: Remove unused opcodes.
3772
3773         * mini-codegen.c: Enable the cpu description validation for arm.
3774
3775 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
3776
3777         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
3778         test which depends on structs to objects.cs.
3779         
3780         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
3781         require object model related stuff working.
3782
3783         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
3784
3785         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
3786
3787         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
3788         against the instruction metadata in mini-ops.h. amd64 only for now.
3789
3790         * mini-ops.h: Fix some instruction descriptions.
3791
3792         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
3793         unused instructions.
3794
3795 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3796
3797         * exceptions.cs: Add a new test.
3798
3799 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
3800
3801         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
3802
3803 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3804
3805         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
3806         skip empty phi opcodes.
3807         
3808         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
3809         correctly by zero extending after loads. Skip methods containing calls
3810         to the monitor enter/exit trampolines.
3811
3812         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
3813         when calling mono_thread_force_interruption_checkpoint ().
3814
3815         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
3816
3817         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
3818         64 bit thunks.
3819         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
3820
3821         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
3822         bootstrap could run.
3823
3824 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
3825
3826         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
3827
3828 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3829
3830         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
3831         of the method to
3832         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3833         LLVM might be very short.
3834
3835         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
3836         in OP_THROW/RETHROW.
3837
3838         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
3839         alignment on osx.
3840
3841 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3842
3843         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
3844         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3845         LLVM might be very short.
3846
3847 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
3848
3849         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
3850         the alignment for the value of sp.
3851
3852 2009-09-01  Geoff Norton  <gnorton@novell.com>
3853
3854         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
3855         managed wrappers in full aot.
3856
3857 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
3858
3859         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
3860
3861 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
3862
3863         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
3864
3865 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3866
3867         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
3868
3869         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
3870         saved info.
3871
3872         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3873
3874         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
3875         depend on the info MonoMethodHeader which could be missing in IL stripped
3876         assemblies.
3877
3878 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3879
3880         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
3881         they are only 4 byte aligned.
3882
3883 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
3884
3885         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
3886         was done previously, since using SP causes too many problems.
3887
3888         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
3889         frames without a frame pointer works.
3890
3891         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
3892         global register in methods with calls, since the calls can go through
3893         a static rgctx trampoline which doesn't save it.
3894
3895 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
3896
3897         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
3898
3899 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3900
3901         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
3902
3903 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3904
3905         * method-to-ir.c: Fix warnings for uninitialized variables.
3906
3907 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3908
3909         * mini-exceptions.c:
3910         * aot-compiler.c: Fix printf warnings.
3911
3912 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3913
3914         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
3915         Add GetGenericValueImpl<string>.
3916         
3917         * aot-compiler.c (add_generic_instances): Add instances of
3918         GenericEqualityComparer<T> for primitive types. Only emit the array
3919         wrappers into the mscorlib image.
3920
3921 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
3922
3923         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
3924         the methods_loaded array using amodule->info->nmethods.
3925
3926         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
3927         (MONO_AOT_FILE_VERSION): Bump this.
3928
3929         * aot-compiler.c: Emit more generic instances allowing some parts of linq
3930         to work.
3931
3932         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
3933         MonoJitInfo doesn't belong to its methods aot image.
3934
3935 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
3936
3937         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
3938
3939         * mini-arm.c: Fix warnings.
3940         
3941         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
3942
3943         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
3944         supports it.
3945
3946 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
3947
3948         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
3949         avoid clobbering IP.
3950
3951         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
3952         hold the trampoline argument, so its initial value is available during
3953         debugging.
3954
3955 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
3956
3957         * exceptions-arm.c:
3958         * exceptions-hppa.c:
3959         * mini.c:
3960         * exceptions-s390x.c:
3961         * exceptions-mips.c:
3962         * exceptions-ppc.c:
3963         * exceptions-sparc.c:
3964         * exceptions-alpha.c:
3965         * aot-runtime.c:
3966         * mini-trampolines.c:
3967         * exceptions-x86.c:
3968         * exceptions-s390.c: add and use #define's instead of sizeof()
3969         for MonoJitInfo and MonoJitInfoTable.
3970
3971 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3972
3973         * tramp-arm.c:
3974         * tramp-amd64.c:
3975         * tramp-ppc.c:
3976         * tramp-x86.c: use a #define instead of sizeof() for a few
3977         structures that use a zero-length array.
3978
3979 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
3980
3981         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
3982         case when the method is dynamic. Fixes #529238.
3983
3984 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
3985
3986         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
3987         of asserting when a method is JIT compiled in full-aot mode.
3988
3989 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
3990         
3991         Contributed under the terms of the MIT/X11 license by
3992         Jerry Maine <crashfourit@gail.com>.
3993         
3994         * fixed wrong dates in changelog.
3995
3996 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
3997         
3998         Contributed under the terms of the MIT/X11 license by
3999         Jerry Maine <crashfourit@gail.com>.
4000
4001         * basic-simd.cs: added test for packed double square root.
4002         * cpu-amd64.md: added opcode info for packed double square root.
4003         * cpu-x86.md: added opcode info for packed double square root.
4004         * mini-ops.h: added IR opcode for packed double square root.
4005         * mini-x86.c: added IR to native translation code for packed double square root.
4006         * mini-amd64.c: removed todo for packed double square root.
4007         * simd-intrinsics.c: added method to IR opcode converstion for
4008         packed double square root.
4009
4010 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4011
4012         Contributed under the terms of the MIT/X11 license by
4013         Jerry Maine <crashfourit@gail.com>.
4014
4015         * mini-amd64.c: Added a change to help tell the difference as 
4016         to what perpose the xmm register is being used--mainly to help
4017         with debuging.
4018         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4019         (one used for special cases) xmm registers for both fp
4020         and simd ops. Added define to turn on new feature in the regalloc
4021         that allows fp and simd ops to share the xmm regs happily.
4022         * codegen.c: Added code to detect for which perpose an xmm reg is
4023         being used (fp or simd) and to translate back and forth to the
4024         correct logical reg bank (fp or simd) for 'spill load's.
4025
4026 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4027
4028         Contributed under the terms of the MIT/X11 license by
4029         Jerry Maine <crashfourit@gail.com>.
4030
4031         * basic-simd.cs: Added tests for stressing the regalloc when running with
4032         16 simd regs and when simd and fp ops share the same reg bank.
4033
4034 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4035
4036         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4037         in shared generic code, we might have to look up the class in the
4038         RGCTX.  If we use the class directly, compute its GC descriptor.
4039
4040 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4041
4042         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4043
4044 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4045
4046         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4047         check for errors. Fixed the case when the class with the Main
4048         method is broken.
4049
4050 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4051
4052         Contributed under the terms of the MIT/X11 license by
4053         Jerry Maine <crashfourit@gail.com>.
4054
4055         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4056
4057 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4058
4059         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4060
4061 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4062
4063         * method-to-ir.c: Fix naming of stelem and ldelem.
4064
4065 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4066
4067         * driver.c (main_thread_handler): Check that the assembly loaded
4068         matches the filename when doing AOT.
4069
4070 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4071
4072         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4073         call it anymore.
4074
4075         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4076         utils/mono-sigcontext.h).
4077
4078         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4079         #ifdef.
4080
4081 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4082
4083         * mini.c (mono_codegen):
4084         Call profiler hook to keep track of method code buffers.
4085
4086 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4087
4088         * method-to-ir.c: Invoke write barriers for the
4089         Interlocked.(Compare)Exchange JIT intrinsics.
4090
4091 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4092
4093         * Makefile.am (version.h): Fix issues when built out of tree.
4094         Remove some redundant 'grep's piped through 'sed's.
4095
4096 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4097
4098         This patch is contributed under the terms of the MIT/X11 license
4099
4100         * mini-ppc.c (mono_arch_output_basic_block):
4101         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4102         for bits 32-47 with signed load/store diplacements for bits
4103         48-63.  Use prefered base/offset order for indexed form.
4104         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4105         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4106         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4107         OP_LOADI2_MEMBASE): Same.
4108         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4109         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4110         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4111         indexed form.
4112         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4113         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4114         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4115         OP_LOADI1_MEMINDEX): Same
4116         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4117         OP_STORER8_MEMINDEX): Same
4118         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4119         computations.
4120         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4121         for bits 32-47 with signed load/store diplacements for bits
4122         48-63.  Use prefered base/offset order for indexed form.
4123
4124 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4125
4126 This patch is contributed under the terms of the MIT/X11 license
4127
4128         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4129         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4130         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4131         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4132         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4133         cfg->stack_usage to avoid size warnings.
4134         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4135         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4136         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4137         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4138         to convert.
4139         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4140         after code varible is initialized.
4141         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4142         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4143         (mono_arch_emit_epilog): 
4144         Move Use ppc_load32 for cfg->stack_usage to avoid size
4145         warnings.
4146
4147 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4148
4149         * method-to-ir.c: The write barrier doesn't do the store anymore,
4150         so we have always to emit it.  Also, emit the wbarrier after the
4151         store.
4152
4153 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4154
4155         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4156         for argument count 3 too.
4157
4158 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4159
4160         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4161         the caller handle the exceptions.
4162         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4163         method. Fixes #524498.
4164
4165 2009-07-22  Geoff Norton  <gnorton@novell.com>
4166
4167         * mini-exceptions.c: Fix build on ia64.
4168
4169 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4170
4171         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4172         barriers.
4173
4174 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4175
4176         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4177         code.
4178
4179 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4180
4181         * basic-simd.cs (Main): Pass args to the test driver.
4182
4183 2009-07-20  Geoff Norton  <gnorton@novell.com>
4184
4185         * mini-x86.h: Fix the x86 version guards to use Apple's
4186         properly defined macros.
4187
4188 2009-07-20  Geoff Norton  <gnorton@novell.com>
4189
4190         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4191         aligned access.
4192
4193 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4194
4195         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4196         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4197         the information which is needed for invokes, so only one locking+hash table
4198         lookup is needed.
4199
4200         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4201         
4202         * aot-compiler.c (add_generic_instances): Emit instances of 
4203         GenericComparer<T> for primitive types.
4204
4205 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4206
4207         * mini-posix.c: Fix linux build.
4208
4209 2009-07-19  Geoff Norton  <gnorton@novell.com>
4210
4211         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4212         mono_gdb_render_native_backtraces
4213         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4214         so we implement the sane semantics to the runtime here
4215         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4216         so we need to call it differently (mono_gdb_render_native_backtraces)
4217         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4218         here for default implementations.
4219         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4220         support Apple's weird syscall (SYS_fork) implementation and not busy
4221         loop in abort() on native crashes on OSX anymore.
4222
4223 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4224
4225         * aot-runtime.c (load_method): Change the handling of the
4226         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4227         are used.
4228
4229         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4230
4231 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4232
4233         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4234         seems to break the aot tests.
4235         
4236         * mini.c (mono_patch_info_equal): Fix the handling of 
4237         MONO_PATCH_INFO_RGCTX_FETCH.
4238
4239 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4240
4241         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4242
4243         * mini.c (mono_patch_info_hash): Fix the handling of 
4244         MONO_PATCH_INFO_INTERNAL_METHOD.
4245         (mono_patch_info_equal): Ditto.
4246
4247 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4248
4249         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4250         in a few places.
4251         
4252         * mini-llvm.c: Add some infrastructure for AOT support.
4253
4254 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4255
4256         * mini-llvm-cpp.c: Update to the latest llvm api.
4257         
4258         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4259         option to false to prevent llvm from installing signal handlers which
4260         trip up the gc.
4261         
4262 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4263
4264         * cpu-x86.md:
4265         * cpu-amd64.md: Revert previous change as those instructions
4266         take 2 separate arguments. Remember to read the arch docs more
4267         carefully next time.
4268
4269 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4270
4271         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4272
4273 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4274
4275         * mini-ppc.c: exploit multiple load/store units if available (rest of
4276         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4277         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4278
4279 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4280
4281         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4282         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4283
4284 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4285
4286         * cpu-x86.md: Fix missing clobbering from trancendental simd
4287         ops.
4288
4289         * cpu-amd64.md: Same.
4290
4291 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4292
4293         Contributed under the terms of the MIT/X11 license by
4294         Jerry Maine <crashfourit@gail.com>.
4295
4296         * basic-simd.cs: Added tests for single and doulble indexers.
4297
4298         * cpu-amd64.md: Added simd opcode information.
4299
4300         * mini-amd64.c: Added IR to native simd generation code.
4301         Added simd register names and function that returns them.
4302
4303         * mini-amd64.h: Added marcos to turn on simd code compilation in
4304         amd64. Added max simd register count marco. Added caller/callee
4305         register mask marcos. Added marcos to use simd register bank.
4306
4307         * mini.h: Added helper marco for shufling dwords and simple
4308         floats.
4309
4310 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4311
4312         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4313
4314         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4315
4316         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4317         the length of the native code as well.
4318
4319         * basic-simd.cs: Add a test for #521662.
4320
4321 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4322
4323         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4324
4325 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4326
4327         * mini.c: Register function for getting the IP from a signal
4328         context with metadata.
4329
4330 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4331
4332         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4333         call a generic class init trampoline if needed. Fixes #519336.
4334
4335         * generics.cs: Add a test.
4336         
4337 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4338
4339         * method-to-ir.c: When doing a call which might be remote from
4340         shared generic code to other shared code with open type arguments,
4341         get the remoting invoke wrapper from the RGCTX and do an indirect
4342         call to it.
4343
4344 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4345
4346         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4347         after the unbox trampoline in the full-aot case.
4348
4349 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4350         
4351         * mini.c: Move initialization of jit_mutex before debugger initialization
4352         
4353         to avoid crashes.
4354         
4355         
4356         * Info.plist: added Info.plist and link flag to enable the mono executable
4357         to access other processes. Requires codesigning of the executable to work.
4358         
4359         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4360         
4361         compile on OS X.
4362         
4363
4364 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4365
4366         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4367
4368 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4369
4370         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4371         when the generic instance is an instantiation of a subclass of the
4372         methods class. Fixes #517166.
4373
4374 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4375
4376         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4377         code.
4378
4379         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4380         AOTed code.
4381
4382         * CMakeLists.txt: Add minimal support for installation.
4383
4384 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4385
4386         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4387         determine whenever a method is directly callable to a separate function.
4388
4389         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4390         needed ones as a result of the previous change.
4391
4392         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4393         type of register arrays.
4394
4395         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4396         type of register arrays.
4397
4398 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4399         
4400         Contributed under the terms of the MIT/X11 license by
4401         Jerry Maine <crashfourit@gail.com>.
4402
4403         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4404
4405 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4406
4407         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4408
4409 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4410
4411         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4412         dump of structure return value. Fix some formatting.
4413         * cpu-s390x.md: Fix lengths of instruction sequences.
4414         * mini-s390.c: Minor formatting changes.
4415
4416 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4417
4418         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4419         Use sigaction on freebsd as well.
4420
4421 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4422
4423         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4424         uses #ifdef on it.
4425         
4426         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4427
4428 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4429
4430         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4431
4432 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4433
4434         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4435
4436 2009-06-20  Martin Baulig  <martin@ximian.com>
4437
4438         * debug-mini.c
4439         (MonoDebuggerThreadFlags): New enum typedef.
4440         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4441         (mono_debugger_thread_created): Added `gpointer func' argument;
4442         initialize the new `thread_flags' field.
4443
4444 2009-06-18  Martin Baulig  <martin@ximian.com>
4445
4446         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4447         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4448
4449         * debug-debugger.c
4450         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4451         flag in `MONO_DEBUGGER__info.runtime_info'.
4452
4453         * driver.c
4454         (mono_main): Call mini_debugger_set_attach_ok() if generics
4455         sharing is disabled.
4456
4457 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4458
4459         * aot-compiler.c (add_wrappers): Fix a warning.
4460
4461         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4462         the ppc load/store macro changes.
4463
4464 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4465
4466         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4467
4468         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4469         not just the got symbol.
4470
4471         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4472         on ppc.
4473
4474         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4475         ppc.
4476         
4477         * aot-compiler.c: Remove some fixmes.
4478
4479         * driver.c (mono_main): Print a helpful message when cross-compiling.
4480
4481         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4482
4483         * method-to-ir.c (initialize_array_data): Do the optimization if the
4484         target byte order is little endian, instead of the host byte order.
4485
4486         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4487         wrappers into the mscorlib image, Emit a unique plt symbol for each
4488         image, emit symbols for plt entries.
4489
4490         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4491         a .size directive.
4492         
4493 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4494
4495         * aot-compiler.c (add_wrappers): Avoid calling 
4496         mono_marshal_get_type_info () since it can assert for some types.
4497
4498         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4499         ldtoken are used inside wrappers.
4500
4501         * helpers.c: Add support for prefixing tools with the arch name.
4502
4503         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4504         quantities when using ilp32.
4505
4506         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4507         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4508
4509         * image-writer.c: Use .long on ilp32.
4510
4511         * aot-compiler.c: Use 32 bit loads on ilp32.
4512         
4513 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4514
4515         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4516
4517         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4518
4519         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4520
4521         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4522         second got slot of every aot image.
4523         
4524         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4525         aot on platforms with function pointers.
4526
4527         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4528         support for aot/full aot on ppc/ppc64.
4529         
4530         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4531         arguments which are needed on ppc.
4532
4533         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4534         argument.
4535
4536         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4537         
4538         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4539
4540         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4541
4542         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4543
4544         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4545
4546 2009-06-17  Geoff Norton  <gnorton@novell.com>
4547
4548         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4549
4550 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4551
4552         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4553         to control whenever the dwarf writer is in xdebug or aot mode.
4554         (emit_class_dwarf_info): Use a separate abbrev for structures without
4555         children.
4556
4557         * aot-compiler.c: Pass the appending parameter to 
4558         mono_dwarf_writer_create ().
4559
4560         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4561         falls through to its next bblock. Fixes #513931.
4562
4563         * iltests.il: Add a test.
4564
4565         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4566         infor even if emit_line is FALSE, as the apple linker seems to require it.
4567
4568         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4569
4570         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4571         gcc does.
4572         (emit_fde): Ditto.
4573
4574 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4575
4576         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4577         mips build.
4578
4579 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4580
4581         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4582         'has_call_handler' fields.
4583
4584         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4585
4586         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4587         first bblock if not needed. Fixes #512790.
4588         
4589 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4590
4591         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4592         
4593         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4594         wrappers.
4595
4596         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4597         remoting-invoke-with-check wrappers, which are not needed when running with
4598         full-aot, since it doesn't support remoting.
4599         
4600 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4601
4602         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4603
4604         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4605         method info, it is not used anymore.
4606
4607         * mini.h: Bump AOT file format version.
4608         
4609         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4610         word smaller.
4611
4612         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4613         change above.
4614         
4615         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4616
4617         * mini.h: Bump AOT file format version.
4618         
4619 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4620
4621         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4622         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4623         iphone.
4624
4625         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4626         of CKFINITE and FBGE for VFP.
4627
4628 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4629
4630         * aot-compiler.c: Don't align code to 16 bytes on arm.
4631         
4632         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4633         before the methods they belong to.
4634
4635         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4636         the full-aot case if possible, since the trampoline will be called right 
4637         away.
4638
4639         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4640         trampolines to 1024 after the change above.
4641
4642         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4643         trampoline to save 8 bytes per trampoline.
4644
4645         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4646         change above.
4647
4648 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4649
4650         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4651
4652 2009-06-08  Martin Baulig  <martin@ximian.com>
4653
4654         * debug-mini.c
4655         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4656         (_mono_debugger_throw_exception): Don't make this static.
4657         (_mono_debugger_unhandled_exception): Likewise.
4658         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4659
4660         * debug-mini.c
4661         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4662         (_mono_debugger_throw_exception): Add function prototype.
4663         (_mono_debugger_unhandled_exception): Likewise.
4664
4665         * mini-exceptions.c
4666         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4667         arg; return the first exception handler if the exception is caught
4668         and we're running inside the debugger.
4669         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4670         improve exception handle inside runtime-invoke, check whether the
4671         exception is actually caught in the method being invoked and not
4672         by the runtime-invoke-wrapper.
4673
4674 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4675
4676         * image-writer.c: Improve support for the osx assembler.
4677
4678         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4679         support them.
4680
4681 2009-06-08  Martin Baulig  <martin@ximian.com>
4682
4683         * debug-mini.c
4684         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4685         (_mono_debugger_throw_exception): Don't make this static.
4686         (_mono_debugger_unhandled_exception): Likewise.
4687         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4688
4689         * debug-mini.c
4690         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4691         (_mono_debugger_throw_exception): Add function prototype.
4692         (_mono_debugger_unhandled_exception): Likewise.
4693
4694         * mini-exceptions.c
4695         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4696         arg; return the first exception handler if the exception is caught
4697         and we're running inside the debugger.
4698         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4699         improve exception handle inside runtime-invoke, check whether the
4700         exception is actually caught in the method being invoked and not
4701         by the runtime-invoke-wrapper.
4702
4703 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4704
4705         * image-writer.c (append_subsection): Don't align subsections of the
4706         debug_line section as a workaround.
4707
4708         * dwarfwriter.c: Emit line number info in the AOT case as well.
4709
4710 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4711
4712         This patch is contributed under the terms of the MIT/X11 license
4713
4714        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4715        code_len <= code_size
4716
4717 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4718
4719         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4720
4721 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4722
4723         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4724         invoke wrappers, we now use trampolines instead.
4725
4726 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4727
4728         * mini-darwin.c: The exception thread must not be registered with
4729         the GC.
4730
4731 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4732
4733         * mini-gc.c: Disable the code because it makes SGen crash.
4734
4735 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4736
4737         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4738         instead of asserting.
4739
4740 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4741
4742         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4743         output file after the code has been compiled.
4744
4745 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4746
4747         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4748
4749 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4750
4751         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
4752         entries distinction to simplify the code.
4753
4754         * mini.h: Bump AOT file format version.
4755         
4756 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
4757
4758         * objects.cs: Fix the signature of one of the tests.
4759
4760         * mini.c (mini_create_ftnptr): New helper function, moved here from
4761         object.c.
4762         (mini_get_addr_from_ftnptr): Ditto.
4763         (mini_init): Install the new helpers.
4764
4765 2009-05-28  Martin Baulig  <martin@ximian.com>
4766
4767         Correctly initialize the debugger when embedding Mono.
4768
4769         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
4770         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
4771         see documentation in mini_debug_running_inside_mdb().
4772
4773         * debug-debugger.c
4774         (mini_debug_running_inside_mdb): New function to check whether
4775         we're running inside mdb.
4776
4777         * mini.c (mini_init): Call mini_debugger_init() if we're running
4778         inside the debugger.
4779
4780         * driver.c (mono_main): Moved the call to mini_debugger_init()
4781         into mini_init() to make this work when embedding Mono.
4782
4783         * debug-debugger.c (mini_debugger_init): Warn about duplicate
4784         calls to mini_debugger_init().
4785
4786         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
4787         mono_debugger_main() -> mini_debugger_main() and put them inside a
4788         `MONO_DEBUGGER_SUPPORTED' conditional.
4789
4790 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
4791
4792         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
4793         this is no longer in use.
4794         * mini.h: Same.
4795
4796 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
4797
4798         * mini-sparc.c (add_outarg_load): Fix the sparc build.
4799
4800         * aot-compiler.c (emit_method_code): Always write out C style symbols for
4801         methods.
4802
4803 2009-05-27  Martin Baulig  <martin@ximian.com>
4804
4805 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4806
4807         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
4808         long_conv_to_r_un to 64 bits.
4809
4810         * cpu-x86.md: Increase the instruction size due to the changes.
4811
4812         * iltests.il.in: Add regression test.
4813
4814         Fixes #467201.
4815
4816 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4817
4818         * objects.cs: Move the previous test from basic.cs to here.
4819
4820 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4821
4822         * basic.cs: Add regression test for #506915.
4823
4824 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4825
4826         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
4827         optimization we must check the bb of the first byte of stobj as
4828         it's the only one set in cil_offset_to_bb.
4829
4830         Fixes #506915.  
4831
4832 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
4833
4834         * image-writer.c: Fix pointer directive on ppc64.
4835
4836 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
4837
4838         * image-writer.c (asm_writer_emit_section_change): Avoid using
4839         .bss subsections on ppc too.
4840
4841 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
4842
4843         * image-writer.c: Fix the definition of TARGET_ASM_....
4844         
4845         * image-writer.c: Fix the emission of assembler directives in the last
4846         change.
4847
4848         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
4849         exception throwing code to accomodate ppc64.
4850
4851         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
4852         size to work on ppc64 too.
4853
4854         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
4855         too.
4856
4857         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
4858         the assembler dialect instead of using platform specific defines.
4859
4860 2009-05-22  Geoff Norton  <gnorton@novell.com>
4861
4862         * mini-arm.c (get_call_info): If a structure is split between the stack
4863         and argument registers, we should not advance the stack pointer by the entire
4864         native size, but just by the amount that spilled.
4865
4866 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
4867
4868         * mini-arm.c (get_call_info): Handle structures with alignment requirements
4869         correctly.
4870
4871 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4872
4873         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
4874         wrappers normally.
4875         
4876         * aot-compiler.c (add_extra_method): Fix up the collection of extra
4877         methods so wrapper don't get added twice.
4878         (add_generic_instances): Don't add methods of arrays.
4879
4880         * generics.cs: Mark one test as !FULLAOT.
4881
4882 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4883
4884         * mini-x86.c (emit_move_return_value): Remove unused vars.
4885
4886 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4887
4888         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
4889         decomposing 8 bytes structs into a LCALL.
4890
4891         * mini-x86.c (emit_move_return_value): We no longer push the vtype
4892         pointer for where to store the returned regs.
4893
4894         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
4895         state the concern.
4896
4897         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
4898
4899 2009-05-20  Miguel de Icaza  <miguel@novell.com>
4900
4901         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
4902         without getenv.
4903
4904 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4905
4906         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
4907
4908         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
4909         generics.
4910
4911 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
4912
4913         * local-propagation.c (mono_local_cprop): Avoid local propagation
4914         across paired add/sub if the first instruction dest reg is it's
4915         source reg. For example:
4916
4917         int_add_imm R12 <- R12 [1] clobbers: 1
4918         int_sub_imm R42 <- R12 [1] clobbers: 1
4919
4920         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
4921         maintain the math identify.
4922
4923         Fixes #505375.
4924
4925 2009-05-20  Andreia Gaita  <avidigal@novell.com>
4926
4927         * Makefile.am: avoid going on the network just to get the revision,
4928         use git log instead
4929
4930 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
4931
4932         Fixed estimate for short branches on amd64 (they were off mark, and
4933         enabling call prolog-epilog instrumentations caused assertions).
4934         * mini.h (struct MonoBasicBlock): added max_length field to hold the
4935         estimate for the maximum length of this basic block.
4936         * mini-amd64.c:
4937         - mono_arch_emit_prolog: compute max_length for each basic block
4938           (instead of max_offset), and inflate size estimate also for entry bb
4939           in case of code instrumentation.
4940         - mono_arch_output_basic_block: get rid of "cpos" (the current
4941           estimated "position" in the code), and always use "offset" instead,
4942           which is accurate; at the beginning of the function quickly recompute
4943           max_offset for all the remaining blocks, starting from the current
4944           cfg->code_len (which is correct, and not estimated) and using the
4945           estimated block lengths computed previously.
4946
4947 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
4948
4949         * exceptions-ppc.c: Remove the caching from the trampoline creation 
4950         functions, it is already done in the caller.
4951
4952         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
4953
4954         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
4955         MONO_ARCH_GSHARED_SUPPORTED define.
4956
4957         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
4958
4959         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
4960         function.
4961
4962 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
4963
4964         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
4965         call to mono_marshal_get_rgctx_invoke ().
4966
4967         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
4968         mono_marshal_get_static_rgctx_invoke (), all platforms which support
4969         gshared use the static rgctx trampolines now.
4970         
4971         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
4972         platform supports it.
4973
4974 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4975
4976         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
4977
4978         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
4979
4980 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4981
4982         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
4983
4984         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
4985         for ppc.
4986
4987 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
4988
4989         Made it possible for mono_arch_instrument_epilog to preserve
4990         argument registers, otherwise instrumenting the "epilogue" before
4991         a tail call would clobber them.
4992         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
4993         if like mono_arch_instrument_epilog but with an additional parameter
4994         that states if argument registers must be preserved.
4995         * mini.c: implemented mono_arch_instrument_epilog as a call to
4996         mono_arch_instrument_epilog_full without asking to preserve argument
4997         registers (this makes the existing code work as usual).
4998         * mini-amd64.c:
4999         - mono_arch_instrument_epilog: add parameter to transform it into
5000         mono_arch_instrument_epilog_full, and preserve argument registers
5001         when required.
5002         - mono_arch_output_basic_block, OP_TAILCALL case: call
5003         mono_arch_instrument_epilog_full.
5004         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5005         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5006         only transformed mono_arch_instrument_epilog into
5007         mono_arch_instrument_epilog_full.
5008
5009 2009-05-15  Geoff Norton  <gnorton@novell.com>
5010
5011         * mini-darwin.c: This works on arm now.
5012
5013 2009-05-14  Geoff Norton  <gnorton@novell.com>
5014
5015         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5016         embedding api.
5017
5018 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5019
5020         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5021         label names.
5022
5023         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5024         wrappers during full aot mode correctly.
5025
5026         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5027         methods correctly.
5028
5029         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5030         mono_metadata_type_hash ().
5031
5032 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5033
5034         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5035         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5036         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5037         Removed MONO_INST_BRLABEL from the instruction flags, and the
5038         remaining code that used it, because we do not support branches inside
5039         basic blocks (and branch target labels) anymore.
5040         * Makefile.am: As part of the above cleanup, remove reference to
5041         BURG files which don't exist anymore.
5042
5043 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5044
5045         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5046         osx.
5047
5048         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5049         to use mono_arch_throw_corlib_exception.
5050
5051         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5052         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5053
5054         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5055         domain mempool.
5056
5057         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5058
5059         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5060         for the got to make debugging easier and to avoid confusing it with the
5061         system got.
5062         
5063         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5064         method so a breakpoint can be set when using gdb.
5065
5066 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5067
5068         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5069         on mono_method_get_imt_slot ().
5070
5071         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5072         num_decodes variables.
5073
5074         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5075         change as it doesn't seem to work.
5076         
5077         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5078         wrappers.
5079
5080 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5081
5082         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5083         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5084
5085         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5086         builder when using full aot.
5087
5088         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5089         here, it is already handled.
5090         
5091         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5092         correctly for IMT.
5093
5094         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5095
5096         * mini-arm.h: Enable IMT for full aot.
5097         
5098         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5099         arch doesn't support it.
5100
5101         * mini.c (mini_init): Don't disable IMT for full aot if the
5102         architecture supports it.
5103
5104         * mini.h (MonoAotTrampoline): New enum containing the different types
5105         of 'numerous' trampolines.
5106         (MONO_AOT_FILE_VERSION): Bump this.
5107
5108         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5109         static rgctx trampolines. Add support for full-aot IMT thunks.
5110
5111         * mini-amd64.h: Enable IMT for full aot.
5112
5113         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5114         to exclude tests belonging to a category.
5115
5116         * generics.cs: Mark some tests with a !FULLAOT category.
5117
5118         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5119         generics tests.
5120
5121 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5122
5123         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5124         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5125         (emit_plt): Fix a warning.
5126
5127 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5128
5129         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5130         back into aot-compiler.c to a place where the other functions shared by
5131         the runtime and aot compiler are.
5132         
5133         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5134         as done previously, instead of in MonoAotFileInfo, since pointers might have
5135         alignment requirements.
5136
5137         * mini.h: Bump AOT file format version.
5138
5139 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5140
5141         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5142         that is used at runtime from the aot-compiler.c, this makes it
5143         work on setups that remove the AOT compiler from the output
5144         image. 
5145
5146 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5147
5148         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5149         PPC.
5150
5151         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5152
5153         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5154
5155         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5156         stuff to mono_arch_decompose_long_opts ().
5157         (mono_decompose_opcode): Remove some dead code.
5158
5159 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5160
5161         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5162         cmethod can be null for quite a some reasons.
5163
5164 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5165
5166         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5167
5168 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5169
5170         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5171
5172 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5173
5174         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5175         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5176         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5177         calls returning structures by addr on amd64.
5178
5179         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5180
5181         * iltests.il.in: Restructure the tail call tests a bit.
5182         
5183 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5184
5185         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5186         for virtual methods too.
5187
5188 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5189
5190         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5191         due to regression in verifying System.dll.
5192
5193 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5194
5195         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5196         in dynamic methods.
5197
5198         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5199         instances.
5200
5201         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5202         g_str_hash () which can change.
5203
5204         * driver.c (mini_regression): Disable optimizations not supported by
5205         the cpu. Fixes #500019.
5206
5207         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5208         build.
5209
5210 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5211
5212         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5213         to the latest LLVM code.
5214
5215 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5216
5217         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5218
5219 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5220
5221         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5222         x86/amd64.
5223
5224         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5225         no longer saving offsets, so just save the patch types along with the other
5226         info.
5227         * aot-runtime.c (load_patch_info): Update after the changes to 
5228         encode_patch_list ().
5229         (decode_got_entry): Removed, merged into load_patch_info ().
5230         (is_shared_got_patch): Removed, call the same function from
5231         aot-compiler.c.
5232
5233         * mini.h: Bump aot file format version.
5234         
5235         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5236         half-finished no-dlsym code.
5237
5238         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5239         option.
5240
5241         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5242         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5243
5244 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5245
5246         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5247         buffer length to work with AOT code.
5248
5249         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5250         ldfld/stfld opcodes.
5251
5252         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5253         as it is not used.
5254
5255         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5256
5257         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5258
5259         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5260         LLVM API.
5261
5262         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5263         if needed. Don't decompose long operations when using llvm.
5264
5265 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5266
5267         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5268         PAGESIZE constant.
5269
5270         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5271
5272 2009-05-03  Martin Baulig  <martin@ximian.com>
5273
5274         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5275         mono_debugger_insert_method_breakpoint() since the class init
5276         handler we're inserting at the top of the method already gives us
5277         a notification.
5278
5279 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5280
5281         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5282         to mono_arch_decompose_long_opts () for x86 and arm.
5283
5284 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5285
5286         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5287         TARGET_AMD64 here.
5288
5289 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5290
5291         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5292         JIT code.
5293
5294 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5295
5296         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5297         number of trampolines used in full-aot mode.
5298
5299         * aot-compiler.c: Add an ntrampolines option to set the number of 
5300         trampolines emitted in full-aot mode.
5301
5302 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5303
5304         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5305         a volatile load. Get rid of get_tempname (), llvm assigns names
5306         automatically.
5307
5308         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5309         builder function.
5310
5311         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5312         a value.
5313
5314         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5315         level 1.
5316
5317         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5318         to the same register as a fixed sreg2. Fixes #497271.
5319
5320         * iltests.il.in: Add a new test.
5321
5322 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5323
5324         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5325         stack, since pushes complicate exception handling.
5326
5327         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5328         the stack if they are passed using moves.
5329
5330         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5331
5332         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5333         when using llvm.
5334
5335         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5336         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5337         of FMOVE if it is an R4.
5338
5339 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5340
5341         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5342
5343         * mini.h (LLVMCallInfo): New structure to store calling convention 
5344         information for the LLVM back end similar to the CallInfo structures in 
5345         the back-ends.
5346
5347         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5348         call information in a format usable by LLVM.
5349         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5350
5351         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5352         mono_llvm_emit_call () when compiling using LLVM.
5353
5354         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5355         comments to all functions. Fix memory leaks. Add a public init/cleanup
5356         function.
5357
5358         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5359
5360         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5361         mono_array_new_va () jit icall.
5362         
5363 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5364
5365         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5366         multiple machine description files to be specified.
5367         * mini-ops.h: fixes for cross-compilation.
5368
5369 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5370
5371         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5372         some porting work.
5373
5374 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5375
5376         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5377         to prevent asserts in various passes. Fixes #497220.
5378
5379 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5380
5381         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5382         a racy assert.
5383
5384         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5385         table to avoid duplicates.
5386
5387         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5388         
5389         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5390         option is used.
5391
5392 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5393
5394         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5395         is for method or field access.
5396
5397 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5398
5399         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5400         a Value to stdout.
5401
5402         * mini-llvm.c (mono_llvm_emit_method): Use it.
5403         
5404         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5405         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5406         on volatile values.
5407
5408         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5409         synchronized methods.
5410
5411         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5412
5413         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5414
5415         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5416         OP_LOADI8_MEM.
5417
5418         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5419         allowing some options to be set dynamically.
5420
5421 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5422
5423         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5424         unconditional branch.
5425
5426         * mini.h (MonoTrampolineType): Add new trampoline type 
5427         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5428         compiled code.
5429
5430         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5431         function.
5432
5433         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5434         creation function.
5435
5436         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5437         is enabled. Instead, use the llvm vcall trampoline.
5438         
5439         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5440
5441         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5442         
5443         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5444         functions.
5445
5446         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5447         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5448
5449         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5450         OP_IA64_CSET opcode.
5451
5452         * mini.c: Fix a warning.
5453
5454         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5455         THROW to the appropriate llvm type.
5456
5457 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5458
5459         * mini.c (mini_method_compile): Add statistics for methods JITted
5460         with/without LLVM.
5461
5462 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5463
5464         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5465         OP_IA64_CMP_<cond>_IMM opcodes.
5466
5467 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5468
5469         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5470         corlib exceptions.
5471
5472         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5473         correctly.
5474
5475         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5476         GENERICINST.
5477
5478 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5479
5480         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5481
5482 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5483
5484         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5485         support.
5486
5487         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5488         rgctx invoke trampolines for x86.
5489
5490         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5491         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5492         (mono_arch_get_vcall_slot): Simplify this.
5493
5494 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5495
5496         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5497         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5498
5499 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5500
5501         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5502         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5503
5504         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5505
5506         * liveness.c (visit_bb): Remove a needless assert.
5507
5508 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5509
5510         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5511         full aot support to the arch specific code.
5512
5513         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5514
5515         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5516
5517         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5518         
5519         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5520         collect information about the delegate invoke impl trampolines.
5521
5522         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5523         to save trampolines during full-aot mode.
5524
5525         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5526         creation function which returns a trampoline which sets the rgctx
5527         argument.
5528         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5529         wrapper if possible.
5530         (mono_delegate_trampoline): Ditto.
5531
5532         * mini.c (mono_jit_runtime_invoke): Ditto.
5533
5534         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5535         
5536         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5537
5538         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5539         
5540 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5541
5542         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5543         just setting the opcode to OP_NOP.
5544
5545 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5546
5547         * mini.c (mini_method_compile): Put the last change inside an 
5548         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5549         
5550         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5551         and extend live ranges to cover the whole method when using xdb.
5552
5553         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5554         do it in the trampolines.
5555
5556         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5557         needed.
5558
5559         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5560         
5561         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5562         call code in full-aot mode since IMT is disabled there.
5563         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5564         new JIT no longer has that restriction.
5565
5566         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5567
5568         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5569         a more compact format.
5570         (mono_aot_wrapper_name): New function to return a unique name for a
5571         wrapper method, also used by the AOT runtime.
5572
5573         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5574         aot-compiler.c.
5575
5576         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5577         when a ICollection<T> etc is encountered.
5578         (add_generic_instances): Process method arguments/locals too.
5579         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5580         trampoline names.
5581
5582         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5583         
5584 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5585
5586         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5587
5588         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5589
5590         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5591         representing the result of the decomposition. Nullify instructions
5592         instead of setting them to OP_NOP since nops can't have registers
5593         set.
5594
5595 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5596
5597         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5598         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5599         info. Strip 'mapping symbols' on ARM.
5600
5601         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5602         
5603         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5604         this with the native genmdesc.
5605
5606 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5607
5608         * aot-runtime.c:  Fixing the MSVC build.
5609
5610         Code is contributed under MIT/X11 license.
5611
5612 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5613
5614         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5615         JITted code depends on it.
5616
5617 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5618
5619         * aot-compiler.c: Use new MonoGenericParam accessors.
5620
5621 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5622
5623         Reduce memory usage and improve correctness wrt MonoGenericParam
5624         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5625         handing.  Avoid allocating MonoGenericParams, but use the ones in
5626         the container itself.
5627
5628 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5629
5630         * tasklets.c: Return exceptions in the out argument.
5631
5632 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5633
5634         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5635         opcode. Use pointer types in more places instead of casting them to 
5636         integers.
5637
5638         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5639         optimizations.
5640         (mono_llvm_optimize_method): New helper function to optimize a method.
5641
5642         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5643         widening code so it could be called from more places.
5644         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5645         code paths in the call opcodes.
5646
5647 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5648
5649         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5650
5651 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5652
5653         * dwarfwriter.c: Use _ to separate class name 
5654         components as gdb can't handle '.'. Represent reference variables
5655         as 'class <NAME>&'.
5656         
5657         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5658
5659         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5660         
5661         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5662
5663         * gc-test.cs: New file with GC stack marking tests.
5664         
5665         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5666         negative numbers for vfp.
5667
5668         * basic-float.cs: Add a test.
5669         
5670 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5671
5672         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5673
5674 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5675
5676         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5677         part of tasklet/continuation support.
5678
5679 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5680
5681         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5682         amd64 opcodes inside an ifdef.
5683
5684         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5685         of complex types.
5686         
5687         * dwarfwriter.c (emit_type): Emit the class info for classes.
5688
5689 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5690
5691         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5692
5693         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5694
5695         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5696
5697         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5698
5699 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5700
5701         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5702
5703         * mini-llvm.c: Update comments.
5704
5705         * mini.h (COMPILE_LLVM): New macro.
5706
5707         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5708
5709         * ssa.c (mono_ssa_compute): Ditto.
5710         
5711         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5712         the unwind ops from a DWARF FDE.
5713
5714         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5715         methods by extracting the dwarf unwind ops from the unwind info generated
5716         by LLVM.
5717         
5718         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5719         calls.
5720
5721         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5722         addressing modes.
5723
5724 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5725
5726         * Makefile.am (llvm_sources): Enable this.
5727
5728         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5729         failing back to the JIT if something cannot be handled.
5730
5731         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5732         compiling with LLVM.
5733
5734         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5735         compiling with LLVM.
5736
5737         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5738         compiling with LLVM.
5739
5740         * mini-ops.h: Add a few opcodes needed by LLVM.
5741
5742         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5743         has no unwind info.
5744
5745         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5746         backend.
5747
5748         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5749
5750         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5751
5752 2009-04-01  Mark Probst  <mark.probst@gmail.com>
5753
5754         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
5755         ridiculously large methods.
5756
5757 2009-03-31  Martin Baulig  <martin@ximian.com>
5758
5759         * debug-debugger.c (debugger_remove_breakpoint): Call
5760         mono_debugger_remove_class_init_callback ().
5761
5762 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
5763
5764         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
5765         right before emitting code, not at the start.
5766
5767         * mini.c (mono_postprocess_patches): Extract this into a separate function
5768         from mono_codegen ().
5769
5770         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
5771         byref types correctly.
5772
5773 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
5774
5775         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
5776         by the last change.
5777
5778 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
5779
5780         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
5781         indirect calls, this avoids problems where get_vcall_slot () would get
5782         confused by the native code for the instruction preceeding the call.
5783         (mono_arch_get_vcall_slot): Simplify this.
5784         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
5785
5786         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
5787         register allocator now seems to depend on them instead of the data in
5788         cpu-<ARCH>.md.
5789
5790         * mini.c (mini_method_compile): Throw the correct type of exception if
5791         mono_method_get_header () fails because of a loading error.
5792
5793 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
5794
5795         * mini.c (mini_method_compile): Clear the loader error if the method
5796         header cannot be decoded.
5797
5798         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
5799         interface methods on proxies correctly.
5800
5801         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
5802         this argument for vtype methods. Add precise liveness info for arguments.
5803
5804         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
5805         LIVERANGE_START/END opcodes.
5806
5807         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
5808         for arguments and values in registers.
5809
5810 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
5811
5812         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
5813         return a valuetype. Fixes #487518.
5814
5815         * iltests.il: Add a test.
5816         
5817         * aot-compiler.c: Use mono_thread_create () to create helper threads.
5818
5819         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
5820         closed over a null reference correctly.
5821
5822 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
5823
5824         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
5825
5826 2009-03-25  Mark Probst  <mark.probst@gmail.com>
5827
5828         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
5829         allocated to the same registers as fixed sregs.
5830
5831 2009-03-24  Mark Probst  <mark.probst@gmail.com>
5832
5833         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
5834         ATOMIC_CAS_IMM ops.
5835
5836         * method-to-ir.c: Handle more cases for
5837         Interlocked.CompareExchange.
5838
5839         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
5840         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
5841         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
5842
5843 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
5844
5845         * aot-runtime.c (decode_method_ref): Fix a warning.
5846
5847         * unwind.c (mono_unwind_frame): Ditto.  
5848
5849 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5850
5851         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
5852         (mono_compile_assembly): Enable the binary writer for full-aot as well.
5853
5854         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
5855         fix the handling of large values in the ALU_PC_G0_NC relocation.
5856
5857 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5858
5859         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
5860
5861 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5862
5863         * method-to-ir.c (mono_spill_global_vars): Support for ternary
5864         ops.
5865
5866 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5867
5868         * method-to-ir.c: MINI_OP3 needs a comma.
5869
5870         * method-to-ir.c, mini.h, mini.c: Remove
5871         mono_init_op_sreg_counts ().
5872
5873 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5874
5875         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
5876         OP_JMP.
5877         
5878         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
5879         assertion.
5880
5881         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
5882
5883         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
5884         code somewhat.
5885
5886 2009-03-21  Mark Probst  <mark.probst@gmail.com>
5887
5888         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
5889         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
5890         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
5891         operations.
5892
5893 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
5894
5895         * driver.c: Change location of gc_wrapper.h.
5896
5897         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
5898         inside finally clauses correctly. Fixes #485721.
5899
5900         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
5901         after the change above.
5902
5903         * exceptions.cs: Add a test.
5904         
5905 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5906
5907         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
5908
5909         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
5910         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
5911         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
5912
5913         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
5914         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
5915
5916 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
5917
5918         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
5919         Simplify logic for ensure_method_is_allowed_to_call_method. 
5920         Handle wrappers on callers.
5921
5922 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5923
5924         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
5925         them don't run yet.
5926
5927         * basic-simd.cs: Fix the names of some test methods.
5928
5929 2009-03-18  Geoff Norton  <gnorton@novell.com>
5930
5931         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
5932
5933 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
5934
5935         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
5936
5937 2009-03-17  Jb Evain  <jbevain@novell.com>
5938
5939         * driver.c: remove now uneeded call to mono_gc_base_init before
5940         mono_profiler_load.
5941
5942 2009-03-17  Jb Evain  <jbevain@novell.com>
5943
5944         * dwarfwriter.c (token_handler): handle more cases.
5945
5946 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
5947
5948         * method-to-ir.c: Remove more dead code (that was required only
5949         because of method_is_safe). Fix compiler warnings.
5950
5951 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
5952
5953         * method-to-ir.c: Remove unneeded/useless method_is_safe
5954         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
5955
5956 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
5957
5958         * mini.c (mini_method_compile): Print the method been compiled with
5959         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
5960         for people not familiar with the runtime.
5961
5962 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
5963
5964         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
5965         a managed object which is later put into a GList. Return its class instead.
5966
5967         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
5968         stack slots when using sgen.
5969
5970 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
5971
5972         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
5973
5974 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
5975
5976         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
5977         > so it works on the first vreg as well.
5978
5979 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
5980
5981         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
5982         trigger randomly.
5983
5984         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
5985         
5986         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
5987         implement GArray.
5988
5989 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
5990
5991         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
5992         native->IL offset mapping.
5993
5994 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
5995
5996         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
5997
5998         * basic.cs: Add a test.
5999
6000 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6001
6002         * mini-x86.c (mono_arch_output_basic_block): Use different
6003         registers in case the ones we want to overwrite are used by the
6004         other operand.  Fixes regression in #480807.
6005
6006 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6007
6008         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6009
6010         * dwarfwriter.c (emit_line_number_info): The line number info for
6011         IL code was off by one. Fix that.
6012
6013         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6014         stack.
6015
6016 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6017
6018         Contributed under the terms of the MIT/X11 license by Steven
6019         Munroe <munroesj@us.ibm.com>.
6020
6021         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6022         Fixes #483462.
6023
6024 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6025
6026         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6027         as well.
6028
6029 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6030
6031         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6032         the delegate ctor handling code. Fixes #482638.
6033         
6034         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6035         #481458.
6036
6037         * iltests.il.in: Add a test.
6038         
6039         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6040         mini-posix.c.
6041
6042 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6043
6044         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6045         is shared generic code, return the trampoline, even if the method
6046         has already been compiled.  Fixes #479763.
6047
6048         * mini.c, mini.h: New function
6049         mono_jit_find_compiled_method_with_jit_info() which is the same as
6050         mono_jit_find_compiled_method() but also returns the jit info.
6051
6052 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6053
6054         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6055         for methods which actually have one.  For all other methods, make
6056         sure the this argument var is live the whole method.
6057
6058         * mini.c (mini_method_compile): Every shared method has a
6059         this/vtable/mrgctx info.  Fixes #480807.
6060
6061 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6062
6063         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6064         generic/imt thunks where some entries branch through the vtable,
6065         while other entries branch directly.
6066
6067 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6068
6069         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6070
6071         * mini-windows.c: Ditto.
6072         
6073         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6074         ctors.
6075
6076 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6077
6078         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6079         down an assert.
6080
6081 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6082
6083         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6084         #481403.
6085
6086 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6087
6088         * exceptions-x86.c: Include debug-mini.h - fixes build.
6089
6090 2009-03-04  Martin Baulig  <martin@ximian.com>
6091
6092         * debug-mini.c: Clean up the exception API and add documentation.
6093         (mono_debugger_handle_exception): New public method; this is
6094         called when throwing an exception or encountering an unhandled one.
6095         (mono_debugger_call_exception_handler): Formerly known as
6096         mono_debugger_handle_exception(); this is used to tell the
6097         debugger that we're about to invoke an exception handler.
6098
6099 2009-03-04  Martin Baulig  <martin@ximian.com>
6100
6101         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6102         ../metadata/mono-debug-debugger.c; save and reset exception state.
6103
6104 2009-03-02  Martin Baulig  <martin@ximian.com>
6105
6106         * debug-mini.c: Moved the debugger exception handling here from
6107         ../metadata/mono-debug-debugger.c.
6108
6109         * debug-mini.h
6110         (MonoDebuggerExceptionAction): New exception typedef.
6111
6112         * debug-mini.c
6113         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6114
6115         * exceptions-amd64.c
6116         (mono_amd64_throw_exception): Use the new debugger exception
6117         handling code.
6118
6119         * mini-exceptions.c
6120         (mono_handle_exception_internal): Don't call
6121         mono_debugger_unhandled_exception() here.
6122
6123 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6124
6125         * mini.c aot-compiler.c: Update after the changes to 
6126         mono_marshal_get_runtime_invoke ().
6127
6128         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6129         Virtual generic methods might not have method->slot set, work around
6130         that.
6131
6132         * generics.cs: Add a test.
6133
6134 2009-03-02  Geoff Norton  <gnorton@novell.com>
6135
6136         * mini.c:
6137         * driver.c: Allow signal chaining of SIGFPE as well.
6138
6139 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6140
6141         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6142         this since it now receives the method not its generic context in the
6143         IMT reg.
6144
6145         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6146         generic/imt thunks where some entries branch through the vtable, while
6147         other entries branch directly.
6148
6149         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6150
6151         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6152         support for interface methods as well.
6153
6154         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6155         using the normal IMT thunks.
6156
6157         generics.cs: Add new tests.
6158         
6159         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6160         the generic inst to the generic imt thunks. This fixes AOT support, 
6161         improves consistency with the normal IMT thunks, and makes it easier to
6162         add support for interface generic virtual methods later.
6163
6164         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6165         
6166 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6167
6168         * driver.c (mono_set_signal_chaining): New public API function to enable
6169         signal chaining on POSIX platforms.
6170
6171         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6172         (si@lindenlab.com) to implement signal chaining. The original patch was
6173         contributed under the MIT X/11 license:
6174         https://bugzilla.novell.com/show_bug.cgi?id=318894
6175
6176 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6177
6178         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6179         too until it can be made to run on amd64.
6180
6181 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6182
6183         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6184         to  get_generic_context_from_code () + get_call_info () if possible.
6185
6186 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6187
6188         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6189         suspend-on-sigsegv functionality.
6190
6191         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6192         to suspend when a native SIGSEGV is received. This is useful for debugging
6193         crashes which don't happen under gdb, since a live process contains more
6194         information than a core file.
6195
6196         * mini-exceptions.c (mono_print_thread_dump): Use 
6197         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6198
6199         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6200
6201         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6202         
6203         * basic-float.cs: Disable the tests which currently fail on amd64.
6204
6205         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6206         value to mono_arch_patch_callsite () to fix crashes.
6207         
6208         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6209
6210 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6211
6212         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6213         nop code by patching the call address to point to the nullified class init
6214         trampoline, as the former does not seem to be safe on SMP machines.
6215
6216 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6217
6218         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6219         they were wrong.
6220
6221 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6222
6223         * basic-float.cs basic-calls.cs: Fix warnings.
6224
6225 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6226
6227         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6228         correct frame pointer in the LMF.  Should fix #478394.
6229
6230 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6231
6232         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6233
6234         * image-writer.c: Make the binary writer less verbose.
6235
6236 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6237
6238         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6239         are called from runtime invoke wrappers.
6240
6241 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6242
6243         * cpu-ppc.md (store_memindex): Increase the size of this.
6244
6245 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6246
6247         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6248
6249         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6250
6251         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6252         OP_LCONV_TO_R_UN.
6253
6254         Last fix for of #467201.
6255
6256
6257 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6258
6259         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6260
6261         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6262         and long_conv_to_r8_2:
6263
6264         Fixed part of #467201.
6265
6266 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6267
6268         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6269
6270         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6271         conversion to 32 bits.
6272
6273         * cpu-x86.md: Increase the size of int_conv_to_r4.
6274
6275         * basic-float.cs: Add a test for this.
6276
6277         Fixed part of #467201.
6278
6279 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6280
6281         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6282
6283         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6284         conversion to 64 bits.
6285
6286         * basic-float.cs: Add a test for this.
6287
6288         Fixed part of #467201.
6289
6290 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6291
6292         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6293
6294         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6295         This behavior is compatible with MS.
6296
6297         * iltest.il.in: Add a test for this.
6298
6299         Fixed part of #467201.
6300
6301 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6302
6303         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6304
6305         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6306         change the precision of the value.
6307
6308         * cpu-x86.md: Define len for float_conv_to_r4.
6309
6310         * basic-float.cs: Add a test for this.
6311
6312         Fixed part of #467201.
6313
6314 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6315
6316         * mini.c: Adjust locking order to the new semantics where the loader lock
6317         comes first.
6318
6319 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6320
6321         * aot-runtime.c:
6322         * mini-amd64.c:
6323         * mini-arm.c:
6324         * mini-ia64.c:
6325         * mini-mips.c:
6326         * mini-ppc.c:
6327         * mini-sparc.c:
6328         * mini-trampolines.c:
6329         * mini-x86.c:
6330         * mini.c:
6331         * tramp-alpha.c:
6332         * tramp-amd64.c:
6333         * tramp-arm.c:
6334         * tramp-hppa.c:
6335         * tramp-ia64.c:
6336         * tramp-mips.c:
6337         * tramp-ppc.c:
6338         * tramp-s390.c:
6339         * tramp-s390x.c:
6340         * tramp-sparc.c:
6341         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6342
6343 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6344
6345         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6346         as it is incorrect.
6347
6348 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6349
6350         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6351         for cctors if needed.
6352
6353 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6354
6355         * mini-ppc.c: Fix build on Darwin.
6356
6357 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6358
6359         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6360         version instead of 3 as valgrind doesn't like version 3.
6361
6362         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6363
6364         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6365         usable for hashing methods.
6366         (emit_extra_methods): Use the new hash to avoid putting every method in the
6367         same hash bucket.
6368
6369         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6370
6371         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6372         whenever a method ref could match a method.
6373         
6374         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6375         test to fail.
6376         
6377         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6378         methods refs.
6379
6380         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6381
6382         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6383         the encoding buffer.
6384
6385         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6386         mono_method_get_header () on inflated methods as an optimization.
6387
6388 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6389
6390         * ssa.c (fold_ins): Fix another crash if the instruction following the
6391         switch was optimized away.
6392
6393 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6394
6395         Contributed under the terms of the MIT/X11 license by Steven
6396         Munroe <munroesj@us.ibm.com>.
6397
6398         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6399
6400 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6401
6402         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6403         around the mono_domain_alloc calls, it is now done by the functions
6404         themselves.
6405
6406         * aot-compiler.c (compile_method): Only add wrappers referenced by
6407         the method if compiling with full AOT.
6408         (mono_compile_assembly): Error out if --aot=full is specified on
6409         a platform where it is not supported.
6410
6411         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6412         on ARM too.
6413
6414         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6415         AOT support.
6416
6417         * aot-runtime.c (load_named_code): Handle 
6418         mono_arm_throw_exception_by_token.
6419
6420         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6421
6422         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6423         unaligned.
6424
6425         * Makefile.am (fullaotcheck): Exit if a test fails.
6426
6427         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6428         on ARM.
6429         (mono_compile_assembly): Handle the assembler failing.
6430
6431         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6432         accepting subsections of .bss.
6433
6434         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6435         was optimized away.
6436
6437         * aot-compiler.c: Remove some unused includes.
6438         
6439         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6440         now in MonoImageWriter.
6441
6442         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6443         code sequence which matches a non-virtual call. Fixes #472654.
6444
6445 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6446
6447         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6448         xdebug code.
6449         
6450         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6451         use the image/dwarf writers directly.
6452
6453         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6454         field.
6455
6456         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6457         MonoDwarfWriter.
6458
6459         * image-writer.h: Fix some typos.
6460
6461         * dwarfwriter.h dwarfwriter.c: New files.
6462         
6463         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6464         separate module.
6465
6466         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6467         argument to return unwind info.
6468
6469         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6470
6471         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6472         
6473         * aot-runtime.c (decode_method_ref): Add a case for 
6474         MONO_AOT_METHODREF_WRAPPER_NAME.
6475
6476         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6477         for AOT.
6478
6479         * aot-compiler.c (encode_method_ref): Use the new constants.
6480
6481         * aot-runtime.c (decode_method_ref): Ditto.
6482
6483         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6484         be compiled, not the icall itself.
6485
6486 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6487
6488         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6489         using decode_method_ref ().
6490
6491         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6492         convert it to an in32. Fixes #475859.
6493
6494         * arrays.cs: Add a test.
6495
6496 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6497
6498         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6499         OP_LCONV_TO_U2.
6500
6501         * basic-long.cs: Add a test.
6502
6503 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6504
6505         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6506         remove the frame pointer in leaf methods which don't receive any
6507         arguments, don't throw exceptions and don't do dynamic stack
6508         allocations.
6509
6510 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6511
6512         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6513         the fail_tramp changes. Hopefully fixes #475132.
6514
6515 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6516
6517         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6518         instead of mono_metadata_signature_dup_full.
6519
6520 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6521
6522         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6523         for processing jump tables. Fixes #473787.
6524
6525 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6526
6527         * mini-generic-sharing.c: mini_method_get_context() just calls
6528         mono_method_get_context_general() now.
6529
6530         * mini.c, mini.h: Moved get_object_generic_inst(),
6531         construct_object_context_for_method() and
6532         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6533
6534 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6535
6536         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6537         basic block fell through to its successor bblock without a branch. Fixes
6538         #474718.
6539
6540         * iltests.il.in: Add a test.
6541         
6542         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6543         (can_encode_patch): We can now handle arrays of generic parameters and
6544         array methods.
6545
6546         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6547
6548         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6549         the AOT file to avoid some #ifdefs in aot-runtime.c
6550
6551         * mini.h: Bump AOT file format version.
6552
6553 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6554
6555         * Makefile.am (fullaotcheck): Make this run the tests.
6556
6557         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6558
6559 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6560
6561         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6562         individually.  Fixes #473482.
6563
6564 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6565
6566         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6567
6568 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6569
6570         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6571         (mono_compile_assembly): Hush compile warnings about
6572         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6573         code path.
6574
6575 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6576
6577         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6578
6579         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6580
6581         * aot-compiler.c: Fix arm support.
6582
6583         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6584         img_writer_emit_unset_mode () function.
6585
6586         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6587         (mono_unwind_get_dwarf_pc_reg): Ditto.
6588
6589         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6590         Move almost all platform specific code to a set of arch_ functions, 
6591         and document them to ease porting.
6592         
6593         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6594
6595         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6596
6597         * aot-compiler.c: Extract the image writing functionality into a separate
6598         module to reduce the size of this file.
6599
6600 2009-02-09  Geoff Norton  <gnorton@novell.com>
6601
6602         * mini-s390.c: Fix the signature of emit_sig_cookie.
6603
6604 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6605
6606         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6607
6608         * aot-runtime.c (is_shared_got_patch): Ditto.
6609
6610         * aot-runtime.c (load_named_code): Cope with the fact that 
6611         decode_got_entry () won't decode the patch fully if its corresponding got
6612         entry is already filled.
6613         
6614         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6615         Initialize *ji.
6616         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6617
6618         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6619         as the moving pointer instead of 'buf' for consistency with the rest of the
6620         codebase.
6621         (mono_arch_create_monitor_exit_trampoline): Ditto.
6622
6623         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6624         generic_class_init trampolines.
6625         (add_generic_class): Extract some code from add_generic_instances () into a
6626         separate function so it can be called from other places too.
6627         (compile_method): Call add_generic_class () for the classes of inflated methods
6628         referenced by the method.
6629         (can_encode_patch): Allow references to generic parameters.
6630
6631         * aot-runtime.c: Add support the patches required by the new trampolines.
6632         
6633         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6634         support.
6635
6636         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6637         full-aot support.
6638
6639         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6640         this from get_throw_pending_exception, make the signature full aot compatible.
6641
6642         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6643
6644         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6645
6646         * exceptions.cs: Add a test.
6647
6648 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6649
6650         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6651         use the DWARF_DATA_ALIGN constant instead.
6652
6653         * exception-<ARCH>.c: Update after the above change.
6654
6655         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6656         dwarf unwinder.
6657
6658         * mini-arm.c: Enable the dwarf unwinder.
6659
6660         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6661         instead of mono_class_setup_vtable ().
6662
6663 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6664
6665         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6666         dwarf unwinder.
6667
6668         * mini-x86.h: Enable the dwarf unwinder.
6669
6670 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6671
6672         Fix mcs/tests/test-7.cs
6673         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6674         2009-02-03.
6675
6676 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6677
6678         * mini.c (print_jit_stats): Remove some unused statistics.
6679
6680 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6681
6682         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6683
6684 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6685
6686         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6687         the method we get from mono_object_get_virtual_method() because
6688         that function does it properly, now.
6689
6690 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6691
6692         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6693         opcodes. Fixes #472775.
6694
6695 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6696
6697         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6698         fact that mono_find_jit_info() sometimes returns the context
6699         corresponding to the jit info in new_ctx.  Fixes #472600.
6700
6701 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6702
6703         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6704         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6705         klass->enum_basetype directly.
6706
6707         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6708         enum subtypes.
6709
6710         * unwind.c: Avoid 0 sized arrays.
6711
6712 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6713
6714         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6715         size on systems with 64k pages. Fixes #471389.
6716
6717 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6718
6719         Contributed under the terms of the MIT/X11 license by Steven
6720         Munroe <munroesj@us.ibm.com>.
6721
6722         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6723         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6724         necessary.
6725
6726 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6727
6728         Contributed under the terms of the MIT/X11 license by Steven
6729         Munroe <munroesj@us.ibm.com>.
6730
6731         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6732         comparison fix.
6733
6734         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6735         The trampoline can be longer on PPC64.
6736
6737 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6738
6739         Contributed under the terms of the MIT/X11 license by Steven
6740         Munroe <munroesj@us.ibm.com>.
6741
6742         * mini-ppc.c: Compiler warning fixes and trivial code
6743         simplifications.
6744
6745 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6746
6747         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6748         ins->dreg which could be a hardware register, not a vreg.
6749
6750         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6751         
6752         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
6753         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
6754
6755         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
6756         
6757         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
6758         ->dreg, that is not the vreg we are looking for.
6759
6760         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
6761
6762         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
6763         LIVERANGE_END.
6764
6765         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
6766         strange crashes.
6767
6768 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6769
6770         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
6771
6772         * aot-compiler.c (emit_line_number_info): Fix line number emission when
6773         the line diff is 0.
6774
6775         * aot-compiler.c: Add xdebug support on x86.
6776
6777         * unwind.c: Add x86 support.
6778         
6779         * aot-compiler.c (emit_exception_debug_info): Control the emission of
6780         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
6781
6782         * mini.c (mini_method_compile): Ditto.
6783         
6784         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
6785         the variable index.
6786
6787         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
6788         which mimic .push_section/.pop_section in GAS.
6789         
6790         * aot-compiler.c: Emit precise live range information for variables.
6791
6792         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
6793
6794         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
6795         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
6796         them.
6797
6798         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
6799         the live ranges of variables.
6800
6801         * mini.h (struct MonoMethodVar): Add two fields containing the live range
6802         of the variable in terms of native offsets.
6803
6804 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
6805
6806         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
6807         
6808 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6809
6810         Contributed under the terms of the MIT/X11 license by Steven
6811         Munroe <munroesj@us.ibm.com>.
6812
6813         * exceptions-ppc.c (restore_regs_from_context): Correct operand
6814         order (offset then base reg) for ppc_load_multiple_regs.
6815         (emit_save_saved_regs) Correct operand order for
6816         ppc_store_multiple_regs.
6817         (mono_arch_get_call_filter): Correct operand order for
6818         ppc_load_multiple_regs.
6819
6820         * mini-ppc.c (emit_memcpy): Fix operand order for
6821         ppc_load_reg_update and ppc_store_reg_update.
6822         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
6823         (mono_arch_emit_epilog): Correct operand order for
6824         ppc_load_multiple_regs.
6825
6826         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
6827         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
6828
6829 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6830
6831         * cpu-ppc64.md: Fixed storer4_memindex length.
6832
6833 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
6834
6835         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
6836         line number info.
6837         
6838         * aot-compiler.c (emit_line_number_info): Optimize this.
6839
6840 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
6841
6842         * aot-compiler.c: Disassemble tokens in the IL disassembly.
6843         
6844         * aot-compiler.c: Add debug info for methods without debug info by
6845         emitting an IL file and having the line number info referencing that file.
6846
6847         * aot-compiler.c: Optimize the size of the generated line number info.
6848
6849         * aot-compiler.c: Emit line number info in xdebug mode.
6850
6851         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
6852         million arguments.
6853
6854 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
6855
6856         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
6857
6858         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
6859         is used.
6860
6861 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6862
6863         * basic-calls.cs: Test for the weird crash found on arm.
6864         
6865 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6866
6867         * cpu-arm.md: Increase the size of storer8_membase_reg and
6868         loadr8_membase_reg to 24 bytes to accomodate the extra add.
6869
6870         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
6871         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
6872         reg to LR otherwise we'll be loading/storing from just the offset.
6873
6874 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6875
6876         Question: if we are storing gint32's inside the "*native_offset",
6877         should we change the signature to "gint32 *native_offset" to
6878         ensure that we do not have type definition problems?
6879         
6880         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
6881         an int * as this is what the other function expects, causes
6882         problems with Freescale's compiler that defined int32_t to be a
6883         long and makes int incompatible 
6884
6885 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6886
6887         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
6888         filename conflict with bjam.
6889
6890 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6891
6892         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
6893         as it might use decomposed ops.
6894
6895 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6896
6897         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
6898
6899         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
6900         is defined.
6901
6902         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
6903
6904         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
6905         offsets.
6906
6907         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
6908         way registers are stored in MonoContext on arm.
6909
6910         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
6911         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
6912
6913         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
6914
6915         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
6916
6917         * mini.c (mini_init): Register mono_isfinite.
6918
6919         * jit-icalls.c (mono_isfinite): New jit icall.
6920
6921         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
6922         
6923         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
6924         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
6925         the parent frame.
6926
6927 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6928
6929         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
6930         separate frame and stack pointers, so we must use FP to find the register
6931         spill area.
6932         The FP reg is retrieved from the MonoContext::regs array.
6933
6934 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6935
6936         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
6937         as FPA requires it.
6938
6939 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6940
6941         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
6942         return R4 and R8 when not running under softfloat.
6943
6944         Fixes basic-calls.exe
6945
6946 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6947
6948         * mini-arm.c: Implement some overflow opcodes.
6949
6950 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6951
6952         * ssa.c: handle another alloca.h
6953
6954         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
6955         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
6956         MONO_ARCH_USE_SIGACTION. 
6957
6958         * aot-runtime.c, mini-exceptions.c: Replace platform define with
6959         capability defines.
6960
6961         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
6962
6963         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
6964         PPC targets as sigaction does not exist on all platforms, define
6965         this on a per-platform basis.
6966
6967         Instead of erroring out if the platform is not defined, include
6968         mini-ppc-os.h, and expect that the OS specific setting provides
6969         the required information.   
6970
6971 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6972
6973         * aot-compiler.c: Fix --enable-minimal=aot.
6974
6975 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6976
6977         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
6978         previous change.
6979
6980 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
6981
6982         * exceptions-arm.c: Fix warnings.
6983
6984         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
6985         ARM.
6986
6987         * mini-x86.c: Fix --enable-minimal=jit build.
6988
6989         * mini.c: Really fix --enable-minimal=jit build.
6990         
6991         * mini.c (construct_object_context_for_method): Move this outside
6992         the DISABLE_JIT block to fix the --enable-minimal=jit build.
6993
6994         "Backported" of r124984 from 2.0 branch.
6995         
6996         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
6997
6998         "Backport" of r124977 + r124978 from 2.0 branch.
6999         
7000         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7001         to avoid calling mono_exception_from_token () from the throw trampoline.
7002         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7003         for throwing corlib exceptions, this fixes full-aot support for corlib
7004         exceptions.
7005
7006         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7007
7008 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7009
7010         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7011         part of the changes to split the code in mini into operating
7012         system specific files.
7013
7014         This patch was done by copying mini.c to the respective files to
7015         preserve SVN history.
7016
7017 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7018
7019         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7020
7021 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7022
7023         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7024         remoting-invoke-with-check wrappers of shared methods.
7025
7026         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7027
7028 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7029
7030         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7031         optimization if the top of stack is the last instruction in the
7032         bblock.  Otherwise it might have been used after its definition.
7033         Fixes #469742.
7034
7035 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7036
7037         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7038         method as well when get_vcall_slot () fails to match a code sequence.
7039
7040         * mini-arm.c: Fix the android build, which doesn't have
7041         __aeabi_read_tp.
7042
7043 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7044
7045         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7046         the s390x build.
7047
7048 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7049
7050         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7051
7052 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7053
7054         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7055         and put its id into jinfo->used_regs. This is only used on amd64,
7056         which is currently the only platform generating unwind info.
7057
7058         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7059         the dwarf unwinder. This is required to correctly handle async exceptions
7060         like thread abort and stack overflows, which can happen while a method
7061         is in the middle of its prolog or epilog.
7062         
7063         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7064         the unwind info belonging to an AOTed method.
7065
7066         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7067         into cfg->unwind_ops.
7068         
7069         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7070
7071         * mini.c (mini_init): Call mono_unwind_init ().
7072         (mini_cleanup): Call mono_unwind_cleanup ().
7073
7074         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7075         unwind info to be shared between methods.
7076
7077         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7078         saved in the LMF.
7079
7080         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7081         get_throw_pending_exception () to avoid initialization races.
7082
7083         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7084         mono_arch_exceptions_init () function.
7085
7086         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7087
7088 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7089
7090         * mini.c (mono_get_domain_intrinsic): New helper function.
7091         (mono_get_thread_intrinsic): Ditto.
7092
7093         * mini-arm.c mini-ia64.c: Use the new helper functions.
7094         
7095         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7096         the last constrained_call change, since it is needed in the non-AOT
7097         case as well.
7098
7099         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7100         
7101         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7102         mono_get_lmf_addr () on arm eabi linux.
7103
7104 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7105
7106         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7107         code sequence which matches a non-virtual call.
7108
7109 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7110
7111         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7112         stack pointer (r1).
7113
7114 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7115
7116         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7117         runtime-invoke wrappers, since they are also shared based on signature.
7118
7119 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7120
7121         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7122         info from the (correct) context.
7123
7124 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7125
7126         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7127         
7128         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7129         using dwarf unwinding info. Not yet used.
7130
7131         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7132
7133 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7134
7135         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7136         descriptors.
7137
7138         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7139         special case and handle mono_arch_delegate_invoke_impl() returning
7140         function descriptors.
7141
7142         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7143         trampolines return function descriptors, too.
7144
7145 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7146
7147         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7148         out_of_line optimization.
7149
7150 2009-01-21  Martin Baulig  <martin@ximian.com>
7151
7152         * mini.h
7153         (MonoCompile): Added `disable_deadce_vars' to disable removing
7154         unused variables.
7155
7156         * mini.c
7157         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7158         inside the debugger.
7159
7160         * liveness.c (mono_analyze_liveness): Don't remove any unused
7161         variables if `cfg->disable_deadce_vars' is set.
7162
7163 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7164
7165         * method-to-ir.c: Only apply exception constructor optimization if
7166         the the method actually belongs to an exception class.  Fixes
7167         #467456.
7168
7169 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7170
7171         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7172         change inside a #ifdef __mono_ppc64__.
7173
7174         * aot-compiler.c (compile_method): Remove the previous limitation.
7175
7176         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7177         on type variables in AOTed code.
7178         
7179         * aot-compiler.c (compile_method): Skip generic methods having type 
7180         constraints on their generic parameters.
7181
7182         * aot-compiler.c (compile_method): Check for methods which cannot be
7183         encoded inside RGCTX_FETCH patches as well.
7184
7185         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7186         build.
7187
7188 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7189
7190         * method-to-ir.c: Force the vtable variable in shared generic code
7191         for the case that they might show up on a stack trace where they
7192         are needed.
7193
7194         * mini-exceptions.c: Save and use generic sharing info as well as
7195         IP in stack traces to resolve shared generic instantiations.
7196
7197 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7198
7199         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7200         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7201
7202 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7203
7204         * method-to-ir.c: Do generic sharing for array constructors.
7205
7206 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7207
7208         * mini-exceptions.c (mono_print_thread_dump): Add information
7209         about the thread state using wapi_current_thread_desc.
7210
7211 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7212
7213         * basic-simd.cs: Tests for the new constructors. 
7214
7215 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7216
7217         * mini-ops.h: Added OP_EXPAND_*
7218
7219         * cpu-x86.md: Same.
7220
7221         * mini-x86.c (mono_arch_output_basic_block): Same.
7222         
7223         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7224
7225 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7226
7227         * iltests.il.in: Add a test for #467385.
7228
7229 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7230
7231         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7232         thread been cleaned up is not the same currently in execution.
7233
7234         Fixes appdomain-unload crashes on windows, osx and linux variants
7235         without the __thread keyword.
7236
7237 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7238
7239         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7240         (koush@koushikdutta.com). Implement this for android.
7241
7242         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7243         begins with a digit.
7244
7245         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7246         mono_marshal_get_write_barrier ().
7247
7248 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7249
7250         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7251         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7252         that pass them on a register pair.
7253
7254         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7255         test was crashing due to that.
7256
7257 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7258
7259         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7260         trampoline code. Include ucontext.h only if available.
7261
7262 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7263
7264         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7265         and doesn't check whether it's sharable, like it was before
7266         removing the shared generics hash.  This brings IronPython
7267         performance back to what it was before that change.
7268
7269 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7270
7271         * method-to-ir.c: Handle delegate invocation optimization earlier,
7272         otherwise it would be handled (much more slowly) by the
7273         final/sealed optimization.
7274
7275 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7276
7277         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7278         domain is not set. Fixes #465864.
7279
7280 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7281
7282         * method-to-ir.c: Don't stop sharing of generic methods with catch
7283         clauses - we already handle those.
7284
7285 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7286
7287         * mini.c, mini.h: lookup_generic_method() is now
7288         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7289         making the shared_generics_hash obsolete.
7290
7291 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7292
7293         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7294         use the red zone.  Make room on the stack first and then use it,
7295         not the other way around.
7296
7297 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7298
7299         * mini.c (mini_init): Call mono_xdebug_init ().
7300
7301         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7302
7303 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7304
7305         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7306
7307         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7308         trampolines.
7309
7310         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7311         debug+unwind info for trampolines.
7312
7313         * mini.c (mono_create_unwind_op): New helper function.
7314
7315         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7316
7317 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7318
7319         * aot-compiler.c: Fix the build.
7320
7321 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7322
7323         * Makefile.am: Update dtrace-prelink.sh location.
7324
7325 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7326
7327         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7328         optimization. Fixes #464520.
7329
7330 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7331
7332         * mini-amd64.c : Adding code to save/restore non-volatile registers
7333            on Winx64.
7334
7335         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7336           registers on Winx64.
7337
7338         Contributed under MIT/X11 license.
7339
7340 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7341
7342         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7343         __GNUC_MINOR__ which can break when the major version changes.
7344
7345 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7346
7347         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7348
7349 2009-01-07  Geoff Norton  <gnorton@novell.com>
7350
7351         * helpers.c:  Allow mono -v -v -v to work on darwin.
7352
7353 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7354
7355         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7356           pattern. 
7357
7358         Contributed under MIT/X11 license.
7359
7360 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7361
7362         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7363         instead of directly accessing type->data.klass. Fixes #462016.
7364         (mono_allocate_stack_slots_full): Ditto.
7365
7366         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7367         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7368
7369         * aot-compiler.c (emit_plt): Fix ARM build.
7370
7371 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7372
7373         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7374         
7375         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7376         change.
7377
7378         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7379         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7380         #463357.
7381
7382         * iltests.il.in: Add a regression test.
7383
7384 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7385
7386         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7387
7388 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7389
7390         * basic-simd.cs: Add a regression test for #462457.
7391
7392 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7393
7394         * mini-ops.h: Add a definition of XPHI.
7395
7396         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7397
7398         * ssa.c (op_phi_to_move): Handle XPHI.
7399
7400         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7401
7402         Fixes #462457
7403
7404 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7405
7406         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7407
7408 2008-12-31  Geoff Norton  <gnorton@novell.com>
7409
7410         * mini-ppc.c: The prolog size allocated can be too small for darwin
7411         ppc32 under certain circumstances.  Also fix a small logic bug.
7412
7413 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7414
7415         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7416         while loading AOT methods.
7417
7418         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7419         since only the former is nulled out after a successful cast. This prevents
7420         crashes with rethrown exceptions when using --debug=casts.
7421
7422 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7423
7424         * mini.h: New macro for checking whether a method is final,
7425         i.e. whether the method or its class is marked final.
7426
7427         * method-to-ir.c: Use the new macro for all final-checks
7428         consistently.  Fixes the crash in the System.ServiceModel tests.
7429
7430 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7431
7432         * mini-exceptions.c (get_exception_catch_class): Corrected another
7433         overly strict assertion.
7434
7435 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7436
7437         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7438         Clobbering it is not allowed because the caller might use it as
7439         the vtable register in the interface call.
7440
7441 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7442
7443         * mini-exceptions.c (get_exception_catch_class): Corrected an
7444         overly strict assertion.
7445
7446 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7447         
7448         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7449
7450         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7451
7452         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7453
7454         * cpu-mips.md: correct lengths for certain long_ opcodes.
7455
7456         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7457
7458         * 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().
7459         
7460 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7461
7462         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7463         
7464 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7465         
7466         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7467         
7468 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7469
7470         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7471         next basic block.
7472         
7473 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7474
7475         * 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
7476
7477         * 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)
7478         
7479 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7480         
7481         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7482         
7483 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7484
7485         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7486         gshared code. Fixes #458947.
7487
7488         * generics.cs: Add a test.
7489
7490 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7491         
7492         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7493         
7494         * mini-mips.c: first pass n32 code generation.
7495
7496         * mini-mips.h: datatypes and defines for n32 support.
7497
7498         * exceptions-mips.c: first pass n32 code generation.
7499         
7500         * tramp-mips.c: first pass n32 code generation.
7501         
7502         * cpu-mips.md: add long_ opcodes.
7503         
7504 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7505
7506         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7507
7508         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7509         
7510         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7511         
7512         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7513
7514         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7515
7516         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7517
7518         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7519
7520         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7521
7522         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7523
7524 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7525
7526         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7527
7528 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7529
7530         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7531
7532 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7533
7534         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7535         descriptors for helper functions directly in front of the code.
7536
7537 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7538
7539         * method-to-ir.c: Removed an unnecessary assertion.
7540
7541 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7542
7543         * method-to-ir.c: Merge SGEN changes from the old JIT.
7544
7545 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7546
7547         * driver.c (compile_all_methods_thread_main): Handle failure of
7548         mono_get_method ().
7549
7550 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7551
7552         * mini-ppc.c: Merged with mini-ppc64.c.
7553
7554         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7555
7556         * Makefile.am: Use the same sources for PPC and PPC64.
7557
7558         * mini-ppc64.c: Removed.
7559
7560 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7561
7562         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7563         code to mono_bb_is_fall_through.
7564         
7565         * branch-opts.c (mono_remove_critical_edges): Same.
7566
7567 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7568
7569         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7570         expect that an OP_BR_REG will be there.
7571
7572 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7573
7574         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7575         for the many branch ops. The original check miss OP_BR_REG.
7576
7577         Fixes #457574.
7578         
7579 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7580
7581         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7582
7583 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7584
7585         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7586         while holding the aot lock.
7587
7588 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7589
7590         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7591         
7592 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7593
7594         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7595           to release all runtime callable wrappers held by the runtime.
7596
7597         Contributed under MIT/X11 license.
7598
7599 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7600
7601         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7602           for Winx64.
7603
7604         Contributed under MIT/X11 license.
7605
7606 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7607
7608         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7609         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7610
7611 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7612
7613         * cpu-mips.md: fix ckfinite length
7614
7615         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7616         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7617         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7618         
7619 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7620
7621         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7622         
7623 2008-12-08  Geoff Norton  <gnorton@novell.com>
7624
7625         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7626         size by 8 bytes as well.
7627
7628 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7629
7630         * basic-simd.cs: Fix method names for Vector16b.
7631         
7632 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7633
7634         * basic-simd.cs: Fix method names for Vector16sb.
7635
7636 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7637
7638         * basic-simd.cs: Fix method names for Vector8us.
7639         
7640 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7641
7642         * basic-simd.cs: Fix method names for Vector8s.
7643         
7644 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7645
7646         * basic-simd.cs: Fix method names for Vector4ui.
7647
7648 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7649
7650         * basic-simd.cs: Fix method names for Vector2l.
7651
7652 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7653
7654         * basic-simd.cs: Fix method names for Vector2d.
7655
7656 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7657
7658         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7659         that are extension methods.
7660
7661 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7662
7663         * basic-simd.cs: Fix method names for Vector4f.
7664
7665 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7666
7667         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7668         as such. Fixes #456669.
7669
7670 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7671
7672         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7673         
7674 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7675
7676         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7677         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7678         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7679         (mips_adjust_stackframe): handle FP spills
7680                 
7681         * mini-ops.h: add mips_mtc1_s2
7682         
7683         * cpu-mips.md: add mips_mtc1_s2
7684         
7685 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7686
7687         * unwind.c: New file, move the unwind info encoding functions here from
7688         aot-compiler.c, so they could be used at runtime too.
7689
7690 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7691
7692         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7693         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7694         
7695 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7696
7697         * mini-mips.c: cleanup warnings
7698         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7699         (mips_adjust_stackframe): handle case of taking the address of stack locals
7700         
7701 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7702
7703         * aot-compiler.c: Implement a few functions missing from the asm writer.
7704         (emit_method_code): Only write symbols for methods when using the bin
7705         writer, since the assembler can't deal with the characters in our method
7706         names.
7707
7708         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7709
7710         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7711         call.
7712
7713         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7714         a bit to also restore %rax.
7715
7716 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7717
7718         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7719
7720 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7721
7722         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7723         arguments.
7724
7725 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7726
7727         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7728
7729         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7730         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7731
7732         * exceptions-ppc64.c: Removed.
7733
7734         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7735
7736 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7737
7738         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7739         tramp-ppc64.c.
7740
7741         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7742
7743         * tramp-ppc64.c: Removed.
7744
7745 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7746
7747         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7748         the TYPESPEC table.
7749
7750 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7751
7752         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
7753
7754         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
7755         mini-ppc.h instead of mini-ppc64.h.
7756
7757         * mini-ppc64.h: Removed.
7758
7759 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7760
7761         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
7762         
7763         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
7764         
7765 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7766
7767         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
7768         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
7769         code easier.
7770
7771 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7772
7773         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
7774
7775 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7776
7777         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
7778
7779 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7780
7781         * basic-simd.cs: Tests for operator == and != on Vector4f.
7782
7783 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7784
7785         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
7786
7787         * simd-intrinsics.c: Kill useless enum.
7788
7789 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7790
7791         * cpu-mips.md: add long_conv_to_ovf_i4_2
7792         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
7793
7794 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7795
7796         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
7797         
7798         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
7799
7800 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7801
7802         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
7803         
7804 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7805
7806         * basic-simd.cs: Add tests for new methods.
7807
7808 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7809
7810         * simd-intrinsics.c: Add support for operator == and !=
7811         on Vector4(u)i.
7812
7813         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
7814
7815 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7816
7817         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
7818
7819 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
7820
7821         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
7822
7823         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
7824         MONO_PATCH_INFO_ICALL_ADDR.
7825
7826         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
7827
7828         * aot-compiler.c: Resurrect full-aot support.
7829
7830 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7831
7832         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
7833         
7834 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7835
7836         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
7837         
7838 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
7839
7840         * basic-simd.cs: Fix tests to work under ppc.
7841         Remove tests for methods that will be removed.
7842
7843 2008-12-03  Mark Probst  <mark.probst@gmail.com>
7844
7845         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
7846         generic type (via a typedef or typeref) correctly.
7847
7848 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
7849
7850         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
7851         diagnose an assertion failure.
7852
7853 2008-12-02  Mark Probst  <mark.probst@gmail.com>
7854
7855         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
7856         Fix trampoline size.
7857
7858         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
7859         conversion opcodes are implemented natively instead via emulation.
7860
7861 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7862
7863         * cpu-mips.md: remove mips_xori
7864
7865         * mini-ops.h:  remove mips_xori
7866
7867         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
7868
7869         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
7870         
7871         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
7872         
7873 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7874
7875         * cpu-mips.md: fix instruction lengths.
7876
7877         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
7878
7879         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
7880
7881         * mini-ops.h: fix slti / sltiu op profiles.
7882         
7883 2008-12-02  Martin Baulig  <martin@ximian.com>
7884
7885         * method-to-ir.c (mono_method_to_ir): Disable debugging
7886         information for the init locals block to make the debugger stop
7887         after all locals have been initalized.
7888
7889 2008-12-02  Martin Baulig  <martin@ximian.com>
7890
7891         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
7892         running inside the debugger.
7893
7894 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
7895
7896         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
7897         is enabled.
7898
7899         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
7900         alu->alu imm optimization which only shows if deadce is disabled.
7901
7902         * aot-compiler.c: Rename the function names for the binary and asm writers
7903         so they can coexist in the same process. Rework the xdebug code to use the
7904         asm writer. This avoids the need to call into the runtime to dump the
7905         debugging info. Add more debugging info for types.
7906
7907         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
7908
7909         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
7910         cpu description tables, they can't occur in cpu-<ARCH>.md.
7911
7912         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
7913         the stack in CEE_LDFLDA. Fixes #450542.
7914
7915         * generics.cs: Add a new test.
7916
7917 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7918
7919         * mini-ops.h: updated MIPS opcodes
7920         * mini-mips.c: decompose long opts
7921         * mini-mips.h: decompose long opts
7922         
7923 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
7924
7925         * cpu-mips.md: fix length on int_rem_un
7926         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
7927         
7928 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
7929
7930         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
7931
7932         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
7933
7934 2008-11-29  Martin Baulig  <martin@ximian.com>
7935
7936         * mini-exceptions.c (mono_handle_native_sigsegv): Check
7937         mono_debug_using_mono_debugger() in addition to the
7938         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
7939
7940 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7941
7942         * mini-ops.h: updated more MIPS opcodes
7943         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
7944         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
7945         
7946 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7947
7948         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
7949
7950 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7951
7952         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
7953         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
7954         * mini-ops.h: correct selected mips opcode entries
7955         
7956 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7957
7958         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
7959         make them work.
7960
7961 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7962
7963         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
7964
7965 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7966
7967         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
7968         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
7969         * mini-mips.h: disable IMT
7970         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
7971         
7972 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7973
7974         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
7975
7976 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7977
7978         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
7979
7980 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
7981
7982         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
7983         consistency.
7984
7985 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7986
7987         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
7988         for Set/GetVector aligned versions.
7989
7990 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7991
7992         * basic-simd.cs: Add tests for Get/SetVector.
7993
7994 2008-11-27  Mark Probst  <mark.probst@gmail.com>
7995
7996         * mini.c: Removed g_slist_append_mempool().  Now in
7997         metadata/mempool.c.
7998
7999 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8000
8001         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8002         size properly and make the bounds check optional.
8003
8004         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8005         for SetVector and IsAligned.
8006
8007 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8008
8009         * mini.c: Remove unused mono_normalize_opcodes () function.
8010
8011 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8012
8013         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8014         using the new atomic add ops now.
8015
8016         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8017         add.
8018
8019 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8020
8021         * mini-ppc64.c: Several fixes.
8022
8023 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8024
8025         * cpu-mips.md: added jump_table
8026         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8027
8028 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8029
8030         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8031
8032 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8033
8034         * mini-ops.h: corrected a handful of MIPS opcodes.
8035
8036 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8037
8038         * aot-compiler.c: MIPS to use ELF writer
8039
8040 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8041
8042         * mini-codegen.c: remove MIPS specific assert.
8043
8044 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8045
8046         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8047         fixes.  PPC64 now passes most of the runtime regressions.
8048
8049 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8050
8051         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8052         volatile intervals a bit.
8053
8054 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8055
8056         * basic-long.cs: New test case.
8057
8058 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8059
8060         * mini.c (mini_method_compile): Disable globalra for large methods for 
8061         now.
8062
8063         * regalloc2.c (order_moves): Add fp support.
8064
8065         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8066         source bblock ends with an OP_BR_REG.
8067
8068         * ratests.cs: Add a new test.
8069
8070 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8071
8072         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8073         sharing.  PPC64 now passes generics.exe.
8074
8075 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8076
8077         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8078
8079 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8080
8081         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8082         memory when mono_jit_info_table_find () can't find the method in the
8083         LMF case.
8084
8085         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8086         AOTed code too.
8087         
8088         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8089         writer too.
8090
8091 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8092
8093         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8094         Several fixes.  PPC64 now runs exceptions.exe and
8095         devirtualization.exe.
8096
8097 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8098
8099         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8100         arrays.exe and basic-math.exe.
8101
8102 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8103
8104         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8105         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8106
8107 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8108
8109         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8110
8111 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8112
8113         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8114
8115         * ir-emit.h: Move macros from method-to-ir.c to here.
8116
8117 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8118
8119         * mini-ops.h: Correct the long simd ops to use LREG.
8120
8121 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8122
8123         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8124         
8125         * mini-ops.h: Correct the dreg type of a few long opcodes.
8126
8127         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8128         Add netbsd support.
8129
8130 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8131
8132         * mini-ppc.c: remove negative stack references in epilog
8133         for platforms that don't support the red zone.
8134
8135 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8136
8137         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8138         point regs.  Now PPC64 passes basic-calls.exe.
8139
8140 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8141
8142         * basic-simd.cs: Add tests for accessors of Vector2l.
8143
8144 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8145
8146         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8147
8148         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8149         
8150         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8151
8152 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8153
8154         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8155         PPC64 passes basic-long.exe.
8156
8157 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8158
8159         * decompose.c: Decompose carry and overflow add on PPC64 like on
8160         other 64 bit archs.  Don't decompose sub at all on PPC64.
8161
8162         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8163         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8164         basic-long.exe.
8165
8166 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8167
8168         * basic-simd.cs: Add tests for accessors of Vector2d.
8169
8170 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8171
8172         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8173
8174         * cpu-x86.md: Same.
8175
8176         * mini-x86.c (mono_arch_output_basic_block): Same.
8177         
8178         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8179
8180 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8181
8182         * basic-simd.cs: Add tests for accessors of Vector4f.
8183
8184 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8185
8186         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8187
8188         * cpu-x86.md: Same.
8189
8190         * mini-x86.c (mono_arch_output_basic_block): Same.
8191         
8192         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8193
8194 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8195
8196         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8197
8198 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8199
8200         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8201
8202         * cpu-x86.md: Same.
8203
8204         * mini-x86.c (mono_arch_output_basic_block): Same.
8205         
8206         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8207
8208 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8209
8210         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8211
8212 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8213
8214         * simd-intrinsics.c: Enable setters for Vector16sb.
8215
8216 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8217
8218         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8219
8220         * cpu-x86.md: Same.
8221
8222         * mini-x86.c (mono_arch_output_basic_block): Same.
8223         
8224         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8225
8226 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8227
8228         * simd-intrinsics.c: Implement setter for Vector8us.
8229
8230 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8231
8232         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8233         for dead variables.
8234
8235 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8236
8237         * mini-ppc.c: remove references to the red zone in the prolog
8238         (for systems that don't support it).
8239
8240 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8241
8242         * cpu-ppc64.md: Fixed a few instruction lengths.
8243
8244         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8245         now.
8246
8247 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8248
8249         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8250         basic.exe now.
8251
8252 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8253
8254         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8255
8256 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8257
8258         * mini-ops.h: Added OP_INSERT_I2.
8259
8260         * cpu-x86.md: Same.
8261
8262         * mini-x86.c (mono_arch_output_basic_block): Same.
8263         
8264         * simd-intrinsics.c: Implement setter for Vector8s.
8265
8266         * simd-methods.h: Add the names of get setters of Vector8s.
8267
8268 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8269
8270         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8271         
8272         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8273         parameters.
8274
8275         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8276
8277 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8278
8279         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8280         for PPC64.  An empty program runs now.
8281
8282 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8283
8284         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8285
8286         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8287         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8288         info for JITted code is emitted into a shared library, loadable into gdb.
8289
8290 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8291
8292         * Makefile.am: Changes to build PPC64.
8293
8294         * mini-arch.h: Include mini-ppc64.h on PPC64.
8295
8296 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8297
8298         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8299         in PPC code up to r119147.
8300
8301 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8302
8303         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8304         cpu-ppc64.md: Changes for PPC64.
8305
8306         Based on code submitted by andreas.faerber@web.de at
8307         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8308         X11/MIT license.
8309
8310 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8311
8312         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8313         cpu-ppc64.md: Copied from the corresponding PPC files from
8314         r118846.
8315
8316 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8317
8318         * mini-ops.h: Added OP_ROUND.
8319
8320         * cpu-x86.md: Added round.
8321
8322         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8323
8324         * basic-math.cs: Added test_0_round to test rounding.
8325
8326         Contributed under MIT/X11 license.
8327
8328 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8329
8330         * aot-compiler.c : Fix the Winx64 build.
8331
8332         Contributed under MIT/X11 license.
8333
8334 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8335
8336         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8337         in OP_EXTRACT_R8 to avoid possible stack corruption.
8338
8339 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8340
8341         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8342
8343         * cpu-x86.md: Added extract_r8.
8344
8345         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8346         
8347         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8348         a couple of OP_EXTRACT_I4.
8349
8350         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8351
8352         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8353
8354 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8355
8356         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8357         and not 4.1. 
8358
8359 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8360
8361         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8362         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8363
8364         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8365         are not needed any more.
8366
8367         * mini.h: Remove the unused INS_LIST macros.
8368
8369         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8370         longer needed.
8371
8372         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8373         ir-emit.h.
8374
8375         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8376         mono_alloc_ireg () instead.
8377
8378         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8379         macros.
8380
8381         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8382         on amd64.
8383
8384         * aot-runtime.c (load_aot_module): Disable AOT when running under
8385         CAS.
8386
8387         * mini-amd64.h: Change the monitor fastpath defines to check for
8388         !PLATFORM_WIN32 so they work on *bsd too.
8389
8390         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8391
8392         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8393
8394         * mini.h (MonoCompile): Remove new_ir flag.
8395
8396         * regalloc.h regalloc.c: Remove unused code.
8397
8398         * cpu-*.md: Remove more unused opcodes.
8399
8400         * simple-cee-ops.h simple-mini-ops.h: Removed.
8401
8402         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8403         
8404 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8405
8406         * aliasing.h: Removed.
8407
8408         * *.c: Remove references to aliasing.h and inssel.h.
8409
8410         * mini.c: Remove additional unused functions.
8411
8412         * mini-ops.h cpu-*.md: Remove unused opcodes.
8413
8414 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8415
8416         Remove the old JIT code.
8417
8418         * inssel*.brg: Removed.
8419
8420         * ssa.c abcremoval.c aliasing.c: Removed.
8421
8422         * ssa2.c: Renamed to ssa.c.
8423
8424         * abcremoval2.c: Renamed to abcremoval.c.
8425
8426         * *.c: Removed all !cfg->new_ir code.
8427
8428         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8429         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8430
8431         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8432         
8433 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8434
8435         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8436         to simplify the code and cut back on the number of global symbols in the AOT
8437         file.
8438         
8439         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8440
8441 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8442
8443         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8444         with the got/got_info tables.
8445
8446         * mini.h: Bump AOT file format version.
8447         
8448         * unwind.h: New file, contains definitions for stack unwinding.
8449
8450         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8451         to cfg->unwind_ops.
8452         
8453         * aot-compiler.c: Generalize the emitting of unwind information to use the
8454         information in cfg->unwind_ops.
8455
8456         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8457
8458         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8459         AOT method frames. Enable writing symbols for methods by default.
8460
8461 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8462
8463         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8464         and make it work with vectors of element sizes 1, 2 and 4.
8465
8466         * simd-intrinsics.c: Enable getter for all vectors with element size
8467         1, 2 or 4.
8468
8469         * simd-methods.h: Add the names of other getters.
8470
8471         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8472
8473         * cpu-x86.md: Same.
8474
8475         * mini-x86.c: Same.
8476
8477 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8478
8479         * mini-ppc.h: portability fix.
8480
8481 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8482
8483         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8484         buggy and will overwrite it.
8485
8486 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8487
8488         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8489         Use it to emit local symbols for all methods so AOTed methods show up with
8490         their full name in gdb/valgrind output.
8491
8492 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8493
8494         * mini-ppc.c: portability fixes.
8495
8496 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8497
8498         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8499         entries out of the if (!generic_shared...) code so it is always done.
8500         (mono_class_init_trampoline): Do the patching when running under valgrind
8501         too, newer versions of valgrind have no problems with it.
8502
8503 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8504
8505         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8506         further sections.
8507
8508 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8509
8510         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8511         filters.
8512
8513 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8514
8515         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8516
8517 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8518
8519         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8520
8521         * cpu-x86.md: Same.
8522
8523         * mini-x86.c: Same.
8524
8525         * simd-intrinsics.c: Same.
8526
8527 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8528
8529         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8530
8531 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8532
8533         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8534         to work with more Vector types.
8535
8536 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8537
8538         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8539         store the elemens directly instead of using and intermediate.
8540
8541 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8542
8543         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8544
8545         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8546         to preserve %eax for aot plt trampolines.
8547
8548         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8549         (encode_method_ref): Flag synchronized methods so they won't go through
8550         the AOT trampoline.
8551
8552         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8553         wrappers.
8554
8555         * cpu-ia64.md (jmp): Increase max length.
8556
8557 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8558
8559         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8560         open generic classes.
8561
8562         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8563
8564         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8565         box+brtrue optimization since it causes test failures on x86.
8566
8567 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8568
8569         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8570
8571         * cpu-x86.md: Same.
8572
8573         * mini-x86.c: Same.
8574
8575         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8576         for simd ctor values. 
8577
8578         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8579         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8580
8581 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8582
8583         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8584         LogicalRightShift.
8585
8586         * simd-instrincs.c: Same.
8587
8588         * basic-simd.cs: Same.
8589
8590 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8591
8592         * ratests.cs: Add more tests.
8593
8594         * regalloc2.c (add_spill_code): Handle more corner cases.
8595
8596 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8597
8598         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8599         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8600         both the source an destination of an instruction.
8601
8602 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8603
8604         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8605         wapihandles.c: more portability changes.
8606
8607 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8608
8609         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8610         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8611         safe to execute in a signal handler and the kernel provides better
8612         the info in /proc/self/smaps. Avoid the assert on sigaction during
8613         cleanup.
8614
8615 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8616
8617         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8618         do the bblock linking hack if it is actually needed.
8619
8620         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8621         up linking.
8622
8623         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8624         crash problem is fixed.
8625
8626         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8627         bblocks.
8628
8629         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8630         for catch clauses.
8631         (mini_method_compile): Set the starting value of next_vreg to 
8632         MAX_IREGS + MAX_FREGS when using globalra.
8633
8634         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8635         filter clauses with BB_EXCEPTION_HANDLER.
8636
8637         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8638
8639 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8640
8641         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8642         space for stdcall.  Fixes regressions on Win32.
8643
8644 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8645
8646         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8647         bblocks.
8648         (linear_scan): Remove an assert which doesn't seem to be needed.
8649
8650         * local-propagation.c (mono_local_deadce): Avoid a call to
8651         MONO_DELETE_INS which would screw up the instruction linking.
8652
8653         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8654
8655         * regalloc2.c: Upgrade to work the current JIT code.
8656
8657 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8658
8659         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8660         case.
8661
8662         * aot-runtime.c: Remove some dead code.
8663
8664         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8665         consistency.
8666         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8667
8668         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8669         trampolines using sscanf since atoi doesn't work on large unsigned values.
8670
8671         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8672         Initialize code_size.
8673
8674 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8675
8676         * method-to-ir.c (mini_emit_inst_for_method): Make
8677         Interlocked.CompareExchange work for Int arguments on 32 bit
8678         archs, as well.
8679
8680 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8681
8682         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8683
8684 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8685
8686         * main.c Fix MSVC build.
8687
8688         Contributed under MIT/X11 license.
8689
8690 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8691
8692         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8693         alignment larger than 8 bytes are aligned correctly, too.
8694
8695         * mini.c: Honor the min_align field of MonoClass when laying out
8696         the stack.
8697
8698 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8699
8700         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8701
8702         * aot-compiler.c (emit_plt): Fix a warning.
8703         
8704         * aot-compiler.c: Implement ARM support in the binary writer.
8705
8706 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8707
8708         * basic-simd.cs: Add test for getter with byref arg.
8709         Fix the naming of a few tests.
8710         Add missing checks to a test.
8711
8712 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8713
8714         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8715
8716         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8717         most of the full-aot support for monitor enter/exit trampolines.
8718
8719         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8720         enter/exit trampoline creation functions.
8721
8722         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8723         make dist.
8724
8725 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8726
8727         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8728         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8729         implement the needed functionality without adding crap to the runtime.
8730
8731 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8732
8733         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8734         non-x86 builds.
8735
8736         * mini.c (mono_build_date): New global version holding the build date in
8737         string format.
8738         
8739         * Makefile.am (buildver.c): Generate a file containing the build date.
8740
8741         * main.c: Set the build date from the generated file.
8742
8743         * mini.c (mono_get_runtime_build_info): New helper function returning build
8744         information in a string format.
8745         
8746         * driver.c (mono_main): Print the build date in --version.
8747
8748         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8749         file when the bind-to-runtime-version option is used.
8750
8751 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8752
8753         * simd-intrinsics.c: Fix bug when using getters and byref args. 
8754
8755 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8756
8757         * simd-methods.h: Rename prefetch methods.
8758
8759         * simd-intrinsics.c: Same.      
8760
8761 2008-11-05  Mark Probst  <mark.probst@gmail.com>
8762
8763         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
8764         sizes.
8765
8766 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8767
8768         * aot-compiler.c: Use the bundled elf header files instead of depending on
8769         the system one.
8770         
8771         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
8772         mempool.
8773
8774         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
8775         on every call.
8776
8777 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
8778
8779         * cpu-x86.md: Add store nta ops.
8780
8781         * mini-ops.h: Same.
8782
8783         * mini-x86.c: Same.
8784
8785         * mini.h: Add an enum for simd prefetch modes.
8786
8787         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
8788         of store. Use the changed code to support store nta.
8789
8790         * simd-intrinsics.c: Add prefetch ops for all vector types.
8791
8792 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8793
8794         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
8795         threads.
8796         
8797         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
8798         names.
8799
8800         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
8801         trampolines.
8802
8803 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8804
8805         * mini-x86.c: Fixed commit.
8806
8807 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8808
8809         * aot-compiler.c (emit_plt): Align the plt section only on x86.
8810
8811 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8812
8813         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
8814         and MONITOR_EXIT, for the ASM fastpaths.
8815
8816         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
8817         available.
8818
8819         * mini.c, patch-info.h: Signature and patch infos for
8820         Monitor.Enter/Exit trampolines.
8821
8822         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
8823
8824         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
8825         Monitor.Enter/Exit ASM fastpath for Linux.
8826
8827 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8828
8829         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
8830
8831         * objects.cs: Add a new test.
8832         
8833         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
8834
8835         * aot-runtime.c (load_method): Run class initialization in the PLT case even
8836         if MONO_LOG_LEVEL is set.
8837
8838         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
8839
8840         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
8841
8842         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
8843         
8844         * aot-compiler.c: Change the relocation code to use virtual addresses instead
8845         of file offsets. Align the sections belonging to the data segment to 
8846         PAGESIZE.
8847
8848 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8849
8850         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
8851         elf.h. Port it to amd64.
8852
8853 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8854
8855         * driver.c: Enable SIMD by default.
8856
8857 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8858
8859         * cpu-x86.md: Add prefetch op.
8860
8861         * mini-ops.h: Same.
8862
8863         * mini-x86.c: Same.
8864
8865         * mini.h: Add an enum for simd prefetch modes.
8866
8867         * simd-methods.h: Add prefetch function names.
8868
8869         * simd-intrinsics.c: Add prefetch ops for all vector types.
8870
8871 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8872
8873         * aot-compiler.c (emit_bytes): Speed this up a little.
8874
8875 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
8876
8877         * aot-compiler.c: Add JIT time etc. statistics.
8878         
8879         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
8880
8881         * mini.h (MonoCompile): Add 'got_offset' field.
8882
8883         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
8884         method_got_offsets array.
8885
8886         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
8887         wrappers.
8888
8889         * aot-compiler.c (compile_method): Add generic method instances referenced
8890         by the method to the list of methods to be compiled, this is required so if
8891         A<T> references B<T>, and another assembly references A<int>, then it will
8892         also get a copy of B<int>.
8893
8894         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
8895         when checking for monitor enter/exit.
8896
8897 2008-10-30  Mark Probst  <mark.probst@gmail.com>
8898
8899         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
8900         for Monitor.Enter and Monitor.Exit if enabled.
8901
8902         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
8903         Solaris.
8904
8905 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
8906
8907         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
8908         of an OP_MOVE. Fixes #440046.
8909
8910         * basic-long.cs: Add a new test.
8911
8912 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8913
8914         * mini.h: Add synchronization note for the managed counter-part.
8915
8916         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
8917         returns the simd caps of the current cpu.
8918
8919 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8920
8921         * basic-simd.cs: Remove Console.WriteLine.
8922
8923 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8924
8925         * basic-simd.cs: New tests for Vector2ul.
8926
8927 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8928
8929         * simd-intrinsics.c: Add new vector type Vector2ul.
8930
8931 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8932
8933         * basic-simd.cs: New tests for Vector2l.
8934
8935 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8936
8937         * cpu-x86.md: Add long version of most packed int ops.
8938
8939         * mini-ops.h: Same.
8940
8941         * mini-x86.h: Same.
8942
8943         * simd-intrinsics.c: Add new vector type Vector2l.
8944
8945 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8946
8947         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
8948
8949         * simd-methods.h: Remove SN_op_BitwiseXor.
8950
8951 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8952
8953         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
8954         alignment.
8955
8956 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8957
8958         * basic-simd.cs: Test for Vector2d.
8959
8960         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
8961         value.
8962
8963 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8964
8965         * cpu-x86.md: Add double version of all packed float ops.
8966
8967         * mini-ops.h: Same.
8968
8969         * mini-x86.h: Same.
8970
8971         * simd-intrinsics.c: Add new vector type Vector2d.
8972
8973         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
8974
8975         * simd-methods.h: Add Duplicate.
8976
8977 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8978
8979         * basic-simd.cs: Test for packing with signed saturation.
8980
8981 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8982
8983         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
8984         found in the TYPESPEC table.
8985
8986 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
8987
8988         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
8989         too.
8990
8991         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8992
8993         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
8994         instead of the RVA, since the RVA can be changed by tools like the cil 
8995         stripper.
8996
8997         * method-to-ir.c (mono_method_to_ir2): Ditto.
8998
8999         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9000         (deserialize_variable): Ditto.
9001
9002 2008-10-25  Martin Baulig  <martin@ximian.com>
9003
9004         * debug-mini.c (write_variable): Use
9005         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9006
9007 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9008
9009         * cpu-x86.md: Add unsigned variants of packd and packw.
9010
9011         * mini-ops.h: Same.
9012
9013         * mini-x86.h: Emit the right instruction for packd and packw.
9014         Add unsigned variants of packd and packw.
9015
9016         * simd-intrinsics.c: Packd and packw were used in place of their
9017         unsigned variants. Change that.
9018         Add intrinsics for (Signed)PackWithSignedSaturation.
9019
9020         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9021
9022 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9023
9024         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9025
9026 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9027
9028         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9029
9030         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9031
9032         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9033         sse instructions.
9034
9035         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9036
9037 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9038
9039         * method-to-ir.c, mini.c: Special casing for the synchronized
9040         wrapper for the ldtoken+GetTypeFromHandle case.
9041
9042 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9043
9044         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9045
9046         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9047         created/split bblocks.
9048
9049 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9050
9051         * mini-ops.h: Add packed signed mul high.
9052         
9053         * cpu-x86.md: Same.
9054
9055         * mini-x86.c (mono_arch_output_basic_block): Same.
9056
9057         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9058
9059         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9060
9061 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9062
9063         * basic-simd.cs: Tests for Vector16sb.
9064
9065 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9066
9067         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9068
9069 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9070
9071         * mini-ops.h: Add packed signed min, max and compare greater.
9072         
9073         * cpu-x86.md: Same.
9074
9075         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9076         saturation.
9077
9078         * simd-methods.h: Add CompareGreaterThan.
9079
9080         * simd-methods.h: Remove CompareEquals.
9081
9082         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9083
9084         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9085
9086         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9087         CompareEqual.
9088
9089 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9090
9091         * basic-simd.cs: Fix tests due to change in the API.
9092
9093 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9094
9095         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9096
9097 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9098
9099         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9100
9101         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9102         inst_offset as this has invalid values for LDADDR.
9103
9104 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9105
9106         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9107
9108         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9109
9110 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9111
9112         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9113         for accessing field->data.
9114
9115 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9116
9117         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9118
9119 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9120
9121         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9122
9123         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9124
9125 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9126
9127         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9128         from the cfg mempool.
9129
9130 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9131
9132         * basic-simd.cs: Tests for new methods in Vector8us.
9133
9134 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9135
9136         * mini-ops.h: Add multiply and store high.
9137         
9138         * cpu-x86.md: Same.
9139
9140         * mini-x86.c (mono_arch_output_basic_block): Same.
9141
9142         * simd-methods.h: Same.
9143
9144         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9145         and CompareEqual.
9146
9147 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9148
9149         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9150         mono_class_setup_vtable ().
9151
9152         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9153         mono_class_get_vtable_entry () for accessing klass->vtable.
9154
9155         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9156
9157         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9158         found.
9159
9160         * method-to-ir.c (mono_save_token_info): Don't save references made from
9161         wrappers.
9162
9163         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9164         of generic instances.
9165
9166         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9167
9168 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9169
9170         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9171         OP_JMP depends on the method signature.  Calculate it properly.
9172
9173 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9174         
9175         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9176         called directly.
9177
9178         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9179         instances.
9180         (emit_extra_methods): Add another table mapping method indexes to 
9181         offsets in the extra_method_info table.
9182
9183         * mini.h: Bump AOT file format version.
9184         
9185         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9186         and mono_aot_get_method_from_token () into one function.
9187
9188 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9189
9190         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9191         separate counter.
9192
9193 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9194
9195         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9196         methods.
9197
9198         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9199         disable_aot.
9200
9201         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9202
9203         * mini.h: Bump aot file format version.
9204
9205         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9206         AOT file can contain native code for methods which are not in the METHOD
9207         table. Generate code for non-sharable generic instances of generic methods
9208         found in the METHODSPEC table.
9209         
9210         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9211         encoding generic type handles.
9212
9213         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9214         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9215
9216         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9217         macros + MONO_ADD_INS.
9218
9219         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9220         context as well.
9221
9222         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9223
9224         * mini.h: Bump aot file format version.
9225
9226         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9227
9228 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9229
9230         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9231         platforms, with definable stack alignment value.  Set to 16 now
9232         for all platforms.
9233
9234         * mini.c, mini.h, driver.c: Command line option for disabling
9235         stack alignment.
9236
9237 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9238
9239         * basic-simd.cs: Tests for new methods in Vector4ui.
9240
9241 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9242
9243         * mini-ops.h: Add packed int shuffle.
9244         
9245         * cpu-x86.md: Same.
9246
9247         * mini-x86.c (mono_arch_output_basic_block): Same.
9248
9249         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9250         extract mask, max, min, shuffle.
9251
9252         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9253
9254 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9255
9256         * basic-simd.cs: Tests for new methods in Vector8us.
9257
9258 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9259
9260         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9261         RuntimeTypeHandle, not a TypedReference.
9262
9263 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9264
9265         * simd-intrinsics.c: remove relocations.
9266
9267 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9268
9269         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9270         optimizations from the x86 backend.
9271
9272 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9273
9274         * simd-methods.h, simd-intrinsics.c: debloat method names and
9275         prepare for no relocations.
9276
9277 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9278
9279         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9280         
9281         * cpu-x86.md: Same.
9282
9283         * mini-x86.c (mono_arch_output_basic_block): Same.
9284
9285         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9286         extract mask, max, min and sum of absolute differences.
9287
9288         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9289         method name.
9290
9291 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9292
9293         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9294         Renamed one test for consistency.
9295
9296 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9297
9298         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9299         fix to the code that deal with other blocks.
9300
9301 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9302
9303         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9304
9305 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9306
9307         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9308         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9309         able to process the source reg.
9310
9311 2008-10-16  Martin Baulig  <martin@ximian.com>
9312
9313         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9314
9315         * inssel.brg: Add `OP_HARD_NOP'.
9316
9317         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9318
9319         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9320         `OP_HARD_NOP' instruction when running inside the debugger.
9321
9322         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9323         `OP_HARD_NOP' instruction when running inside the debugger.
9324
9325 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9326
9327         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9328         now works. The issue with the regalloc tripping up no longer
9329         happens.
9330
9331         * simd-intrinsics.c (load_simd_vreg): Same.
9332
9333 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9334         
9335         * basic-simd.cs: Tests for new Vector8ui methods.
9336
9337 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9338
9339         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9340         only for type. This fixes crashes where MonoInst::klass is checked
9341         for ops of type != VTYPE or OBJ.
9342
9343         * simd-intrinsics.c (load_simd_vreg): Same.
9344
9345 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9346
9347         * mini-ops.h: Add ops for packed shuffle/max/avg and
9348         extract mask.
9349         
9350         * cpu-x86.md: Same.
9351
9352         * mini-x86.c (mono_arch_output_basic_block): Same.
9353
9354         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9355         extract mask.
9356
9357         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9358         to emit extract mask op.
9359
9360         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9361         to emit word shuffles.
9362
9363 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9364
9365         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9366         the largest alignment needed by a variable, but at least
9367         sizeof(gpointer).
9368
9369 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9370
9371         * basic-simd.cs: Tests for the fixes in the last commit.
9372
9373 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9374
9375         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9376         no longer handles STACK_PTR input.
9377
9378         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9379
9380         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9381         get_simd_vreg   but handles STACK_PTR input.
9382
9383         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9384         as the input can be an arbitrary pointer.
9385
9386         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9387         LDADDR local optimization directly otherwise use a store op.
9388
9389 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9390
9391         * basic-simd.cs: Tests for dup low and dup high.
9392
9393 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9394
9395         * mini-ops.h: Add dup low and dup high ops.
9396         
9397         * cpu-x86.md: Same.
9398
9399         * mini-x86.c (mono_arch_output_basic_block): Same.
9400
9401         * simd-intrinsics.c (vector4f_intrinsics): Same.
9402
9403 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9404
9405         * basic-simd.cs: Tests for recently added functionality.
9406
9407 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9408
9409         * mini-ops.h: Add remaining sse1 fp ops.
9410         
9411         * cpu-x86.md: Add remaining sse1 fp ops.
9412
9413         * mini-x86.c (mono_arch_output_basic_block): Same.
9414
9415         * mini.h: Add enum for simd FP compare conditions.
9416
9417         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9418
9419         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9420         so the backed can generate the appropriate op.
9421
9422 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9423         This patch squeese one more byte from the SimdIntrinsc struct.
9424
9425         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9426         a a shift amount intead of simply or'ing it.
9427
9428         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9429
9430         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9431         byte so we can have an aditional flags field without increasing struct size.
9432
9433         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9434         against the simd_supported_versions bitmask.
9435
9436         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9437
9438 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9439
9440         * mini.c: remove rawbuffer code (the only use here is unsafe because
9441         it takes locks during signal handling and the kernel now provides much
9442         better info in proc/pid/smaps these days).
9443
9444 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9445
9446         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9447         OP_X86_PUSH_OBJ. Fixes #434620.
9448
9449         * objects.cs: Add a test.
9450         
9451 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9452
9453         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9454         that the packuswb/packusdw don't work with unsigned numbers for what
9455         would be negative numbers in signed format.
9456
9457         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9458         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9459
9460         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9461
9462         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9463
9464         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9465
9466         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9467
9468         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9469         add more ops.
9470
9471         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9472         version as the enum in mini.h.
9473
9474         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9475         for sse3 ops, check the simd_version field if present. This way the code
9476         works with all versions of sse.
9477
9478 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9479
9480         * simd-intrinsics.c: Fixed intrinsic name typo.
9481
9482         * mini.h: Added missing simd exported function.
9483
9484         * basic-simd.cs: Added tests for Vector4ui.
9485         Fixed broken test for Vector16b.
9486
9487 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9488
9489         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9490         the max length to 64.
9491
9492 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9493
9494         * method-to-ir.c: Only do the fast virtual generic method call for
9495         non-wrapper methods.
9496
9497         * mini.h, mini-trampolines.c: The new generic virtual remoting
9498         trampoline handles virtual method calls via the vtable (as done by
9499         the fast virtual generic method calls) to remoting proxies.
9500
9501         * mini.c (mono_jit_create_remoting_trampoline): For generic
9502         methods reate a generic virtual remoting trampoline.
9503
9504         * mini-amd64.h: Enable fast virtual generic method calls again.
9505
9506 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9507
9508         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9509         restore registers when doing tail calls.
9510
9511 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9512
9513         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9514         Vector4ui.
9515
9516 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9517
9518         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9519
9520 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9521
9522         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9523
9524 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9525
9526         * basic-simd.cs: Retrofit for API changes.
9527
9528 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9529
9530         * mini-ppc.c: Handle integer stack arguments for tail calls.
9531
9532 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9533
9534         * optflags-def.h: Removed sse3 optimization.
9535
9536         * driver.c: Same.
9537
9538         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9539         sse3.
9540
9541         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9542
9543         * mini.h: Added enumeration with simd versions.
9544
9545         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9546         for detecting SSE3.
9547
9548         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9549
9550         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9551
9552 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9553
9554         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9555
9556         * basic-simd.cs: Fixed test naming.
9557
9558 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9559
9560         * mini-ops.h: Added ops for packed and saturated math, shifts
9561         and packing/unpacking.
9562
9563         * cpu-x86.md: Added descriptors for the above ops.
9564
9565         * mini-x86.c: Added code to emmit the above ops.
9566
9567         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9568
9569 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9570
9571         * aot-compiler.c (compile_method): Enable AOT for generic code.
9572
9573         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9574
9575 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9576
9577         * mini.c: add a workaround for a common screwup that ends up blamed
9578         to mono (other processes blocking signal delivery).
9579
9580 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9581
9582         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9583         in the LDFLD/STFLD opcodes. Fixes #432673.
9584
9585         * iltests.il.in: Add a new test.
9586
9587 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9588
9589         * mini-arm.c: attach the thread in unmanaged->managed transitions
9590         using delegates (bug #433148).
9591
9592 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9593
9594        * basic-simd.cs: Use new ShuffleSel constants.
9595
9596 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9597
9598         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9599
9600         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9601         only disable simd intrinsics if no sse2 is detected.
9602
9603         * optflags-def.h: Added sse3.
9604
9605         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9606         is disabled.
9607
9608 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9609
9610         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9611         when adding delegate-invoke wrappers.
9612
9613 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9614
9615         * Makefile.am: Reenable the simd tests.
9616
9617 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9618
9619         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9620           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9621           other vreg is allocated to that hreg.
9622
9623         Contributed under MIT/X11 license.
9624
9625 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9626
9627         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9628         yet checked in.
9629
9630 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9631
9632         * basic-simd.cs: New test suite for SIMD intrinsics.
9633
9634         * Makefile.am: Added new tests.
9635
9636 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9637
9638         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9639
9640         * mini-ops.h: Same.
9641
9642         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9643
9644         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9645         using SSE2 aware opcodes.
9646
9647         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9648         is enabled, this code path is only reachable if conversion ops are emmited after
9649         mono_method_to_ir.
9650
9651         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9652
9653         This optimization saves 6 bytes per conversion against the old version.
9654
9655 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9656
9657         * aot-compiler.c (compile_method): Don't skip methods referencing 
9658         generic methods without a corresponding entry in token_info_hash, since
9659         encode_method_ref () can handle all generic methods now.
9660
9661         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9662         generic context is set.
9663         
9664         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9665         generic sharing of LDTOKEN.
9666
9667 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9668
9669         * mini-amd64.h: Temporarily disabled fast virtual generic method
9670         calls because it breaks the System.Runtime.Remoting tests.
9671
9672 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9673
9674         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9675
9676         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9677         so inlining actually works.
9678         (check_inline_caller_method_name_limit): Ditto.
9679
9680 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9681
9682         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9683         64 bit safety (from Olaf Hering and Andreas Farber).
9684
9685 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9686         
9687         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9688         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9689         unused virtual call support code.
9690
9691         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9692         
9693         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9694         which can't use aot trampolines.
9695         (decode_patch): Don't create aot trampolines for methods which can't use
9696         them.
9697
9698         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9699         use aot trampolines.
9700
9701         * mini.h: Bump AOT image format version.
9702         
9703 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9704
9705         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9706         to save_token_info () since cmethod is inflated for constrained calls.
9707
9708         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9709
9710 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9711
9712         * Makefile.am: Add build rules for ppc64.
9713         This avoids the build failing at pedump with unresolved symbols
9714         due to lack of arch_sources. Instead it will now fail earlier
9715         due to lack of cpu-ppc64.md.
9716
9717         Contributed under MIT/X11 license.
9718
9719 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9720
9721         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9722         tail calls.
9723
9724         * iltests.il.in: Add test case for tail call with many arguments.
9725
9726 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9727
9728         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9729         to the fast virtual generic method code until the aot case is fixed.
9730
9731 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9732
9733         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9734
9735 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9736
9737         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9738         thunks.
9739
9740 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9741         
9742         * simd-intrinsics.c: Forgot to add this one.
9743
9744         * mini-codegen.c: Fix macro in case SIMD is not supported.
9745
9746 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9747         
9748         This patch land initial JIT support for simd intrinsics.
9749
9750         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9751
9752         * Makefile.am: Added simd-intrinsics.c
9753
9754         * simd-intrinsics.c: New file with simd instrinsic related
9755         code.
9756
9757         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
9758
9759         * cpu-x86.md: Add simd related instructions.
9760
9761         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
9762
9763         * driver.c: Added two new --regression variants.
9764
9765         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
9766
9767         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
9768
9769         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
9770         extract some complicated logic to helper functions.
9771
9772         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
9773
9774         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
9775
9776         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
9777         the specialized simplification pass.
9778
9779         * method-to-ir.c (mono_spill_global_vars): Use new macro.
9780
9781         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
9782
9783         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
9784         table.
9785
9786         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
9787         if MONO_ARCH_NEED_SIMD_BANK is defined.
9788
9789         * mini-ops.h: Added the new simd ops.
9790
9791         * mini-x86.c: Added mono_arch_xregname.
9792
9793         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
9794
9795         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
9796
9797         * mini-x86.h: Define simd related MONO_ARCH macros.
9798
9799         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
9800
9801         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
9802
9803         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
9804         MONO_CLASS_IS_SIMD to deal with simd related IR.
9805
9806         * mini.h (MonoInst): Added spill_var to the backend union.
9807
9808         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
9809
9810         * mini.h: Added forward declarations of the new simd fuctions.
9811
9812         * optflags-def.h: Added new optimization names SIMD.
9813
9814         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
9815
9816         * regalloc.h: Added support for working with 3 register banks.
9817
9818         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
9819
9820         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
9821
9822 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
9823
9824         * mini-exceptions.c: remove 64 bit related ifdef clutter.
9825
9826 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9827
9828         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
9829         instead of one on 64 bit systems.
9830
9831         * method-to-ir.c: Remove unused includes.
9832
9833 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
9834
9835         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
9836         cfg->used_int_regs, since the two are different on arm.
9837
9838 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9839
9840         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
9841         mono_method_get_vtable_index() to get the vtable index.
9842
9843 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9844
9845         * method-to-ir.c (mono_method_to_ir2): Don't create native
9846         wrappers for array methods, because they're never called (and if
9847         they were called they wouldn't work).
9848
9849 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9850
9851         * method-to-ir.c (mono_method_to_ir2): Array methods are
9852         special-cased and must not be invoked indirectly via the (M)RGCTX
9853         when generic sharing is turned on.  Fixes #431413.
9854
9855 2008-10-01  Mark Probst  <mark.probst@gmail.com>
9856
9857         * method-to-ir.c: When generic sharing is active, call
9858         non-interface virtual generic methods via the standard trampoline.
9859
9860         * mini-trampolines.c: Handle virtual generic shared methods.
9861
9862         * mini.h, mini-x86.c, mini-x86.h: New argument for
9863         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
9864         method thunks and which is the trampoline to call if the lookup
9865         fails.  Enable the virtual generic method thunk for x86.
9866
9867         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
9868         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
9869         argument but assert that it's NULL, because these archs don't yet
9870         implement the virtual generic method thunk.  Changes in the IMT
9871         thunk data structures.
9872
9873 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
9874
9875         * aot-compiler.c (emit_globals): Avoid invalid characters in
9876         the static linking symbol.
9877
9878         * objects.cs: Add a test for the range check optimization. Fix warnings.
9879
9880         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
9881         optimization from the current JIT.
9882
9883         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
9884         later in decompose_array_access_opts () to allow more optimizations.
9885
9886         * method-to-ir.c (mono_handle_soft_float): Rename this to 
9887         mono_decompose_soft_float () for consistency.
9888
9889         * mini-ops.h: Fix arguments of OP_STRLEN.
9890
9891         * method-to-ir.c (save_cast_details): Extract the cast details saving code
9892         into a separate function.
9893         (reset_cast_details): Ditto.
9894         (handle_unbox): Save cast details. Fixes #431254.
9895
9896         * method-to-ir.c: Remove some obsolete FIXMEs.
9897
9898 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9899
9900         * ir-emit.h (alloc_dreg): Write a warning before crashing.
9901
9902 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9903
9904         * mini-codegen.c: More work on macros to make them
9905         ready for multiple regbanks.
9906
9907 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9908
9909         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
9910
9911         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
9912
9913 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9914
9915         * mini-codegen.c (mono_spillvar_offset): Proper support for
9916         multiple regbanks.
9917
9918 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9919
9920         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
9921         the stack overflow changes.
9922
9923 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9924
9925         * mini-codegen.c: Make all bank macros depend on reg_bank.
9926
9927         * mini-codegen.c (mono_local_regalloc): Make free mask
9928         initialization regbank aware.
9929
9930 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9931
9932         * mini-codegen.c (mono_local_regalloc): Extract callee
9933         mask selection to a function and make it regbank aware.
9934
9935 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9936
9937         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
9938         code to deal with many regbanks.
9939
9940 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9941
9942         * mini-codegen.c: More fp->regbank changes.
9943
9944 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9945
9946         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
9947         of a hardcoded constant.
9948
9949 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9950
9951         * method-to-ir.c (type_from_stack_type): Fix typo.
9952
9953 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
9954
9955         * mini-ia64.c (emit_move_return_value): Convert float return values to
9956         double.
9957
9958         * objects.cs: Add a new test.
9959         
9960         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
9961         VARARG methods to fix an assert later.
9962
9963         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
9964         end so it at least compiles.
9965
9966 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9967
9968         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
9969
9970 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
9971
9972         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
9973         optimization to a new function (emit_optimized_ldloca_ir) and enable
9974         it for both ldloca and ldloca_s.
9975
9976 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9977
9978         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
9979         gshared CASTCLASS code.
9980
9981         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
9982         amd64, where the libc stack unwinder encounters stack frames referring to
9983         native code in unmapped memory.
9984
9985         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
9986         sharing.
9987
9988         * generics.cs: Add new test.
9989
9990 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
9991
9992         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
9993         add a check that one of the ARM_FPU_ constants is defined.
9994
9995         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
9996         
9997         * mini-exceptions.c: Fix build on non-altstack platforms.
9998
9999         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10000         sharing of vtypes.
10001
10002         * ir-emit.h: Add a comment to NEW_PCONST.
10003
10004         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10005
10006         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10007
10008         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10009         after the changes to MonoJitDomainInfo.
10010
10011 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10012
10013         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10014
10015 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10016
10017         * mini-ppc.c: Compiler warning fixes.
10018
10019 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10020
10021         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10022         for pinvokes.
10023
10024 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10025
10026         * exceptions-ppc.c, mini-ppc.h: Compile
10027         mono_arch_handle_altstack_exception() on Darwin, too.
10028
10029 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10030
10031         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10032         work on archs which don't have generic sharing implemented, only
10033         without the vtable_arg.
10034
10035 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10036
10037         * mini.c: Added comment explaining why delegate ctor icall
10038         wrappers are compiled.
10039
10040 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10041
10042         * mini.c: Don't produce trampolines to delegate ctor icall
10043         wrappers but compile them upfront.
10044
10045 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10046
10047         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10048         runtime-set function when going back to managed code. Currently this
10049         is used to set back the protection on the soft ovf pages and/or to
10050         throw the stack overflow exception that happened in unmanaged code.
10051
10052 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10053
10054         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10055         runtime-set function when going back to managed code. Currently this
10056         is used to set back the protection on the soft ovf pages and/or to
10057         throw the stack overflow exception that happened in unmanaged code.
10058
10059 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10060
10061         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10062         the support code for restoring stack protection after stack overflows
10063         that happen in unmanaged code. Don't set the exec permission on the
10064         soft overflow area.
10065
10066 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10067
10068         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10069         delegate->method_ptr is set. Fixes #428054.
10070
10071 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10072
10073         * tests.cs: Rename to ratests.cs.
10074
10075         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10076         emit_get_rgctx_... functions.
10077
10078 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10079
10080         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10081
10082 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10083
10084         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10085         before asserting that method is sharable.
10086
10087 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10088
10089         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10090         whether method needs a static RGCTX wrapper used instead of
10091         complex conditions.
10092
10093         * generic-sharing.c, mini.h: A few functions moved to
10094         metadata/generic-sharing.c.
10095
10096 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10097
10098         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10099         Generic code sharing for value types, which essentially means
10100         treating value type methods like static methods.  The RGCTX is
10101         passed in the same way.
10102
10103 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10104
10105         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10106         opcode when creating multi-dimensional arrays of open types.
10107
10108         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10109         open generic types.
10110
10111         * generics.cs: Add a test.
10112
10113         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10114
10115 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10116
10117         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10118
10119         * mini.c (mini_method_compile): Set it when running under the debugger. 
10120
10121         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10122         vreg optimization if the flag is set.
10123
10124         * driver.c (mono_main): Add --attach= option to pass options to
10125         the attach agent.
10126
10127         * mini.c (sigquit_signal_handler): Start the attach agent.
10128
10129         * ssapre.c: Disable this to save space since it is not yet ported to
10130         linear IR.
10131
10132         * regalloc2.c: Disable this to save space.
10133
10134         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10135
10136 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10137
10138         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10139         the -v option useful again.
10140
10141 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10142
10143         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10144         --break-at-bb.
10145
10146         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10147         arrays of arrays. Fixes #428406.
10148
10149         * method-to-ir.c (mini_emit_castclass): Ditto.
10150
10151         * objects.cs: Add new test.
10152         
10153 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10154
10155         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10156         was wrong at it choked against target_type_is_incompatible for byref types.
10157
10158 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10159
10160         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10161         places.
10162
10163 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10164
10165         * mini-exceptions.c: update a few more exceptions-related counters.
10166
10167 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10168
10169         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10170         new functions to allocate from persistent mempools.
10171
10172 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10173
10174         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10175         multiple register banks in the future.
10176
10177         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10178
10179 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10180
10181         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10182
10183         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10184
10185         * mini.h: Export type_to_eval_stack_type.
10186
10187         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10188         is only ins->klass of byref types.
10189
10190 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10191
10192         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10193         (mini_emit_memcpy2): Ditto.
10194
10195         * mini-amd64.c: Fix a warning.
10196
10197 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10198
10199         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10200         linking.
10201
10202 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10203
10204         * method-to-ir.c: Extract stloc micro-optimization to a
10205         function and apply it to all cases.
10206
10207 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10208
10209         * method-to-ir.c: Don't fail generic code sharing in cases we
10210         already support.
10211
10212 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10213
10214         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10215
10216 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10217
10218         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10219         implementation.
10220
10221 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10222
10223         * trace.c: make tracing more useful and correct, with per-thread
10224         id and indent info.
10225
10226 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10227
10228         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10229         doing a method call and the argument is an R4.
10230
10231 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10232
10233         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10234         generic methods.
10235
10236 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10237
10238         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10239
10240 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10241
10242         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10243         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10244
10245 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10246
10247         * driver.c: Add a --agent argument (not supported yet) to load managed
10248         agent assemblies before loading the main assembly, similarly to how the
10249         Java VM handles agents.
10250
10251 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10252
10253         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10254         function to do stack layout of local variables.
10255
10256 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10257
10258         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10259         calculation.
10260
10261 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10262
10263         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10264         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10265         JIT if DISABLE_JIT is defined.
10266
10267         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10268         defined.
10269
10270 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10271
10272         * iltests.il.in: Disable the fconv test on PPC (the result is
10273         undefined according to ECMA).
10274
10275 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10276
10277         * iltests.il.in: Enable tail call tests for PPC.
10278
10279         * mini.h: Add variable for storing incoming valuetype argument
10280         addresses for tail calls.
10281
10282         * mini-ppc.c: Implement valuetype arguments and return values for
10283         tailcalls on Linux.
10284
10285 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10286
10287         * mini-ppc.c: Partially implement tail calls (struct arguments and
10288         return values not supported).
10289
10290         * method-to-ir.c: Enable tail calls on PPC.
10291
10292 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10293
10294         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10295         runtime-invoke wrappers to work around the problem of them getting
10296         assigned to a random class.
10297
10298         * aot-runtime.c (mono_aot_get_method): Ditto.
10299         
10300 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10301
10302         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10303         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10304
10305 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10306
10307         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10308         until they're implemented properly.
10309
10310         * exceptions-ppc.c: Use arch-independent exception-handling code
10311         instead of custom one.
10312
10313         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10314         for Linear IR.
10315
10316         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10317
10318         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10319         applies when __powerpc__ is defined.
10320
10321 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10322
10323         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10324         methods to their code to avoid computing the full name of wrappers and
10325         doing a lookup in a string hash table.
10326
10327 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10328
10329         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10330         we identify bblocks before method_to_ir () is ran.
10331
10332         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10333         Also avoid optimizing branches pointing to themselves.
10334
10335         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10336
10337 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10338
10339         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10340
10341 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10342
10343         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10344         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10345         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10346         'buf'.
10347
10348         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10349         jumped to the same entry in plt_jump_table.
10350
10351 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10352
10353         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10354         dynamic images.
10355
10356 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10357
10358         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10359         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10360         #421807.
10361
10362 2008-08-29  Geoff Norton  <gnorton@novell.com>
10363
10364         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10365         segment, and doesn't properly handle .space as .text.  Fixes
10366         AOT Mach/ARM
10367
10368 2008-08-29  Geoff Norton  <gnorton@novell.com>
10369
10370         * mini.c: Disable the mach exception handler when running on 
10371         ARM
10372
10373 2008-08-29  Geoff Norton  <gnorton@novell.com>
10374
10375         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10376         globals on Darwin/ARM
10377
10378 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10379
10380         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10381         since too many things depend on it. Instead, call 
10382         mono_runtime_set_no_exec ().
10383         
10384         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10385         the new JIT.
10386
10387         * aot-compiler.c: Add an 'asm-only' AOT option.
10388
10389         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10390                 
10391         * aot-compiler.c (compile_method): Disable gshared support for now as it
10392         doesn't yet work.
10393
10394 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10395
10396         * mini-amd64.h : Fix a compiler warning.
10397
10398         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10399           Changed to use a callback function to retrieve the unwind info.
10400           This avoids problems observed when code blocks were removed by
10401           unloading an app domain.
10402
10403         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10404           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10405           to work properly.
10406
10407         Contributed under MIT/X11 license.
10408
10409 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10410
10411         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10412           case to keep the stack aligned to 8.
10413
10414         Contributed under MIT/X11 license.
10415
10416 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10417
10418         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10419         avoid repeated linear searches.
10420
10421 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10422
10423         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10424         methods it can't handle.
10425         
10426         * aot-compiler.c (add_method): Avoid adding a method twice.
10427         (add_wrappers): Add runtime invoke wrappers for all methods.
10428
10429         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10430         function to create an aot-compatible version of this trampoline.
10431
10432         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10433
10434 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10435
10436         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10437
10438         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10439         with a generic sharing failure.
10440
10441         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10442
10443         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10444         CEE_RETHROW. Fixes #419634.
10445
10446         * mini.c (mono_method_to_ir): Ditto.
10447
10448         * exceptions.cs: Add a new test.
10449         
10450         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10451         to mono_type_stack_size_internal () since some callers might not pass in
10452         an rgctx.
10453
10454         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10455         instrument_prolog. Fixes #419878.
10456
10457         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10458         doubles in soft float mode volatile.
10459
10460 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10461
10462         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10463
10464         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10465         to handle soft float correctly.
10466
10467         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10468         the fast path.
10469
10470         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10471
10472         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10473         to sp, since the generics catch code requires it.
10474
10475         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10476         copying.
10477
10478         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10479         mono_arch_emit_imt_argument ().
10480
10481         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10482
10483         * mini-arm.c tramp-arm.c: Generic sharing updates.
10484
10485 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10486
10487         * mini-arm.c: Fix the arm build.
10488
10489         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10490         handling enums, generic instances and generic sharing.
10491         (mini_type_stack_size_full): Ditto.
10492
10493         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10494         
10495         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10496
10497         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10498
10499         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10500         trampolines.
10501
10502         * mini-arm.c: Various small generic sharing changes.
10503
10504         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10505         this for x86.
10506         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10507         custom code.
10508
10509         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10510         helper function to return a generic class init trampoline.
10511
10512         * method-to-ir.c mini.c: Use it.
10513         
10514         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10515         arch-specfic function to return a generic class init trampoline.
10516
10517         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10518         the GENERIC_CLASS_INIT custom code.
10519
10520         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10521         a fatal error, not a sharing failure.
10522
10523         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10524         needed.
10525
10526         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10527         trampoline argument from MONO_ARCH_VTABLE_REG.
10528
10529         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10530         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10531         argument, and pass the vtable in VTABLE_REG.
10532
10533         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10534         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10535         argument, and pass the vtable in VTABLE_REG.
10536         (mono_arch_create_trampoline_code_full): Remove some special casing for
10537         the rgctx fetch trampoline.
10538
10539         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10540         Fixes #419273.
10541
10542         * iltests.il: Add a test for it.
10543
10544 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10545
10546         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10547
10548         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10549         no longer needed.
10550
10551         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10552         use mono_jit_info_table_find () to avoid recursion.
10553         (mono_delegate_trampoline): Add a sync wrapper here.
10554
10555         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10556         here.
10557
10558         * mini.c (mono_method_to_ir): Ditto.
10559         
10560         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10561         add_sync_wrapper argument. Don't add a sync wrapper here.
10562         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10563
10564         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10565         
10566 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10567
10568         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10569           of nonvolatile registers back from MonoContext to CONTEXT.
10570
10571         Contributed under MIT/X11 license.
10572
10573 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10574
10575         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10576           arguments on Winx64 there are only 4 argument registers.  For this
10577           logic to work the last argument must be pulled from the stack.  
10578
10579         Contributed under MIT/X11 license.
10580
10581 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10582
10583         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10584
10585         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10586         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10587         encode/decode_method_ref ().
10588
10589         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10590
10591         * aot-runtime.c (decode_patch): Ditto.  
10592
10593         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10594         MONO_PATCH_INFO_METHOD.
10595
10596         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10597         MonoGenericJitInfo.
10598
10599         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10600         MonoGenericJitInfo.
10601
10602         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10603
10604         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10605         one from the caller.
10606
10607         * aot-runtime.c (decode_generic_inst): New function to decode and
10608         return a interned generic inst.
10609         (decode_klass_ref): Use it.
10610         (decode_method_ref): Ditto.
10611
10612         * aot-compiler.c (emit_exception_debug_info): Save 
10613         jinfo->has_generic_jit_info too.
10614
10615 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10616
10617         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10618
10619         * iltests.il.in: Add a test for fconv_to_i.
10620
10621         * liveness.c: Disable the liveness2 pass for now to save space.
10622
10623         * regalloc2.c: Include mempool-internals.h to fix warnings.
10624
10625         * aot-compiler.c (encode_method_ref): Encode the context of generic
10626         instance methods.
10627
10628         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10629         the context saved in the aot file.
10630
10631         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10632
10633         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10634
10635         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10636         volatile so they won't be optimized away.
10637
10638 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10639
10640         * ssa.c:
10641         * ssa2.c:
10642         * mini.c:
10643         * regalloc2.c:
10644         * dominators.c: Remove duplicated functions that now are in
10645         mempool-internals.h.
10646
10647 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10648
10649         * aot-compiler.c: Fix warnings.
10650
10651         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10652
10653         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10654
10655         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10656         as the patch type.
10657
10658         * mini.c (mono_resolve_patch_target): Ditto.
10659         
10660         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10661         (encode_klass_ref): Add support for encoding VARs/MVARs.
10662
10663         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10664
10665         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10666         the handling of the got entries into a separate 'decode_got_entry' function.
10667         Add support for RGCTX_FETCH.
10668
10669         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10670         clobbered by the trampoline code.
10671
10672         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10673         not clobbered by the indirect calling code.
10674
10675 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10676
10677         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10678         to fix the build.
10679
10680 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10681
10682         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10683         signature using the compilation mempool otherwise we would leak it.
10684
10685 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10686
10687         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10688         mono_emit_abs_call ().
10689
10690         * patch-info.h: Add GENERIC_CLASS_INIT.
10691
10692         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10693
10694         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10695         as their target as a near call.
10696
10697         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10698         ABS handling code.
10699         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10700
10701         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10702         call to a runtime function described by a patch.
10703
10704         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10705         mono_emit_abs_call, this has the advantage that the ABS handling code in
10706         mono_codegen () can handle them both, and can handle other stuff in the
10707         future without additional code.
10708
10709         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10710         entry.
10711         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10712         abs addresses.
10713
10714         * mini.h: Add missing bblock related prototypes.
10715
10716         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10717         reverse_inst_list_len fields.
10718
10719         * mini.c: Refactor this file a bit by moving branch optimizations to 
10720         branch-opts.c.
10721
10722         * method-to-ir.c: Merge generic sharing changes missed earlier.
10723
10724         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10725
10726         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10727         shared patches. Process METHODCONST as a shared patch.
10728
10729         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10730         as it crashes on the 2.0 mscorlib.
10731
10732         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10733         to cause crashes.
10734         
10735         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10736         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10737         by IMT.
10738
10739         * aot-compiler.c: Reorganize the got handling code to be a bit more
10740         understandable.
10741
10742 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10743
10744         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10745         mono_patch_info_equals/hash, and use it to massively simplify
10746         get_plt_index ().
10747
10748         * mini.c (mono_patch_info_hash): Simplify this and add support for
10749         more patch types.
10750
10751         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
10752
10753         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
10754         handling code, since an offset is not enough to identify a trampoline.
10755
10756         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
10757
10758 2008-08-17  Mark Probst  <mark.probst@gmail.com>
10759
10760         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
10761
10762         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
10763
10764         * mini-ops.h: Argument and result types for OVF_CARRY ops.
10765
10766         * decompose.c: PPC decompositions for various ops.
10767
10768         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
10769
10770 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10771
10772         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
10773         call the generic trampoline code using a call, instead of a jump, to
10774         remove some special casing from the generic trampoline code.
10775
10776         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
10777         (mono_codegen): Ditto.
10778
10779         * aot-compiler.c aot-runtime.c: Ditto.
10780
10781         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
10782
10783         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
10784         helper function to find the offset corresponding to a lazy fetch trampoline.
10785
10786         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
10787         when doing generic sharing.
10788
10789         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
10790         places.
10791         
10792         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
10793         mini-trampolines.c to be with the other trampoline creation functions.
10794
10795         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
10796         as it is equal to method->signature in most cases, add a 
10797         mono_emit_method_call_full variant which takes a signature and an imt
10798         argument as well.
10799
10800 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10801
10802         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
10803         to this function, since it could be computed easily from the method 
10804         argument.
10805         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
10806         more.
10807
10808         * method-to-ir.c mini.c: Remove references to 
10809         compile_generic_method_wo_context.
10810
10811         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
10812         generic method calls.
10813         
10814         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
10815         dimensional non-szarrays.
10816
10817         * mini.c (mini_init): Register mono_array_new_1.
10818
10819         * jit-icalls.c (mono_array_new_1): New jit icall.
10820
10821         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
10822         pointing to the method.
10823
10824         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
10825         method addresses belonging to METHOD_JUMP patches in the 
10826         jump_target_got_slot_hash.
10827         (mono_aot_load_method): Ditto.
10828
10829         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
10830         METHOD_JUMP patches.
10831
10832         * mini.c (mini_create_jit_domain_info): New helper function which 
10833         initializes/frees domain->runtime_info.
10834         (mini_free_jit_domain_info): Ditto.
10835         (mini_init): Install the domain hook functions with the runtime.
10836
10837         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
10838         information maintained by the JIT.
10839
10840         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
10841         insertion into jump_table_hash into mono_codegen (), also implement proper
10842         locking.
10843
10844         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
10845         tail calls, it is already done by the aot code.
10846         
10847         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
10848         mechanism on amd64.
10849
10850         * iltests.il.in: Make the jmp test a bit more complex.
10851
10852         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
10853         generic instances which doesn't have a token.
10854
10855         * aot-runtime.c (decode_method_ref): Ditto.
10856         
10857         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
10858         can handle this case now.
10859         (handle_box): Ditto.
10860
10861 2008-08-15  Geoff Norton  <gnorton@novell.com>
10862
10863         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
10864         debugging check.
10865
10866 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10867
10868         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
10869         calling generic methods.
10870
10871         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
10872
10873         * aot-runtime.c (decode_patch_info): Ditto.
10874
10875         * mini.c (mono_resolve_patch_target): Ditto.
10876         
10877         * patch-info.h: Add METHOD_RGCTX.
10878
10879         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
10880
10881 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
10882
10883         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
10884         arguments in registers.
10885
10886         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
10887         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
10888
10889         * mini.c (mini_method_compile): Abort aot compilation for generic
10890         methods if generic sharing is disabled.
10891         
10892         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
10893         an mrgctx.
10894
10895         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
10896         requiring an mrgctx.
10897
10898         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
10899         store instructions when converting a vcall to a normal call.
10900
10901         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
10902         mono_arch_find_jit_info.
10903
10904 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
10905
10906         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
10907         avoid calling mono_method_full_name () for every method even if the
10908         env var is not set.
10909         (check_inline_caller_method_name_limit): Ditto.
10910
10911 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10912
10913         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
10914         assemblies in one run.
10915
10916         * aot-compiler.c (mono_compile_assembly): Only print out a count of
10917         skipped methods if it is not 0.
10918
10919         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
10920
10921 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10922
10923         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
10924           MONO_ARCH_HAVE_UNWIND_TABLE.
10925
10926         Contributed under MIT/X11 license.
10927
10928 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10929
10930         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
10931           from default optimizaton list on Winx64.
10932
10933         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
10934
10935         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
10936           the LMF from the MonoJitTlsData structure.
10937
10938         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
10939
10940         Contributed under MIT/X11 license.
10941
10942 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10943
10944         * mini.c (sigsegv_signal_handler): Fix the build.
10945
10946         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
10947         assembly->aot_module.
10948
10949         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
10950         hash table. This simplifies and speeds up a lot of code, and fixes support
10951         for .netmodules.
10952
10953         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
10954         with the runtime.
10955
10956         * mini-exceptions.c: Ditto.
10957         
10958         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
10959         'native_offset' argument, since these are computed in the 
10960         mono_find_jit_info () function.
10961
10962         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
10963         is used by exceptions-ppc.c.
10964
10965         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
10966         mono_arch_find_jit_info ().
10967         
10968         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
10969         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
10970         generic code in mini-exceptions.c.
10971
10972 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
10973
10974         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
10975
10976         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
10977         
10978         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
10979         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
10980         called while holding the loader lock. Fixes #415608.
10981         (mono_aot_get_method_from_token_inner): Ditto.
10982
10983 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
10984
10985         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
10986         to reduce differences between this and the generic implementation in
10987         mini-exceptions.c.
10988         (ves_icall_get_frame_info): Ditto.
10989
10990         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
10991
10992         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
10993         longer neccesarry.
10994
10995         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
10996         mono_arch_get_call_filter () and make it non-static, for consistency with the
10997         other architectures.
10998
10999 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11000
11001         * mini.c:
11002         * local-propagation.c:
11003         * mini-x86.c: Correct the name of arch defines.
11004
11005 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11006
11007         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11008         NO_EMULATE_LONG_SHIFT_OPS define.
11009
11010 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11011
11012         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11013         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11014
11015         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11016         MACH fixes. Merged from the 2.0 branch.
11017
11018         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11019
11020         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11021         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11022
11023         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11024
11025         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11026         mono_marshal_get_native_wrapper () signature changes.
11027
11028 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11029
11030         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11031         conversion bug under arm.
11032
11033 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11034
11035         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11036
11037         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11038         with overflow checking.
11039
11040 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11041
11042         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11043         to the genmdesc.pl file
11044
11045 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11046
11047         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11048         arg_array in the soft-float versions of the LOAD/STORE macros.
11049
11050         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11051         implementation.
11052
11053         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11054
11055 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11056
11057         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11058         a float HFA. Fixes #413621.
11059
11060 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11061
11062         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11063         frame_size to args_size. Fixes build.
11064
11065 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11066
11067         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11068         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11069
11070         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11071         the stack are not unaligned. Fixes #413247.
11072         
11073 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11074
11075         * mini.c: update jitted methods performance counters.
11076
11077 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11078
11079         * mini-exceptions.c: increase the exceptions thrown performance
11080         counter in mono_handle_exception ().
11081
11082 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11083
11084         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11085         can work with netmodules.
11086
11087 2008-07-28  Geoff Norton  <gnorton@novell.com>
11088
11089         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11090         regression tests.
11091
11092 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11093
11094         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11095         correct place.
11096
11097 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11098
11099         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11100           The float param registers and other param registers must be the 
11101           same index on Windows x64.
11102
11103         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11104           ArgValuetypeAddrInIReg argument case.  Setting the argument
11105           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11106
11107         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11108           variable computed above as the copy length for arguments of storage
11109           type ArgValuetypeAddrInIReg.
11110
11111         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11112           ArgValuetypeAddrInIReg argument case.  This case will rely on
11113           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11114
11115         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11116           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11117           jump and tail call instructoins as they do not follow the typical call behavior.
11118
11119         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11120           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11121           local variable and pass the local variable by reference to the called method.
11122
11123         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11124           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11125           of a struct is passed in a register it must be saved with the other
11126           volatile argument on the stack.
11127
11128         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11129           frame pointer the stack adjustment value must be saved to the unwind 
11130           info structure.
11131
11132         Contributed under MIT/X11 license.
11133
11134 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11135
11136         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11137         which got lost in the merge.
11138
11139 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11140
11141         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11142         build.
11143
11144         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11145         
11146         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11147         icalls, since they won't be patched.
11148
11149         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11150         different code sequence when running under valgrind to prevent some valgrind
11151         errors.
11152
11153         * iltests.il.in: Add new regression test.
11154
11155         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11156         end with a throw.
11157
11158         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11159         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11160
11161         * iltests.il.in: Add new test.
11162
11163         * aot-compiler.c: Fix some warnings.
11164
11165         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11166         Fixes #412494.
11167
11168 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11169
11170         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11171         (mini_usage_jitdeveloper): Add a missing --wapi option.
11172
11173 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11174
11175         * mini-codegen.c: Simplify the is_fp macros.
11176         (free_up_ireg): Remove, use free_up_reg instead.
11177         (free_up_reg): Fix the fp case.
11178
11179 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11180
11181         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11182         lowered earlier.
11183
11184         * exceptions-x86.c: Merge some changes which seemed to have got lost
11185         in the linear-ir merge.
11186
11187         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11188
11189         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11190         long vreg volatile even if the variable was already created.
11191
11192         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11193         volatile variables.
11194
11195 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11196
11197         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11198
11199         * mini.c (mono_jit_compile_method_inner): Add support for 
11200         MONO_EXCEPTION_BAD_IMAGE.
11201
11202         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11203         mini_method_get_context () returns NULL. Fixes #356531.
11204
11205         * mini.c (mono_method_to_ir): Ditto.
11206         
11207         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11208         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11209
11210 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11211
11212         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11213         in the LDFTN implementation.
11214
11215 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11216
11217         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11218         code, patch calls to icalls, too, even if they're not in the
11219         shared generic code hash.  Fixes #411962.
11220
11221 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11222
11223         * cpu-x86.md: Increase the length of the fcall opcodes.
11224
11225         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11226         calls returning floats.
11227
11228         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11229         on NEWARR.
11230         
11231         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11232         missed earlier.
11233
11234         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11235         into the domain->method_code_hash.
11236
11237         * aot-compiler.c: Fix win32 build.
11238
11239         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11240         
11241         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11242         gshared NEWARR implementation.
11243
11244         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11245
11246         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11247         can be used outside of method_to_ir.
11248
11249         * mini.h (MonoCompile): Add arg_types field.
11250
11251         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11252         
11253         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11254         the values of the local arg_array and param_types array.
11255
11256 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11257
11258         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11259         got accesses might only get generated later when NEWOBJ is decomposed.
11260         
11261         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11262         looking up the native code of the target method when a delegate is called
11263         for the first time.
11264
11265         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11266         optimization.
11267
11268         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11269
11270         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11271         AOT work on platforms without a working dlsym implementation.
11272
11273         * mini.h: Bump AOT image format version.
11274         
11275 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11276
11277         * mini-exceptions.c: Free a MonoType with
11278         mono_metadata_free_type() instead of g_free().
11279
11280         * aot-runtime.c: Free a MonoType.
11281
11282 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11283
11284         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11285         optimization.
11286
11287         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11288         fp stack on x86.
11289
11290 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11291         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11292         profiler hook.
11293
11294 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11295
11296         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11297         NEWOBJ calls on valuetypes.
11298
11299         * iltests.il.in: Add new test.
11300
11301         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11302
11303 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11304
11305         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11306         is no longer needed.
11307
11308         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11309         non register sized integer arguments.
11310         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11311         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11312         emit_memcpy2 ().
11313
11314         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11315         CEE_MONO_RETOBJ.
11316         
11317         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11318         two a binop with different sized arguments is emitted.
11319
11320         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11321         instruction in the ins==NULL case.
11322
11323 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11324
11325         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11326
11327         * mini-x86.c: Fix osx build.
11328
11329         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11330         opcodes as well.
11331
11332         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11333         instruction for non int sized variables.
11334
11335         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11336         implementation.
11337
11338 2008-07-23  Robert Jordan  <robertj@gmx.net>
11339
11340         * method-to-ir.c: Fix MSVC build.
11341
11342 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11343
11344         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11345         a non int sized type, widen it to an int since newer versions of gcc seem to
11346         generate code which needs this.
11347
11348         * ssa2.c abcremoval2.c: Fix warnings.
11349
11350         * *: Merge the Linear IR branch.
11351
11352         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11353         the ChangeLog file there describes all the changes done over the years. 
11354         Further documentation can be found at www.mono-project.com/Linear_IL.
11355
11356 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11357
11358         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11359           The float param registers and other param registers must be the 
11360           same index on Windows x64.
11361
11362         Contributed under MIT/X11 license.
11363
11364 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11365
11366         * mini.c: Make the previous fix GC safe.
11367
11368 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11369
11370         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11371
11372 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11373
11374         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11375           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11376           ArgValuetypeAddrInIReg instead.
11377
11378         Contributed under MIT/X11 license.
11379
11380 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11381
11382         * mini-codegen.c (get_register_spilling): Fix a warning.
11383
11384 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11385
11386         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11387         for types which the initialization fails. Raises the provided exception
11388         at the right stop after cleanup.
11389
11390 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11391
11392         * aot-compiler.c: Free most of the memory allocated during compilation.
11393
11394         * mini.c (mini_parse_debug_options): Fix a leak.
11395         
11396         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11397         during aot compilation.
11398
11399 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11400
11401         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11402         it has too much register pressure.
11403
11404 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11405
11406         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11407
11408 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11409
11410         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11411         on x86.
11412
11413         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11414         on amd64 similar to the way it is done on arm.
11415
11416         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11417
11418         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11419         consistency, normalize error messages, avoid loading aot-only modules in
11420         normal mode.
11421
11422         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11423         for consistency.
11424
11425         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11426
11427 2008-07-11  Martin Baulig  <martin@ximian.com>
11428
11429         * debug-debugger.h
11430         (MonoDebuggerInfo): Add `interruption_request'.
11431
11432 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11433
11434         * aot-compiler.c (emit_plt): Remove some dead code.
11435
11436         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11437
11438         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11439         return the plt info offset belonging to a given plt entry.
11440
11441         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11442         mono_aot_get_plt_info_offset.
11443         
11444         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11445         similar to the amd64 code by makeing jumps through a separate jump table 
11446         instead of embedding the jump addresses into the code.
11447
11448 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11449
11450         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11451         method.
11452
11453 2008-07-10  Martin Baulig  <martin@ximian.com>
11454
11455         * mini.c (mini_method_compile): Disable generics sharing when
11456         running in the debugger.
11457
11458 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11459
11460         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11461
11462         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11463         the local register allocator from running out of registers on x86 when 
11464         using aot.
11465
11466 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11467
11468         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11469         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11470         C4146.
11471
11472         Contributed under MIT/X11 license.
11473
11474 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11475
11476         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11477         speed up the assembler.
11478
11479 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11480
11481         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11482         support.
11483
11484         * mini.c: Move the soft float handling macros a bit earlier, add 
11485         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11486         place.
11487
11488         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11489
11490         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11491         read-only to help catch code allocation requests.
11492         
11493         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11494         and turn it off when using --aot-only or when compiling with --aot=full.
11495
11496         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11497         jump table for switches from the normal domain mempool, not the code
11498         manager.
11499
11500         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11501         unbox trampoline which handles aot-only mode too.
11502
11503         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11504         an AOTed unbox trampoline.
11505
11506         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11507
11508 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11509
11510         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11511         ""
11512
11513         Contributed under MIT/X11 license.
11514
11515 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11516
11517         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11518           the unwind information for the method at the end of the allocated block.
11519           
11520         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11521           MonoCompileArch to hold the unwind info for SEH on Winx64
11522         
11523         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11524           frame pointer info for the method being compiled.
11525           
11526         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11527           the call to mono_exception_from_token.
11528           
11529         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11530           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11531           information is stored a the end of the method block because it is all 32-bit offset based.
11532
11533         Contributed under MIT/X11 license.
11534
11535 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11536
11537         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11538
11539         * wapihandles.c: Fix warnings.
11540
11541         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11542         mode.
11543
11544         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11545         mono_jit_compile_method in aot-only mode since that calls the type 
11546         initializer.
11547         
11548         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11549         get_delegate_invoke_impl in aot-only mode.
11550
11551         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11552
11553 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11554
11555         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11556
11557         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11558         is on by default.
11559
11560         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11561
11562         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11563         init trampoline from the AOT file as well.
11564
11565         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11566         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11567         code.
11568
11569         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11570         mono_init.
11571
11572         * exceptions-amd64.c: Add _full variants for the remaining exception code
11573         creation functions as well, allow emission of relocatable code, remove
11574         caching since that is now done by the caller.
11575
11576         * mini-exceptions.c: Add _full variants for the remaining exception code
11577         creation functions as well, add aot-only support.
11578
11579         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11580         if we can determine a proper token for them.
11581         (add_wrappers): Add a few more wrappers.
11582         (emit_method_code): Remove some dead code.
11583         (emit_trampolines): Emit exception code too.
11584
11585         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11586
11587         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11588         mono_array_new_va which avoids varargs.
11589
11590         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11591
11592         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11593         mono_arch_create_specific_trampoline () in all places.
11594
11595         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11596         a bit so it can be used for other things as well.
11597         
11598         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11599         on demand as well.
11600
11601         * exceptions-amd64.c: Rename the caching from the exception code creation
11602         functions, it is done by the caller instead.
11603         
11604         * exceptions-amd64.c: Change the signature of the exception code creation 
11605         functions to allow the creation of relocatable code later.
11606
11607         * mini-exceptions.c: Add a set of functions to query the various 
11608         runtime-generated exception functions.
11609
11610         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11611         mono_arch_.. () functions.
11612         
11613 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11614
11615         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11616
11617         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11618
11619         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11620         (mini_get_vtable_trampoline): Ditto.
11621
11622         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11623         code in the AOT case by returning the code size and a list of relocations to
11624         the caller.
11625
11626         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11627
11628 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11629
11630         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11631           clean the stack.
11632
11633         Contributed under MIT/X11 license.
11634
11635 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11636
11637         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11638         so the buffer size can be computed correctly. Fixes #404735.
11639
11640         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11641         normally as cfg->debug_info is already freed.
11642
11643 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11644
11645         * mini-amd64.c: For calls returning vtypes in registers, don't store
11646         the return address on the stack, instead allocate a separate local for
11647         it. Fixes #404729.
11648
11649 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11650
11651         * mini-trampolines.c, mini.h: Add an argument to
11652         mono_create_jit_trampoline_in_domain() for turning off the adding
11653         of the sync wrapper.
11654
11655         * mini.c: Use the JIT trampoline without sync instead of
11656         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11657         be patched.
11658
11659 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11660
11661         * driver.c: Turn on GSHARED optimization by default.
11662
11663 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11664
11665         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11666         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11667
11668         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11669         create a variant of the generic trampoline code callable from AOTed trampolines.
11670
11671         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11672         trampoline code callable from AOTed trampolines.
11673
11674         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11675
11676 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11677
11678         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11679         pass-through manner.
11680
11681         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11682         and don't fail sharing for them anymore.
11683
11684         * mini-exceptions.c: Handle exceptions in shared generic methods.
11685
11686         * generic-sharing.c: When checking the context of a generic
11687         method, also check its class's context.  Don't treat wrappers as
11688         sharable.
11689
11690         * mini-trampolines.c: Some code factored out to
11691         metadata/generic-sharing.c.  Handle the MRGCTX case.
11692
11693         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11694         we must deal with the method being of another instantiation of the
11695         class.  Add static rgctx invoke wrappers to generic methods.
11696
11697 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11698
11699         * mini.c: Provide all jit infos of generic shared methods with a
11700         generic jit info.
11701
11702         * mini-exceptions.c: Handle the new situation that a generic info
11703         might be available, but not info about the this/vtable/mrgctx
11704         variable.
11705
11706 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11707
11708         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11709         generic methods.
11710
11711 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11712
11713         * dominators.c (check_dominance_frontier): Fix a warning.
11714
11715         * mini.h: Add some missing prototypes.
11716
11717         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11718
11719         * driver.c (mono_jit_init_version): Correct the comments since the first
11720         argument should be the name of the root domain, not a filename.
11721
11722         * aot-runtime.c (make_writable): Error out if this is called while running
11723         with --aot-only.
11724         (load_aot_module): Ditto.
11725
11726         * aot-compiler.c: Really fix the computation of method indexes.
11727
11728         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11729         optimizations as this is no longer called frequently.
11730
11731         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11732         method and the invoke impl code and pass it to the delegate trampoline instead of
11733         just the delegate class.
11734
11735 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11736
11737         * aot-compiler.c: Fixup the computation of method indexes.
11738         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11739         the method builder infrastructure.
11740
11741         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11742         has no header.
11743
11744         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11745         mode, load the method right away instead of creating a trampoline.
11746
11747         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11748
11749         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11750         some checks a bit.
11751
11752 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11753
11754         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
11755         (mono_aot_load_method): Use method_index instead of method->token.
11756
11757         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
11758         can handle icalls etc. properly.
11759
11760         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11761
11762         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
11763
11764         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
11765         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
11766         JIT_ICALL_ADDR patch type.
11767
11768         * patch-info.h: Add JIT_ICALL_ADDR patch type.
11769
11770         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
11771         request flag.
11772         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
11773
11774         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
11775
11776 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11777
11778         * mini.c: Use domain->jit_code_hash_lock for controlling access to
11779         domain->jit_code_hash.
11780
11781 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11782
11783         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
11784
11785 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11786
11787         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
11788         get_this_arg_from_call, let it compute it when needed.
11789
11790         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
11791         gsctx from code only when needed.
11792
11793         * mini-trampolines.c (get_generic_context): Rename this to 
11794         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
11795         it can be called by the arch backends.
11796
11797         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
11798
11799 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
11800
11801         * driver.c (mono_main): Add experimental --aot-only command line option.
11802
11803         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
11804         set.
11805
11806 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
11807
11808         * driver.c (DllMain): Remove mono_module_handle.
11809
11810         Contributed under MIT/X11 license.
11811
11812 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
11813
11814         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
11815         for emitting methods which are not in the source assembly. Detect and report
11816         failure of assembling+linking.
11817         
11818         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
11819
11820         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
11821
11822 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
11823
11824         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
11825
11826 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11827
11828         * mini.h: Remove some obsolete prototypes.
11829
11830         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
11831
11832 2008-06-24  Mark Probst  <mark.probst@gmail.com>
11833
11834         * mini.c (get_object_generic_inst): Variable-sized arrays are not
11835         supported by Visual Studio, so use alloca().
11836
11837 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
11838
11839         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
11840         Fixes #402585.
11841
11842 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11843
11844         * mini.c: Fail sharing of a generic method if it contains an open
11845         catch clause (because we don't pass MRGCTXs yet).
11846
11847 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11848
11849         * mini.c: When compiling a method with generic sharing, insert the
11850         method instantiated with an all-Object generic context into the
11851         jit info table, instead of the context of the first instantiation
11852         of the method we happen to compile.
11853
11854 2008-06-18  Martin Baulig  <martin@ximian.com>
11855
11856         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
11857         `major_version' and `minor_version'.
11858
11859 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11860
11861         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
11862         mono_method_is_generic_sharable_impl() takes an additional
11863         argument specifying whether to treat type variables as reference
11864         types.
11865
11866 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11867
11868         * mini.h: Removed obsolete prototypes.
11869
11870 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11871
11872         * mini.c: Don't fail generic sharing for initobj and sizeof - we
11873         already handle them.
11874
11875 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11876
11877         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
11878         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
11879         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
11880         tramp-x86.c: Added a MonoGenericContext* argument to
11881         mono_arch_get_unbox_trampoline() so that it can call other
11882         functions which require it.
11883
11884 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11885
11886         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
11887         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
11888         mono_arch_get_this_arg_from_call() takes a
11889         MonoGenericSharingContext* as well.
11890
11891 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11892
11893         * mini.c: Factor out code for emitting unbox into emit_unbox() and
11894         implement generic sharing of unbox.
11895
11896 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11897
11898         * mini.c: Don't compute the vtable to determine whether a field is
11899         special static, because it might not work for open types.
11900
11901 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11902
11903         * mini.c: Removed the unused token_type and token_source arguments
11904         from get_runtime_generic_context_ptr().
11905
11906 2008-06-17  Marek Habersack  <mhabersack@novell.com>
11907
11908         * mini.c (ADD_BINOP): fix the build
11909
11910 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
11911
11912         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
11913         a widening op.
11914
11915 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11916
11917         * mini.h: Removed class relations enum that's not used anymore.
11918
11919 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11920
11921         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
11922
11923         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
11924         the lazy fetch trampoline access code.
11925
11926 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11927
11928         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
11929
11930 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11931
11932         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
11933
11934         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
11935
11936         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
11937
11938 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11939
11940         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
11941         intrinsics.
11942
11943         * mini-ops.h: Add MIN/MAX_UN opcodes.
11944
11945         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
11946         intrinsics.
11947
11948         * basic-math.cs: Add more min/max tests.
11949
11950         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11951
11952 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11953
11954         * mini.c: Small fix in the prologue of emit_castclass.
11955
11956 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11957
11958         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11959
11960         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
11961         do not work even for unsigned types. Fixes #400014.
11962
11963         * basic-math.cs: Add regression tests for unsigned Min/Max.
11964
11965 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11966
11967         * mini.c: Added additional context_used argument to several
11968         functions, which will be needed for sharing generic methods.  Use
11969         GET_RGCTX macro wherever appropriate.  Declare only one
11970         context_used in mono_method_to_ir().
11971
11972 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11973
11974         * mini.c, generic-sharing.c: Removed generic class relations.
11975
11976         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
11977         functions due to MRGCTX changes.
11978
11979 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11980
11981         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
11982         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
11983         with calculated IMT.
11984
11985         * mini.c: Generic sharing of calls via generic interfaces.
11986
11987         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
11988         generic method with non-constant MonoGenericContext*.  Instead,
11989         the context is taken out of the method itself.
11990
11991 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11992
11993         * mini.c: Generic sharing of ldvirtftn.
11994
11995 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11996
11997         * mini.c: Generic sharing of ldftn.
11998
11999 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12000
12001         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12002
12003 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12004
12005         * mini.c: Generic sharing of the special case of ldtoken followed
12006         by a call to GetTypeFromHandle.
12007
12008 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12009
12010         * mini.c: Generic sharing of box for nullable types.
12011
12012 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12013
12014         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12015         are passed on the stack. Fixes #324807.
12016
12017 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12018
12019         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12020         for the ArgValuetypeAddrInIReg case.
12021
12022         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12023         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12024
12025         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12026         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12027         local variable and pass the local variable by reference to the called method.
12028           
12029         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12030         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12031
12032         Contributed under MIT/X11 license.
12033
12034 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12035
12036         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12037
12038         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12039         everything.
12040
12041 2008-06-10  Martin Baulig  <martin@ximian.com>
12042
12043         * debug-mini.c
12044         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12045
12046 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12047
12048         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12049         possible error when no arguments are passed.
12050
12051         Contributed under MIT/X11 license.
12052
12053 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12054
12055         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12056         where the file name is NULL.
12057
12058 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12059
12060         * mini.c: Fix s390 build.
12061
12062 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12063
12064         * trace.c (mono_trace_parse_options): Fix warnings.
12065
12066         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12067
12068 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12069
12070         * mini.c (remove_block_if_useless): Avoid printing the method name.
12071         
12072         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12073         MONO_INST_NEW.
12074
12075         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12076         LMF. Not yet used.
12077
12078         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12079         translated code after it has been patched.
12080
12081 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12082
12083         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12084         avoid problems during code patching on SMP systems.
12085         (emit_call): Avoid adding a patch info which is already added by 
12086         emit_call_body.
12087         (mono_arch_emit_exceptions): Ditto.
12088
12089 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12090
12091         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12092         MONO_TYPE_ISSTRUCT already checks for it.
12093
12094 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12095
12096         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12097           structs with floats on Winx64 the float registers are not used.  
12098           The integer registers are always used..
12099         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12100           only one register will be used and only if the size of the struct 
12101           is 1,2,4, or 8 bytes.
12102
12103         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12104           to work for Winx64.
12105
12106         Contributed under MIT/X11 license.
12107
12108 2008-06-05  Martin Baulig  <martin@ximian.com>
12109
12110         * debug-debugger.c (debugger_lookup_class): Also call
12111         mono_class_setup_methods() here; we're only called from RTI.
12112
12113 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12114
12115         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12116         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12117         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12118         Post-process object files and add dtrace-generated object, if necessary.
12119
12120         Contributed under MIT/X11 license.
12121
12122 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12123
12124         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12125         element class.
12126
12127         * mini.c: Generic sharing for unbox.any and castclass.
12128
12129 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12130
12131         * mini.c: Ignore tailcall prefix in shared generic code and when
12132         doing calls which require a vtable/rgctx argument.
12133
12134 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12135
12136         * mini.c: Don't free the JIT info.
12137
12138         * driver.c: Changes in the JIT info table testing code.
12139
12140 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12141
12142         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12143         interruption. Fix some warnings.
12144
12145         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12146         interruption_checkpoint.
12147
12148 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12149
12150         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12151         from embedding applications.
12152
12153 2008-06-02  William Holmes  <billholmes54@gmail.com>
12154
12155         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12156           reserving 32 bytes on the stack when making calls. 
12157
12158         Contributed under MIT/X11 license.
12159
12160 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12161
12162         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12163         the linear IL branch.
12164
12165         * driver.c: Print out more information for --version on arm.
12166
12167 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12168
12169         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12170         bb_exit instead, since out of line bblocks might not actually be emitted
12171         out-of-line.
12172         
12173         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12174         maximum epilog size for out of line bblocks if tracing is enabled.
12175
12176         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12177
12178 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12179
12180         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12181
12182 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12183
12184         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12185         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12186         opcodes.
12187
12188 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12189
12190         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12191         the 'value' to store is a constant.
12192
12193         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12194
12195         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12196         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12197
12198 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12199
12200         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12201         for accessing method->generic_container.
12202
12203 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12204
12205         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12206         
12207         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12208
12209         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12210
12211         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12212         fails.
12213
12214 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12215
12216         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12217
12218         * mini.c: Handle the case when mono_class_vtable () fails.
12219
12220 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12221         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12222         the stat profiler.
12223
12224 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12225
12226         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12227         together with domain sharing.
12228
12229 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12230
12231         * mini.c: Treat callvirts to final methods like non-virtual calls
12232         when doing generic sharing, i.e. look them up in the runtime
12233         generic context.
12234
12235 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12236
12237         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12238         with computed types (for generic sharing).
12239
12240         * mini.c: Generic sharing for mkrefany and refanyval.
12241
12242 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12243
12244         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12245         possible.
12246
12247         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12248         the generic sharing code.
12249         
12250         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12251         when needed.
12252
12253 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12254
12255         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12256
12257 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12258
12259         * driver.c: updated copyright date
12260
12261 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12262
12263         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12264         needed.
12265
12266 2008-05-19  Martin Baulig  <martin@ximian.com>
12267
12268         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12269         pointing to the new `_mono_debug_using_mono_debugger' variable.
12270
12271         * driver.c
12272         (mono_main): Check mono_debug_using_mono_debugger() rather than
12273         the `MONO_INSIDE_MDB' environment variable to check whether we're
12274         inside the debugger.
12275
12276 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12277
12278         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12279         argument.
12280
12281 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12282
12283         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12284
12285         * mini.c: Added mini_assembly_can_skip_verification. This
12286         function checks if the assembly requested to skip verification. 
12287         Fixes part of #387274.
12288
12289 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12290
12291         * mini.c (mini_get_method): Disable the check for open generic classes when
12292         using generic sharing.
12293
12294         * generics.cs: Add a test for #387034.
12295
12296         * mini.c (mini_get_method): Check whenever the method class is an open generic
12297         type, and return NULL in that case, causing a verification error. Fixes
12298         #384123.
12299
12300 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12301
12302         * driver.c (mono_main): Revert r102623. The right
12303         thing to do is to enable the verifier under verifiable
12304         unless a --security flag was passed.
12305
12306         We need this non-trivial behavior for --verify-all otherwise
12307         mcs-compileall won't be able to use it. As it needs everything to
12308         be verified under validil.
12309
12310 2008-05-06  Martin Baulig  <martin@ximian.com>
12311
12312         Fix #383749.
12313
12314         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12315         (mono_debugger_thread_cleanup): Likewise.
12316         (mono_debugger_extended_notification): Likewise.
12317
12318 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12319
12320         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12321         against both inflated and non-inflated methods. We need to check against the
12322         generic definition for cases where the instantiated method is not visible.
12323         We need to check against the inflated types for cases where the instantiation
12324         changes any super type. This fixes #382986.
12325
12326         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12327         that check for visibiliy as generic params only appears as the type subject
12328         of tokens on call opcodes. Field manipulation and ldftn must always
12329         target an exact type.
12330
12331 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12332
12333         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12334         if no related --security flag is passed.
12335
12336 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12337
12338         * mini-arch.h: Prepare support for ppc64.
12339
12340         Contributed under MIT/X11 license.
12341
12342 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12343
12344         * aot-runtime.c: Prepare support for ppc64.
12345
12346         Contributed under MIT/X11 license.
12347
12348 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12349
12350         * mini-ops.h: Prepare support for ppc64.
12351
12352         Contributed under MIT/X11 license.
12353
12354 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12355
12356         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12357
12358         Contributed under MIT/X11 license.
12359
12360 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12361
12362         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12363         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12364         assemblies on windows.
12365
12366 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12367
12368         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12369         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12370         * main.c: Use UTF-8 encoded command line instead of Windows default code
12371         page on Windows to support Unicode.
12372         * driver.c (DllMain): New function for mixed-mode assembly support.
12373         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12374         export __stdcall functions without decoration.
12375
12376         Contributed under MIT/X11 license.
12377
12378 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12379
12380         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12381         saving it very early.
12382
12383 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12384
12385         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12386         deleted.  The only way to access the new RGCTX is via the
12387         trampline.
12388
12389         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12390         vtable instead of the RGCTX to static methods.
12391
12392         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12393         accessing the new RGCTX.
12394
12395         * generic-sharing.c: There is no separation between self, type
12396         arguments and other types in the RGCTX anymore.
12397
12398 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12399
12400         * mini-amd64.c (add_general): Remove previous stack adjustment.
12401         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12402         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12403         for 32 bytes of stack space reserved for all calls.
12404         
12405         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12406         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12407         adjustment.
12408         
12409         Code contributed under MIT/X11 license.
12410
12411 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12412
12413         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12414         against the root definition, peeling out method and type instantiations.
12415         Cache verify success results, code that fails verification is still
12416         checked multiple times.
12417
12418 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12419
12420         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12421
12422 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12423
12424         * mini-amd64.c (add_general): Always increment stack on Win64.
12425         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12426         on Win64.
12427         
12428         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12429         stack based argument handling on Win64.
12430         
12431         Code contributed under MIT/X11 license.
12432
12433 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12434
12435         * Makefile.am (version.h): Add support for git-svn.
12436
12437 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12438
12439         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12440         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12441         avoiding allocations and libc functions which might deadlock.
12442         
12443         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12444         'no-gdb-backtrace' option is set.
12445
12446         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12447
12448         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12449
12450 2008-04-21  Martin Baulig  <martin@ximian.com>
12451
12452         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12453         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12454
12455 2008-04-21  Martin Baulig  <martin@ximian.com>
12456
12457         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12458         `thread_vtable', `event_handler_ptr' and `event_handler'.
12459
12460 2008-04-21  Martin Baulig  <martin@ximian.com>
12461
12462         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12463         allows delayed initialization of the `executable_code_buffer' when
12464         attaching.
12465
12466 2008-04-21  Martin Baulig  <martin@ximian.com>
12467
12468         * mini.h (mono_debugger_create_notification_function): Removed.
12469         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12470
12471         * mdb-debug-info64.s
12472         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12473
12474         * mdb-debug-info32.s
12475         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12476
12477         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12478         currently only works on x86 and x86_64, so don't create it on ppc.
12479
12480 2008-04-21  Martin Baulig  <martin@ximian.com>
12481
12482         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12483
12484         * mini.c
12485         (mini_method_compile): In the fp elimination check, check
12486         `debug_options.mdb_optimizations' in addition to
12487         mono_debug_using_mono_debugger().       
12488
12489         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12490         disable some JIT optimizations which are only disabled when
12491         running inside the debugger.
12492         Added `--help-debug' option to describe the debugging options.
12493         (parse_debug_options): New static function to parse the `--debug'
12494         options, so we can easily add more stuff in future.
12495
12496 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12497
12498         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12499         the method has no body.
12500
12501 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12502
12503         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12504         assembly is not allowed in MSVC 64-bit compiler. 
12505         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12506         as we get floating point exceptions everywhere.
12507         
12508         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12509         correctly align arguments for call to throw_exception.
12510         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12511         
12512         Code contributed under MIT/X11 license.
12513
12514 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12515
12516         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12517
12518 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12519
12520         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12521
12522         * mini-amd64.c (NEW_INS): Set cil_code.
12523
12524         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12525         from mini-amd64.c so all debugger related logic is in one place.
12526
12527         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12528         later won't have a random ip assigned to them.
12529
12530 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12531
12532         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12533         the arch specific function initializes code_size.
12534         (mono_create_delegate_trampoline): Ditto.
12535
12536         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12537         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12538         platforms.
12539
12540         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12541         running under the debugger.
12542
12543         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12544         debugger.
12545
12546         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12547         debugger. Also move the disabling of optimizations here from driver.c.
12548         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12549         debugger.
12550
12551         * mini.h (MonoCompile): Add a few new flags.
12552
12553 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12554
12555         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12556         so the cil_code field of created MonoInst's is properly set.
12557         (mini_select_instructions): Ditto.
12558
12559         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12560         (MONO_INST_NEW_CALL): Ditto.
12561
12562         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12563         in many places so the ins->cil_code field is properly initialized.
12564
12565         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12566         place.
12567
12568 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12569
12570         * mini.c (mini_method_compile): Print a different message when compiling a 
12571         shared method.
12572         
12573         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12574         > 1.
12575
12576 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12577
12578         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12579         SSE2 instructions.
12580
12581         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12582         
12583 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12584
12585         * mini.c (handle_stack_args): Make this return void since its return value was
12586         never used. Also set cfg->unverifiable for invalid IL instead of calling
12587         G_BREAKPOINT ().
12588
12589 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12590
12591         * mini.c: Make sure "this" is live in catch clauses with type
12592         variables in shared generic code.
12593
12594 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12595
12596         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12597         generic_class_is_reference_type() to ensure the proper behaviour
12598         when sharing generic code and the type in question is a type
12599         argument.
12600
12601 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12602
12603         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12604         race conditions when printing thread dumps. Fixes #377738.
12605
12606 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12607         
12608         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12609         shows up when both MonoInst arguments can cause aliasig.
12610         There is likely no way in the current JIT to trigger this problem, but
12611         it showed up in the development of generics sharing, when in a new
12612         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12613         When the generics sharing code will be committed, its tests will be
12614         valid also for this bug.
12615
12616 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12617
12618         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12619         PATCH_INFO_METHOD.
12620
12621         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12622         NULL.
12623
12624 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12625
12626         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12627         use a more detailed exception message for InvalidCastException.
12628
12629         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12630
12631         * driver.c (mono_main): Add --debug=casts option to turn on better 
12632         InvalidCastException message details.
12633
12634         * mini.c (mini_get_debug_options): New helper function to return the address of
12635         the debug_options variable.
12636
12637         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12638         the jit_tls TLS variable.
12639
12640         * mini.c (mono_jit_tls): New TLS variable.
12641
12642         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12643         option is used.
12644
12645 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12646
12647         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12648
12649         * mini.c: Removed verifer related stuff, code moved to verify.c.
12650
12651         * driver.c: Using code from verify.c instead of mini.c.
12652
12653 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12654
12655         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12656         longer valid.
12657
12658 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12659
12660         * mini.c (check_for_method_verify): Enabling verification of
12661         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12662         have been fixed.
12663
12664 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12665
12666         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12667         caller saved registers as well.
12668         
12669         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12670         saved registers as well.
12671
12672 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12673
12674         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12675
12676         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12677         code.
12678
12679 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12680
12681         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12682         to get_call_info.
12683         (get_call_info): Take a gsctx argument instead of 'cfg'.
12684
12685 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12686
12687         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12688         mono_verify_all is set.
12689
12690         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12691
12692         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12693
12694 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12695
12696         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12697         an exception.
12698
12699         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12700         verifier and the code generated by the compiler.
12701
12702 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12703
12704         * mini.c: Generic sharing of the non-nullable case of the box
12705         instruction.
12706
12707 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12708
12709         * inssel.brg: Fix the build.
12710
12711         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12712
12713 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12714
12715         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12716         Array:Address. Fixes #372410.
12717
12718         * iltests.il.in: New tests for readonly prefix.
12719
12720 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12721
12722         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12723         mini-trampolines.c.
12724
12725         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12726         mini-exceptions.c.
12727
12728         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12729         
12730         * mini.c (mono_decompose_op_imm): New helper function.
12731
12732         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12733         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12734         return value.
12735
12736         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12737         mono_arch_output_basic_block. Fix warnings.
12738
12739         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12740         for now.
12741
12742 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12743
12744         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12745         since the extra frame is now detected automatically inside the loop.
12746
12747         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12748         opts which are now in mono_peephole_ins ().
12749         
12750         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12751
12752         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
12753         frames and skip duplicate managed-to-native frames. Fixes #367665.
12754
12755         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12756         opts which are now in mono_peephole_ins ().
12757         (mono_arch_peephole_pass_2): Ditto.
12758
12759         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
12760
12761         * mini-codegen.c (mono_peephole_ins): New helper function containing the
12762         arch independent peephole optimizations.
12763
12764         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12765         opts which are now in mono_peephole_ins ().
12766
12767         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
12768         
12769         * mini-s390.c (mono_arch_output_basic_block): Fix build.
12770
12771         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
12772         pattern.
12773
12774         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
12775         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
12776         opcode. 
12777
12778 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
12779
12780         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
12781         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12782         return value.
12783
12784         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12785         mono_arch_output_basic_block. Fix warnings.
12786
12787 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12788
12789         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12790         conv.ovf.u.un.
12791
12792 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12793
12794         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12795         conv.ovf.u.un.
12796
12797         * iltests.il: Add new tests.
12798
12799 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
12800
12801         * mini.c: Removed Windows version macros.
12802
12803 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12804
12805         * generic-sharing.c: Put reflection types in the extensible part
12806         of the runtime generic context.
12807
12808         * mini.c: Generic sharing of the GetTypeHandle special case of the
12809         ldtoken instruction.
12810
12811 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12812
12813         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
12814
12815         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
12816         
12817         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
12818         consistency with the other version on the linear IR branch.
12819
12820         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
12821
12822         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
12823
12824         * iltests.il.in: Add new tests.
12825
12826 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
12827
12828         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
12829
12830         * iltests.il.in: Add new tests.
12831
12832 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12833
12834         * mini.c: Two variables with the same name were declared in
12835         nesting contexts and one wasn't initialized.  Fixed.
12836
12837 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12838
12839         * mini.c: Generic sharing of the initobj instruction.
12840
12841 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
12842
12843         * mini.c: make the test to optimize ldtoken from typeof() more
12844         precise.
12845
12846 2008-03-18  Mark Probst  <mark.probst@gmail.com>
12847
12848         * mini.c: Generic sharing of the initobj instruction for reference
12849         types.
12850
12851 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
12852
12853         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
12854         the mono_breakpoint_clean_code() code to perform bound checks.
12855
12856 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
12857
12858         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
12859         mono_arch_patch_callsite() to include the start of the managed method
12860         to be able to perform bound checks.
12861
12862 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12863
12864         * mini.c: Generic sharing for the isinst instruction.
12865
12866 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12867
12868         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12869         inssel-long32-mips.brg: Added opcodes for doing indirect calls
12870         with the runtime generic context argument.
12871
12872         * mini.c: Share calls to several types of unsharable methods by
12873         putting the address of the method code in the runtime generic
12874         context and doing an indirect call.
12875
12876         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12877         to switches.
12878
12879 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12880
12881         * generic-sharing.c: Change due to a change in the runtime genric
12882         context API.
12883
12884 2008-03-15  Martin Baulig  <martin@ximian.com>
12885
12886         * tramp-x86.c
12887         (mono_arch_nullify_class_init_trampoline): Add call to
12888         mono_breakpoint_clean_code() to make things work when running
12889         inside the debugger.
12890
12891         * tramp-amd64.c
12892         (mono_arch_nullify_class_init_trampoline): Add call to
12893         mono_breakpoint_clean_code() to make things work when running
12894         inside the debugger.
12895
12896 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12897
12898         * inssel-long.brg (reg): Fix 64 bit build.
12899
12900 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12901
12902         * mini.c, mini.h: Share static generic code by passing it an
12903         implicit argument pointing to the runtime generic context.
12904
12905         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12906         inssel-long32-mips.brg: New opcodes for calling shared static,
12907         which need to be passed the runtime generic context.
12908
12909         * mini-amd64.c, mini-x86.c: Save the runtime generic context
12910         argument on the stack in the prologue if needed.  New function for
12911         finding the runtime generic context argument from the registers
12912         saved by the trampoline.
12913
12914         * mini-amd64.h, mini-x86.h: Specify which register to use for the
12915         runtime generic context argument.
12916
12917         * tramp-amd64.c: Also restore the register used for the runtime
12918         generic context argument.
12919
12920         * mini-trampoline.c: Resolve shared static calls by consulting the
12921         runtime generic context via the new argument.
12922
12923         * generic-sharing.c: Add an argument to sharability-checking
12924         functions that specifies whether type variables should be treated
12925         as sharable type arguments.
12926
12927         * inssel-x86.brg: Removed a superfluous, buggy rule.
12928
12929         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12930         to switches.
12931
12932 2008-03-14  Martin Baulig  <martin@ximian.com>
12933
12934         * debug-debugger.c (main_thread_handler): Call
12935         mono_runtime_run_main() without sending any notifications.
12936
12937         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
12938
12939 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12940
12941         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
12942
12943 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12944
12945         * tramp-x86.c: Fixed register restore offsets in the trampoline
12946         code for ECX and EDX.
12947
12948 2008-03-12  Geoff Norton  <gnorton@novell.com>
12949
12950         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
12951         different ucontext_t implementations.
12952         * exceptions-arm.c: Use the above defines to get exceptions working on 
12953         iPhone (based on a patch by Luke Howard lukeh@padl.com)
12954         * mini-arm.c: Implement iPhone icache support (based on a patch by
12955         Luke Howard lukeh@padl.com)
12956
12957 2008-03-12  Mark Probst  <mark.probst@gmail.com>
12958
12959         * mini.c: Enable generic sharing of calls to non-static
12960         non-interface non-generic non-value-type methods.
12961
12962         * mini-trampolines.c: Resolve calls from shared generic code.
12963
12964 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
12965
12966         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
12967
12968         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
12969
12970 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
12971
12972         * mini.c: some fixes for the AOT compiler.
12973
12974 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12975
12976         * cpu-amd64.md: Add clob:1 to some float opcodes.
12977
12978 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
12979
12980         * mini.h: Added MiniVerifierMode enumeration.
12981
12982         * mini.c: Added mini_verifier_set_mode to control
12983         the usage of the new verifier.
12984
12985         * mini.c (mono_method): Integrated the new verifier.
12986
12987         * driver.c: Extended --security option with validil and
12988         verifiable options to activate the new verifier.
12989
12990 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12991
12992         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
12993         optimization to ctors taking 0 or 2 arguments too.
12994
12995         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
12996         a bit.
12997
12998         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
12999
13000         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13001
13002 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13003
13004         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13005         non-aot case as well.
13006
13007         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13008
13009         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13010         changes.
13011
13012         * aot-compiler.c (encode_patch): Ditto.
13013
13014         * mini.h (G_MININT32): Fix the definition of this.
13015
13016 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13017
13018         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13019
13020         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13021
13022 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13023
13024         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13025         methods returning vtypes in registers.
13026         (mono_arch_allocate_vars): Ditto.
13027
13028         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13029
13030         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13031
13032         * generics.cs: Add a test from the linear IR branch.
13033
13034         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13035
13036         * mini.c (inline_method): Cache failed inline attempts.
13037
13038 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13039
13040         * mini.c: For shared methods of generic classes put the location
13041         of "this" into the MonoGenericJitInfo.
13042
13043         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13044         register out of a MonoContext by register number.  Add the generic
13045         sharing context as an argument to mono_arch_find_this_argument().
13046
13047         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13048         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13049         for new arch function.
13050
13051         * mini-exception.c: Handle open exception clauses in shared
13052         generic code.
13053
13054         * mini-trampolines.c: Supply additional argument to
13055         mono_arch_find_this_argument().
13056
13057 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13058
13059         * Makefile.am (regtests): Run the bench.exe tests last.
13060
13061 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13062
13063         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13064         a bit.
13065
13066 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13067
13068         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13069         with MS.
13070
13071         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13072         
13073         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13074
13075         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13076         whose class has no cctor.
13077
13078         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13079
13080 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13081
13082         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13083         unverified.
13084
13085 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13086
13087         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13088         to be in sync with the code on the linear IR branch.
13089
13090         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13091
13092         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13093
13094 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13095
13096         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13097
13098         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13099
13100         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13101
13102         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13103
13104         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13105         
13106         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13107         body.
13108
13109 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13110
13111         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13112         OP_LOADR4_MEMBASE emission.
13113
13114         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13115         (mono_spillvar_offset_float): Ditto.
13116
13117         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13118
13119         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13120         emission.
13121
13122         * basic-long.cs: Add regression tests for them.
13123
13124         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13125         use.
13126         (mono_arch_allocate_vars): Fix representation of single-precision float
13127         argument.
13128         (mono_arch_output_basic_block): Ditto.
13129
13130         * inssel-mips.brg: Ditto, remove duplicate items.
13131
13132         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13133         arguments of tail calls as on other platforms.
13134         (mono_arch_output_basic_block): Handle tail calls.
13135
13136         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13137         register.
13138
13139         * objects.cs (test_5_pass_static_struct): Add test for it.
13140
13141         Contributed under MIT/X11 license.
13142
13143 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13144
13145         * Makefile.am: Use gmcs for compiling the regression tests.
13146
13147         * *.2.cs *.2.il: Rename to *.cs and *.il.
13148
13149 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13150
13151         * regalloc.h: Make the vassign array smaller.
13152
13153         * mini.c (mini_method_compile): Remove an unused field in cfg.
13154
13155         * mini-codegen.c: Add a bunch of micro optimizations.
13156
13157 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13158
13159         * regalloc.h: Remove some unused fields.
13160
13161 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13162
13163         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13164
13165         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13166
13167 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13168
13169         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13170
13171         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13172         trampoline: Fetch an entry from the runtime generic context.  If
13173         it's NULL, jump to the actual trampoline to fill the runtime
13174         generic context.  Otherwise, return it.
13175
13176         * mini.c: Call the lazy fetch trampoline to get entries out of the
13177         runtime generic context.
13178
13179         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13180         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13181         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13182
13183 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13184
13185         * mini.c: Fetch data out of the extensible part of the runtime
13186         generic context instead of calling a helper function.
13187
13188         * generic-sharing.c: Some functions moved into
13189         metadata/generic-sharing.c.  Helper function for fetching other
13190         types now checks and asserts against extensible rgctx (just for
13191         debugging purposes - the helper function isn't called anymore
13192         unless for debugging).
13193
13194 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13195
13196         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13197         for tail calls up to the point that the tests in iltests.exe run. Also add a
13198         dummy CKFINITE implementation.
13199         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13200         needed for trampoline LMF frames.
13201
13202         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13203         trampoline LMF frames.
13204
13205 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13206
13207         * mini.c (inline_method): clean any pending loader error when inlining fail.
13208         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13209
13210 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13211
13212         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13213
13214         * aot-runtime.c (decode_patch_info): Ditto.
13215
13216         * mini.c (mono_resolve_patch_target): Ditto.
13217         
13218         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13219         icall wrappers.
13220
13221         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13222         
13223         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13224         if it references an icall address.
13225
13226 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13227
13228         * cpu-s390x.md: Remove some more unused opcodes.
13229         
13230         * cpu-s390x.md: Remove some unused opcodes.
13231
13232         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13233         mono_op_imm_to_op ().
13234
13235         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13236         instead of a switch statement.
13237         
13238         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13239         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13240
13241         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13242         
13243         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13244
13245         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13246         -1.
13247
13248 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13249
13250         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13251         opened. Fixes #362607.
13252
13253         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13254
13255         * iltests.il.in: Add a test for static methods in interfaces.
13256
13257 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13258
13259         * genmdesc.c (build_table): Fix a crash on older glib versions.
13260
13261         * cpu-sparc.md: Remove some unused opcodes.
13262         
13263         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13264         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13265
13266         * cpu-amd64.md: Remove some unused opcodes.
13267
13268         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13269         like the other opcodes.
13270
13271 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13272
13273         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13274
13275         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13276
13277         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13278         variables 'cfg' instead of 'm' for consistency.
13279
13280         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13281
13282         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13283         argument holding the vtype return address, to avoid the ambigious use of
13284         cfg->ret for this purpose.
13285
13286         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13287
13288         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13289         
13290         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13291         new mono_print_ins () function which only takes one argument.
13292
13293 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13294
13295         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13296         macro arguments.
13297
13298 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13299
13300         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13301
13302         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13303
13304         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13305         opcodes and other small changes.
13306
13307         * mini-ops.h: Add some new opcodes from the linear IR branch.
13308
13309         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13310
13311         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13312         opcodes, use the REG_MEMBASE opcodes instead.
13313         
13314         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13315         opcodes, use the REG_MEMBASE opcodes instead.
13316         
13317         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13318         linear IR branch.
13319
13320         * mini.c (mono_op_imm_to_op): New helper function.
13321
13322         * mini-ops.h: Add some opcodes from linear IR branch.
13323
13324 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13325
13326         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13327         <tsv@solvo.ru>.
13328
13329 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13330
13331         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13332         OP_ICONV_TO_R4/R8.
13333
13334         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13335
13336 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13337
13338         * aot-compiler.c (emit_method_code): Add an assert.
13339
13340         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13341         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13342         methods.
13343
13344 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13345
13346         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13347         some load/store opcodes so they are consistent. 
13348         (mono_arch_emit_prolog): Simplify some code.
13349
13350         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13351
13352         * objects.cs: Add tests for large argument offsets on ARM.
13353
13354         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13355         stack offsets. Fixes #359651.
13356
13357         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13358
13359         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13360
13361         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13362
13363         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13364
13365         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13366
13367         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13368         rid of CEE_CONV_R_UN.
13369
13370         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13371
13372 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13373
13374         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13375
13376         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13377
13378         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13379
13380         * cpu-amd64.md: Remove some unused opcodes.
13381
13382         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13383
13384         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13385
13386         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13387         arch specific functions for its parts. Call the peephole pass after local
13388         regalloc so the prolog can compute a more accurate max_offset.
13389         
13390         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13391         the corresponding OP_I/OP_L opcodes.
13392
13393         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13394
13395         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13396
13397 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13398
13399         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13400         as they are handled in mini.c.
13401
13402         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13403         
13404         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13405         case since it is handled in mini.c.
13406
13407         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13408
13409         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13410
13411         * *.c: Use the new opcodes in the IR and back end code.
13412
13413         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13414
13415         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13416
13417 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13418
13419         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13420         an assert because it has a race condition.
13421
13422 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13423
13424         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13425
13426         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13427
13428         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13429
13430         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13431         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13432
13433 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13434
13435         * cpu-amd64.md (move): Correct the maximum size of move.
13436
13437 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13438
13439         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13440         the generic class init trampoline to return quickly if the class
13441         is already inited.
13442
13443 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13444
13445         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13446         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13447
13448 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13449
13450         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13451         branch.
13452
13453 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13454
13455         * objects.cs: Add some soft-float tests.
13456
13457         * mini.c: Fix a couple more soft-float issues.
13458
13459         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13460
13461         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13462         avoid a REX prefix.
13463
13464 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13465
13466         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13467         exception happens while compiling a virtual method.
13468
13469 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13470
13471         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13472         
13473         * mini-sparc.c: Fix build.
13474
13475         * mini-sparc.c (get_call_info): Add support for generic sharing.
13476
13477         * mini-exceptions.c: Add a FIXME.
13478
13479 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13480
13481         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13482         altstack handling code.
13483
13484         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13485         
13486         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13487
13488         * mini-s390.c: Add support for generic sharing.
13489
13490         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13491         Fix CAS on s390.
13492         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13493
13494         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13495
13496         * mini-s390x.c: Add support for generic sharing.
13497         
13498         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13499         Fix CAS on ia64.
13500         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13501
13502         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13503         can be used since it takes a 16 bit signed immediate.
13504
13505         * inssel-s390x.brg: Fix OP_SETRET.
13506
13507         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13508
13509         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13510
13511         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13512
13513         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13514
13515         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13516         in one place.
13517
13518         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13519         stuff.
13520
13521         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13522         of the unused mono_arch_patch_delegate_trampoline stuff.
13523
13524 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13525
13526         * basic-long.cs: Move the fp related tests to basic-float.cs.
13527
13528         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13529
13530         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13531
13532         * basic-calls.cs: Add a test for proper float argument passing.
13533
13534         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13535         if the context corresponds to an exception received through a signal.
13536
13537         * exceptions.cs: Add a test for nullref handling at the start of a try
13538         clause.
13539
13540         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13541
13542         * jit-icalls.c (mono_break): New JIT icall.
13543
13544         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13545
13546         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13547
13548 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13549
13550         * cpu-*.md: Get rid of unused opcodes.
13551
13552         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13553
13554         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13555         by all platforms.
13556
13557         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13558         define.
13559
13560         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13561         the arch independent trampoline code in mini-trampolines.c.
13562
13563         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13564
13565         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13566
13567         * mini-s390.h: Remove an unused define.
13568         
13569         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13570         the arch independent trampoline code in mini-trampolines.c.
13571
13572         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13573
13574 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13575
13576         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13577
13578         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13579
13580         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13581
13582         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13583
13584         * cpu-amd64.md: Use smaller sizes for int opcodes.
13585
13586         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13587
13588         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13589         objects.cs.
13590
13591         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13592         debugging.
13593
13594         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13595         instead of though a pointer to save an indirection when accessing elements of
13596         the array.
13597
13598         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13599         some typos.
13600         (NOT_IMPLEMENTED): New helper macro.
13601         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13602         of a bb.
13603
13604         * *.c: Use the new helper macro.
13605
13606 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13607
13608         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13609
13610 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13611
13612         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13613         stack slots.
13614
13615 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13616
13617         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13618         profiling is enabled.
13619         
13620         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13621         the end.
13622         (mono_arch_emit_prolog): Add more first bblock optimizations.
13623
13624         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13625         in order if possible.
13626         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13627         bblock, since the arguments are still in their original registers.
13628
13629         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13630
13631 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13632
13633         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13634         as well.
13635
13636         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13637         offset 0.
13638
13639         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13640
13641         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13642         process async exceptions received while in unmanaged code.
13643
13644         * mini.c (mini_init): Install a callback with the runtime which will be called
13645         when a thread receives an async exception while in unmanaged code.
13646
13647         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13648
13649         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13650
13651 2008-01-16  Wade Berrier  <wberrier@novell.com>
13652
13653         * cpu-g4.md:
13654         * cpu-arm.md:
13655         * cpu-s390x.md:
13656         fix build
13657
13658 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13659
13660         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13661         compilation with sun cc.
13662
13663         * cpu-*.md: Fix the build.
13664
13665         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13666
13667         * mini-amd64.h: Add some comments to the MonoLMF structure.
13668
13669         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13670         
13671         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13672         in the LMF structure if possible. This saves two instructions in the
13673         managed->native wrappers.
13674
13675         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13676
13677 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13678
13679         * generic-sharing.c: New type argument lookup code which uses the
13680         runtime generic context template.
13681
13682 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13683
13684         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13685
13686         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13687         (mono_arch_output_basic_block): Fix localloc implementation.
13688
13689         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13690
13691         * mini-ia64.c (peephole_pass): Fix ia64 build.
13692
13693         * mini-amd64.c (peephole_pass): Fix a warning.
13694         
13695         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13696         at a constant offset from sp/fp.
13697
13698         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13699         instead of obtaining it from *lmf in the managed method case.
13700
13701 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13702
13703         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13704
13705 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13706
13707         * mini.h (MonoInstList): New type.
13708         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13709         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13710         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13711         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13712         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13713         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13714         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13715         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13716         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13717         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13718         MONO_INST_LIST_FOR_EACH_ENTRY,
13719         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13720         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13721         mono_inst_list_first, mono_inst_list_last,
13722         mono_inst_list_next, mono_inst_list_prev): New instruction
13723         list handling interfaces.
13724         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13725         list head 'ins_list'.
13726         (MonoInst): Replace next pointer with list head 'node'.
13727         (MonoCallInst): Make 'out_args' a MonoInstList.
13728         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13729         (MonoCompile): Delete reverse_inst_list and
13730         reverse_inst_list_len.
13731         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13732         mono_arch_lowering_pass, mono_arch_local_regalloc,
13733         mono_arch_output_basic_block, mono_arch_emit_prolog):
13734         Convert to new instruction lists.
13735         (insert_after_ins): Delete.
13736         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13737         instruction lists.
13738         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13739         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13740         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13741         mono_emulate_opcode, mono_emit_load_got_addr,
13742         inline_method, mono_method_to_ir, mono_print_bb_code,
13743         print_dfn, decompose_pass, nullify_basic_block,
13744         replace_out_block_in_code, remove_block_if_useless,
13745         merge_basic_blocks, move_basic_block_to_end,
13746         try_unsigned_compare, optimize_branches, mono_print_code,
13747         mini_select_instructions, remove_critical_edges): Likewise.
13748         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13749         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13750         mono_arch_output_basic_block, mono_arch_emit_prolog):
13751         Likewise.
13752         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
13753         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13754         mono_arch_output_basic_block): Likewise.
13755         (inst_list_prepend, insert_after_ins): Delete.
13756         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
13757         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
13758         instruction lists.
13759         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
13760         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
13761         mono_arch_emit_prolog): Likewise.
13762         * cfold.c (mono_constant_fold): Likewise.
13763         * liveness.c (visit_bb, mono_analyze_liveness,
13764         optimize_initlocals): Likewise.
13765         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
13766         * graph.c (mono_draw_code_cfg): Likewise.
13767         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
13768         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
13769         mono_ssa_cprop): Likewise.
13770         * abcremoval (get_relations_from_previous_bb, process_block):
13771         Likewise.
13772         * local-propagation (mono_cprop_invalidate_values,
13773         mono_local_cprop_bb): Likewise.
13774         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
13775         peephole_pass, mono_arch_output_basic_block,
13776         mono_arch_emit_prolog): Likewise.
13777         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
13778         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13779         mono_arch_emit_prolog): Likewise.
13780         (insert_after_ins): Delete.
13781         * aliasing.c (print_code_with_aliasing_information,
13782         mono_build_aliasing_information, mono_aliasing_deadce):
13783         Convert to new instruction lists.
13784         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
13785         peephole_pass, NEW_INS, mono_arch_lowering_pass,
13786         mono_arch_local_regalloc, mono_arch_output_basic_block):
13787         Likewise.
13788         (insert_after_ins): Delete.
13789         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
13790         peephole_pass, mono_arch_output_basic_block): Convert to
13791         new instruction lists.
13792         * mini-codegen (InstList, inst_list_prepend,
13793         insert_after_ins): Delete.
13794         (insert_before_ins, get_register_force_spilling,
13795         get_register_spilling, free_up_ireg, free_up_reg,
13796         create_copy_ins, create_spilled_store, alloc_int_reg,
13797         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
13798         to new instruction lists.
13799         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
13800         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13801         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
13802         (insert_after_ins): Delete.
13803         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
13804         mono_arch_local_regalloc, mono_arch_output_basic_block,
13805         mono_arch_call_opcode): Convert to new instruction lists.
13806         (insert_after_ins): Delete.
13807         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
13808         peephole_pass, mono_arch_output_basic_block,
13809         mono_arch_emit_prolog): Convert to new instruction lists.
13810
13811 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13812
13813         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
13814
13815         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
13816         Fixes #353182.
13817
13818         * Makefile.am (version.h): Make this work with non-bash shells.
13819
13820 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13821
13822         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
13823
13824 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13825
13826         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
13827         the InitializeArray optimization.
13828
13829 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13830
13831         * mini.c driver.c: Don't include os/gc_wrapper.h.
13832
13833 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13834
13835         * mini.c (print_jit_stats): Print GC statistics if available.
13836
13837 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
13838
13839         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
13840
13841 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
13842
13843         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
13844
13845 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
13846
13847         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
13848         
13849         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
13850
13851         * driver.c (mono_main): Ditto.
13852
13853 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
13854
13855         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
13856
13857         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
13858         in the vtable can't be encoded.
13859         (compile_method): Ditto.
13860
13861 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
13862
13863         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
13864         defined.
13865
13866         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
13867         lmf->rbp.
13868
13869         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
13870         the top LMF entry belongs to the current method.
13871
13872         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
13873
13874 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
13875
13876         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
13877         
13878         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
13879
13880         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
13881
13882         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
13883
13884         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
13885
13886         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
13887         implementation.
13888
13889         * basic-float.cs: Add an ulong->double cast test.
13890
13891 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
13892
13893         * mini.c (mono_method_to_ir): Fix a warning.
13894
13895 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
13896
13897         * mini-ops.h: Add OP_SWITCH.
13898
13899         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
13900         CEE_SWITCH in back-end code, use OP_SWITCH instead.
13901
13902 2007-12-11  Geoff Norton  <gnorton@novell.com>
13903
13904         * mini-s390x.c: Minor change to the MAX() define to allow
13905         it to compile with other gcc versions.
13906
13907 2007-12-11  Geoff Norton  <gnorton@novell.com>
13908
13909         * cpu-s390x.md:
13910         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
13911
13912 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13913
13914         exceptions-arm.c (mono_arch_get_restore_context): Restore
13915         the frame pointer.
13916
13917         exceptions-arm.c (throw_exception): Save the frame pointer.
13918         This is a partial fix for #323747. Only the client side is
13919         fixed.
13920
13921 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13922
13923         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
13924         was using an unrelated variable to log the class which
13925         needed the cctor to be called. This was crashing on arm.
13926
13927 2007-12-09  Robert Jordan  <robertj@gmx.net>
13928
13929         * mini-x86.c (mono_arch_emit_epilog):
13930         Consider all kinds of 64-bit types. Fixes #323114.
13931
13932 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
13933
13934         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
13935
13936 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13937
13938         * mini-amd64.c (peephole_pass): Add a missing instruction check.
13939
13940 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13941
13942         * mini.c: run type ctor before allocating an object, not only
13943         when running it's constructor method (fixes at least part of bug #342507).
13944
13945 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13946         
13947         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
13948         
13949         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
13950         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
13951         function.
13952
13953         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
13954         mono_generic_class_init_trampoline () the same as it is done with the other
13955         trampolines.
13956
13957         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
13958         aot-runtime.c aot-compiler.c: Implement AOT support.    
13959
13960 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13961
13962         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
13963         build for archs which don't have the vtable trampoline defined
13964         yet.
13965
13966 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13967
13968         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
13969
13970         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
13971
13972         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
13973
13974         * tramp-<ARCH>.c: Use the new helper function.
13975
13976 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13977
13978         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
13979         trampoline call, which takes a vtable argument.
13980
13981         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
13982         OP_TRAMPCALL_VTABLEs like other calls.
13983
13984         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
13985         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
13986         call.  Implemented a support function which fetches the vtable
13987         from a register set.
13988
13989         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
13990         Implemented a generic class init trampoline, using the
13991         OP_TRAMPCALL_VTABLE opcode.
13992
13993         * mini.c: Implemented static field access when sharing generic
13994         code.  This implies initing the class using the new
13995         OP_TRAMPCALL_VTABLE call.
13996
13997 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13998
13999         * mini.c: Don't compile methods with sharing enabled if their
14000         classes are disabled for sharing.
14001
14002 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14003
14004         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14005         opcodes. Fixes #346563.
14006
14007         * objects.cs: Add a new test.
14008
14009         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14010
14011         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14012         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14013
14014 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14015
14016         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14017
14018 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14019
14020         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14021         code stream.
14022
14023 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14024
14025         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14026
14027         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14028         optimization in the AOT case.
14029         
14030 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14031
14032         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14033         
14034         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14035
14036         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14037
14038         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14039
14040         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14041         is created by the inlined delegate ctor.
14042
14043         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14044
14045         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14046
14047 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14048
14049         * cpu-x86.md: Fix the length of ckfinite.
14050
14051 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14052
14053         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14054         
14055         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14056         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14057
14058         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14059
14060         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14061         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14062
14063 2007-11-28  Martin Baulig  <martin@ximian.com>
14064
14065         * mini-x86.c
14066         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14067         after creating the trampoline.
14068
14069 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14070
14071         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14072
14073         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14074         the same version.
14075
14076         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14077         instead of the calling method to help AOT.
14078
14079         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14080
14081 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14082
14083         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14084         is defined.
14085
14086 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14087
14088         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14089         
14090         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14091         (encode_method_ref): No need to handle generic method definitions specially.
14092
14093         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14094
14095         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14096         decode_klass_info.
14097
14098         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14099         encode_klass_info.
14100         (compile_method): Enable generic sharing.
14101
14102 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14103
14104         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14105         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14106
14107         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14108         generic code.
14109
14110         * mini-trampolines.c: Fix a warning.
14111
14112         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14113         NEW_PCONST.
14114         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14115         (generic_class_is_reference_type): Remove unused function.
14116
14117         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14118         in the generic vtable trampoline case.
14119
14120         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14121         
14122         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14123         return an AOT method based on a vtable slot.
14124
14125         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14126
14127         * mini.c (mini_get_vtable_trampoline): Export this.
14128
14129 2007-11-22  Martin Baulig  <martin@ximian.com>
14130
14131         * debug-debugger.h
14132         (MonoDebuggerInfo): Move `debugger_version' up.
14133
14134 2007-11-22  Martin Baulig  <martin@ximian.com>
14135
14136         * mini-amd64.c
14137         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14138
14139         * mini-trampolines.c
14140         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14141         after compiling the method.
14142
14143 2007-11-20  Martin Baulig  <martin@ximian.com>
14144
14145         * debug-mini.c
14146         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14147         (mono_debugger_remove_breakpoint): Likewise.
14148         (mono_debugger_check_breakpoints): Likewise.
14149
14150         * debug-debugger.c: Implement the new breakpoint interface here.
14151
14152 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14153
14154         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14155         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14156
14157         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14158
14159 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14160
14161         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14162
14163         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14164         mini.c.
14165
14166         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14167         mini.c.
14168
14169         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14170         returning a vtype in a register.
14171
14172         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14173         here from the arch specific code.
14174
14175         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14176         mini.c.
14177
14178         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14179         (mono_arch_emit_prolog): Increment maximum prolog size.
14180
14181         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14182         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14183
14184         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14185         MonoGenericSharingContext.
14186
14187         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14188         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14189
14190 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14191
14192         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14193         which extract fields out of the runtime generic context.  Full
14194         sharing of the NEWARR opcode.
14195
14196 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14197
14198         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14199         --enable-minimal=ssa.
14200
14201 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14202
14203         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14204         mono_marshal_get_delegate_invoke () signature change.
14205
14206 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14207
14208         * mini.c: Removed the shared context in favor of the generic
14209         sharing context.  Allocate the MonoJitInfo structure with room for
14210         the generic sharing context if it's needed.
14211
14212         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14213         domain-internals.h now.
14214
14215         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14216
14217         * generic-sharing.c: Several changes for working without a shared
14218         context and instead operating on open types instead.
14219
14220 2007-11-12  David S. Miller  <davem@davemloft.net>
14221
14222        * inssel-sparc.brg: Fix double instruction emit.
14223
14224 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14225
14226         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14227         Get/Set/Address methods.
14228         
14229         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14230         mono_marshal_get_delegate_invoke signature change.
14231
14232 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14233
14234         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14235         This can happens with dynamic methods. Fixes the other bug in #322722.
14236
14237 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14238
14239         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14240         BX call sequence.
14241
14242         * mini-arm.c (arm_patch): Implement patching of BX call
14243         sequence. Fixes one of the bugs in #322722.
14244
14245 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14246
14247        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14248        under Linux.  We only need to flush every 32-byte cache line.    
14249
14250 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14251
14252         * mini.c:
14253         move_basic_block_to_end: Add branches when needed, eventually creating
14254         a new BB.
14255         optimize_branches: added a parameter that tells if it's ok to create
14256         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14257         and avoid calling move_basic_block_to_end when it's not ok.
14258         Fixes bug 318677.
14259
14260 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14261
14262         * mini.c: Abort inlining call to InitializeArray if something
14263         looks wrong.  Let the icall handle it, which now has proper safety
14264         checks.
14265
14266 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14267
14268         * mini.c (mono_spill_call): add support for soft-float.
14269
14270         * mini.c (mono_method_to_ir): add support for soft-float
14271         to inlined functions that return float.
14272
14273         * mini.c (mono_method_to_ir): add support for soft-float
14274         to cee_stsfld opcode on float fields.
14275
14276 2007-11-05  Geoff Norton  <gnorton@novell.com>
14277
14278         * mini-x86.h: Fix the structure access for X86 Leopard.
14279
14280
14281 2007-11-05  Martin Baulig  <martin@ximian.com>
14282
14283         * mini-trampolines.c
14284         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14285         after compiling the method to notify the debugger.
14286
14287 2007-11-05  Martin Baulig  <martin@ximian.com>
14288
14289         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14290
14291 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14292
14293         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14294         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14295
14296 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14297
14298         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14299         native-to-managed wrappers.
14300         
14301 2007-11-01  Geoff Norton  <gnorton@novell.com>
14302
14303         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14304         members.
14305
14306 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14307
14308         * mini.c, mini-x86.c: when getting back from unmanaged code
14309         to managed via a marshaled delegate we also need to set the
14310         right domain.
14311
14312 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14313
14314         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14315         for amd64.
14316
14317 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14318
14319         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14320         let the debugger or other external agents to tell the JIT when
14321         a sw breakpoint has been inserted in the code that the JIT needs
14322         to be able to inspect.
14323
14324 2007-10-31  Martin Baulig  <martin@ximian.com>
14325
14326         * debug-debugger.h
14327         (MonoDebuggerInfo): Remove `runtime_class_init'.
14328
14329 2007-10-30  Martin Baulig  <martin@ximian.com>
14330
14331         * debug-mini.h
14332         (mono_debugger_thread_created): Added `MonoThread *' argument.
14333         (mono_debugger_extended_notification): New public method.
14334         (mono_debugger_trampoline_compiled): New public method.
14335
14336         * debug-mini.c
14337         (MonoDebuggerThreadInfo): Added `thread' and
14338         `extended_notifications' fields.
14339
14340         * debug-debugger.c
14341         (debugger_executable_code_buffer): New static variable.
14342
14343         * debug-debugger.h
14344         (MonoDebuggerInfo): Added `executable_code_buffer',
14345         `executable_code_buffer_size', `breakpoint_info_area',
14346         `breakpoint_table' and `breakpoint_table_size'.
14347
14348 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14349
14350         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14351         that IP  either is an unused value or the vtable pointer. IMT 
14352         calls use vtable + offset now. Reduced by almost half the size
14353         of IMT entries.
14354
14355 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14356
14357         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14358         defines to access param registers. Replace long usage with
14359         gsize as sizeof(long) != sizeof(void*) on Win64.
14360
14361         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14362         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14363         instead of non-existant _GetAddressOfReturnAddress.
14364
14365         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14366         param registers. Save/restore %rdi and %rsi in MonoLMF.
14367
14368         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14369         param registers. Modify (throw_exception) signature to take 
14370         %rdi and %rsi on Win64. 
14371
14372         Code is contributed under MIT/X11 license.
14373
14374 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14375
14376         * helpers.c: unlink debugging output files.
14377
14378 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14379
14380         * mini.c: Move mono_create_ftnptr () to object.c.
14381
14382 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14383
14384         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14385         optional. This function can now be used to disassemble code generated
14386         outside the JIT such as trampolines and IMT thunks.
14387
14388         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14389
14390         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14391         vtable pointer from a ldr instruction.
14392
14393         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14394         new IMT call sequence.
14395
14396         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14397         call sequence for interface invocations.
14398
14399         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14400         for imt support. This function is empty since IMT on ARM requires no
14401         special handling on the IR side.
14402
14403         * mini-arm.c (mono_arch_find_imt_method): added, required for
14404         imt support.
14405
14406         * mini-arm.c (mono_arch_find_this_argument): added, required
14407         for imt support.
14408
14409         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14410         a ldr instruction to load a value stored in the code stream.
14411
14412         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14413         for imt support.
14414
14415
14416 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14417
14418         * mini.c (mini_init): Install the jump trampoline callback.
14419
14420 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14421
14422         * mini-trampolines.c: handle synchronized methods with the common
14423         vtable trampoline (bug #335601).
14424
14425 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14426
14427         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14428
14429         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14430         64 bit platforms.
14431
14432         * mini-ia64.h mini-ia64.c: Add support for IMT.
14433
14434         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14435         prolog. Fixes #331958.
14436
14437 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14438
14439         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14440
14441 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14442
14443         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14444         trampoline.
14445
14446 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14447
14448         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14449         trampoline.
14450
14451 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14452
14453         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14454         trampoline.
14455
14456 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14457
14458         * mini-trampolines.c: changed the magic rampoline to understand
14459         the common vtable trampoline method: the method to invoke is
14460         determined by the vtable displacement of the call.
14461
14462 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14463
14464         * mini.c, mini.h: register the common vtable trampoline if the
14465         architecture supports it.
14466
14467 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14468
14469         * cpu-amd64.md: use the correct max length for tls_get.
14470
14471 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14472
14473         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14474         CEE_STELEM_ANY. Fixes #333696.
14475
14476 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14477
14478         * exceptions-x86.c: provide more graceful handling of the case where
14479         we followed a bogus function pointer from managed code (bug #332866).
14480
14481 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14482
14483         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14484         replaces the generic_shared flag and will carry more information
14485         in the future.
14486
14487         * generic-sharing.c: Added mini_type_stack_size() which allows
14488         allows open types if given a generic sharing context.
14489         mini_get_basic_type_from_generic() takes a
14490         MonoGenericSharingContext* instead of a MonoCompile* now.
14491
14492         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14493         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14494         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14495         changes above.  Just passing arguments through to the right
14496         places.
14497
14498 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14499
14500         * mini-arm.c: unify the call emission to emit_code_seq().
14501
14502 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14503
14504         * tramp-arm.c: reduced the trampoline size.
14505
14506 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14507
14508         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14509         variable handling out of arch-specific code.
14510
14511 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14512
14513         * mini-arm.c: implemented fast delegate dispatch.
14514
14515 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14516
14517         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14518         that fp elimination is turned off if the space required by locals is too
14519         big. Fixes #331958.
14520
14521 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14522
14523         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14524         ARM to the new style trampoline.
14525
14526 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14527
14528         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14529
14530         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14531
14532 2007-10-09  Martin Baulig  <martin@ximian.com>
14533
14534         * debug-debugger.h
14535         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14536         `field_info_offset_offset'.     
14537
14538 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14539
14540         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14541         removed more internal usage of the r11 register and made it available
14542         to the register allocator.
14543
14544 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14545
14546         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14547         when sharing generics and treat type variables as references.
14548
14549 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14550
14551         * mini-ppc.c: started removing the internal uses of register r11
14552         to eventually allow the register allocator to manage it as an
14553         additional available register.
14554
14555 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14556
14557         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14558
14559 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14560
14561         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14562         specific trampolines as they are not performance critical as a jump
14563         target (maybe align as before only for AOT code?). This saves about
14564         200 KB of native code on x86 for monodevelop startup.
14565
14566 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14567
14568         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14569         monodevelop startup.
14570
14571 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14572
14573         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14574
14575         * mini-sparc.h mini-sparc.c: Implement IMT support.
14576
14577         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14578         its smaller and doesn't clobber sparc_g1.
14579
14580         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14581
14582 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14583
14584         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14585
14586 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14587
14588         * mini-ppc.c: implemented fast delegate invocation.
14589
14590 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14591
14592         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14593
14594 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14595
14596         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14597         code to the new style trampoline in preparation for IMT support.
14598
14599 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14600
14601         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14602         systems already. This also reduces the specific trampiline sizes and
14603         prepares for the use of r12 as the IMT identifier register.
14604
14605 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14606
14607         * mini-mips.h: endianess fix (simplified from a patch by
14608         Thomas Kunze <thommy@tabao.de>, bug #323737).
14609
14610 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14611
14612         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14613         to access ucontext fields and enable netbsd support
14614         (partially from Magnus Henoch <mange@freemail.hu>).
14615
14616 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14617
14618         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14619         use the preprocessor from the CPP env var if it is set.
14620
14621 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14622
14623         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14624         code, before interface_offset gets used.
14625
14626 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14627
14628         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14629         mono_class_setup_vtable () before accessing klass->vtable.
14630
14631 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14632
14633         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14634         hackish.
14635
14636 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14637
14638         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14639         IMT slots (this saves hundreds of KB of memory in programs like
14640         IronPython and Monodevelop).
14641
14642 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14643
14644         * mini.c: print the delegate counter.
14645
14646 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14647
14648         * mini-x86.c: make it easier to enable the debugging code for IMT
14649         slots.
14650
14651 2007-09-28  Martin Baulig  <martin@ximian.com>
14652
14653         * debug-debugger.h
14654         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14655         `mono_method_klass_offset' and `mono_method_token_offset'.
14656
14657 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14658
14659         * mini.c: First generics sharing implementation.  Can only share
14660         in very simple cases.  If sharing doesn't work it falls back to
14661         dedicated compilation.
14662
14663         * mini.h: Flag in MonoCompile to specify whether generic
14664         compilation is shared.  Flags enum for marking which generic inst
14665         of a context is used.  Prototypes for helper functions.
14666
14667         * generic-sharing.c: Helper functions for generic method sharing.
14668
14669         * optflags-def.h: Optimization flag (gshared) for enabling generic
14670         method sharing added.
14671
14672         * Makefile.am: generic-sharing.c added.
14673
14674 2007-09-19 Daniel Nauck <dna@mono-project.de>
14675
14676         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14677
14678 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14679         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14680         fixes bug 325507.
14681
14682 2007-09-19  Martin Baulig  <martin@ximian.com>
14683
14684         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14685         mono_debug_cleanup() is now part of mono_cleanup().
14686
14687 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14688
14689         * driver.c (mono_main): Fix a warning.
14690
14691 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14692
14693         * aot-compiler.c: Optimize various parts when processing large assemblies.
14694         Fixes ##325568.
14695
14696         * mini.c (mono_patch_info_hash): Improve hash function.
14697
14698 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14699
14700         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14701         
14702         Code is contributed under MIT/X11 license.
14703
14704 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14705
14706         * mini.c (mini_init): Fix a leak.
14707
14708         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14709
14710 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14711
14712         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14713
14714 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14715
14716         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14717
14718 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14719
14720         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14721         variance tests.
14722
14723         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14724
14725         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14726
14727         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14728
14729         * aot-runtime.c (decode_patch_info): Ditto.
14730
14731 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14732
14733         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14734         static case. Cache delegates in architecture specific code, 
14735         based on number of parameters.
14736         
14737         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14738         in architecture specific code, based on number of parameters.
14739         
14740         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14741         caching happen in architecture specific code now.
14742         
14743         Code is contributed under MIT/X11 license.
14744
14745 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14746
14747         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14748         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14749         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14750
14751         Code is contributed under MIT/X11 license.
14752
14753 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14754         * mini.c: (mono_thread_abort) Fixed bug #82416.
14755
14756 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14757
14758         * mini.: hook the new managed GC allocation feature into the JIT.
14759
14760 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14761
14762         * mini.c: implementation for the new runtime tls opcode.
14763
14764 2007-09-11  Martin Baulig  <martin@ximian.com>
14765
14766         * debug-debugger.h
14767         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
14768         `mono_method_inflated_offset'.
14769
14770 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
14771
14772         * driver.c mini.h mini.c: Add a new devel command line option for injecting
14773         async exceptions into a method.
14774
14775         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
14776         purpose of testing whenever the unwinder works at every instruction.
14777
14778 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
14779
14780         * mini.c: check accessibility of method used in ldftn (fixes
14781         bug #82635).
14782
14783 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
14784
14785         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
14786
14787         * inssel.brg: Fix a warning.
14788
14789 2007-09-03  Martin Baulig  <martin@ximian.com>
14790
14791         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
14792         now takes the `main_method' as argument.
14793
14794 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
14795
14796         * cpu-sparc.md (endfilter): Add missing src1:i argument.
14797
14798 2007-08-30  Jonathan Chambers <joncham@gmail.com>
14799
14800         * driver.c: include the cil-coff.h header on Windows.
14801         
14802         Code is contributed under MIT/X11 license.
14803
14804 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14805
14806         * mini.c, driver.c: don't include the cil-coff.h header.
14807
14808 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14809
14810         * mini.c: flag places that needs fixes fo soft-float support.
14811
14812 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
14813
14814         * mini.h, inssel-float.brg: fix soft-float constant loads on big
14815         endian systems (partially from Dean Jenkins, bug #81924).
14816
14817 2007-08-28  Mark Probst  <mark.probst@gmail.com>
14818
14819         * mini.c (check_linkdemand): Remove embedded reference object in
14820         call to LinkDemandSecurityException.
14821         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
14822         with an IntPtr instead of a reference object.
14823
14824 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
14825
14826         * mini.c (handle_initobj): Handle alignment properly.
14827
14828         * inssel.brg (mini_emit_memset): Ditto. 
14829
14830         * inssel.brg (mini_emit_memcpy): Ditto. 
14831
14832         * inssel-sparc.brg: Ditto.              
14833
14834         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
14835
14836 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
14837
14838         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
14839         exceptions raised in unmanaged code. Fixes part of #82594.
14840
14841 2007-08-24  Mark Probst  <mark.probst@gmail.com>
14842
14843         * mini.c (mono_method_to_ir), declsec.c
14844         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
14845
14846 2007-08-22  Martin Baulig  <martin@ximian.com>
14847
14848         * debug-mini.h
14849         (MonoDebuggerThreadInfo): New typedef.
14850         (mono_debugger_thread_table): New global variable.
14851         (mono_debugger_thread_created): New public function.
14852         (mono_debugger_thread_cleanup): New public function.
14853
14854         * debug-debugger.h
14855         (MonoDebuggerInfo):
14856         - removed `get_current_thread' and `lookup_assembly'.
14857         - removed `data_table'.
14858         - added `thread_table'.
14859
14860         * mini.c
14861         (mono_thread_start_cb): Call mono_debugger_thread_created().
14862         (mono_thread_attach_cb): Likewise.
14863         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
14864         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
14865         initial domain.
14866
14867         * driver.c (mono_main): Move mono_debug_init() up, before calling
14868         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
14869
14870 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14871
14872         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
14873         together when passing several arguments of type double (gives a small
14874         speedup and saves a few bytes of generated code).
14875
14876 2007-08-20  Jb Evain  <jbevain@novell.com>
14877
14878         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
14879
14880 2007-08-20  Jb Evain  <jbevain@novell.com>
14881
14882         * mini.c (mono_method_to_ir): throw MethodAccessException
14883         and FieldAccessException instead of InvalidProgramException.
14884
14885 2007-08-20  Mark Probst  <mark.probst@gmail.com>
14886
14887         * mini.c: CoreCLR security checks.
14888
14889         * mini.h: Removed MonoSecurityMode (moved to
14890         metadata/security-manager.h) and mono_security_mode global var
14891         (replaced by set/get functions in security-manager.h).
14892
14893         * driver.c: Added "core-clr-test" security mode for testing.  Used
14894         set-function for setting security mode.
14895
14896 2007-08-17  Mark Probst  <mark.probst@gmail.com>
14897
14898         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
14899         the new jit_info_table.
14900
14901         * driver.c: Test code for the new jit_info_table (enabled by the
14902         define MONO_JIT_INFO_TABLE_TEST).
14903
14904 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
14905
14906         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
14907         detection of call <REG> instruction sequence. Fixes build on freebsd.
14908
14909 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
14910
14911         * mini-exceptions.c: Fix a warning.
14912
14913 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
14914
14915         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
14916         stack overflow handling code on amd64 too.
14917
14918         * mini-exceptions.c (mono_setup_altstack): Make this use 
14919         mono_thread_get_stack_bounds ().
14920
14921         * mini-x86.h: Disable sigaltstack on solaris x86.
14922
14923 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
14924
14925         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
14926
14927 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
14928
14929         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
14930
14931 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
14932
14933         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
14934
14935         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
14936
14937 2007-08-03  Neale Ferguson <neale@sinenomine.net>
14938
14939         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
14940         due to alignment.
14941
14942 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14943
14944         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
14945         to be emitted (bug #82281).
14946
14947 2007-08-01  Martin Baulig  <martin@ximian.com>
14948
14949         Merged the `debugger-dublin' branch.
14950
14951         * debug-debugger.h (MonoDebuggerInfo):
14952         Removed the `old_*' compatibility entries.
14953         Added `debugger_version' and `data_table'.
14954         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
14955         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
14956
14957         * debug-mini.c
14958         (MiniDebugMethodBreakpointInfo): Add `address_list'.
14959         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
14960         instead of a `gconstpointer'.
14961         (mono_debugger_insert_method_breakpoint): Return a
14962         `MonoDebugMethodAddressList *'.
14963
14964 2007-06-28  Martin Baulig  <martin@ximian.com>
14965
14966         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
14967
14968 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
14969
14970         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
14971         __builtin_frame_address () since it is broken on older gcc versions.
14972
14973 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14974
14975         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
14976         on the stack overflow handling and made the managed stack overflows
14977         catchable in most cases using soft guard pages.
14978         * exceptions-x86.c: added code to restore the protection in the soft
14979         guard pages at the end of exception handling.
14980
14981 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
14982
14983         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
14984
14985 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14986
14987         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
14988         exception handling.
14989
14990 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14991
14992         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
14993         signal handling support until it has been ported to the new mechanism.
14994         * mini.c: fixed stack overflow detection and use the new
14995         architecture code  to handle signals on the altstack.
14996
14997 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
14998
14999         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15000         stack overflows on the alt stack.
15001
15002 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15003
15004         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15005         stack overflows on the alt stack.
15006
15007 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15008
15009         * exceptions-ppc.c: cleanup preparing for altstack support.
15010
15011 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15012
15013         * exceptions-arm.c: cleanup preparing for altstack support.
15014
15015 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15016
15017         * mini.c (print_jit_stats): Output hazard pointer stats.
15018
15019 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15020
15021         * driver.c, mini.c: Replaced security mode flags with a single
15022         enum variable.
15023
15024 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15025
15026         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15027
15028 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15029
15030         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15031         (which doesn't do anything yet) for activating Core CLR
15032         (Silverlight) security.
15033
15034 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15035
15036         * mini-codegen.c: work around a possible gcc bug on arm.
15037
15038 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15039
15040         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15041         message for platforms that don't support AOT compilation.
15042
15043 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15044
15045         * mini.h, mini.c, driver.c: temporary smcs hack.
15046
15047 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15048
15049         * mini-arm.h, mini-arm.c: arm EABI fixes.
15050
15051 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15052
15053         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15054         case.
15055
15056         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15057         trampolines taking a method argument.
15058
15059         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15060
15061         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15062         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15063
15064         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15065         JIT compilation throws an exception. Fixes #82050.
15066
15067 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15068
15069         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15070         with the MONO_EXCEPTION_ defines.
15071
15072 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15073
15074         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15075         #82117.
15076         
15077         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15078         the cause of an assertion.
15079
15080 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15081
15082         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15083         removed.
15084
15085 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15086
15087         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15088         assert. Should fix #82103.
15089
15090 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15091
15092         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15093         here too. Fixes #82095.
15094
15095         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15096         addresses.
15097
15098         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15099
15100         * mini-amd64.h: Enable IMT for amd64.
15101         
15102         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15103
15104 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15105
15106         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15107
15108 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15109
15110         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15111         as soon as check_linkdemand sets an exception_type.
15112
15113 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15114
15115         * mini-x86.c: fixed offsets for IMT call sequence.
15116         * mini-x86.h: enable IMT again.
15117
15118 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15119
15120         * trace.c (mono_trace_enter_method): Decode MonoType too.
15121
15122         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15123
15124         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15125
15126         * mini-amd64.c: Add preliminary IMT implementation.
15127         
15128 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15129
15130         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15131         understand the new IMT-base interface invocation (thanks to
15132         Daniel Nauck for the report and the remote debugging session).
15133
15134 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15135
15136         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15137
15138 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15139
15140         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15141
15142 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15143
15144         * mini-trampolines.c: implement AOT IMT support.
15145         * mini-x86.h: enable IMT support for wider testing.
15146
15147 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15148
15149         * inssel.brg (emit_imt_argument): Add aot support here.
15150
15151         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15152
15153 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15154
15155         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15156         of the IMT implementation, partially from massi, with my
15157         implementation of the bsearch sequence. Disabled by default until
15158         the AOT code is implemented.
15159
15160 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15161
15162         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15163
15164         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15165
15166 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15167
15168         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15169         arch-independent IMT JIT code from Massimiliano
15170         Mantione (massi@ximian.com) with small cleanups from me.
15171
15172 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15173
15174         * Makefile.am: fix svn invocation to get the svn revision to be
15175         independent of the local language (build fix).
15176
15177 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15178
15179         * mini.c (inline_method): Reset cfg->exception_type if the
15180         inlining is aborted.  Fixes: 82049.
15181
15182 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15183
15184         * mini.c: remove assert from exception handling code when exception_ptr
15185         is not set.
15186
15187 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15188
15189         * mini.c (mono_codegen): Add an assert.
15190
15191         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15192         enter and leave code.
15193         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15194
15195 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15196
15197         * mini-ppc.c: fixed memory corruption for localloc(0)
15198         (bug #81852).
15199
15200 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15201         
15202         * mini.c: Fix warnings.
15203
15204 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15205
15206         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15207         to emit better double->int conversions.
15208
15209 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15210
15211         * mini.c: the provided Min/Max optimizations are valid for unisgned
15212         ints.
15213
15214 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15215
15216         * 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
15217
15218 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15219
15220         * mini.c (mono_running_on_valgrind): Add support for reporting the
15221         method and  its boundaries to valgrind.
15222
15223 2007-06-28  Martin Baulig  <martin@ximian.com>
15224
15225         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15226
15227 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15228
15229         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15230
15231         * generic.2.cs: Add new test case.
15232
15233 2007-06-25  Martin Baulig  <martin@ximian.com>
15234
15235         Merged the `debugger-dublin' branch.
15236
15237         * debug-mini.c
15238         (mono_debugger_insert_method_breakpoint): New public method.
15239         (mono_debugger_remove_method_breakpoint): Likewise.
15240         (mono_debugger_check_breakpoints): New static method.
15241         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15242
15243         * debug-debugger.h (MonoDebuggerInfo):
15244         Renamed (to keep backward compatibility in the vtable):
15245         `insert_breakpoint' -> `old_insert_breakpoint'.
15246         `remove_breakpoint' -> `old_remove_breakpoint'.
15247         `create_string' -> `old_create_string'.
15248         `lookup_class' -> `old_lookup_class'.
15249         `lookup_type' -> removed; changed into a dummy field.
15250         `lookup_assembly' -> `old_lookup_assembly'.
15251         Added (same functionality, but different signature):
15252         `create_string', `lookup_class', `lookup_assembly'
15253         Added new:
15254         `get_method_addr_or_bpt', `remove_method_breakpoint',
15255         `runtime_class_init'.
15256
15257         * debug-debugger.c: Merged the `debugger-dublin' branch.
15258
15259 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15260
15261         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15262         well.
15263         (peephole_pass): Likewise.
15264
15265 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15266
15267         * driver.c: hopefully make setaffinity work also for ancient
15268         versions of linux.
15269
15270 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15271
15272         * driver.c : win32 build fix.
15273
15274 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15275
15276         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15277         processor if it is set.
15278
15279 2007-06-21  Martin Baulig  <martin@ximian.com>
15280
15281         * debug-mini.h: New file.
15282
15283         * debug-mini.c
15284         (mono_debugger_insert_breakpoint_full): Moved here from
15285         ../metadata/mono-debug-debugger.c.
15286         (mono_debugger_remove_breakpoint): Likewise.
15287         (mono_debugger_breakpoint_callback): Likewise.
15288
15289 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15290
15291         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15292         changes in MonoGenericClass.
15293
15294 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15295
15296         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15297
15298 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15299
15300         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15301         removal of MonoGenericMethod.
15302
15303 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15304
15305         * mini-exceptions.c: hooks for the exception events profiling API.
15306
15307 2007-06-14  Randolph Chung  <tausq@debian.org>
15308
15309         * Makefile.ma: Add hppa target.
15310         * mini-arch.h: Include mini-hppa.h
15311         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15312         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15313         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15314
15315 2007-06-14  Randolph Chung  <tausq@debian.org>
15316
15317         * inssel.brg: Add rules for "chained" compare-branch operations so that
15318         a single compare op can affect multiple branches.  Adjust cost for
15319         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15320         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15321         cost for some rules so that they can more easily be overridden by
15322         per-arch rules (with fixes from lupus).
15323         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15324
15325 2007-06-13  Randolph Chung  <tausq@debian.org>
15326
15327         * mini-ops.h: Reorder branch ops so that they match the order of the
15328         corresponding CEE_* ops.  The code expects them this way.
15329         Add new ops for HPPA target.
15330         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15331
15332 2007-06-13  Randolph Chung  <tausq@debian.org>
15333
15334         * mini-exceptions.c: Handle cases where the stack grows towards
15335         larger addresses.
15336         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15337
15338 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15339
15340         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15341         counter.
15342         * driver.c: explain where a non-matching corlib is found.
15343
15344 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15345
15346         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15347
15348 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15349
15350         * mini-exceptions.c: Generate a method profile leave event during
15351         an exception to ensure that the profiler gets notified.
15352
15353 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15354
15355         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15356         branch.
15357
15358         * cpu-amd64.md: Add long_and/or/xor opcodes.
15359
15360 2007-06-06  Wade Berrier  <wberrier@novell.com>
15361
15362         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15363         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15364         length of instruction shr_imm (expected 8, got 10)
15365
15366 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15367
15368         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15369
15370 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15371
15372         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15373         MonoInternalHashTable again (fixed bug in the internal hash table
15374         code).
15375
15376 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15377
15378         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15379         Have to figure out what makes it crash the SWF regression.
15380
15381 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15382
15383         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15384
15385 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15386
15387         * mini.c: optimize out the type check when storing null in a
15388         reference array.
15389
15390 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15391
15392         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15393         MonoInternalHashTable.
15394
15395 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15396
15397         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15398         signed integer methods.
15399
15400 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15401
15402         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15403         permanently since the current approach doesn't work.
15404
15405 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15406
15407         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15408         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15409
15410 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15411
15412         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15413         the sreg2==rdx case.
15414         
15415         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15416         account if it contains a rex prefix.
15417         (peephole_pass): Handle OP_FMOVE as well.
15418
15419 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15420
15421         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15422         as it causes regressions.
15423
15424 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15425
15426         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15427         static case as well.
15428
15429         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15430
15431         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15432         (mono_arch_get_this_arg_from_call): Ditto.
15433
15434         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15435
15436         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15437         invoke_impl field.
15438
15439         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15440         (mono_arch_get_this_arg_from_call): Ditto.
15441
15442         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15443         
15444         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15445         try to create optimized invoke code and use that for further invocations. 
15446         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15447
15448         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15449
15450 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15451
15452         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15453         sealed classes or methods.
15454         *devirtualization.cs: tests for the new optimization
15455
15456 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15457
15458         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15459         by the update_volatile () function.
15460
15461 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15462
15463         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15464         require it.
15465
15466         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15467
15468 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15469
15470         * mini.c: Add configure checks for header files.
15471         * mini-x86.c: Add configure checks for header files.
15472         * trace.c: Add configure checks for header files.
15473         * aot-runtime.c: Add configure checks for header files.
15474         * aot-compiler.c: Add configure checks for header files.
15475         * driver.c: Add configure checks for header files.
15476         * mini-codegen.c: Add configure checks for header files.
15477         
15478         Code is contributed under MIT/X11 license.
15479
15480 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15481
15482         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15483         icompare_imm -128 + op_iclt. Fixes #81703.
15484
15485 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15486
15487         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15488
15489 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15490
15491         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15492         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15493         so that all isinst checks now use "interface_bitmap".
15494
15495 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15496
15497         * cpu-amd64.md (jmp): Fix a warning.
15498
15499         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15500
15501         * basic.cs: Add new regression test.
15502
15503         * basic.cs: Remove test which is now in basic-long.cs.
15504
15505         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15506
15507         * basic-long.cs: Add new test.
15508         
15509 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15510
15511         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15512
15513 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15514
15515         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15516
15517         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15518         places.
15519         
15520         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15521         throwing code a bit.
15522
15523         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15524         the exception throwing code a bit.
15525
15526         * mini-x86.c (get_call_info): Allocate result from a mempool.
15527
15528 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15529
15530         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15531
15532         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15533
15534         * mini.h (MonoCompile): Add 'token_info_hash' field.
15535
15536         * mini.c: Save token->method associations during compilation so the AOT 
15537         compiler can use it.
15538         
15539         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15540         which reference generic classes and methods.
15541
15542 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15543
15544         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15545
15546         * aot-compiler.c (compile_method): Fix a typo in a comment.
15547
15548         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15549
15550         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15551         everything generic.
15552
15553         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15554
15555 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15556
15557         * mini.h (MonoCompile): Add 'args' field.
15558
15559         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15560         into cfg->args.
15561
15562         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15563
15564 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15565
15566         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15567
15568         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15569
15570         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15571         opcodes for some opcodes.
15572
15573         * mini.h *.brg *.c: Use the new opcodes.
15574
15575 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15576
15577         * mini.h: Bumped aot revision.
15578
15579         * inssel.brg: modified code generation of type checks for interfaces
15580         to use the new "MonoClass.interface_bitmap" instead of the old
15581         "MonoClass.interface_offsets".
15582
15583 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15584
15585         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15586
15587 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15588
15589         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15590         64 bit platforms.
15591
15592 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15593
15594         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15595
15596 2007-04-27  Wade Berrier  <wberrier@novell.com>
15597
15598         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15599         mini.h) to fix build.
15600
15601 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15602
15603         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15604         
15605         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15606         causes the corlib unit tests to fail.
15607
15608 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15609
15610         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15611
15612         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15613
15614         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15615         opcodes to the comparison relations.
15616
15617         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15618         opcodes to their types.
15619         
15620         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15621
15622         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15623         it in cfg->arch.cinfo.
15624
15625         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15626
15627         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15628         cfg->cil_offset_to_bb.
15629
15630 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15631
15632         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15633         created becase of initlocals.
15634
15635 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15636
15637         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15638         Sergey Tikhonov <tsv@solvo.ru>.
15639
15640 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15641
15642         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15643
15644 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15645
15646         * cpu-s390.md (break): Correct the length of break instruction.
15647
15648 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15649
15650         * mini.c: fix a couple of soft-float issues and comments.
15651
15652 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15653
15654         * trace.c (is_filenamechar): - is also a filename char.
15655
15656 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15657
15658         * mini-s390.c: Correct checking for enum type in return value processing.
15659
15660 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15661
15662         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15663         (version.h): Makefile is in the build directory.
15664
15665 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15666
15667         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15668
15669 2007-04-11  Martin Baulig  <martin@ximian.com>
15670
15671         * mini.c (can_access_member): Fix handling of generic classes;
15672         fixes #81259.
15673
15674 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15675
15676         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15677
15678 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15679
15680         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15681
15682 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15683
15684         * mini-codegen.c: make sure the right spill amount is
15685         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15686
15687 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15688
15689         * mini-ppc.c: fixes for the fp_branch_nan test.
15690
15691 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15692
15693         * basic.cs: Comment out new test which still fails on ia64.
15694
15695 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15696
15697         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15698
15699 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15700
15701         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15702
15703 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15704
15705         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15706         on 64 bit machines. Fixes part of #80738.
15707
15708         * basic.cs: Add regression test.
15709
15710 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15711
15712         * inssel.brg basic.cs: Revert previous change to fix build.
15713
15714         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15715         platforms.
15716         
15717         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15718
15719         * basic.cs: Add new regression test.
15720
15721 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15722
15723         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15724         many arguments.
15725
15726 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15727
15728         * cpu-s390x.md: Correct length of break instruction.
15729
15730 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15731
15732         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15733         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15734
15735 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15736
15737         * *.c: Begin WIN64 port.
15738         * mini.c:  Use correct register in profiler.
15739         * mini-amd64.c: No inline assembly on Win64.
15740         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15741         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15742         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15743         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15744         mono_arch_ip_from_context for Win64.
15745         
15746         Contributed under MIT/X11 license.
15747
15748 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15749
15750         * exceptions-amd64.c (seh_handler): Ditto.
15751
15752         * exceptions-x86.c (seh_handler): Fix a memory leak.
15753
15754 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
15755
15756         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
15757         mini-s390x.c: fixed peephole optimizations to deal
15758         correctly with 1 and 2 byte reload avoidance.
15759
15760 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15761
15762         * cpu-s390.md, cpu-s390x.md: update localloc length.
15763
15764 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15765
15766         * cpu-g4.md: added missing descriptions.
15767
15768 2007-03-14  Miguel de Icaza  <miguel@novell.com>
15769
15770         *  Makefile.am: Add support so the tail tests are not executed on
15771         PowerPC as that is a known limitation of the PowerPC port.
15772
15773 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15774
15775         * runmdesc.bat:  Move to msvc directory.
15776         
15777 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15778
15779         * runmdesc.bat:  Run executable that was produced by the current
15780         target and sent via an argument.
15781         
15782 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
15783
15784         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
15785         #81102.
15786
15787         * generics.2.cs: Add regression test.
15788
15789 2007-03-09  Wade berrier  <wberrier@novell.com>
15790
15791         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
15792
15793 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
15794
15795         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
15796         AOT code depends on this.
15797
15798 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15799
15800         * mini.c: more precise tracking of types in the eval stack
15801         (part of fix for bug #81044).
15802
15803 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
15804
15805         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
15806
15807         * aot-compiler.c (encode_patch): Remove an obsolete comment.
15808
15809 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
15810
15811         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
15812
15813         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
15814
15815 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
15816
15817         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
15818         a pointer on 64 bit systems. Fixes #80190.
15819
15820         * iltests.il: Add new regression test.
15821
15822 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15823
15824         * mini.c: inline a constant for Environment.IsRunningOnWindows.
15825
15826 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
15827
15828         * trace.c: Remove an erroneous alignemnt check when tracing.
15829           Fixes --trace on OSX86.
15830
15831 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15832
15833         * mini-$(arch).h: initialize SP in context for all the archs.
15834
15835 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
15836
15837         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
15838         regressions in the thread tests.
15839
15840 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
15841
15842         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
15843         - fixed implementation of LOCALLOC opcode
15844         - implemented non-un compare for floats
15845         - code cleanup
15846         - implementation of FDIV and CKFINITE opcodes
15847         - fixes for latest mono updates
15848         - additional arch opcodes
15849
15850 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15851
15852         * Makefile.am: simplify and merge rules for cross-compilation.
15853
15854 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
15855
15856         * local-propagation.c: Actually *apply* the fix for bug 80591...
15857
15858 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15859
15860         * mini-exceptions.c: backuot part of the last change
15861         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
15862
15863 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
15864         * inssel.brg: Fix bug 59286.
15865
15866
15867 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
15868
15869         * mini-exceptions.c: patch from Zoltan to correctly check for
15870         stack boundaries (using the stack register, not the frame register),
15871         fixes bugs #80724, #79717.
15872
15873 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
15874
15875         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
15876         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
15877
15878         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
15879         presence of frame pointer elimination.
15880
15881 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
15882         
15883         * mini-x86.h: NetBSD UCONTEX_REG defines.
15884
15885 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
15886
15887         * inssel-amd64.brg: Fix amd64 build.
15888
15889 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
15890
15891         * mini.h: remove extern to workaround what looks likes gcc bug 26905
15892         on amd64.
15893
15894 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
15895
15896         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
15897         ends.
15898
15899         * mini-<ARCH>.c: Use mono_is_regsize_var ().
15900
15901 2007-01-30 Mark Mason <mason@broadcom.com>
15902
15903            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
15904            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
15905            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
15906            beginning support for CEE_JMP [not quite working yet]
15907            * tramp-mips.c: LMF handling now works
15908         
15909 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
15910
15911         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
15912
15913         * mini.h (NULLIFY_INS): New macro.
15914
15915 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15916
15917         * mini.c: statistical profiler fix for windows, patch
15918         from Tor Lillqvist (tml@novell.com).
15919
15920 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
15921         * local-propagation.c: Fix bug 80591.
15922
15923 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
15924
15925         * Makefile.am: put back the --export-dynamic option as with
15926         the previous gmodule flags (thanks to Robert Jordan).
15927
15928 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
15929
15930         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
15931
15932         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
15933         simplify and speed up the local register allocator. Also rename some fields
15934         like iassign->vassign.
15935         
15936         * regalloc.c: Remove some functions which are no longer used since their
15937         inlined version is in mini-codegen.c.
15938         
15939         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
15940
15941         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
15942
15943 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
15944
15945         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
15946         narrowing. Fixes #80622.
15947
15948         * iltests.il: Add new regresssion test. 
15949
15950 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15951
15952         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
15953         debug-debugger.c, debug-debugger.h: warning fixes.
15954         * driver.c: updated copyright year and made it fit in one line.
15955
15956 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
15957
15958         * aot-runtime.c: updated to use mono-dl instead of gmodule.
15959
15960 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
15961
15962         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
15963
15964         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
15965
15966         * iltests.il: Add new test for bug #80507.
15967
15968 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15969
15970         * mini-arm.h: use soft-float also on vfp for now.
15971
15972 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15973
15974         * mini.c: fix some more soft-float issues.
15975
15976 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
15977
15978         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
15979
15980 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
15981         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
15982         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
15983         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
15984
15985 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
15986
15987         * mini-arm.c: typo fix.
15988
15989 2007-01-23  Neale Ferguson <neale@sinenomine.net>
15990
15991         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
15992
15993 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
15994
15995         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
15996         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
15997
15998         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
15999
16000         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16001
16002         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16003         
16004         * inssel.brg: Fix a warning.
16005
16006         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16007
16008         * abcremoval.c ssa.c ssapre.c: Update after this change.
16009         
16010         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16011
16012         * dominators.c (df_set): Use mono_bitset_union_fast.    
16013
16014 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16015
16016         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16017         mini-codegen.c: reduce relocations and memory usage for the cpu
16018         description.
16019
16020 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16021
16022         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16023
16024         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16025         to reduce their size.
16026
16027 2007-01-19 Mark Mason <mason@broadcom.com>
16028
16029         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16030         * mini-mips.c: more configuration macros, support long conditional branches, additional
16031         asserts, fix epilog instrumentation.
16032         * mini-mips.h: use standard stack walk
16033         * cpu-mips.md: increase size of div, rem and conditional branches
16034         
16035 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16036
16037         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16038         to cpu spec data.
16039
16040 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16041
16042         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16043         (compile_method): Ditto.
16044
16045         * aot-runtime.c (decode_klass_info): Ditto.
16046
16047         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16048         needed by the code generated by inssel.brg. Also fix a warning.
16049
16050 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16051
16052         * mini.c: deal with enums that become genericinsts by
16053         being nested in a generic class (bug #79956).
16054
16055 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16056
16057         * mini.c: match the generic definition to check for
16058         private access with generic types (bug #78431).
16059
16060 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16061
16062         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16063         to make life easier for people cross-compiling that insist on not
16064         using scratchbox.
16065
16066 2007-01-17 Mark Mason <mason@broadcom.com>
16067
16068         * inssel-long.brg: patch to deal with mips missing flags
16069         * inssel-long32-mips.brg: implement overflow checks
16070         * insset-mips.brg: implement overflow checks
16071         * mini-mips.h: implement conditional exception handling
16072         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16073           Remove unused code, minor cleanups.
16074         * exceptions-mips.c: minor cleanups
16075         * mini-ops.h: add mips conditional exception ops
16076         * cpu-mips.md: add mips conditional exception ops
16077
16078         
16079 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16080
16081         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16082         to deal with mips missing of flags.
16083
16084 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16085
16086         * exceptions-ppc.c: execute fault handlers.
16087
16088 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16089
16090         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16091
16092 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16093
16094         * mini.c: handle also floating point values in initialize_array.
16095
16096 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16097
16098         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16099         array initialization and make it conditional on the intrins option.
16100
16101 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16102
16103         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16104         relocations and put the patch info names close to the enum definition.
16105
16106 2007-01-15 Mark Mason <mason@broadcom.com>
16107
16108         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16109
16110 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16111
16112         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16113
16114 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16115
16116         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16117
16118 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16119
16120         * Makefile.am: distribute the mips sources.
16121
16122 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16123
16124         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16125         directly.
16126
16127 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16128
16129         * cpu-x86.md: back out for now as this triggers other regressions.
16130
16131 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16132
16133         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16134         to eax:edx, so ecx can't get allocated to them (bug #80489).
16135
16136 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16137
16138         * mini.c, mini-exceptions.c: enabled running fault handlers
16139         (bug #80469).
16140
16141 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16142
16143         * driver.c: If nothing fail, do not use the string "failed",
16144         because it makes it very annoying to view test result logs on the
16145         web. 
16146
16147 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16148
16149         * debug-debugger.c (mono_debugger_main): Rename "main" to
16150         "main_method" to prevent a warning.
16151
16152         Remove a warning for unused field.
16153
16154 2006-12-28  Martin Baulig  <martin@ximian.com>
16155
16156         * debug-debugger.c
16157         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16158
16159 2006-12-22  Martin Baulig  <martin@ximian.com>
16160
16161         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16162         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16163         seperate `.mdb_debug_info' section, so we can access it from the
16164         debugger even if the binary is stripped.
16165
16166         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16167         from the `.mdb_debug_info' here to prevent the linker from
16168         removing that section.
16169
16170         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16171         mdb-debug-info64.s.
16172
16173 2006-12-19  Robert Jordan  <robertj@gmx.net>
16174
16175         * mini-x86: enable the code to return small structures in
16176         registers for FreeBSD as well. Fixes bug #80278.
16177         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16178
16179 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16180
16181         * mini-x86.c: align the stack when calling the profiler
16182         function instrumenting the prolog (on OSX).
16183
16184 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16185
16186         * mini.c: emit a break opcode where Debugger.Break () is called.
16187
16188 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16189
16190         * mini.c (mono_method_to_ir): Provide useful information on this
16191         assert, to prevent others from debugging like I did.
16192
16193 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16194
16195         * mini.c: enable code which was incorrectly commented
16196         (bug #80235).
16197
16198 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16199
16200         * mini-x86.c: enable on OSX, too, the code to return small
16201         structures in registers.
16202
16203 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16204
16205         * mini-x86.c: remove the use of the dynamic code manager here, too.
16206
16207 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16208
16209         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16210         mono_debugger_create_notification_function() to use
16211         mono_global_codeman_reserve () instead of a dynamic code manager.
16212
16213 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16214
16215         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16216         ves_array_element_address() jit icall and use a generated
16217         managed method instead (which is about 4 times faster for a rank 3
16218         array access).
16219
16220 2006-11-29  Mark Mason  <mason@broadcom.com>
16221
16222         * basic-calls.cs: additional tests for passing
16223         structures as function arguments.
16224
16225 2006-11-29  Mark Mason  <mason@broadcom.com>
16226
16227         * mini-mips.h: disable custom exception handling
16228         * mini-mips.c: throw/rethrow should use jalr to call
16229         exception stubs.  Fixed bug with passing structures
16230         by value. More support for tracing floating point
16231         functions.
16232
16233 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16234
16235         * mini.c: fixed typo in the soft-float ldind.r4 handling
16236         (bug #80086).
16237
16238 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16239
16240         * mini.c, mini.h, driver.c: added --runtime command line
16241         option to select a different runtime than the autodetected one.
16242         * jit.h: added API for embedders to initialize with a specific
16243         runtime version.
16244
16245 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16246
16247         * mini.c: handle also boxing of r4 values (bug #80024).
16248
16249 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16250
16251         * mini-ppc.c: force indirect calls until we reserve
16252         enough address space for all the generated code.
16253
16254 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16255
16256         * exceptions-arm.c: workaround bugs in the libc definition
16257         of struct ucontext.
16258
16259 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16260
16261         * inssel.brg: fixes from me and Mark Mason.
16262
16263 2006-11-23  Dick Porter  <dick@ximian.com>
16264
16265         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16266         semaphore display now we've fixed the initial value
16267
16268 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16269
16270         * inssel.brg: partially revert the last change to fix the build.
16271
16272 2006-11-21  Mark Mason  <mason@broadcom.com>
16273
16274         * inssel.brg: Add and use compare-and-branch macros to support
16275         architectures that do not have condition code registers (ie. MIPS).
16276         * *-mips.{c,brg,md}: Fix copyright statements
16277
16278 2006-11-20  Mark Mason  <mason@broadcom.com>
16279
16280         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16281         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16282         * mini.h: Added declaration for mono_print_ins()
16283         * mini-codegen.c: added ins_spec initializer for MIPS
16284         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16285         vreg to be virtual and hreg to be non-virtual.
16286         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16287         is not yet working/implemented correctly.
16288         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16289         non-static, fixup calls to print_ins() from other parts in the file.
16290
16291 2006-11-20  Mark Mason  <mason@broadcom.com>
16292
16293         * basic-calls.cs: added tests for passing structures as arguments
16294         to calls.
16295
16296 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16297
16298         * inssel-long32.brg: optimize signed division by power of two.
16299
16300 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16301
16302         * mini-arm.c: added support for interworking with thumb code
16303         (mono must be still be built using the ARM instruction encoding).
16304
16305 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16306
16307         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16308         verifier has different rules for it.   Fixes a few verifier issues
16309         in the test suite.
16310
16311         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16312         at the end, so people know what happened.
16313
16314 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16315
16316         * brach-opts.c: in optimize_exception_target() make sure we
16317         are in a catch clause (fixes bug #79871).
16318
16319 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16320
16321         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16322         more soft-float support fixes.
16323
16324 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16325
16326         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16327         that are passed half on the stack and half in registers.
16328
16329 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16330
16331         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16332         more mips integration work from Mark E Mason 
16333         <mark.e.mason@broadcom.com>.
16334
16335 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16336
16337         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16338         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16339         tramp-mips.c: added sources for the mips port, not
16340         integrated in the build yet. Contributed by
16341         Mark E Mason <mark.e.mason@broadcom.com>.
16342
16343 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16344
16345         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16346
16347 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16348
16349         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16350         put the soft-float rules in its own file since it seems to
16351         break s390 compilation.
16352
16353 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16354
16355         * mini-arm.c: fixed wrnings.
16356
16357 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16358
16359         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16360         inssel-arm.brg: ARM support for soft-float.
16361
16362 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16363
16364         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16365         loads and stores of 32 bit fp values.
16366
16367 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16368
16369         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16370
16371         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16372         works. Fixes #79852 and #79463.
16373
16374 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16375
16376         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16377         more soft-float support WIP and fixes.
16378
16379 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16380
16381         * mini-arm.c: some VFP updates.
16382
16383 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16384
16385         * mini-exceptions.c: 0 is a valid local var offset in some
16386         architectures, don't assert (bug #78508).
16387
16388 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16389
16390         * exceptions-arm.c: fixed off by one error in stack walk code.
16391
16392 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16393
16394         * mini.h, mini.c: more precise tracking of type load exceptions.
16395
16396 2006-11-03  Robert Jordan  <robertj@gmx.net>
16397
16398         * Makefile.am: [WIN32] Add monow.exe target.
16399         * driver.c: [WIN32] Don't detach the console when debugging.
16400         Fixes bug #79797.
16401         
16402 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16403
16404         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16405
16406 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16407
16408         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16409
16410         * driver.c (mini_regression): Fix --regression with AOT.
16411
16412         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16413
16414 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16415
16416         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16417
16418         * mini-sparc.h: Don't use sigaction on sparc/linux.
16419
16420         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16421
16422         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16423
16424         * mini-exceptions.c: Add proper include files for getpid ().
16425
16426 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16427
16428         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16429         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16430         method.
16431
16432         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16433         name cache to reduce its size.
16434
16435         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16436
16437 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16438
16439         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16440         the mono_lmf TLS variable.
16441
16442         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16443         trampoline lmf frames.  
16444
16445         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16446
16447 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16448
16449         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16450         the mono_lmf TLS variable.
16451
16452         * mini-exceptions.c: Access the LMF structure through accessors.
16453
16454         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16455         variable instead of in jit_tls->lmf.
16456
16457         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16458         
16459         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16460         trampoline lmf frames.
16461
16462         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16463
16464 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16465
16466        * mini.c trace.c mini-x86.c: Revert these too.
16467         
16468        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16469        signature change.
16470
16471 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16472
16473         * genmdesc.c: removed now dead code.
16474
16475 2006-10-09  Robert Jordan <robertj@gmx.net>
16476
16477         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16478
16479 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16480
16481         * mini.h: do not leave gaps in the opcode values.
16482
16483 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16484
16485         * jit-icalls.h: flag functions as internal here, too.
16486
16487 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16488
16489         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16490         functions with the internal attribute.
16491
16492 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16493
16494         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16495
16496 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16497
16498         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16499         for soft-float.
16500
16501 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16502
16503         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16504         tail calls as on other platforms.
16505
16506         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16507
16508         * iltests.il: Add a few tailcall tests.
16509
16510 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16511
16512         * driver.c: fix loop for old compilers (bug #79521).
16513
16514 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16515
16516         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16517
16518         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16519
16520         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16521         metadata without any code.
16522
16523         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16524         more precise debugging information using gdb.
16525
16526 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16527
16528         * inssel-ia64.brg: Make the helper methods static.
16529
16530 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16531
16532         * inssel-x86.brg: make the helper methods static.
16533
16534 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16535
16536         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16537
16538 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16539
16540         * mini.c: updates for monoburg changes.
16541         * inssel.brg: make a few helper functions static as they should.
16542
16543 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16544
16545         * Makefile.am: Move mini-codegen.c to common_sources.
16546
16547 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16548
16549         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16550         instructions.
16551         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16552         mini-ppc.h: port to use the common local register allocator.
16553
16554 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16555
16556         * mini.h: Remove the comment too then.
16557
16558 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16559
16560         * mini.h: put back backend.data which is to be used shortly and
16561         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16562         pointers on 4 byte boundaries it'd have much bigger issues running
16563         and you can ifdef it out anyway.
16564
16565 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16566
16567         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16568         MonoInst size by 4 bytes on 64 bit machines.
16569
16570 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16571
16572         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16573         replacement with more meaningful field names. Arch maintainers, please
16574         check the assigned names are good enough for your arch.
16575
16576 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16577
16578         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16579         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16580
16581 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16582
16583         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16584         relocations and memory requirements, put the optimization flags
16585         definitions in their own file.
16586
16587 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16588
16589         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16590
16591         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16592
16593 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16594
16595         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16596
16597 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16598
16599         * inssel.brg: use the correct function to get the size of an item
16600         in an array, given an element class.
16601         * aot-compiler.c: do not access class->class_size directly.
16602
16603 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16604
16605         * mini.h, debug-mini.c: added a debugging function to print
16606         info about local variables and arguments in a jitted method.
16607
16608 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16609
16610         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16611
16612         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16613
16614 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16615
16616         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16617         inner and outer loops when passing vtypes.
16618
16619 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16620
16621         * mini-ppc.c: take into account the cpu errata for cache flushing
16622         which caused some random errors (bug #79381).
16623
16624 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16625
16626         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16627         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16628
16629 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16630
16631         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16632         loaded.
16633
16634         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16635         freebsd ports tree.
16636
16637         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16638         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16639
16640         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16641         displacement.
16642
16643 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16644
16645         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16646
16647 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16648
16649         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16650         macro does not have to be changed during debugging.
16651
16652         * 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>.
16653
16654         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16655
16656         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16657         
16658         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16659         MONO_ARCH_NO_EMULATE_MUL is defined.
16660
16661         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16662
16663         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16664
16665         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16666
16667         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16668         
16669 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16670
16671         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16672         stuff to mini-exceptions.c where it is used.
16673
16674         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16675         setup code, the real one is in mini-exceptions.c.
16676
16677         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16678         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16679         some changes from the freebsd ports tree.
16680
16681         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16682         constants.
16683         
16684         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16685
16686 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16687
16688         * mini.c: on Linux, check for /proc to be mounted
16689         (bug# 79351, novell bug#201204).
16690
16691 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16692
16693         * mini.c: handle cases where pthread_attr_getstack() behaves
16694         incorrectly (bug #78096).
16695
16696 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16697
16698         * mini-arm.c: support larger stack frames (bug #79272).
16699
16700 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16701
16702         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16703
16704         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16705         tokens.
16706
16707         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16708         mono_class_from_name () to find a class from its name.
16709
16710         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16711
16712 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16713
16714         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16715
16716 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16717
16718         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16719
16720 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16721
16722         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16723         callinfo->trampoline.
16724
16725         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16726         fixes #79271.
16727         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16728         future.
16729
16730 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16731
16732         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16733
16734 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16735
16736         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16737         stats.method_trampolines, it is already done by the generic trampoline code.
16738
16739         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16740         
16741 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16742
16743         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16744
16745         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16746
16747         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16748
16749         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16750         
16751         * mini.c (print_jit_stats): Print new stats.
16752
16753         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16754
16755 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16756
16757         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
16758         Address on two dimensional arrays. Fixes #78729.
16759
16760         * mini.h (MonoCompile): Add a 'skip_visibility' field.
16761
16762         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
16763         a method.
16764
16765         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
16766
16767         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
16768         #79130.
16769         
16770         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
16771         a race condition.
16772         (mini_get_ldelema_ins): Ditto.
16773
16774 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
16775
16776         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
16777         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
16778         Fixes #79213.
16779
16780 2006-08-29 Neale Ferguson <neale@sinenomine.net>
16781
16782         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
16783         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
16784
16785         * exceptions-s390x.c: Cosmetic change.
16786
16787         * tramp-s390.c: Fix warning.
16788
16789         * cpu-s390.md: Correct length of mul_imm.
16790
16791 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
16792
16793         * aot-compiler.c: added binary writer with ELF backend
16794         implementation (only on Linux/x86 for now).
16795
16796 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16797
16798         * Makefile.am: Don't run net 2.0 AOT tests.
16799
16800         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
16801         (mono_compile_assembly): Skip net 2.0 assemblies as well.
16802
16803         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
16804
16805 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16806
16807         * aot-compiler.c: simplified and refactored the asm-writing code
16808         to allow different backends.
16809
16810 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16811
16812         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
16813
16814         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
16815         little. Share patches of type TYPE_FROM_HANDLE as well.
16816
16817         * mini.c (mono_patch_info_equal): New helper function.
16818         (mono_patch_info_hash): Ditto.
16819
16820         * aot-compiler.c (emit_method_code): Fix s390 build.
16821
16822         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
16823         is not handled because it is stored as a flag and not as a type ctor. Fixes
16824         #79016.
16825
16826 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
16827
16828         * aot-compiler.c: Fix computation of GOT slot statistics.
16829         
16830         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
16831         Also remove support for not PIC AOT.
16832
16833         * mini.h: Bump AOT file format version.
16834
16835         * objects.cs: Add a test for #78990.
16836
16837         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
16838         (peter.dettman@iinet.net.au). Fixes #79087.
16839
16840         * basic-long.cs: Add a test for the above.
16841
16842 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
16843
16844         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
16845         
16846         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
16847         code somewhat.
16848
16849 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
16850
16851         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
16852         exceptions.
16853
16854 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
16855
16856         * mini.c: Don't verify COM proxy invoke calls
16857         
16858
16859 2006-08-10  Dick Porter  <dick@ximian.com>
16860
16861         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
16862         which process is holding semaphores locked.
16863
16864 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
16865
16866         * mini-ia64.c mini-amd64.c: Fix #79027.
16867
16868         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
16869
16870         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
16871
16872         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
16873         implicit arguments in a vararg call. Fixes #79027.
16874
16875 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
16876
16877         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
16878         (mono_get_array_new_va_signature): Ditto.
16879
16880 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
16881
16882         * aot-runtime.c: Call init_plt lazily.
16883
16884         * inssel-long.brg: Fix unsigned long->int conversion.
16885
16886         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
16887
16888         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
16889         that most data is now in the .rss/.data section.
16890
16891 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
16892
16893         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
16894
16895         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
16896
16897         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
16898
16899         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
16900
16901         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
16902         virtual call. Fixes #79010.
16903
16904         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
16905         and use the result as the this argument in the real call.
16906
16907         * generics.2.cs: Add a new test for #79010.
16908         
16909 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
16910
16911         * mini-x86.c: Fix a warning.
16912
16913         * aot-compiler.c: Add a bunch of statistics.
16914
16915         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
16916
16917 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
16918
16919         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
16920
16921 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
16922
16923         * 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>.
16924
16925 2006-07-13  Miguel de Icaza  <miguel@novell.com>
16926
16927         * mini.c (mono_method_to_ir): Obtain the original method in the
16928         CIL stream and use this to perform validation.
16929
16930         Fixed: #78816
16931
16932 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
16933
16934         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
16935         (mono_arch_call_opcode): Ditto.
16936
16937         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
16938         #78826.
16939
16940         * mini.c (mono_patch_info_dup_mp): New helper function.
16941         
16942         * aot-compiler.c (compile_method): Fix some of the memory allocated during
16943         compilation. Fixes #78827.
16944
16945 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
16946
16947         * declsec.c: Use original security informations for
16948           MONO_WRAPPER_MANAGED_TO_MANAGED.
16949
16950 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
16951
16952         * mini.c: Allow Com Interop methods/classes and
16953         don't verify COM wrapper calls
16954         
16955
16956 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
16957
16958         * inssel-long32.brg: Fix long->i4 checked conversion.
16959
16960         * exceptions.cs: Add a test for the above.
16961
16962 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
16963
16964         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
16965
16966         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
16967         leaks.
16968
16969         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
16970         #78775.
16971
16972 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
16973
16974         * mini.c: Fix solaris/x86 exception handling.
16975
16976         * Makefile.am: Get rid of $(ICU_LIBS).
16977
16978 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
16979
16980         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
16981         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
16982         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
16983
16984         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
16985
16986         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
16987         this function causes a SIGSEGV.
16988
16989 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
16990
16991         * mini.c: Remove unused solaris/x86 includes.
16992
16993 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
16994
16995         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
16996
16997 2006-06-20  Jb Evain  <jbevain@gmail.com>
16998
16999         * cpu-g4.md: fix max length of start_handler instruction.
17000
17001 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17002         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17003
17004 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17005         * ssa.c: Fixed bug 78653 for SSA based deadce.
17006         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17007         MonoInst.flags, used in SSA based deadce.
17008         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17009         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17010
17011 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17012
17013         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17014         it can end up using non executable memory on ppc64 systems
17015         running ppc32 userspace (fix from Johannes Berg).
17016
17017 2006-06-14  Dick Porter  <dick@ximian.com>
17018
17019         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17020         4.1.1
17021
17022 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17023         * mini.c: Made so that inline is locally disabled if it would
17024         trigger a .cctor, because too many apps depend on this behavior
17025         (which seems to be also the one of the MS CLR).
17026
17027 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17028
17029         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17030         No idea why this worked before.
17031
17032         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17033         which branch to outer exception clauses since they could skip the
17034         inner finally clauses. Fixes #78633.
17035
17036         * exceptions.cs: Add a test for the above.
17037
17038         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17039         Fixes #78629.
17040
17041         * iltests.il: Add a test for the above.
17042
17043 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17044
17045         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17046         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17047
17048         * iltests.il: Add a test for the above.
17049
17050 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17051
17052         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17053         
17054         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17055         methods as instrinsics.
17056
17057 2006-06-09  Wade Berrier <wberrier@novell.com>
17058
17059         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17060         (simple-cee-ops.h ssapre-mini-ops.h)
17061
17062 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17063
17064         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17065         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17066         instruction).
17067         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17068         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17069
17070 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17071
17072         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17073
17074 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17075
17076         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17077         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17078         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17079         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17080         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17081         of opcodes, so that bug 78549 should not happen again.
17082         * ssapre.c: Updated to use the renamed files.
17083
17084 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17085
17086         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17087         in OP_ATOMIC_EXCHANGE_I4.
17088
17089 2006-06-07  Wade Berrier <wberrier@novell.com>
17090
17091         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17092         in mono_debugger_create_notification_function)
17093
17094 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17095
17096         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17097         
17098         * mini.c (type_from_stack_type): Disable some changes which do not
17099         seem to work.
17100
17101         * driver.c: Reenable opts.
17102
17103         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17104         of the evaluation stack.
17105         
17106         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17107         evaluation stack trace at entry to the bblock.
17108
17109         * mini.c (merge_stacks): New function to perform verification of stack merges.
17110         Turned off by default.
17111
17112         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17113         STACK_MP.
17114         
17115 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17116
17117         * local-propagation.c: Fixed bug 78549.
17118
17119 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17120
17121         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17122
17123 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17124
17125         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17126         tramp-arm.c, tramp-ia64.c
17127         (mono_debugger_create_notification_function): Update signature to
17128         new signature and use new protocol for creating the notification
17129         function.  
17130
17131         Should fix the build.
17132
17133 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17134
17135         * exceptions-ppc.c (mono_jit_walk_stack)
17136         (ves_icall_get_frame_info): Fix the build
17137
17138 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17139
17140         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17141
17142 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17143
17144         * il2tests.2.il: New file for generics CIL tests.  Add test for
17145         #78019.
17146         * Makefile.am: Update.
17147
17148         Fix #78019
17149         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17150         to nullable types.
17151
17152 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17153
17154         * aliasing.c: Fixed bug 78311.
17155
17156 2006-05-29  Martin Baulig  <martin@ximian.com>
17157
17158         * mini-exceptions.c (mono_find_jit_info): When computing the
17159         native offset, check whether we're actually inside the method's
17160         code; call mono_debug_print_stack_frame() to format the frame.
17161         (ves_icall_System_Exception_get_trace): Call
17162         mono_debug_print_stack_frame() to format the stack frame.
17163         (ves_icall_get_trace): Update to the new debugging API.
17164         (mono_jit_walk_stack_from_ctx): Likewise.
17165         (ves_icall_get_frame_info): Likewise.
17166
17167         * mini.c (get_method_from_ip): Use the new debugging API.
17168         (mono_print_method_from_ip): Likewise.
17169
17170         * exceptions-ppc.c
17171         (mono_jit_walk_stack): Use the new debugging API.
17172         (ves_icall_get_frame_info): Likewise.   
17173
17174 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17175
17176         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17177
17178 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17179
17180         * mini.c: Added "limitator" to inline for debugging.
17181
17182 2006-05-24  Martin Baulig  <martin@ximian.com>
17183
17184         * debug-debugger.c (mono_debugger_init): Create a private,
17185         malloc()-based code manager for the notification function and
17186         intentionally leak it on exit.  This fixes the crash-on-exit race
17187         condition.
17188
17189         * tramp-amd64.c
17190         (mono_debugger_create_notification_function): Added
17191         `MonoCodeManager *' argument.
17192
17193         * tramp-x86.c
17194         (mono_debugger_create_notification_function): Added
17195         `MonoCodeManager *' argument.
17196
17197 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17198
17199         * aliasing.c: Fixed 64 bit issue.
17200         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17201         default since all known bugs are fixed (one more time!).
17202
17203 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17204
17205         * mini.c: write barrier support.
17206
17207 2006-05-23  Martin Baulig  <martin@ximian.com>
17208
17209         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17210         check at the top of the file.
17211
17212 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17213
17214         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17215         reverting changes without reason and without changelog entries.
17216
17217 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17218
17219         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17220         to a few opcodes. Fixes #78439.
17221
17222         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17223         consistency with other archs.
17224
17225         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17226
17227 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17228
17229         * debug-debugger.c: fix the build.
17230
17231 2006-05-17  Martin Baulig  <martin@ximian.com>
17232
17233         * debug-debugger.c
17234         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17235         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17236         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17237         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17238
17239 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17240
17241         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17242
17243 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17244
17245         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17246         MONO_TYPE_GENERICINST.
17247         
17248         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17249         MONO_TYPE_GENERICINST.
17250
17251 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17252
17253         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17254         #78325.
17255
17256 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17257
17258         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17259         mempool.
17260         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17261
17262 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17263
17264         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17265         mono_trace_cleanup ().
17266
17267         * iltests.il: Fix problem with the newly added test.
17268
17269         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17270         due to register constraints, free up the previous hreg. Fixes #78314.
17271
17272         * iltests.il: Add new test for #78314.  
17273
17274         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17275         Interlocked.Add. Fixes #78312.
17276
17277         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17278         
17279 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17280
17281         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17282
17283 2006-05-05  Martin Baulig  <martin@ximian.com>
17284
17285         * debug-mini.c (mono_debug_open_block): New method.
17286
17287         * mini-amd64.c
17288         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17289         the beginning of each basic block.
17290
17291         * mini-x86.c
17292         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17293         the beginning of each basic block.
17294
17295 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17296
17297         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17298         default until I understand why they break the build on amd64.
17299
17300 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17301
17302         * mini.c (mini_cleanup): Call mono_cleanup ().
17303
17304         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17305         errors.
17306
17307 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17308
17309         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17310         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17311         default since all known bugs are fixed, and I cannot reproduce bug
17312         77944... I'm asking Matt Hargett to test again after this commit.
17313
17314 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17315
17316         * mini-codegen.c: Fixed typo that thrashed inline.
17317
17318 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17319
17320         * dominators.c (compute_dominators): Avoid using a worklist since
17321         it is not correct in some cases. Instead, iterate over all bblocks as
17322         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17323
17324 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17325
17326         * mini.c (mono_jit_compile_method_inner): Use
17327         mono_prepare_exception_from_error that resets the value
17328         internally.
17329
17330 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17331
17332         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17333         
17334 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17335
17336         * aliasing.c: Fixed bug 78210.
17337
17338 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17339
17340         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17341         default until all their problems (or the ones they trigger) are fixed.
17342
17343 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17344
17345         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17346         
17347         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17348         as loaded only after resolving patches since that could invoke the same method.
17349
17350         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17351
17352         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17353         functions.
17354
17355         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17356         AOT loader.
17357
17358         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17359         stack.
17360
17361         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17362         made from AOT code through the PLT table.
17363
17364         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17365         holding the plt offset when a call is made to the aot plt trampoline.
17366         
17367 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17368
17369         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17370         amd64 AOT support.
17371
17372         * Makefile.am (common_sources): Fix build breakage.
17373
17374         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17375         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17376         intra-assembly calls if possible.
17377         
17378         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17379
17380         * mini-trampolines.c: Handle PLT entries.
17381
17382         * mini.c: Avoid creating a GOT var for calls.
17383
17384         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17385         from mscorlib code.
17386
17387         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17388         from mscorlib code.
17389
17390         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17391         AOT code.       
17392
17393         * mini.h: Bump AOT file format version.
17394         
17395         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17396         covers more cases.
17397
17398 2006-04-25  Martin Baulig  <martin@ximian.com>
17399
17400         * driver.c: Disable copyprop, consprop and inline when running
17401         inside the debugger.
17402
17403 2006-04-25  Martin Baulig  <martin@ximian.com>
17404
17405         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17406         with `get_current_thread' and added `detach'.
17407         (MonoDebuggerMetadataInfo): Added `thread_size',
17408         `thread_tid_offset', `thread_stack_ptr_offset' and
17409         `thread_end_stack_offset'.
17410
17411 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17412
17413         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17414         aot-runtime.c.
17415
17416         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17417         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17418
17419         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17420
17421         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17422
17423         * aot.c: Add support for ADJUSTED_IID.  
17424
17425 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17426
17427         * aot.c (emit_method_order): Don't align method_order_end.
17428
17429         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17430         the interface ID changes.
17431
17432 2006-04-21  Dick Porter  <dick@ximian.com>
17433
17434         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17435         cleaning up a thread.  Fixes the new part of bug 77470.
17436
17437 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17438
17439         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17440         to managed wrapper.
17441                      
17442 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17443
17444         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17445         
17446         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17447         SIGSEGV. Fixes #78072.
17448
17449         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17450         unregister our SIGABRT handler.
17451
17452 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17453
17454         * mini.c: Disabled inline where it can alter the call stack in a
17455         way visible from managed code.
17456         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17457         default.
17458
17459 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17460
17461         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17462         on other platforms. Fixes #78089.
17463
17464 2006-04-13  Martin Baulig  <martin@ximian.com>
17465
17466         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17467         determine whether we're inside the debugger.
17468
17469         * debug-debugger.h
17470         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17471
17472 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17473
17474         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17475         handler clauses. Fixes #78024.
17476
17477         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17478         in the CALL_MEMBASE opcodes. Fixes #78088.
17479         (mono_arch_get_vcall_slot_addr): Ditto.
17480
17481 2006-04-10  Martin Baulig  <martin@ximian.com>
17482
17483         * debug-debugger.c: The thread handling code has now been moved
17484         into ../metadata/threads.c.
17485
17486 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17487
17488         * driver.c (mono_main): Fix --with-gc=none build.
17489
17490         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17491         (mono_spillvar_offset_float): Ditto.
17492         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17493         hreg, not when its !global, since on ia64, there is a third category: stacked
17494         registers.      
17495
17496 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17497
17498         * mini.c: set MonoInst->klass for load field address and a few other
17499         places.
17500
17501 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17502
17503         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17504
17505 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17506
17507         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17508         the branch opt changes.
17509
17510 2006-04-06  Dick Porter  <dick@ximian.com>
17511
17512         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17513         
17514         * wapihandles.c (mini_wapi_seminfo): 
17515         * driver.c (mono_main): Add semaphore info option
17516
17517 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17518
17519         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17520         branch optimization changes. Fixes #78009.
17521
17522 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17523
17524         * mini.c: ignore accessibility of methods in managed->native wrappers.
17525
17526 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17527
17528         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17529         
17530         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17531
17532 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17533
17534         * mini.c: Modify the branch optimizations to preserve the invariant that
17535         the entries inside the in_bb and out_bb arrays are unique.
17536         (mono_unlink_bblock): Avoid creation of new arrays.
17537
17538 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17539
17540         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17541         change (#77992).
17542
17543 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17544
17545         * mini.c (optimize_branches): Remove the "optimizations" in
17546         the cbranch1/cbranch2 -> branch cases which were causing several
17547         problems in the past. Fixes #77986.
17548
17549 2006-03-31  Chris Toshok  <toshok@ximian.com>
17550
17551         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17552         default optimizations :(
17553
17554 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17555
17556         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17557         branch.
17558
17559 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17560
17561         * local-propagation.c: Added comments to structs and removed
17562         "Mono" prefixes from local tree mover types.
17563
17564 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17565
17566         * Makefile.am (arch_sources): Define this for each architecture so 
17567         libmono_la_SOURCES is defined in one place.
17568
17569 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17570
17571         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17572         from handles/.
17573
17574 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17575
17576         * driver.c: print the GC name supplied by configure.
17577
17578 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17579
17580         * local-propagation.c: Added tree mover, and moved here all the
17581         local propagation code from mini.c
17582         * mini.c: Added support for treeprop, and moved all the local
17583         propagation code to local-propagation.c
17584         * mini.h: Added support for treeprop
17585         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17586         treeprop, inline and deadce by default
17587         * Makefile.am: Added local-propagation.c
17588
17589 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17590
17591         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17592
17593 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17594
17595         * debug-debugger.c: make it compile without the Boehm GC.
17596
17597 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17598
17599         * mini.c: fixed issue with mismatch when an icall is registered
17600         with multiple names but same address.
17601
17602 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17603
17604         * declsec.c, mini-exceptions.c: use write barrier to set reference
17605         fields of managed objects.
17606
17607 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17608
17609         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17610         (can_access_internals): Fix a warning.
17611
17612         * mini.c (print_method_from_ip): Rename this to 
17613         mono_print_method_from_ip so it gets exported.
17614
17615         * trace.c: Deal with strings inside StringBuilder's containing garbage
17616         and fix memory leaks. Fixes #77848.
17617
17618 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17619
17620         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17621         fixes #77787.
17622
17623 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17624         
17625         * mini-s390.c: Remove OP_X86_TEST_NULL.
17626
17627 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17628
17629         * mini.c: use the correct GetHashCode() for the moving collector.
17630
17631 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17632
17633         * liveness.c: Regalloc spill cost tuning.
17634
17635 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17636         
17637         * mini-s390x.h: Correct S390_LONG macro.
17638
17639         * mini-s390x.c: Cleanup unused code.
17640
17641 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17642
17643         * jit-icalls.h: New file.
17644
17645         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17646         icalls and include that instead of including jit-icalls.c.
17647
17648         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17649         OP_X86 opcodes.
17650
17651 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17652
17653         * mini.c: when checking for member accessibility, also check for
17654         friend assemblies and for explicit interface implementations.
17655
17656 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17657
17658         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17659
17660         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17661
17662         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17663         common cases are done first.    
17664
17665         * mini-ops.h: Only define platform specific opcodes on the given platform.
17666
17667         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17668         branch.
17669         
17670 2006-03-14  Martin Baulig  <martin@ximian.com>
17671
17672         Revert Paolo's change from r57348:
17673
17674         * mini.h: don't use gboolean for bitfields.
17675         * mini.c: verifier changes for fields and methods accessibility.
17676
17677 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17678
17679         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17680
17681         * mini-s390x.c: Fix conv_r_un.
17682
17683         * cpu-s390, cpu-s390x.md: Fix lengths.
17684
17685 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17686
17687         * mini.c: nested types have access to all the nesting
17688         levels, not just the enclosing types.
17689
17690 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17691
17692         * mini.c: added a few more verification checks.
17693
17694 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17695
17696         * liveness.c: Merge optimizations from the linear-il branch.
17697
17698 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17699
17700         * mini-ia64.c (emit_call): Add a comment.
17701
17702         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17703
17704         * tramp-ia64.c: Fix some warnings.
17705
17706 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17707
17708         * mini.h: don't use gboolean for bitfields.
17709         * mini.c: verifier changes for fields and methods accessibility.
17710
17711 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17712
17713         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17714         lazy icall wrapper changes.
17715
17716         * dominators.c: Replace all the dominator algorithms with faster
17717         ones from the linear-il branch.
17718
17719         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17720         the mempool.
17721
17722         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17723         common cases are done first.
17724
17725         * mini-amd64.c: Fix some warnings.
17726
17727         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17728         from the mempool.
17729
17730         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17731         added code.
17732
17733         * mini.h: Add a missing prototype.
17734
17735 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17736
17737         * mini.c: Compile icall wrappers lazily.
17738
17739         * mini-codegen.c: Use printf instead of g_print since its much faster.
17740
17741         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17742         function.
17743
17744         * mini.c (optimize_branches): Cache the negative result from 
17745         remove_block_if_useless ().
17746
17747         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17748         Also fix some bblock linking issues.
17749
17750         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17751         assembly files.
17752
17753         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
17754
17755         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
17756         accessed fields first, for better cache behavior.
17757         
17758 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
17759
17760         * mini.c: speedup IList<T> array accesses.
17761
17762 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17763
17764         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
17765         inline_costs counter. Fixes #77190.
17766
17767 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
17768
17769         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
17770         trace messages. Fixes #77706.
17771
17772 2006-03-04  Martin Baulig  <martin@ximian.com>
17773
17774         * tramp-amd64.c, tramp-x86.c
17775         (mono_debugger_create_notification_function): Use
17776         mono_global_codeman_reserve() to allocate a buffer at runtime and
17777         return it.
17778
17779         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
17780
17781         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
17782         notification function at runtime and then call `initialize' in the
17783         `MONO_DEBUGGER__debugger_info' vtable.
17784
17785 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
17786
17787         * iltests.il: Fix a visibility problem.
17788
17789 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17790
17791         * driver.c, mini.c: add hooks for the counters API.
17792
17793 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17794
17795         * driver.c: show disabled options.
17796
17797 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17798
17799         * linear-scan.c: always use cost-driven selection.
17800
17801 2006-02-28  Raja R Harinath  <rharinath@novell.com>
17802
17803         * jit-icalls.c (helper_compile_generic_method): Revert change from
17804         2006-02-24.
17805
17806 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
17807
17808         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
17809
17810 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
17811
17812         * inssel.brg: style fixes, mostly to force the updated monoburg
17813         to run for people using svn.
17814
17815 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
17816
17817         * mini.c: match monoburg changes.
17818
17819 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17820
17821         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
17822         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
17823         declaration in the header file.
17824
17825 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17826
17827         * helpers.c: reduce relocations and mem usage.
17828
17829 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17830
17831         * mini.h, mini-codegen.c: disable logging features if
17832         requested by configure.
17833
17834 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
17835
17836         * mini.c: tiny verifier changes.
17837
17838 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17839
17840         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
17841         cpu-pentium.md: stack alignment changes for osx/x86,
17842         partially from Geoff Norton <gnorton@customerdna.com>.
17843
17844 2006-02-24  Raja R Harinath  <harinath@gmail.com>
17845
17846         * jit-icalls.c (helper_compile_generic_method): Update to changes
17847         in metadata/class.c.
17848
17849 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
17850         
17851         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
17852         
17853         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
17854         interface calls with large offsets.
17855
17856 2006-02-23  Raja R Harinath  <rharinath@novell.com>
17857
17858         * jit-icalls.c (helper_compile_generic_method): Document the
17859         special-case we depend on so that we can inflate the method twice
17860         with the same context with no bad side-effects.
17861
17862 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
17863
17864         * mini-x86.c, mini-amd64.c: fix for case when xen support
17865         is disabled.
17866
17867 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17868
17869         * mini-x86.c, mini-amd64.c: generate code to access tls items
17870         in a faster way for Xen systems.
17871
17872 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17873
17874         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
17875         updates and compilation fixes for the OSX/x86 port, mostly from
17876         Geoff Norton <gnorton@customerdna.com>.
17877
17878 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
17879
17880         * inssel.brg: faster interface call implementation
17881         to sync with the interface_offsets MonoVTable changes.
17882
17883 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17884
17885         * mini.c: more verification checks.
17886
17887 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
17888
17889         * mini.c: added a few more verification checks.
17890
17891 2006-02-17      Neale Ferguson <neale@sinenomine.net>
17892
17893         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
17894         facility on the processor and use it if available.
17895
17896 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17897
17898         * driver.c, aot.c, mini.c: throw exception if the IL code is
17899         invalid or unverifiable.
17900
17901 2006-02-17  Raja R Harinath  <rharinath@novell.com>
17902
17903         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
17904         m.StructField.
17905
17906 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
17907
17908         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
17909
17910 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17911
17912         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
17913         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
17914         handling of instantiated generic valuetypes.
17915
17916 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
17917
17918         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
17919         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
17920         instead.
17921
17922         * generics.2.cs: Revert the nullable reftypes tests.
17923
17924 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
17925
17926         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
17927         using __builtin_frame_address (1) as it doesn't work in the presence
17928         of optimizations. Hopefully fixes #77273.
17929
17930         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
17931         -> generics.cs change as it doesn't work with some automake versions.
17932
17933 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17934
17935         * mini.c: handle systems that sue a different way to
17936         retrieve the stack address of the current thread.
17937
17938 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
17939
17940         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
17941         it specially in the makefile.
17942
17943         * generics.2.cs: Add tests for nullable reference types.
17944
17945 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17946
17947         * mini.c: always handle the case when mono_jit_init()
17948         is called in a thread different from the main thread,
17949         confusing libgc (bug #77309).
17950
17951 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
17952
17953         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
17954
17955 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
17956
17957         * mini.c: change optimize_branches () to use a single loop
17958         and introduce a new optimization to simplify some range checks.
17959
17960 2006-02-03  Martin Baulig  <martin@ximian.com>
17961
17962         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
17963         and merged with debugger_thread_manager_add_thread().
17964         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
17965         inform the debugger about the main thread.
17966
17967 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17968
17969         * basic.cs: Add test for div.un/rem.un constant folding.
17970
17971 2006-02-03  Neale Ferguson <neale@sinenomine.net>
17972
17973         * cpu-s390x.md: correct int_xor_imm length
17974
17975 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17976
17977         * generics.2.cs: New test for #77442.
17978
17979         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
17980         #77442.
17981
17982 2006-02-02  Martin Baulig  <martin@ximian.com>
17983
17984         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
17985         <mono/metadata/mono-debug-debugger.h>   
17986
17987         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
17988
17989 2006-02-02  Martin Baulig  <martin@ximian.com>
17990
17991         * debug-debugger.h: New header file for debug-debugger.c.
17992
17993         * debug-debugger.c: Big API cleanup; don't run the managed Main()
17994         function is a separate thread anymore; add support for attaching.
17995
17996 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
17997
17998         * tramp-x86.c: Fix a warning.
17999
18000 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18001
18002         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18003         on very large methods.
18004
18005         * aot.c (load_patch_info): Fix a warning.
18006
18007 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18008
18009         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18010         mini-ops.h: alu membase optimizations.
18011
18012 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18013
18014         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18015         to speedup StringBuilder.
18016
18017 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18018
18019         * dominators.c (mono_compute_natural_loops): Fix detection of
18020         loop body start blocks.
18021
18022         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18023
18024 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18025
18026         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18027         #75145.
18028
18029 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18030
18031         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18032
18033 2006-01-25  Martin Baulig  <martin@ximian.com>
18034
18035         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18036         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18037         started to cleanup this file a little bit.
18038
18039 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18040
18041         * mini.c: optimize a codepath frequently happening in generics code.
18042
18043 2006-01-23  Martin Baulig  <martin@ximian.com>
18044
18045         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18046
18047         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18048         functions directly.
18049
18050         * driver.c: debug-debugger.c is only available if
18051         `MONO_DEBUGGER_SUPPORTED' is defined.   
18052
18053 2006-01-23  Martin Baulig  <martin@ximian.com>
18054
18055         * debug-debugger.c: Only enable this on platforms where the Mono
18056         Debugger is working (x86 and x86_64).
18057
18058 2006-01-21  Martin Baulig  <martin@ximian.com>
18059
18060         The Mono Debugger is now using the normal `mono' instead of the
18061         `mono-debugger-mini-wrapper' when executing managed code.
18062
18063         * debug-debugger.c: New file; previously known as
18064         debugger/wrapper/wrapper.c.
18065
18066         * debug-mini.c (mono_init_debugger): Removed.
18067
18068         * driver.c (mono_main): Added new `--inside-mdb' command line
18069         argument which is used when running inside the debugger.
18070
18071 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18072
18073         * liveness.c (mono_analyze_liveness): Remove some unused data
18074         structures.
18075
18076 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18077
18078         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18079
18080 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18081
18082         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18083         depends on implementation details of monobitset.
18084
18085         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18086         Fixes #77271.
18087
18088 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18089
18090         * liveness.c: Update after monobitset changes.
18091
18092 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18093
18094         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18095
18096 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18097
18098         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18099
18100         * mini-s390x.c: Remove warning messages.
18101
18102 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18103
18104         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18105
18106 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18107
18108         * generics.2.cs: Add ldelem/stelem_any test.
18109
18110 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18111
18112         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18113
18114 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18115
18116         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18117         
18118 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18119
18120         * generics.2.cs: Reenable vtype tests.
18121
18122         * inssel-x86.brg: Remove an icorrect valuetype rule.
18123
18124 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18125
18126         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18127         initial support for OP_ABS.
18128
18129 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18130
18131         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18132
18133 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18134
18135         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18136         conversion and implement LADD/LSUB.
18137
18138         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18139         architectures.
18140
18141 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18142
18143         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18144
18145         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18146         architectures.
18147
18148 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18149
18150         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18151         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18152         (stack walk problem).
18153
18154 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18155
18156         * aot.c (mono_aot_load_method): Fix a warning.
18157
18158 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18159
18160         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18161
18162 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18163
18164         * iltests.il: Add test for #77148.
18165
18166         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18167         #77148.
18168
18169 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18170
18171         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18172
18173 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18174
18175         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18176         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18177
18178         * basic-long.cs: Add lconv-to-r4/r8 tests.
18179
18180 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18181
18182         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18183
18184         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18185         here as on other archs.
18186
18187 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18188
18189         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18190
18191 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18192
18193         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18194         
18195         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18196
18197         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18198         instrument_prolog; Add memory_barrier instruction.
18199
18200 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18201
18202         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18203
18204 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18205
18206         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18207
18208         * aliasing.c inssel.brg: Fix warnings.
18209
18210         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18211         could skip initialization of some parts of memory.
18212
18213         * mini.c mini-ia64.c: Fix warnings.
18214
18215         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18216
18217 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18218
18219         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18220         a crash seen on sparc.
18221
18222         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18223         
18224         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18225
18226 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18227
18228         * mini-ops.h: Add s390_backchain instruction
18229
18230         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18231
18232         * cpu-s390.md: Add s390_backchain instruction
18233
18234         * mini-s390.c: Significant ABI changes
18235
18236         * mini-s390.h: Cater for zero length structures
18237
18238 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18239
18240         * mini-s390.c: ABI fixes
18241
18242         * inssel-s390.brg: Remove debug statements
18243
18244         * cpu-s390.md: Fix length of ATOMIC_xx operations
18245
18246 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18247
18248         * basic-float.cs: Add float<->long conversion tests.
18249
18250 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18251
18252         * mini-s390.c: Fix LOCALLOC processing.
18253
18254         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18255
18256 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18257
18258         * iltests.il: Add tests for some opcodes not covered by the other
18259         tests.
18260
18261 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18262
18263         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18264         register loading for Tail processing; Correct trace output.
18265
18266         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18267
18268         * cpu-s390.md: Correct size of jmp instruction. 
18269
18270 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18271
18272         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18273
18274 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18275
18276         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18277           Bring s390 up to current level.
18278
18279 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18280
18281         * generics.2.cs: Disable the newly added tests as they do not work yet.
18282         
18283         * generics.2.cs: Add valuetype tests.
18284
18285 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18286
18287         * basic-long.cs: Add i4->u8 test.
18288
18289         * objects.cs: Add tests for JIT intrinsic.
18290
18291         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18292         optimizations lost by a mistake.
18293
18294 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18295
18296         * basic-long.cs: Remove a test moved to objects.cs.
18297
18298         * arrays.cs: Add more array tests.
18299
18300 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18301
18302         * arrays.cs: Add new tests for multi-dimensional arrays.
18303
18304 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18305
18306         * Makefile.am (test_sources2): Add generics.2.cs.
18307         (EXTRA_DIST): Add test_sources2.
18308
18309 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18310
18311         Support for boxing and unboxing nullable types as well as the
18312         isinst operation on nullables, per the CLI ammendment.
18313
18314         * inssel.brg (CEE_ISINST): Special case for nullable
18315
18316         * mini.c (handle_unbox_nullable): new method
18317         (handle_box): Special case for nullable types
18318         (mono_method_to_ir): Call handle_unbox_nullable in correct
18319         places.
18320
18321         * generics.2.cs: New test suite
18322
18323         * Makefile.am: Support for regression tests with generics.
18324
18325 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18326
18327         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18328         allocated to registers. Fixes #76800.
18329
18330 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18331
18332         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18333
18334 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18335
18336         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18337         of platforms.
18338
18339 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18340
18341         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18342         objects.cs.
18343
18344         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18345         
18346         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18347 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18348
18349         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18350         single precision before storing to a single precision location.
18351
18352 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18353
18354         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18355
18356 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18357
18358         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18359         correct files.
18360
18361         * basic.cs: Remove test_0_byte_compares test which was moved to
18362         objects.cs a long time ago.
18363
18364 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18365
18366         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18367
18368 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18369
18370         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18371         handlers are called.
18372
18373         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18374         throwing code.
18375
18376          * mini-ia64.c: Add support for the throw->branch exception 
18377         optimization.   
18378
18379         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18380
18381 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18382
18383         * mini.c: Enabled "fastpath" deadce :-)
18384         
18385 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18386
18387         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18388         alias analysis pass to support it.
18389         * mini.h: Likewise.
18390         * ssa.c: Likewise.
18391         * liveness.c: Likewise (liveness computation can use aliasing
18392         information to be more accurate).
18393         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18394         moreover made so that "--compile-all" uses the given optimization
18395         flags and not the default ones.
18396         * aliasing.c: Alias analysis (new file).
18397         * aliasing.h: Likewise.
18398         * Makefile.am: added "aliasing.c" and "aliasing.h".
18399         
18400 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18401
18402         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18403         OP_L opcodes.
18404
18405 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18406
18407         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18408         fp >= end_of_stack exit condition, as it is not needed, and it might
18409         become true for fp eliminated frames.
18410
18411 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18412
18413         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18414         coded offsets.
18415
18416 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18417
18418         * mini-arm.c: fixed alignment of doubles/longs to match
18419         the C ABI (bug #76635).
18420
18421 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18422
18423         * aot.c: fix compilation with --enable-minimal=aot.
18424
18425 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18426
18427         * mini-arm.c: fixed compatibility with the new
18428         floating point emulator package for compares.
18429
18430 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18431
18432         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18433
18434 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18435
18436         * mini-exceptions.c (print_stack_frame): Output to stderr.
18437         (mono_handle_native_sigsegv): Ditto.
18438
18439 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18440
18441         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18442         OP_LCONV_TO_OVF_I implementation.
18443
18444         * mini-amd64.c: Add support for the throw->branch exception 
18445         optimization.
18446
18447         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18448         when the catch clause catches a more general exception, i.e. Object.
18449
18450 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18451
18452         * cpu-ia64.md: Remove unused opcodes.
18453
18454         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18455         specific defines for architectures defining USE_SIGACTION.
18456
18457         * mini-ia64.c: Fix some warnings.
18458
18459         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18460         version seemed to skip a frame.
18461
18462 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18463
18464         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18465         only calls which are made to native code use this flag.
18466
18467 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18468
18469         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18470         varargs methods as well.
18471         
18472         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18473         which have save_lmf set. Reorganize methods prologs a bit.
18474
18475         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18476         debugger to the proper place.
18477
18478 2005-10-29  Martin Baulig  <martin@ximian.com>
18479
18480         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18481         when running inside the debugger until the debugger has support
18482         for it.
18483
18484 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18485
18486         * mini.h: Fix a warning.
18487
18488 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18489
18490         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18491         we expose publicly, this returns the string.
18492
18493 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18494
18495         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18496         with fp elimination.
18497
18498 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18499
18500         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18501         native stacktrace using the glibc 'backtrace' function if available.
18502
18503 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18504
18505         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18506
18507         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18508         handle SIGSEGVs received while in native code.
18509
18510         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18511         code, call mono_handle_native_sigsegv which will abort the runtime
18512         after printing some diagnostics, instead of converting it into a
18513         confusing NullReferenceException.
18514
18515 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18516
18517         * cpu-pentium.md: Remove unused opcodes.
18518
18519 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18520
18521         * mini-amd64.h (MonoLMF): Add rsp field.
18522
18523         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18524         the lmf too.
18525
18526 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18527
18528         * mini-codegen.c (get_register_spilling): Fix some warnings.
18529
18530 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18531
18532         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18533         elimination during exception handling. Enable fp elimination by
18534         default.
18535
18536         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18537         elimination.
18538
18539 2005-10-16  Martin Baulig  <martin@ximian.com>
18540
18541         * mini-exceptions.c
18542         (mono_debugger_run_finally): New public method for the debugger.
18543
18544 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18545
18546         * debug-mini.c (mono_debug_init_method): Fix warning.
18547
18548         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18549         the 'exname' parameter const to fix some warnings.
18550
18551 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18552
18553         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18554         introduced by the previous patch.
18555
18556 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18557
18558         * basic-float.cs: Add test for precision of float arithmetic.
18559
18560         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18561         when loading/storing single values from/to memory.
18562
18563         * mini.c (mono_jit_compile_method_with_opt): Create the function
18564         pointers in the correct domain.
18565
18566 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18567
18568         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18569         introduced by previous patch.
18570         
18571         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18572         when out_filter_idx is NULL.
18573
18574         * mini-exceptions.c: Don't run filter clauses twice during exception
18575         handling. Fixes #75755.
18576
18577 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18578
18579         * aot.c: Add support for ldflda wrappers.
18580
18581         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18582         #75902.
18583
18584 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18585
18586         * mini.c, mini.h: do not consider exception handlers blocks when
18587         setting up interface variables.
18588
18589 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18590
18591         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18592
18593 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18594
18595         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18596         causes a regression.
18597
18598         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18599
18600 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18601
18602         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18603         of the OP_P definitions.
18604
18605         * TODO: Add a proposal for dealing with the CEE/OP mess.
18606
18607         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18608         optimizations from the x86 port.
18609
18610         * cpu-amd64.md: Ditto.
18611
18612         * basic.cs basic-long.cs: Add tests.
18613
18614 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18615
18616         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18617         Patrik Torstensson's implementation of my exception-handling
18618         optimization idea, when the exception object is not used
18619         (bug #62150).
18620
18621 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18622
18623         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18624         of the mul_imm optimizations from the old jit.
18625
18626 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18627
18628         * mini.c, liveness.c: patch by Patrik Torstensson and
18629         Zoltan Varga to improve performance in methods with
18630         exception clauses.
18631
18632 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18633
18634         * driver.c: Remove 'Globalization' entry from --version.
18635
18636 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18637
18638         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18639         there is a profiler interested in JIT events.
18640
18641         * aot.c: Load profile files produced by the AOT profiling module, and
18642         reorder methods based on the profiling info. Add a 'method_order' table
18643         to the AOT file to make mono_aot_find_jit_info work with the reordered
18644         methods.
18645
18646         * mini.h: Bump AOT file version info.
18647
18648 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18649
18650         * mini-arm.h: work around what looks like a gcc bug when optimizations
18651         are enabled.
18652
18653 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18654
18655         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18656         conditionals.  Use ...
18657         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18658
18659 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18660
18661         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18662         to determine the amount of memory to copy when passing valuetypes.
18663
18664         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18665         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18666
18667 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18668
18669         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18670         information about aot.
18671
18672 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18673
18674         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18675         macros. This will allow a deadlock debugger to easily be plugged
18676         in.
18677
18678 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18679
18680         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18681
18682 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18683
18684         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18685         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18686         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18687         ($(arch_built)) [CROSS_COMPILING]: Error out.
18688
18689 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18690
18691         * aot.c: Add support for the no_special_static flag for classes.
18692
18693 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18694
18695         * Reapply reverted patches.
18696
18697         * *: Revert r50174 as well.
18698
18699         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18700
18701 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18702
18703         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18704
18705 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18706
18707         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18708         part of the SIG_HANDLER_SIGNATURE.  
18709
18710 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18711
18712         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18713         statistics.
18714
18715         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18716         introduced by previous patch.
18717
18718 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18719
18720         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18721         saved registers too.
18722
18723         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18724         upon the information returned by get_call_info ().
18725         
18726         * mini-x86.c (add_float): Fix stack size calculation.
18727         (mono_arch_call_opcode): Rewrite this so it works based up the
18728         information returned by get_call_info ().
18729         (mono_arch_get_this_vret_args): Ditto.
18730
18731 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18732
18733         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18734         in cinfo to determine the registers which need to be used.
18735
18736 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18737
18738         * driver.c (mono_main): Add --server and --desktop flags. 
18739
18740 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18741
18742         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18743         registers as global registers.
18744
18745         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18746         longer needed with the new register allocator.
18747
18748         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18749
18750         * cpu-ia64.md: Remove unused opcodes.
18751         
18752         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
18753         
18754 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
18755
18756         * cpu-amd64.md: Remove unused opcodes.
18757
18758         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
18759         needed with the new register allocator.
18760
18761         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
18762         reg-reg moves.
18763
18764 2005-09-16  Raja R Harinath  <rharinath@novell.com>
18765
18766         * Makefile.am (check-local): Don't invoke semdel-wrapper.
18767
18768 2005-09-16  Martin Baulig  <martin@ximian.com>
18769
18770         * exceptions-amd64.c
18771         (throw_exception): Don't call mono_debugger_throw_exception() if
18772         we're a rethrow - see the FIXME in the code.
18773
18774 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
18775
18776         * mini.c (mono_init_exceptions): This only works on some architectures.
18777         
18778 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18779
18780         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
18781         on ia64.
18782
18783         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
18784
18785         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
18786         now in mini-exceptions.c.
18787
18788 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
18789
18790         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
18791         now in mini-exceptions.c.
18792
18793 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18794
18795         * exceptions-x86.c: Applied patch from Patrik Torstensson 
18796         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
18797
18798         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
18799         code into mini-exceptions.c. Add some assertions to it.
18800
18801 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
18802
18803         * aot.c (emit_section_change): Applied patch from "The Software Team" 
18804         (<software@solmersa.com>). Fix as errors on windows.
18805
18806 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18807
18808         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
18809         method info into the LMF.
18810
18811 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18812         
18813         * mini-ia64.c: Add proper unwind info for method epilogs.
18814
18815         * exceptions-ia64.c: Add some code to help debugging.
18816         
18817         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
18818
18819         * mini-exceptions.c: Fix warning.
18820
18821 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18822
18823         * mini.c: Really fix build.
18824
18825         * mini-x86.c mini-amd64.c: Fix build.
18826
18827 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18828
18829         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
18830
18831         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
18832         some Interlocked methods as intrinsics.
18833
18834         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
18835         for Thread methods as well.
18836
18837         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
18838
18839         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
18840
18841         * mini-ia64.c mini-x86.c mini-amd64.c 
18842         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
18843         OP_MEMORY_BARRIER.
18844         
18845         * mini.c (mono_init_exceptions): Fix build breakage.
18846
18847 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
18848
18849         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
18850         of instructions. Use the new ia64_unw_op macros for emitting unwind
18851         info.
18852
18853         * mini.c (mono_init_exceptions): Initialize exception handling
18854         related trampolines at startup.
18855
18856 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
18857
18858         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
18859
18860 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
18861
18862         * mini.c: Handle type loading errors gracefully during compilation and
18863         throw the appropriate exception.
18864
18865 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
18866
18867         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
18868         for the mono binary.
18869
18870 2005-09-09  Martin Baulig  <martin@ximian.com>
18871
18872         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
18873         the release.
18874
18875 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18876
18877         * mini-arm.h: use emulation for conv.r.un for the release.
18878
18879 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18880
18881         * mini-arm.c, objects.cs: more fixes and tests for them.
18882
18883 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18884
18885         * mini-arm.c: align structures to at least 4 bytes to be able
18886         to keep our current optimized memcpy.
18887
18888 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
18889
18890         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
18891
18892 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18893
18894         * mini.c: ignore SIGPIPE.
18895
18896 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
18897
18898         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
18899
18900         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
18901
18902 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
18903
18904         * mini.h: Add prototype for mono_allocate_stack_slots_full.
18905
18906 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18907
18908         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
18909         exception handling support.
18910         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
18911         patch by Brian Koropoff <briank@marakicorp.com>).
18912
18913 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
18914
18915         * mini.c: revert another 'optimization' which breaks when
18916         items on the eval stack need to be saved at a basic block end
18917         (bug #75940).
18918
18919 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
18920
18921         * jit-icalls.c: for arrays, ensure we always provide
18922         lower bounds.
18923
18924 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
18925
18926         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
18927         
18928         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
18929
18930 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
18931
18932         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
18933         arguments in their original register.
18934
18935 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
18936
18937         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
18938         memset/memcpy.
18939
18940         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
18941         when ssapre is enabled.
18942
18943         * inssel-long.brg: Fix bug in previous patch.
18944
18945         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
18946         multiplication by a constant.
18947
18948 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
18949
18950         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
18951         icc.
18952
18953         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
18954         saving registers.
18955
18956 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
18957
18958         * inssel-arm.brg: apply changes tested by Brian Koropoff
18959         <briank@marakicorp.com>.
18960
18961 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
18962
18963         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
18964         
18965 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
18966
18967         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
18968         to the same register if dreg is just a base register.
18969         (print_ins): Improve printing of membase opcodes.
18970
18971         * inssel-x86.brg: Add optimized ldind(reg) rules.
18972
18973         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
18974
18975 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
18976
18977         * mini.c: when running under valgrind, set the stack bottom for
18978         the GC at the actual approximate stack for the app (fixes running
18979         mono with valgrind).
18980
18981 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
18982
18983         * mini.c: do no break at the first valuetype to init found
18984         (fixes bug #75791).
18985
18986 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
18987
18988         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
18989
18990 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
18991
18992         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
18993
18994 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
18995
18996         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
18997
18998 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18999
19000         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19001
19002         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19003         code.
19004
19005         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19006         code.
19007
19008         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19009         methods.
19010
19011 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19012
19013         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19014
19015 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19016
19017         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19018         in the tail recursion optimization.
19019
19020         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19021         debug info into the assembly file.
19022
19023         * iltests.il: Add test for filter regions.
19024
19025         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19026         initial stack of filter regions. Fixes #75755.
19027
19028 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19029
19030         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19031         stack requirements.
19032
19033 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19034
19035         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19036         the check for an already compiled method on non-ia64 platforms.
19037         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19038         proper domain.
19039
19040         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19041
19042         * inssel-x86.brg: Add some optimized call rules.
19043
19044 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19045
19046         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19047         method here.
19048
19049         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19050         mono_arch_patch_delegate_trampoline.
19051
19052         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19053
19054         * mini-trampolines.c: Fix build.
19055
19056         * mini-amd64.h: Add delegate trampolines.
19057
19058         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19059
19060         * inssel-amd64.brg: Add optimized call rules.
19061         
19062         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19063
19064         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19065
19066 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19067
19068         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19069         change.
19070
19071         * mini-ia64.c: Remove LMF fixmes.
19072
19073         * mini-ia64.h: Remove most fields from LMF.
19074
19075         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19076
19077         * mini-trampolines.c: Add support for IA64 function descriptors.
19078
19079         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19080         for IA64 function descriptors.
19081
19082 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19083
19084         * tramp-arm.c: patch the vtable for virtual calls. Added
19085         support code to register/unregister the LMF.
19086         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19087         more LMF work.
19088
19089 2005-08-19  Dick Porter  <dick@ximian.com>
19090
19091         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19092         bit value if needed.
19093
19094 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19095
19096         * mini.c (mini_get_method): Move handling of wrapper data here.
19097
19098         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19099
19100         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19101         virtual.
19102
19103         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19104         bblock->code does not remain empty.
19105
19106 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19107
19108         * arrays.cs: Add regression test for #75832.
19109
19110         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19111         rules. Fixes #75832.
19112
19113         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19114         instruction scheduling.
19115
19116 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19117
19118         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19119
19120 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19121
19122         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19123
19124         * mini-codegen.c: Fix VC build.
19125
19126         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19127
19128 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19129
19130         * mini.h: fix signature for mono_register_opcode_emulation.
19131
19132 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19133
19134         * mini.c: Get rid of most of the helper_sig_... constants using
19135         mono_create_icall_signature ().
19136
19137 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19138
19139         * jit-icalls.c (helper_ldstr): New helper function.
19140
19141         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19142
19143         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19144         throw, load the string using a helper call instead of creating a string object.
19145
19146         * aot.c: Update after LDSTR changes.
19147
19148         * mini.h: Bump AOT file version.
19149         
19150         * aot.c: Save class size info into the AOT file. Print more statistics during
19151         compilation.
19152
19153         * mini.h: Bump AOT file version.
19154
19155         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19156         ordering of disasm cases. Fixes #74957.
19157
19158 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19159
19160         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19161         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19162         the generic code needed for the ARM port.
19163
19164 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19165
19166         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19167         inssel-arm.brg: more ARM features and fixes.
19168
19169 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19170
19171         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19172         ARM port work in progress.
19173
19174 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19175
19176         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19177
19178         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19179
19180         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19181
19182         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19183
19184         * *-ia64.*: Ongoing IA64 work.
19185         
19186         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19187
19188 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19189
19190         * TODO: Remove out-of-data todo stuff.
19191
19192         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19193         dead code.
19194
19195         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19196
19197         * mini.h: Bump corlib version.
19198
19199 2005-07-27  Martin Baulig  <martin@ximian.com>
19200
19201         * mini-codegen.c
19202         (create_copy_ins): Added `const unsigned char *ip' argument; set
19203         `copy->cil_code' from it.
19204
19205 2005-07-27  Martin Baulig  <martin@ximian.com>
19206
19207         * mini-exceptions.c (mono_handle_exception): Don't call
19208         mono_debugger_handle_exception() for filters.
19209
19210 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19211
19212         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19213         as well.
19214
19215 2005-07-26  Martin Baulig  <martin@ximian.com>
19216
19217         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19218
19219         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19220         helper_compile_generic_method() if the method is actually virtual
19221         and non-final.
19222
19223 2005-07-26  Martin Baulig  <martin@ximian.com>
19224
19225         * mini.c
19226         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19227         public; this is now accessed directly by the debugger.
19228         (mono_generic_trampoline_code): Removed.
19229
19230         * debug-mini.c
19231         (mono_debug_init_method): Also add interncalls and wrappers.
19232
19233 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19234
19235         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19236
19237 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19238
19239         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19240
19241 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19242
19243         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19244
19245 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19246
19247         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19248         getting TLS offsets on AMD64 too.
19249
19250 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19251
19252         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19253
19254 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19255
19256         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19257         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19258
19259 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19260
19261         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19262
19263         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19264         to mini.c.
19265
19266         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19267         mono_sparc_is_virtual_call ().
19268         
19269         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19270
19271         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19272         trampoline parameters.
19273
19274         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19275         
19276         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19277         to mono_arch_get_vcall_slot_addr.
19278
19279         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19280         trampoline code.
19281
19282         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19283
19284 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19285
19286         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19287
19288 2005-07-19  Martin Baulig  <martin@ximian.com>
19289
19290         * exceptions-amd64.c (throw_exception): Call
19291         mono_debugger_throw_exception() here like we're doing it on i386.
19292
19293 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19294
19295         * mini-ia64.c: Add optimized TLS access support.
19296
19297 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19298
19299         * mini-exceptions.c: Ongoing IA64 work.
19300
19301         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19302
19303         * mini.c: Use the default optimization set when embedding. Fixes
19304         #75194.
19305
19306 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19307
19308         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19309         of trampolines to a separate file.
19310
19311         * mini-trampolines.c: New file.
19312
19313         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19314         separate file.
19315         
19316         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19317         amd64/ia64 code.
19318
19319         * mini-codegen.c: Fix cygwin build.
19320
19321 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19322
19323         * mini.c: Add some minor changes needed by the IA64 port.
19324
19325         * *-ia64.*: Ongoing IA64 work.
19326
19327 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19328
19329         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19330         trampolines into arch-independent and arch-dependent parts.
19331
19332         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19333
19334 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19335
19336         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19337
19338         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19339         the xp-regalloc-branch for amd64.
19340
19341         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19342         xp-regalloc-branch for x86.
19343
19344 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19345
19346         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19347
19348 2005-07-06  Martin Baulig  <martin@ximian.com>
19349
19350         * mini.c
19351         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19352         (mono_jit_runtime_invoke): Likewise.
19353
19354 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19355
19356         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19357         on x86 too.
19358         
19359         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19360         without loading their metadata. Reorganize the file format so exception handling+
19361         debug info is kept separate from normal method info. Create MonoJitInfo 
19362         structures for methods lazily.
19363
19364         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19365         loading metadata.
19366         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19367
19368         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19369
19370         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19371         in AOT code.
19372
19373         * mini.h: Bump AOT file version.
19374
19375 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19376
19377         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19378
19379 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19380
19381         * Makefile.am (check-local): Call semdel-wrapper.
19382
19383 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19384
19385         * mini-x86.c: Revert the last change as it seems to break the build..
19386
19387 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19388
19389         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19390         
19391         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19392
19393 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19394
19395         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19396         outside of the macro, so strange stuff doesn't happen with gcc4
19397         (NEW_AOTCONST_TOKEN): Likewise.
19398
19399 2005-06-28  Martin Baulig  <martin@ximian.com>
19400
19401         * mini.c (mini_class_is_system_array): New static method; use this
19402         instead of `klass->parent == mono_defaults.array_class' everywhere
19403         since this also works for the new generic array class.
19404
19405 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19406
19407         * inssel.brg: Remove warnings.
19408
19409 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19410
19411         * mini-ia64.c: Ongoing IA64 work.
19412
19413         * basic-float.cs: Add float->i1 conversion test.
19414
19415         * iltests.il: Add conv.u4 test.
19416
19417 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19418
19419         * inssel-long.brg: Fix bug caused by last change.
19420
19421 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19422
19423         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19424         BSDs.  Allows the x86 JIT to work on OSX86
19425
19426 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19427
19428         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19429         u4->i8 conversion.
19430
19431         * mini-ia64.c: Ongoing IA64 work.
19432
19433 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19434
19435         * mini-ia64.c: Ongoing IA64 work.
19436
19437         * driver.c: Clean up jit_code_hash as well when using --regression.
19438
19439         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19440
19441         * basic-long.cs: Add tests for long->u4 conversion.
19442
19443 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19444
19445         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19446         that we do not depend on undefined C behavior: the order stuff
19447         gets evaluated within an expression. Fixes mono when compiled on
19448         GCC 4.
19449
19450 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19451
19452         * *-ia64.*: Ongoing IA64 work.
19453
19454         * aot.c: Lower memory usage while loading AOT methods.
19455
19456         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19457
19458         * mini.h: Bump AOT file format version.
19459
19460 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19461
19462         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19463
19464 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19465
19466         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19467         not on callee assembly). Fixed some comments.
19468
19469 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19470
19471         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19472         it gets proper disassembly.
19473         (emit_method_info): Remove some dead code.
19474
19475         * mini.c (mini_method_compile): Allways allocate the GOT var in
19476         mono_method_to_ir for emulating opcodes.
19477
19478 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19479
19480         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19481         before freeing the code memory. Fixes #74990.
19482
19483         * objects.cs: Add regression test for #74992.
19484
19485         * liveness.c: Extend live ranges of arguments to the beginning of the
19486         method. Fixes #74992.
19487
19488         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19489         so it points into the faulting instruction.
19490
19491 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19492
19493         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19494
19495         * *-ia64.*: Ongoing IA64 work.
19496
19497         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19498
19499 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19500
19501         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19502
19503         * *-ia64.*: Ongoing IA64 work.
19504
19505 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19506
19507         * basic-long.cs: Add tests for add/sub.ovf.
19508
19509         * basic.cs: Add tests for sub.ovf.
19510
19511         * *-ia64.*: Ongoing IA64 work.
19512
19513 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19514
19515         * *-ia64.*: Ongoing IA64 work.
19516
19517         * basic.cs: Add conv.ovf.i4.un test.
19518
19519 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19520
19521         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19522         
19523 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19524
19525         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19526
19527 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19528
19529         * *-ia64.*: Ongoing IA64 work.
19530
19531 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19532
19533         * trace.[ch]:
19534         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19535
19536 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19537
19538         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19539
19540 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19541
19542         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19543
19544         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19545         of a call is callable by a near call.
19546
19547 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19548
19549         * mini-ia64.c: Ongoing IA64 work.
19550
19551 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19552
19553         * genmdesc.c: Make the generated array non-static.
19554
19555         * inssel-long.brg: Fix LSHR_IMM rule.
19556
19557         * *-ia64.*: Ongoing IA64 work.
19558
19559         * *-ia64.*: Ongoing IA64 work.
19560
19561 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19562
19563         * *-ia64.*: Ongoing IA64 work.
19564
19565         * *-ia64.*: Ongoing IA64 work.
19566         
19567         * mini-ia64.c: Ongoing IA64 work.
19568
19569         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19570
19571 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19572
19573         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19574         
19575         * objects.cs basic-long.cs: Move some tests to objects.cs.
19576
19577 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19578
19579         * *-ia64.*: Ongoing IA64 work.
19580
19581         * iltests.il: Add a new test.
19582
19583         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19584         newobj. Fixes #75042.
19585
19586 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19587
19588         * *-ia64.*: Ongoing IA64 work.
19589         
19590         * *-ia64.*: Ongoing IA64 work.
19591         
19592         * *-ia64.*: Ongoing IA64 work.
19593
19594         * basic.cs objects.cs: Move tests accessing static variables as well.
19595
19596         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19597
19598 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19599
19600         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19601
19602         * driver.c: Always print failed tests.
19603
19604         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19605         frame pointer.
19606
19607         * *ia64*: Ongoing IA64 work.
19608
19609 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19610
19611         * basic.cs: Add tests for add.ovf. Fix warnings.
19612
19613 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19614
19615         * driver.c (mono_main): Avoid crash if no argument is passed to
19616         --break;  Do not use g_error, but f_printf.   And fix all other
19617         ocurrences of the same crash.
19618
19619 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19620
19621         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19622         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19623         Fixes #74742.
19624
19625 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19626
19627         * *-ia64.*: Add beginnings of IA64 backend.
19628
19629         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19630
19631 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19632
19633         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19634         Fixes #74925.
19635
19636         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19637
19638         * mini-amd64.c: Fix a warning.
19639
19640 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19641
19642         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19643         in float_neg. Fixes #74897.
19644
19645         * mini-amd64.c (emit_call): Fix another near call bug.
19646
19647 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19648
19649         * declsec.c: Keep the appdomain information in the structure. Added a 
19650         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19651         value gets overwritten).
19652         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19653         an MonoAppDomain member to MonoSecurityFrame.
19654         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19655         used in the stack walk. Now use a MonoArray which grow (double) when
19656         it gets full.
19657
19658 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19659
19660         * mini.c: Re-enabled runtime cleanup, since running threads should
19661         now properly stop when exiting.
19662
19663 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19664
19665         * mini-codegen.c: New file contaning the arch-independent local
19666         register allocator. Not used by any architectures yet.
19667
19668         * mini.h linear-scan.c: Merge some changes from the 
19669         mini-xp-local-regalloc branch.
19670
19671 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19672
19673         * mini-amd64.c (emit_call): Fix calls to native functions when the
19674         runtime is compiled as a shared library. Fixes #74756.
19675
19676         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19677         on a literal field. Fixes #74751.
19678
19679 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19680
19681         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19682
19683 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19684
19685         * objects.cs: Add missing null casting test.
19686
19687 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19688
19689         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19690         in wrapper methods. Also rename 'address' variable to 'offset'.
19691
19692 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19693
19694         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19695         warnings.
19696         
19697         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19698
19699         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19700         work on windows.
19701
19702 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19703
19704         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19705
19706 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19707
19708         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19709         just the last bytes.
19710
19711 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19712
19713         * aot.c (mono_compile_assembly): Fix warning.
19714
19715         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19716         by the _MSC_VER stuff.
19717
19718 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19719
19720         * inssel-long.brg: Fix #74588.
19721
19722         * cpu-amd64.md: Fix #74591.
19723
19724         * iltests.il: Add new regression tests.
19725
19726 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19727
19728         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19729         valuetype.
19730
19731 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19732
19733         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19734
19735         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19736         from Bill Middleton <flashdict@gmail.com>.
19737
19738 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19739
19740         * arrays.cs: Add new regression test. Fix warnings.
19741
19742 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19743
19744         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19745         and leakage in CKFINITE.
19746
19747         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19748         this to a null op since it is called on amd64 too.
19749
19750         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19751
19752         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
19753         body since this is not used on amd64.
19754         
19755         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
19756
19757         * mini-amd64.c: Remove obsolete fixmes.
19758
19759         * mini.c (print_method_from_ip): Fix debugging support.
19760
19761 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19762
19763         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
19764         so that expressions that don't give much gain are not reduced.
19765         * ssapre.h: Likewise.
19766
19767 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19768
19769         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
19770
19771         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
19772
19773         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
19774
19775 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
19776
19777         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
19778
19779         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
19780
19781 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
19782
19783         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
19784         stack touching.
19785
19786         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
19787
19788         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
19789
19790         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
19791
19792         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
19793         MONO_ARCH_USE_SIGACTION. Fixes #74252.
19794
19795         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
19796
19797         * mini-x86.c: Fix up stack overflow handling.   
19798
19799         * exceptions.cs: Add new regression test.
19800
19801 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
19802
19803         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
19804         mono_jit_thread_attach.
19805
19806         * mini.c (mono_method_to_ir): Verify called method is not abstract.
19807
19808 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19809
19810         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
19811         avoid calling constructors using callvirt.
19812
19813         * inssel.brg: Fix #74073.
19814
19815 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
19816
19817         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
19818         compilation with non-GCC compilers.
19819         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
19820         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
19821
19822 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
19823
19824         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
19825         klass->interface_offsets (will likely fix bug#74073).
19826
19827 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19828
19829         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
19830
19831 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
19832
19833         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
19834         to amd64_div_reg_size ().
19835         
19836         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
19837
19838 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
19839
19840         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
19841
19842 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19843
19844         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
19845
19846 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19847
19848         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
19849         
19850         * mini.c (mono_precompile_assembly): Load and precompile referenced
19851         assemblies as well. Fixes #74015.
19852
19853 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
19854
19855         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
19856
19857 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
19858
19859         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
19860         a lot of checks and (anyway) permissions cannot work until corlib is 
19861         loaded.
19862
19863 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
19864
19865         * mini-ppc.c: fixed ABI issue on sysv/ppc.
19866
19867 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
19868
19869         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
19870         calls (fixes bug#72824).
19871
19872 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19873
19874         * mini.c: fix tail recursion elimination (see test in bug#73936).
19875
19876 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
19877
19878         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
19879         some fp functions in sse2 mode.
19880
19881 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
19882
19883         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
19884
19885 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
19886
19887         * mini.h mini.c: Add mono_get_jit_tls_key ().
19888
19889         * mini-x86.c: Enable fast TLS support on windows.
19890
19891 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
19892
19893         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
19894         * mini.c: Check for p/invoke method when generating code. If a
19895         p/invoke method, or it's class, isn't decorated with [Suppress
19896         UnmanagedCodeSecurity] then generate code to call System.Security.
19897         UnmanagedDemand (only if the security manager is active).
19898
19899 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19900
19901         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
19902         last change as it seems to cause strange crashes.
19903         
19904 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19905
19906         * *.c: handle unsafe function pointers where needed.
19907
19908 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19909
19910         * mini.c (mono_jit_free_method): Remove the fixme too.
19911
19912 2005-03-15  Miguel de Icaza  <miguel@novell.com>
19913
19914         * mini.c: As discussed, make the code actually free the delegate
19915         thunk now, to enable the debugging of delegate problems, use
19916         MONO_DEBUG=1 when running Mono. 
19917
19918         This takes also care of parts of the leaks as seen by Joe.
19919
19920 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
19921
19922         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
19923         thread_tls_offset calculation.
19924
19925 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
19926
19927         * declsec.c: Reworked linkdemand checks for icall. The previous code
19928         was using the declaration code (untrusted) and didn't work as expected
19929         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
19930         specific case.
19931
19932 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
19933
19934         * iltests.il: Add new localloc test.
19935
19936         * mini-amd64.c: Handle large stack allocations the same way as on
19937         windows if stack overflow handling is working.
19938         
19939         * mini-amd64.c: Allocate the signal stack using mmap.
19940
19941         * mini.c (sigsegv_signal_handler): Fix reading of context.
19942
19943         * mini-exceptions.c: Fix up stack overflow handling.
19944
19945         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
19946
19947         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
19948
19949         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
19950
19951         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
19952
19953         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
19954         tramp_init functions as they are no longer needed.
19955
19956 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
19957
19958         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
19959         
19960         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
19961
19962         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
19963         
19964         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
19965         support that now.
19966
19967         * mini-ops.h: Add OP_LMUL_IMM.
19968
19969         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
19970         long mul/div opcodes as intrinsic.
19971
19972         * mini-amd64.c (emit_call): Handle the case when the callee might be
19973         an AOT method.
19974
19975 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
19976
19977         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
19978         extra safe.
19979         
19980         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
19981
19982         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
19983
19984 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
19985
19986         * mini.c (mono_codegen): Don't leak here, to help people running
19987         monogrind.
19988
19989 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
19990
19991         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
19992         conversions in sse2 mode.
19993
19994         * basic-float.cs: Add regression test.
19995         
19996         * mini-amd64.c: Reenable sse2.
19997
19998 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
19999
20000         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20001
20002 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20003
20004         * driver.c: Copyright text should include 2005.
20005         
20006 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20007
20008         * cpu-amd64.md (load_membase): Fix more max lengths.
20009
20010 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20011
20012         * cpu-amd64.md (load_membase): Fix max length.
20013
20014         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20015
20016         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20017
20018         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20019         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20020
20021         * basic-float.cs: Add rounding regression test.
20022
20023         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20024
20025 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20026
20027         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20028         structures in registers for pinvoke wrappers.
20029
20030 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20031
20032         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20033
20034 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20035
20036         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20037         wrapper to mono_jit_thread_attach.
20038
20039         * mini.c (mini_jit_thread_attach): New jit icall.
20040
20041         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20042         native->managed wrappers.
20043
20044         * exceptions.cs: Add new regression test.
20045
20046         * mini.c (optimize_branches): Check regions in the cbranch to throw
20047         block case as well. Fixes #73242.
20048
20049 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20050
20051         * mini.c: thread safety fixes.
20052
20053 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20054
20055         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20056         patching stuff, since delegates use jump trampolines so there is
20057         no caller.
20058
20059         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20060         jump trampolines.
20061         
20062         * tramp-amd64.c: Fix build.
20063
20064         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20065         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20066
20067         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20068         Rename this to mono_arch....
20069         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20070
20071         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20072
20073         * mini-amd64.c (emit_call): If both the caller and the callee is
20074         guaranteed to have 32 bit addresses, emit a normal call.
20075
20076         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20077
20078         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20079         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20080         method_ptr inside delegates.
20081
20082 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20083
20084         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20085         invalidated. Fixes #73001.
20086
20087         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20088
20089         * mini-x86.c: Only use stdcall for pinvokes on windows.
20090
20091 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20092
20093         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20094         * mini-x86.c: remove unreliable __thread var offset detection,
20095         use the correct accessors and enable by default.
20096
20097 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20098
20099         * mini.c (mono_jit_free_method): Fix memory leak.
20100
20101 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20102
20103         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20104
20105 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20106
20107         * cpu-amd64.md: Fix lengths of atomic opcodes.
20108
20109 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20110
20111         * driver.c: try to not imply using ICU is any good.
20112
20113 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20114
20115         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20116         functions as inline ops.
20117
20118         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20119         some Interlocked functions as inline ops.
20120
20121         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20122
20123         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20124
20125         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20126
20127         * mini.c: Add support for OP_NOT_TAKEN.
20128
20129         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20130         structures in registers for pinvoke wrappers.
20131
20132         * mini-amd64.c: Fix warnings.
20133
20134 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20135
20136         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20137
20138         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20139
20140         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20141         address instead of loading the address from it.
20142
20143         * mini-x86.c: Add support for returning small structs in registers
20144         on Win32. Fixes part of #70864.
20145         
20146 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20147
20148         * trace.c (get_token): Improve error checking.
20149
20150 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20151
20152         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20153
20154 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20155  
20156         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20157         it can be reused for MonoClass.
20158         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20159         _LINKDEMAND.
20160
20161 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20162
20163         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20164         instead of a MonoReflectionMethod. The method information wasn't used
20165         when displaying SecurityException details (but will be now).
20166
20167 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20168
20169         * Makefile.am : windows build fix.
20170
20171 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20172
20173         * iltests.il: Add new regression test.
20174
20175         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20176         #72522.
20177
20178 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20179  
20180         * mini.c: Moved linkdemand check into helper function check_linkdemand
20181         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20182         LDFTN, LDVIRTFTN).
20183
20184 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20185
20186         * declsec.c: Added statistics counter for different kinds of 
20187         LinkDemands.
20188         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20189         (and commented) declaration.
20190         * mini.c: Added statistics counter for security Demand code 
20191         generation. Added display of security statistics.
20192
20193 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20194
20195         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20196         Fix compilation errors under gcc-2.95.
20197
20198 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20199
20200         * mini.c, driver.c: Use the new jit trampoline hashtable
20201
20202 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20203
20204         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20205
20206 2005-02-11  Martin Baulig  <martin@ximian.com>
20207
20208         * debug-mini.c (mono_debug_close_method): Free the line number array.
20209
20210 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20211
20212         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20213         icalls.
20214
20215         * mini.h: Bump AOT file format version. 
20216
20217 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20218
20219         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20220         APTC and P/Invoke.
20221         * declsec.h: Added macros to get/set lazyly initialized security 
20222         informations about assemblies. Added new enum for different type of
20223         possible LinkDemand violation. Added function to check LinkDemands.
20224         * mini.h: Added a field to MonoCompile to hold any security violation
20225         detected when JITting a method (so it can be thrown later).
20226         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20227         and CEE_CALLVIRT. Added code to throw exception at the end of
20228         mini_method_compile (note: the exception is unhandled right now).
20229
20230 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20231
20232         * mini.c, jit-icalls.c: use the managed implementation of
20233         memset for initobj and memset, to avoid managed <-> unmanaged
20234         transitions.
20235
20236 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20237
20238         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20239         optimization if it would need a GOT var.
20240
20241         * basic.cs: Add tests for constant propagation and switch statements.
20242
20243         * ssa.c: Fix out-of-range constant propagation and switch statements.
20244
20245 2005-02-09    <vargaz@freemail.hu>
20246
20247         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20248
20249 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20250
20251         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20252
20253 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20254
20255         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20256
20257 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20258
20259         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20260         arithmetic operations.
20261
20262 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20263
20264         * mini-ppc.c: add a workaround for broken user code that
20265         DllImports vararg functions with non-vararg signatures.
20266
20267 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20268
20269         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20270         meaningfull error message for assemblies written in Managed C++.
20271
20272         * tramp-amd64.c mini-amd64.h: Add support for 
20273         create_trampoline_from_token ().
20274
20275         * aot.c mini-x86.c abcremoval.c: Applied patch from
20276         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20277
20278 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20279
20280         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20281         which takes a MonoImage/token as parameter instead of a MonoMethod.
20282
20283         * aot.c: Use the new trampoline for initializing vtables.
20284
20285         * aot.c: Add support for ldfld/stfld_remote wrappers.
20286
20287         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20288         rules for compare <MEM>, IMM.
20289
20290         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20291
20292         * aot.c: Handle inherited finalizers correctly.
20293
20294 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20295
20296         * inssel.brg (stmt): Add a missing _setup_... ().
20297
20298         * aot.c: Save some parts of the class state to the AOT file and use it
20299         to recompute that state when a class is initialized.
20300
20301         * mini.c: Install AOT hooks into the runtime.
20302
20303         * mini.h: Bump AOT file format version.
20304         
20305         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20306         Fixes #72148.
20307
20308         * iltests.il: Add new test.
20309
20310 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20311
20312         * mini.c: fix typo.
20313
20314 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20315
20316         * mini.c: setup the statistical profiler in the thread attach
20317         callback to cope with the new single thread code.
20318
20319 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20320
20321         * mini-ppc.c: ensure we have enough room for the profiler
20322         calls (fixed bug#72084).
20323
20324 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20325
20326         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20327         it.
20328
20329 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20330
20331         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20332
20333 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20334
20335         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20336         to succesfully execute parrotbench).
20337         * ssapre.h: Likewise.
20338
20339 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20340
20341         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20342         variable for stores to method arguments (fixes a SSAPRE issue).
20343
20344 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20345
20346         * mini.c: handle value types in dup, fixes gen-112.cs.
20347
20348 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20349
20350         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20351         sequence for calls in dynamic methods to avoid thunks.
20352
20353 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20354
20355         * mini.c: correctly remove dynamic methods from the hashtable.
20356
20357 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20358
20359         * driver.c: Disabled SSAPRE until fix the bug that appears
20360         in IronPython's parrotbench.
20361
20362 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20363
20364         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20365
20366         * mini.c (mono_method_to_ir): Revert the previous change.
20367         
20368         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20369         when AOT compiling.
20370
20371         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20372         mono_jit_info_table_find () etc. when running under valgrind.
20373
20374         * inssel.brg: Fix warnings.
20375
20376         * mini-exceptions.c: Fix warnings.
20377
20378 2005-01-31  Martin Baulig  <martin@ximian.com>
20379
20380         * driver.c (compile_all_methods_thread_main): Don't try to compile
20381         generic methods or anything which has type parameters.
20382
20383 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20384
20385         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20386
20387         * TestDriver.cs: Add --verbose flags.
20388
20389         * graph.c ssa.c: Fix 64 bit warnings.
20390         
20391         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20392         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20393         Fix 64 bit warnings.
20394
20395         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20396         variable not spotted by gcc.
20397         
20398         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20399         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20400         X86_COMPARE_MEMBASE opcodes.
20401
20402         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20403
20404 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20405
20406         * *: MonoMethod->signature might be NULL now. You *MUST* use
20407         mono_method_signature.
20408
20409 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20410
20411         * driver.c (compile_all_methods_thread_main): Compile the methods
20412         without invoking cctors.
20413
20414 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20415
20416         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20417         * basic-calls.cs: test for the above.
20418
20419 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20420
20421         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20422         MonoJitInfo changes.
20423
20424 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20425
20426         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20427         eagerly if it contains dynamic methods.
20428         
20429         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20430
20431         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20432         trace, it is now computed by an icall from trace_ips.
20433         
20434         * mini-exceptions.c: Fix a warning.
20435
20436 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20437
20438         * mini-exceptions.c: don't bother getting stack trace info if
20439         it's not going to be used.
20440
20441 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20442
20443         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20444         ssapre-mini-ops.h.
20445
20446 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20447
20448         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20449
20450         * aot.c: Avoid calling mono_method_get_header () if not needed.
20451
20452         * mini.h: Bump AOT file format version.
20453         
20454         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20455
20456         * mini.c (mono_print_tree): Print more info for calls.
20457
20458 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20459
20460         * declsec.h: Remove warning by adding missing include for marshal.h
20461
20462 2005-01-26  Martin Baulig  <martin@ximian.com>
20463
20464         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20465         `ip' twice.
20466
20467 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20468
20469         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20470         flags.
20471
20472         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20473
20474         * aot.c (mono_compile_assembly): Fix a warning.
20475
20476 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20477
20478         * declsec.c: Look for security attributes on the original MonoMethod 
20479         (and not the wrapped one). This fix permissions on icalls.
20480
20481 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20482
20483         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20484
20485         * mini.c (mono_allocate_stack_slots): Add a fixme.
20486
20487         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20488
20489 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20490
20491         * inssel.brg: optimize casts of sealed types (more
20492         optimizations waiting for fixes in remoting).
20493
20494 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20495
20496         * inssel.brg (stmt): Add another dummy rule.
20497
20498         * driver.c: Fix warnings.
20499
20500         * driver.c (mono_main): If running under valgrind, instruct glib to use
20501         the system allocation functions so valgrind can track the memory
20502         allocated by the g_... functions.
20503
20504         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20505
20506         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20507
20508         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20509
20510         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20511         variables in try regions.
20512
20513         * mini.c (mini_method_compile): Don't disable optimizations on large
20514         methods when AOT compiling.
20515
20516         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20517         allocate stack slots. Not yet used.
20518
20519 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20520
20521         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20522
20523 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20524
20525         * mini-ppc.c: make the branch info relative as the code
20526         buffer can be reallocated.
20527
20528 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20529
20530         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20531         * driver.c: Removed the AOT/security restriction. Now initialize the
20532         security manager (in metadata) if --security is used.
20533         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20534         rather than the pointer to declarative security, when AOT is used.
20535
20536 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20537
20538         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20539         basic blocks, reduced intrinsic exception throwing code size.
20540
20541 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20542
20543         * driver.c (mini_usage): Reorder the usage screen.
20544
20545 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20546
20547         * mini.c (mono_resolve_patch_target): Fix warning.
20548
20549 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20550
20551         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20552         previous patch.
20553
20554         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20555
20556         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20557         breaks the amd64 build.
20558
20559         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20560         register allocation. Fixes #71454.
20561
20562         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20563
20564         * arrays.cs: Add new regression test.   
20565
20566 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20567
20568         * ssapre.c: Turned usage of snprintf to GString.
20569         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20570         (I left it on by mistake in my previous commit).
20571
20572 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20573
20574         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20575         on cond branch optimization (fixes bug# 71515).
20576
20577 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20578
20579         * abcremoval.c: Fixed bug 71062.
20580         * abcremoval.h: Likewise.
20581
20582 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20583
20584         * mini.c: Added a new functionality to optimize_branches, the removal
20585         of useless basic blocks, and fixed some problem in the removal of
20586         critical edges; some utility functions added for both purposes.
20587         * ssapre.c: Added complex expression support, and fixed bug 70637.
20588         * ssapre.h: Likewise.
20589         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20590         enabled in SSAPRE.
20591         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20592         * driver.c: Re-enabled SSAPRE.
20593
20594 2005-01-19  Martin Baulig  <martin@ximian.com>
20595
20596         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20597         the result of mono_get_method_constrained().
20598
20599 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20600
20601         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20602         manager.
20603
20604 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20605
20606         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20607         be detected.  Fixes #59296.
20608
20609 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20610
20611         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20612         which can happen. Fixes #71361.
20613
20614 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20615
20616         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20617         manager.
20618
20619 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20620
20621         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20622         appdomain-unload.exe to fail.
20623         
20624         * mini.c: Fix some memory leaks.
20625
20626 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20627
20628         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20629         Fixed bug and sped up some codepaths.
20630
20631 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20632
20633         * mini.c: Fix some memory leaks.
20634
20635         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20636         conversion.
20637
20638         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20639
20640         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20641         #71320.
20642
20643         * iltests.il: Add regression test for #71320.
20644
20645 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20646
20647         * mini.c (mono_codegen): Fix installation of profiler hooks.
20648
20649         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20650
20651 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20652
20653         * mini.h, mini.c, cfold.c: optimize access to enum
20654         readonly fields, too. Eval conditional branches if possible
20655         to perform unreachable code removal in more cases.
20656
20657 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20658
20659         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20660
20661         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20662         code manager.
20663
20664         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20665         WinXP DEP. Fixes #71244.
20666
20667 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20668
20669         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20670
20671 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20672
20673         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20674
20675 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20676
20677         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20678         changes.
20679
20680         * mini.h: Bump AOT version.
20681
20682         * mini.h (MonoCompile): Change exvar to a hash table.
20683
20684         * mini.c: Allocate a separate exvar for each handler block.
20685
20686         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20687
20688         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20689         ex var with the pending exception and only throw if the two are equal.
20690         Fixes #68552.
20691         
20692         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20693
20694         * mini-x86.c: Fix warnings.
20695
20696         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20697         used by all the ports now.
20698
20699         * aot.c: Add write-symbols and save-temps options.
20700
20701 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20702
20703         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20704
20705 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20706
20707         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20708         operations.
20709
20710         * tramp-s390.c: Check vtable slot belongs to the domain.
20711
20712         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20713         as per other platforms.
20714
20715         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20716
20717 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20718
20719         * driver.c: we don't run the Main() code in a subthread anymore.
20720
20721 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20722
20723         * mini.c: added experimental rtc support in the statistical
20724         profiler: if the user has the permission, more accurate statistics
20725         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20726         The MONO_RTC value must be restricted to what the linux rtc allows:
20727         power of two from 64 to 8192 Hz.
20728
20729 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20730
20731         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20732
20733 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20734
20735         * mini-ppc.c: better icache flush for smp.
20736
20737 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20738
20739         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20740
20741         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20742         amd64 port, not yet used.
20743
20744 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20745
20746         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20747         a struct type.
20748
20749 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20750
20751         * driver.c: Added --security option to activate the security manager.
20752         Right now this will allow code generation for declarative demands and
20753         is disabled when AOT is specified.
20754         * mini.c: Add code generation for declarative security demands.
20755         * mini.h: Add mono_use_security_manager as an extern gboolean.
20756
20757 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20758
20759         * aot.c (mono_compile_assembly): Speed up compilation a bit by
20760         emitting more dense assembly code.
20761
20762         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
20763         exception throwing stuff.
20764
20765 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20766
20767         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
20768         dead code.
20769
20770         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
20771         left in by mistake.
20772
20773         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
20774         fixed.
20775
20776         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
20777
20778         * tramp-*.c: Only patch vtable slots if the object is in the current
20779         domain. Fixes appdomain-unload.exe.
20780
20781         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
20782         
20783         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
20784         x86 branch.
20785
20786 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20787
20788         * mini.c (reverse_branch_op): New helper function.
20789
20790         * mini.c (optimize_branches): Run the new optimization only on 
20791         platforms which support it. Also reverse all kinds of branches.
20792
20793         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
20794
20795         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
20796         a throw statement.
20797
20798         * mini.c (optimize_branches): Reverse not-equals branches if the false
20799         bblock is a throw. This happens a lot of time with argument checking in
20800         corlib.
20801
20802         * mini.c (mono_codegen): Add support for placing basic blocks after
20803         the function epilogue.
20804
20805         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
20806         function epilogue.
20807         
20808 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
20809
20810         * mini.c (setup_stat_profiler): Only set this up if the platform
20811         supports ITIMER_PROF.
20812
20813 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20814
20815         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
20816         previous patch.
20817
20818         * inssel.brg: Fix a warning.
20819
20820 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
20821
20822         * mini.c: added support for statistical profiler 
20823         (run with: --profile=default:stat).
20824
20825 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
20826
20827         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
20828
20829         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
20830
20831         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
20832         related to global registers from the amd64 port.
20833
20834 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
20835
20836         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
20837
20838         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
20839         with global registers.
20840         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
20841
20842         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
20843
20844 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
20845
20846         * debug-mini.c (encode_value): Fix off-by-one.
20847
20848         * aot.c (encode_value): Likewise.
20849
20850         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
20851
20852 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
20853
20854         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
20855         AOT.
20856
20857         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
20858         
20859         * aot.c (emit_method_info): Increase size of temp buffer.
20860
20861         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
20862         the AOT case.
20863
20864 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
20865
20866         * aot.c (emit_method_info): Fix build.
20867         
20868         * aot.c: Further rework of the AOT file format to reduce the size of
20869         the method info data.
20870
20871         * mini.h: Bump AOT file format version.
20872
20873 2004-12-27  Martin Baulig  <martin@ximian.com>
20874
20875         * mini.c (mini_get_method): New static method; call
20876         mono_get_method_full() and mono_get_inflated_method().
20877         (mono_method_to_ir): Use mini_get_method() instead of
20878         mono_get_method_full(). 
20879
20880 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
20881
20882         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
20883
20884 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
20885
20886         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
20887
20888         * inssel-amd64.brg: Add some optimization rules.
20889
20890 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
20891
20892         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
20893         standard not GC'd stuff is fine.
20894
20895 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
20896
20897         * aot.c: Rework the AOT file format to get rid of most of the global
20898         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
20899
20900         * mini.h: Bump AOT file format version.
20901         
20902 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
20903
20904         * mini.h: Bump AOT file format version.
20905
20906         * aot.c (mono_aot_is_got_entry): New function to determine if an 
20907         address is inside a GOT.
20908
20909         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
20910
20911         * cpu-pentium.md: Increase the maximum size of some instructions which
20912         might involve a got access.
20913         
20914         * mini.c (get_method_from_ip): Another debug helper function.
20915
20916         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
20917         when got var accesses are created during the decompose phase.
20918
20919         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
20920
20921         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
20922         argument mini_compile_method and to MonoCompile, and use this to
20923         determine whenever a given method is compiled for AOT. This allows the
20924         other methods compiled during AOT compilation to be free of AOT stuff,
20925         so the backends does not need to add special support for them by
20926         creating a fake GOT etc.
20927
20928         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
20929         longer needed.
20930
20931 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20932
20933         * mini.c (mono_method_to_ir): It turns out that some of the
20934         x-appdomain wrappers are lax with types, so just ignore this for
20935         all wrappers.
20936
20937         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
20938         at the vtable->klass. If it is non-shared code we can just use the
20939         vtable.
20940
20941 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
20942
20943         * mini-ppc.c: access MonoDomain from tls, too.
20944
20945 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
20946
20947         * declsec.c: Removed unused variable (and related warning ;-)
20948
20949 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20950
20951         * iltests.il: New test for LDELEMA on an array of ref types.
20952
20953         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
20954         all ldelema's on reftypes.
20955         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
20956         it was the wrong place to put it.
20957
20958         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
20959         register to pop to make this cleaner, at the request of Paolo.
20960
20961 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20962
20963         * mini-ops.h (OP_GETHASHCODE): New op.
20964
20965         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
20966
20967         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
20968         operation.
20969
20970         For a microbenchmark, this reduces the cost of Hashtable.get_Item
20971         by 25%.
20972         
20973         * mini-x86.c (mono_arch_output_basic_block): Rather than
20974
20975         add ebp, 4
20976
20977         Emit
20978
20979         pop edx
20980
20981         The first is 3 bytes while the second is 1. This saves 36 kb on
20982         mscorlib, quite a big saving. When bootstraping mcs, I was able to
20983         see a small boost because of icache locality.
20984
20985         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
20986
20987 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
20988
20989         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
20990         started code sharing with the generic code.
20991
20992 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
20993
20994         * mini-ppc.c, cpu-g4.md: added code for direct access to
20995         tls data slots.
20996
20997 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
20998
20999         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21000          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21001         to OP_TLS_GET.
21002
21003 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21004
21005         * declsec.c|h: Added functions to cache the declarative stack modifiers
21006         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21007         structure.
21008         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21009         created. Register internal calls for System.Security.SecurityFrame::
21010         _GetSecurityFrame and _GetSecurityStack.
21011         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21012         the definitions for the new stack walk/callback mechanism.
21013         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21014         first security frame for LinkDemands and InheritanceDemands) and
21015         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21016         from lupus.
21017         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21018         walk initialization (lupus).
21019
21020 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21021
21022         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21023         idiom.
21024         (handle_loaded_temps): Do not create a temporary variable for
21025         things that we know are temps. They will never be modified.
21026         (mono_spill_call): Set MONO_INST_IS_TEMP
21027         (mono_emulate_opcode): ditto
21028         (emit_tree): ditto
21029         (mono_method_to_ir.CEE_DUP): ditto
21030
21031 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21032
21033         * mini.c (type_to_eval_stack_type): Make this handle the void type
21034         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21035         (emit_tree): use ip_in_bb to special case some common idioms
21036         Update all callers to pass in the IP.
21037         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21038
21039         This gives us a nice 2% speedup in mcs bootstrap.
21040
21041         * mini-x86.c (peephole_pass): Peephole pass to make
21042         mov  [foo], eax
21043         push [foo]
21044
21045         into
21046
21047         mov [foo], eax
21048         push eax
21049
21050         * mini.c (ip_in_bb): new method.
21051         (mono_method_to_ir): use this method rather than doing the hash
21052         lookup ourselves.
21053
21054         * linear-scan.c (mono_linear_scan): When expiring actives, you
21055         don't need to keep around variables that expire on this
21056         instruction. This makes it so that:
21057              a = b + 1
21058         will turn into:
21059              store (ebx add (ebx, 1))
21060         which will become
21061              add ebx, 1
21062
21063 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21064
21065         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21066         combination to avoid doing two copies. Fix up problems with previous
21067         patch.
21068
21069         * mini.c: Fix 64 bit warnings.
21070
21071         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21072
21073 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21074
21075         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21076         changes from the x86 code.
21077
21078         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21079
21080 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21081
21082         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21083         throwing code to reduce its size, unify the AOT and non-aot code and 
21084         get rid of relocations in the AOT case.
21085
21086         * mini-x86.h mini.c exceptions-x86.c 
21087         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21088         raise corlib exceptions which doesn't require relocations in the 
21089         caller.
21090
21091         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21092
21093 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21094
21095         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21096         needed.
21097
21098         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21099         in the AOT case.
21100
21101 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21102
21103         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21104         with add function when used from Inc/dec atomic 
21105         functions. Re-enabled optimization on x86.
21106         * mini-ops.h: renamed atomic_add functions to
21107         allow _add to match the Interlocked::Add and
21108         _add_next to match Interlocked::Inc/Dec.
21109
21110 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21111
21112         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21113         linking of BBs to the end BB, and enabled SSAPRE also with
21114         consprop and copyprop (which was prevented by that bug).
21115
21116 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21117
21118         * mini-x86.c: disabling the Interlocked optimizing code. 
21119
21120 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21121
21122         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21123         file version check.
21124         
21125 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21126
21127         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21128         interlocked optimization due lack of support on x86, rewrote 
21129         exchange to take into account that base may be in eax.
21130         
21131         xsp works again; activated Interlocked optimizing code.
21132         
21133 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21134
21135         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21136
21137 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21138
21139         * mini-ops.h: Add new opcodes.
21140
21141         * mini.h: Add new patch types. Add got_var to MonoCompile.
21142
21143         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21144         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21145         make it work with all kinds of patchable code.
21146
21147         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21148         address of the GOT, and referencing entries in the GOT.
21149
21150         * mini.c: Add code to load the GOT address if needed by an opcode.
21151
21152         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21153         independent AOT code on the x86 using an elf-style Global Offset Table.
21154
21155 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21156
21157         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21158
21159 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21160
21161         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21162         when running xsp.
21163
21164 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21165
21166         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21167         of Interlocked:Increment/Decrement/Add as inline ops.
21168         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21169
21170 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21171
21172         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21173         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21174
21175 2004-12-12  Duncan Mak  <duncan@ximian.com>
21176
21177         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21178         again. `patch_info->table_size' is no longer valid after Zoltan's
21179         commit #37636.
21180
21181 2004-12-12  Martin Baulig  <martin@ximian.com>
21182
21183         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21184         if we are the "real" method, ie. not an inlined method inside it.
21185
21186 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21187
21188         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21189         before we look in the special fields table. This fixes
21190         ../tests/thread-static-init.cs.
21191
21192 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21193
21194         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21195         for Array get_Rank and get_Length. Fixes bug #70465.
21196
21197 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21198
21199         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21200         separate structure to reduce the size of MonoJumpInfo.
21201
21202 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21203
21204         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21205
21206 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21207
21208         * mini.c (mini_get_inst_for_method): Changed to allow ports
21209         to return a MonoInst instead of opcode 
21210         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21211         
21212         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21213         Allow ports to return a created MonoInst instead of op-code, will enable
21214         new optimizations.
21215         (renamed mini_get_opcode_for_method to better reflected the functionality)
21216
21217 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21218
21219         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21220
21221 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21222
21223         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21224         Fixes #69985.
21225
21226 2004-12-08  Martin Baulig  <martin@ximian.com>
21227
21228         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21229         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21230
21231 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21232
21233         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21234         correctly.
21235
21236         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21237         arithmetic.
21238
21239 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21240
21241         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21242
21243 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21244
21245         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21246         bug introduced by the previous patch.
21247
21248 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21249
21250         * mini-ppc.c, objectc.cs: handle large structs passed by value
21251         (fixes bug #69972).
21252
21253 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21254
21255         * mini-ppc.c: OP_ARGLIST implementation from
21256         Geoff Norton  <gnorton@customerdna.com>.
21257
21258 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21259
21260         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21261         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21262
21263 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21264
21265         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21266
21267 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21268
21269         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21270         support.
21271
21272 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21273
21274         * mini-sparc.c: Zero out localled-ed memory.
21275
21276         * iltests.il: Add tests for zeroing out localloc-ed memory.
21277
21278 2004-12-04  Martin Baulig  <martin@ximian.com>
21279
21280         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21281         mono_method_get_signature_full().       
21282
21283 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21284
21285         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21286         and some utility functions (always for SSAPRE), integrated SSAPRE.
21287         * mini.h: Likewise.
21288         * driver.c: Added ssapre option.
21289         * ssa.c: Small fix on OP_ARG handling.
21290         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21291         * Makefile.am: Likewise.
21292
21293 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21294
21295         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21296         now in the xp code.
21297
21298         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21299         icall.
21300
21301 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21302
21303         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21304         
21305         * cpu-s390.md : Increase instruction length of oparglist.
21306
21307         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21308
21309 2004-11-30  Martin Baulig  <martin@ximian.com>
21310
21311         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21312         virtual generic methods.  We call a special helper_compile_generic_method()
21313         icall to retrieve the method from the vtable, inflate and compile
21314         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21315
21316         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21317
21318 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21319
21320         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21321
21322 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21323
21324         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21325         Fixes #69929.
21326
21327 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21328
21329         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21330         platforms with PIC aot.
21331
21332 2004-11-28  Martin Baulig  <martin@ximian.com>
21333
21334         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21335         Fixes gen-112.cs.
21336
21337 2004-11-28  Martin Baulig  <martin@ximian.com>
21338
21339         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21340         the result of mono_type_get_underlying_type() to check whether
21341         we're byref.
21342
21343 2004-11-26  Martin Baulig  <martin@ximian.com>
21344
21345         * mini.c
21346         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21347         in the g_assert().
21348
21349 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21350
21351         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21352         the same way as the other arguments so they won't get clobbered.
21353
21354         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21355         calls through R11 since it is clobbered by the trampoline code.
21356
21357 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21358
21359         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21360         pick up in-tree mscorlib.dll.
21361
21362 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21363
21364         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21365
21366         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21367         runtime data/code are now stored in a table similar to the GOT in ELF. 
21368         This allows the code itself to be position independent.
21369
21370         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21371         loading changes.
21372
21373         * aot.c: Attach ELF type (object/function) directives to all global
21374         symbols.
21375
21376         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21377
21378         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21379
21380         * mini-amd64.h: Turn on PIC AOT code.
21381
21382         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21383         returning the offset within an OP_AOTCONST instruction where the GOT
21384         offset needs to be added.
21385
21386         * mini.h: Bump AOT file format version.
21387
21388 2004-11-25  Martin Baulig  <martin@ximian.com>
21389
21390         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21391         uninflated generic methods.
21392
21393 2004-11-25  Martin Baulig  <martin@ximian.com>
21394
21395         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21396
21397 2004-11-24  Martin Baulig  <martin@ximian.com>
21398
21399         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21400         original klass (this only applies for generic instances).
21401
21402 2004-11-24  Martin Baulig  <martin@ximian.com>
21403
21404         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21405         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21406         that array).
21407
21408 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21409
21410         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21411         localloc. Fixes #69678.
21412
21413         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21414         
21415 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21416
21417         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21418         used SSE registers on pinvoke calls. Fixes #69774.
21419
21420 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21421
21422         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21423         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21424
21425 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21426
21427         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21428         Refer directly to the mcs/ tree.
21429
21430 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21431
21432         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21433         Check if a trampoline for a synchronized method is required. 
21434
21435 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21436
21437         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21438         with localloc if needed. Throe arithmetric exception in
21439         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21440         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21441
21442 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21443
21444         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21445         types before switching on type.  Fixes #69622.
21446
21447 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21448
21449         * Makefile.am (check-local): New.  Integrate into 'make check'.
21450         (MCS,RUNTIME): Define using in-tree mono and mcs.
21451         (ILASM): New.
21452         (%.exe): Use $(ILASM).
21453
21454 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21455
21456         * mini-ppc.c: adjust initial prolog size (bug #69691).
21457
21458 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21459
21460         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21461         #69664.
21462
21463 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21464
21465         * Makefile.am (clean-local): Rename from 'clean'.
21466
21467 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21468
21469         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21470         to mono_arch_is_int_overflow. 
21471         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21472         SIGFPE events.
21473
21474 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21475
21476         * declsec.c|h: New files to support declarative security attributes.
21477         Added function to check if a method has (applicable) security.
21478         * mini.c|h: Add check for declarative security attributes in
21479         mono_method_check_inlining.
21480         * Makefile.am: Added declsec.c and declsec.h to the build.
21481
21482 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21483
21484         * mini.c, mini.h: update to keep dynamic code info per-domain.
21485
21486 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21487
21488         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21489         (mini_init): Get rid of it from here too.
21490
21491 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21492
21493         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21494         implemented OP_RETHROW (patch by Geoff Norton
21495         <gnorton@customerdna.com>).
21496
21497 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21498
21499         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21500         between appdomains.  Fixes appdomain-unload on PPC.
21501
21502 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21503
21504         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21505         mini-exceptions.c: handle the new wrapper types.
21506         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21507         token value as a MonoClass* when compiling a wrapper.
21508         mono_jit_create_remoting_trampoline now takes an additional
21509         MonoRemotingTarget parameter.
21510         
21511 2004-11-10  Martin Baulig  <martin@localhost>
21512
21513         * mini.c (mono_method_to_ir): Use `generic_container->context'
21514         rather than creating a new one.
21515
21516 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21517
21518         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21519
21520         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21521
21522 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21523
21524         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21525         the experimental aot cache stuff.
21526
21527 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21528
21529         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21530         mini-exceptions.c: update to exception clause structure changes.
21531
21532 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21533
21534         * exceptions-x86.c (throw_exception): Fix warnings.
21535
21536         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21537         for OP_RETHROW.
21538
21539 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21540
21541         * exceptions-sparc.c (get_throw_exception): Really fix this.
21542
21543 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21544
21545         * tramp-*.c: we no longer support icalls without wrappers, so
21546         a bit of code can be removed here
21547
21548 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21549
21550         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21551         patch.
21552
21553         * cpu-sparc.md: Add op_rethrow.
21554
21555         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21556
21557         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21558
21559         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21560         * mini-ops.h: Add OP_RETHROW.
21561
21562         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21563
21564         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21565
21566 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21567         
21568         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21569         Makes the output much easier to read
21570
21571 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21572
21573         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21574         prevents another huge leak when compiling with ssa. Secondly, the
21575         performance of doing this rather than freeing the lists is much
21576         better. GList does a lock every time you allocate a list link,
21577         so that it can use a memory pool. So, it is better to just use
21578         a memory pool of our own.
21579         
21580         * ssa.c, linear-scan.c: replace g_list_remove_link with
21581         g_list_delete.  The remove one does not free the GList, so we were
21582         leaking memory. On -O=all --compile-all with corlib, this cut down
21583         3 MB of allocations.
21584
21585 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21586
21587         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21588
21589         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21590
21591         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21592         into a new function mono_create_jit_trampoline ().
21593
21594 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21595
21596         * trace.c (get_spec): Allow tracing of classes without a namespace.
21597
21598 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21599
21600         * mini.c: Fix pointer overwrite in mini_method_compile.
21601
21602 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21603
21604         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21605         The darwin ABI needs some special handling for 1 and 2 byte structs
21606         Lets use lbz/lhz instead of lwz everywhere.
21607         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21608         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21609         Use stb/sth for the former, and put the latter always on stack instead of in
21610         argument registers.
21611
21612 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21613
21614         * trace.c (is_filenamechar): Add '_'.
21615
21616 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21617
21618         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21619
21620         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21621
21622 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21623
21624         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21625         depends on libmonogc. Fixes #68805.
21626
21627 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21628
21629         * mini.c (mono_jit_free_method): Provide extra information for
21630         this error.  Currently this leaks, but will be turned into a
21631         developer option in the future.
21632
21633 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21634
21635         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21636
21637 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21638
21639         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21640         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21641         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21642
21643 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21644
21645         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21646         trampolines for AOT code.
21647
21648 2004-10-22    <vargaz@freemail.hu>
21649
21650         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21651         constructed types. Fixes #68136.
21652
21653 2004-10-21  Martin Baulig  <martin@ximian.com>
21654
21655         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21656         if it returns true, unwind the stack to the call instruction.
21657
21658 2004-10-21    <vargaz@freemail.hu>
21659
21660         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21661
21662         * mini.h: Bump AOT version number.
21663
21664         * objects.cs: Add another test for unbox trampolines.
21665
21666         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21667         valuetype methods.
21668
21669 2004-10-20    <vargaz@freemail.hu>
21670
21671         * driver.c: Add SHARED to the set of optimizations tested.
21672
21673         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21674
21675         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21676         used by CEE_NEWARR.
21677
21678         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21679
21680 2004-10-20  Martin Baulig  <martin@ximian.com>
21681
21682         * mini-exceptions.c (mono_handle_exception): Call
21683         mono_debugger_handle_exception() to tell the debugger about
21684         catch/finally clauses.
21685
21686 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21687
21688         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21689
21690         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21691         #68447.
21692
21693 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21694
21695         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21696         methods as their native size, fixed bug #57543, #57545.
21697         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21698         This saves a temporary register and mullw call down into 1 (minor perf
21699         increase for cases like sum = sum * 5;  This use to translate into:
21700             li r11,5
21701             mullw r28,r28,r11
21702         It now translates to
21703             mulli r28,r28,5
21704
21705 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21706
21707         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21708         #68388.
21709
21710 2004-10-11  Martin Baulig  <martin@ximian.com>
21711
21712         * mini.c (mono_method_to_ir): If we're a generic method, get the
21713         MonoGenericContainer from our MonoMethodNormal and create a
21714         MonoGenericContext from it.
21715
21716 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21717
21718         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21719
21720         * basic-long.cs: Add test for checked i8->i2 cast.
21721
21722 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21723
21724         * inssel-ppc.brg: added a couple of speedup rules.
21725
21726 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21727
21728         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21729         to speed up rebuilds.
21730
21731 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21732
21733         * mini-s390.c: Minor fix to OP_OR_IMM.
21734
21735 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21736
21737         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21738         better. Fixes appdomain-unload.exe on sparc.
21739
21740 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21741
21742         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21743         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21744         see bug 67324.
21745
21746 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21747
21748         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21749
21750 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21751
21752         * mini.c: Always generate a field read/write wrapper for members
21753         of the class MarshalByRefObject since the actual instance could
21754         be a CBO.
21755
21756 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21757
21758         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
21759
21760 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21761
21762         * driver.c mini.h trace.c: Move the setting of the main assembly into
21763         a separate function called mono_trace_set_assembly () and call it after
21764         actually loading the main assembly. Fixes #66872.
21765
21766 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21767
21768         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
21769         using the code manager.
21770
21771 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21772
21773         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
21774
21775 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21776
21777         * cpu-amd64.md: Fix bug in previous patch.
21778         
21779         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
21780         #66650.
21781
21782 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
21783
21784         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21785         mini-exceptions.c: updates for changed stack walk interface.
21786
21787 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21788
21789         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
21790
21791 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
21792
21793         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
21794
21795 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
21796
21797         * driver.c (mini_regression_list): Do not call mono_assembly_close 
21798         since assemblies can't be unloaded.
21799         
21800 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21801
21802         * cpu-amd64.md: Fix more instruction lengths.
21803
21804         * cpu-amd64.md: Fix lengths of some instructions.
21805
21806 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
21807
21808         * inssel.brg: Make the array ldelema check aot friendly.
21809
21810 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21811
21812         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
21813
21814         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
21815
21816 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
21817
21818         * mini-x86.c: Fix build.
21819
21820         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
21821         mono_type_get_underlying_type () helper function to simplify code.
21822         
21823 2004-09-09  Martin Baulig  <martin@ximian.com>
21824
21825         * mini-amd64.c: Don't access `type->data.klass' directly, call
21826         mono_class_from_mono_type() instead since the type may be a
21827         generic instance.
21828
21829 2004-09-09  Martin Baulig  <martin@ximian.com>
21830
21831         * mini-amd64.c (get_call_info): Fix support for generic instances.
21832         (add_valuetype): Use mono_class_from_mono_type() to get the class
21833         since we can be a generic instance.
21834
21835 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
21836
21837         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
21838
21839 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21840
21841         * liveness.c: reset spill costs on each scan: bug 62107
21842
21843 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
21844
21845         * exceptions-sparc.c (mono_arch_find_jit_info): remove
21846         unnecessary line that doesn't compile
21847
21848 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
21849
21850         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
21851         trampolines, make them call an error function so people can fix their
21852         code.
21853
21854 2004-09-06  Martin Baulig  <martin@ximian.com>
21855
21856         * mini.c (mono_method_to_ir): When initializing locals, handle a
21857         generic instances like a valuetype if it's a valuetype and like a
21858         class if it's a class.
21859
21860 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21861
21862         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
21863         stack. Fixes #64674.
21864
21865         * exceptions.cs: Add test for unwinding of call arguments.
21866
21867 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
21868
21869         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
21870         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
21871         set the carry/borrow flag). The sparc and s390 implementations
21872         can now use optimized versions (and simplify the code). ppc bugfixes.
21873
21874 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21875
21876         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
21877
21878 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
21879
21880         * inssel-amd64.brg: Remove leftover 32 bit rule.
21881
21882         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
21883
21884 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
21885
21886         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
21887         mono_arch_find_jit_info functions into a new function. Fix a memory
21888         leak.
21889
21890         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
21891         refactored code.
21892         
21893 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21894
21895         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
21896         as well.
21897         
21898         * exceptions.cs: Add array size tests.
21899
21900         * mini.c: Allocate a separate icall wrapper for each arity of 
21901         mono_array_new_va. Fixes #59509.
21902
21903         * exceptions.cs: Add testcase for 64578.
21904
21905         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
21906
21907         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
21908         
21909 2004-09-02  Martin Baulig  <martin@ximian.com>
21910
21911         * mini.c (mono_method_to_ir): When initializing the locals, call
21912         handle_initobj() on the generic instance itself, not its
21913         underlying type.
21914
21915 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21916
21917         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
21918         MonoJitInfo for dynamic methods.
21919
21920         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
21921
21922         * mini.c: Add support for freeing JIT data for dynamic methods.
21923         
21924 2004-09-01  Martin Baulig  <martin@ximian.com>
21925
21926         * mini-x86.c (is_regsize_var): Added support for generic
21927         instances.
21928         (mono_arch_emit_prolog): Make this compile again, use
21929         `x86_push_imm_template (code)'.
21930
21931 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
21932
21933         * mini-x86.c: make all push_imm instructions that get
21934         patched always emit the long form
21935
21936 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
21937
21938         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
21939         in a per-domain hash.
21940
21941         * mini-amd64.c (merge_argument_class_from_type): Handle generic
21942         types.
21943
21944 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
21945
21946         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
21947         work.
21948         
21949         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
21950         work.
21951
21952         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
21953         Beginnings of SSE2 support.
21954
21955         * exceptions.cs: Add more tests for checked int<->uint casts.
21956
21957 2004-08-28  Martin Baulig  <martin@ximian.com>
21958
21959         * mini-x86.c (mono_arch_instrument_epilog): Added support for
21960         generic instances.
21961
21962         * mini.c
21963         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
21964         Handle generic instances recursively.
21965
21966 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21967
21968         * iltests.il: test for conv.u8 on a constant
21969
21970 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21971
21972         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
21973         LCONV_x4 (shrun_32 (membase)).
21974
21975 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21976
21977         * inssel-x86.brg: c&p rules for push/setret of long
21978
21979 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21980
21981         * inssel-x86.brg: c&p rules for compare (base, regvar) and
21982         compare (regvar, base)
21983
21984         * inssel-x86.brg: more burg love
21985
21986         * inssel.brg: more cleanup
21987
21988         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
21989
21990 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21991
21992         * basic-long.cs, basic-calls.cs: new tests for optimization.
21993
21994 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
21995
21996         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
21997         patch.
21998
21999 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22000
22001         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22002         
22003 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22004
22005         * inssel.brg (mini_emit_memcpy): use 
22006         NO_UNALIGNED_ACCESS to disable memcpy optimization
22007
22008 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22009
22010         * mini-amd64.c: Handle generic types in various places.
22011
22012         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22013
22014 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22015
22016         * mini.c (handle_box): Fix warning.
22017
22018         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22019
22020         * mini-amd64.h: Enable the emit_state optimization.
22021
22022         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22023
22024         * mini-amd64.c: Add some new 64 bit peephole opts.
22025
22026         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22027
22028         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22029
22030         * mini-amd64.c: Register allocator fixes.
22031
22032         * mini.c: Add an optimization to emit_state to avoid allocation of new
22033         registers on some platforms.
22034
22035 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22036
22037         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22038
22039         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22040         allocation. Fixes #63085.
22041
22042         * basic-long.cs: Add new regression test.
22043
22044         * mini-amd64.c: Register allocator improvements.
22045
22046 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22047
22048         * mini-amd64.c (read_tls_offset_from_method): Add another code
22049         sequence.
22050
22051         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22052         instruction sequence for nullifying class init trampolines.
22053
22054         * objects.cs: Add new regalloc test.
22055
22056         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22057
22058 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22059
22060         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22061         
22062         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22063         arguments.
22064
22065         * driver.c: Fix profiling after TLS changes.
22066         
22067         * driver.c (mono_main): Set mono_stats.enabled if needed.
22068
22069         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22070         CEE_BOX.
22071
22072 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22073
22074         * mini-x86.c: use a 1 op rather than a 2 op tls access
22075         instruction -> faster.
22076
22077 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22078
22079         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22080         x86 backend.
22081
22082 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22083
22084         * exceptions-sparc.c (throw_exception): fix typo
22085
22086 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22087
22088         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22089         set tree->dreg correctly with tls. Allow any
22090         register to be used.
22091
22092         * mini-x86.c (read_tls_offset_from_method): add new code
22093         generation pattern seen with GCC.
22094
22095
22096 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22097
22098         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22099         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22100         exceptions-sparc.c: fix some performance issues in exception
22101         handling and setting of the stack trace for exceptions that were
22102         already thrown.
22103
22104 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22105
22106         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22107         x86 backend.
22108         
22109         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22110         registers.
22111
22112 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22113
22114         This patch inlines tls access, when possible.
22115         
22116         * mini.h: new arch functions for TLS intrinsics.
22117         All platforms updated with a stub.
22118
22119         * mini.c: use the new intrinsics
22120
22121         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22122         arch specific intrinsic for tls variables
22123
22124 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22125
22126         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22127         under windows.
22128
22129 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22130
22131         * mini.c: thread local allocation
22132
22133 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22134
22135         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22136
22137         * Makefile.am: Link against the static version of libmonogc.
22138         
22139         * Makefile.am: Link the static versions of the convenience libraries
22140         into the mono executable.
22141
22142         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22143
22144 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22145
22146         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22147         on integer overflow.
22148
22149         * mini-amd64.c: Reorganize function call code.
22150
22151         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22152
22153 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22154
22155         * inssel-x86.brg: use xor eax,eax.
22156         
22157         * basic.cs: new tests
22158
22159 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22160
22161         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22162         in exception throwing code.
22163         
22164 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22165
22166         * inssel-x86.brg: use xor esi,esi.
22167
22168 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22169
22170         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22171         can trace methods compiled during mini_init () too.
22172
22173         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22174         CEE_CONV_U4.
22175
22176 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22177
22178         * Makefile.am: static link on x86 (r=zoltan)
22179
22180 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22181
22182         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22183         code since it causes some programs to fail.
22184
22185 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22186
22187         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22188
22189 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22190
22191         * mini.c: ovfops_op_map - add STACK_OBJ case for
22192         CONV_I 
22193         * basic.cs: add test_0_pin_string as test
22194         case for above.
22195
22196 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22197
22198         * Makefile.am: build C# if srcdir != builddir
22199
22200 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22201
22202         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22203         fall-through blocks.
22204
22205 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22206
22207         * driver.c: enable loop by default again and include abcrem in -O=all.
22208
22209 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22210
22211         * iltests.il: Add some localloc tests.
22212
22213         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22214
22215         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22216         Fixes #62574.
22217
22218         * inssel-amd64.brg: Add some optimizations.
22219
22220         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22221         for gcc-3.4.
22222
22223         * Makefile.am: Statically link mono against libmono on AMD64.
22224         
22225         * mini-amd64.c inssel-amd64.brg: Optimizations.
22226
22227 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22228
22229         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22230
22231         * tramp-amd64.c: Patch calling code in trampolines.
22232
22233 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22234
22235         * mini-amd64.c: pinvoke struct passing fixes.
22236
22237 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22238
22239         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22240         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22241
22242 2004-08-05  Duncan Mak  <duncan@ximian.com>
22243
22244         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22245         CEE_LDELEM_ANY.
22246
22247 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22248
22249         * mini-amd64.c (emit_move_return_value): Move return value for normal
22250         calls too.
22251
22252 2004-08-05  Martin Baulig  <martin@ximian.com>
22253
22254         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22255         `type->type'; just modify `type' itself when dealing with enums
22256         and generic instances.
22257         (check_call_signature): Make `simple_type' a `MonoType *'.
22258
22259 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22260
22261         * mini.c: Use OP_PADD to add offsets to addresses.
22262
22263         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22264
22265 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22266
22267         * mini-sparc.c (mono_arch_emit_epilog): fix check
22268         for folding last op into restore instruction
22269
22270 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22271
22272         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22273         helper methods using the code manager.
22274         
22275         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22276
22277         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22278
22279 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22280         
22281         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22282           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22283
22284         * mini-s390.c: fix tail processing
22285
22286 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22287
22288         * mini-ppc.c: mul.ovf.un exception name fix.
22289
22290 2004-08-03  Martin Baulig  <martin@ximian.com>
22291
22292         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22293         instances; before jumping to `handle_enum', also modify `ptype'.
22294
22295 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22296
22297         * cpu-sparc.md: fcall maximal length too small.
22298
22299 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22300
22301         * mini-amd64.c mini.h: Add initial support for passing/returning 
22302         structures to/from pinvoked methods.
22303
22304 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22305
22306         * mini-ppc.c: reg allocator fix.
22307
22308 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22309
22310         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22311
22312         * inssel.brg: Optimize memset on 64 bit machines.
22313
22314         * mini-amd64.c: Fix some vararg cases.
22315
22316 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22317
22318         * mini-s390.c: Corrected macro in emit_float_to_int
22319
22320         * s390-abi.cs: Tests to exercise the s390 ABI
22321
22322 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22323
22324         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22325         caller saved regs.
22326
22327         * basic.cs: Add a test for add.ovf.un.
22328
22329 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22330
22331         * mini-sparc.c: add case for OP_IDIV_UN
22332
22333 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22334
22335         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22336         
22337         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22338
22339 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22340
22341         * basic.cs: regression tests.
22342
22343         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22344         regressions.
22345
22346 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22347
22348         * basic.cs: Add a new test.
22349
22350         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22351         and AOT. Various fixes and optimizations.
22352
22353         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22354
22355 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22356
22357         * mini-ppc.c: make sure temp regs are not used for global reg
22358         allocation.
22359
22360 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22361
22362         * cpu-sparc.md: conv_i8 fix for 64bits
22363
22364         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22365
22366 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22367         
22368         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22369         add opcode for cmp BYTE PTR [eax], imm.
22370
22371         * inssel.brg: Make memcpy and memset takes bases.
22372
22373 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22374
22375         * *-amd64.*: More AMD64 work.
22376         
22377 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22378
22379         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22380         add a compare-not-equal opcode.
22381         
22382 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22383
22384         * mini.c: Use mono_init_from_assembly instead of mono_init.
22385         
22386 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22387
22388         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22389
22390         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22391
22392         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22393
22394         * inssel.brg: 64 bit fixes.
22395
22396         * mini.h (MonoCallInst): Add some AMD64 specific data.
22397
22398         * mini.h: Add some OP_P opcodes.
22399
22400 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22401
22402         * basic.cs: tests for 61797 and 61740
22403
22404 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22405
22406         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22407         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22408
22409 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22410
22411         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22412
22413         * *-amd64*.*: Ongoing AMD64 work.
22414
22415 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22416
22417         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22418
22419         * *-amd64*: Ongoing AMD64 work.
22420
22421         * mini-arch.h: Add AMD64 support.
22422
22423         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22424
22425         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22426
22427         * mini-ops.h: Add new opcodes.
22428
22429         * Makefile.am: Add AMD64 support.
22430
22431         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22432         rules into the inssel-long*.brg files.
22433
22434         * *-amd64.*: Add beginnings of AMD64 backend.
22435
22436 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22437
22438         * mini.c (print_dfn): commenting out the code that prints
22439         the cil. With -O=deadce, this makes -v -v crash.
22440         
22441         * cpu-pentium.md: make checkthis have a length of 2
22442
22443 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22444
22445         * mini-sparc.h: fix implementations of __builtin
22446         functions for Sun compiler for V9.
22447
22448 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22449
22450         * mini.c: use the new stelem.ref wrapper
22451         * exceptions.cs, arrays.cs: new stelem.ref tests
22452
22453 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22454
22455         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22456         new XSP should work with these changes).
22457
22458 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22459         
22460         * inssel-{long32,x86,}.brg: trivial optimizations.
22461         
22462 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22463
22464         * mini.c: load value when emitting box operation in
22465         constrained calls.
22466
22467 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22468
22469         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22470         is one byte shorter than cmp DWORD PTR [eax], 0.
22471
22472 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22473
22474         * inssel-ppc.brg: arguments on the stack are always
22475         relative to the stack pointer (spotted by Neale Ferguson).
22476
22477 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22478
22479         * exceptions-x86.c: delay appending the method name to the trace until
22480         after mono_jit_info_table_find is called, as this gets the real
22481         MonoMethod.
22482
22483 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22484
22485         * aot.c: register roots
22486
22487 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22488
22489         * aot.c : I could just use PLATFORM_WIN32 flag.
22490
22491 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22492
22493         * aot.c : Reverting the previous fix. This time it broke linux build.
22494
22495 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22496
22497         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22498
22499 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22500
22501         * mini.c (handle_stack_args): Remove some more debugging code.
22502         
22503         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22504
22505         * driver.c mini.h aot.c: Allow additional options to be specified with
22506         --aot and pass them to mono_compile_assembly.
22507
22508         * aot.c: Add experimental code to AOT compile all loaded assemblies
22509         on demand and save the code into a cache in the filesystem.
22510
22511         * aot.c: Add support for more wrapper methods.
22512         
22513         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22514         58863.
22515
22516         * cpu-*.md: Remove removed opcodes.
22517
22518         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22519         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22520         related icalls to marshal.c.
22521
22522 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22523
22524         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22525
22526         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22527
22528         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22529
22530 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22531         * liveness.c: If liveness is recomputated we need to reset the information
22532         for each variable. This way, if the liveness range has been narrowed
22533         by optimizations that happened after the last computation, we can return
22534         a smaller range.
22535         
22536         For example, if you have
22537         
22538         {
22539                 int i = 0;
22540                 
22541                 // Tons of code that does not affect i
22542                 
22543                 i = foo ();
22544                 ...
22545         }
22546         
22547         i = 0 is dead code and will be removed by SSA. However, when
22548         linear scan gets to the code, i will still appear to be live
22549         throughout the entire block. This prevents good register allocation.
22550
22551 2004-07-06  Martin Baulig  <martin@ximian.com>
22552
22553         * debug-mini.c (mono_debug_init_method): Allow
22554         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22555         (mono_debug_add_icall_wrapper): New method.
22556
22557         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22558
22559 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22560
22561         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22562         optimization.
22563
22564 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22565
22566         * aot.c (mono_aot_load_method): Fix loading of debug info.
22567
22568 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22569
22570         * aot.c: Add logging support.
22571
22572 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22573
22574         * mini.h: Add prototype for mono_print_method_from_ip.
22575
22576         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22577
22578         * inssel.brg: 64 bit fixes.
22579
22580         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22581         inssel-long32.brg.
22582
22583         * Makefile.am: Add SPARC64 support.
22584
22585 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22586
22587         * aot.c: Fix alignment problems on 32 bit platforms.
22588
22589 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22590
22591         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22592         SPARC64.
22593
22594         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22595         problems.
22596
22597         * mini.h: Bump AOT file version. Some 64 bit fixes.
22598
22599 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22600
22601         * inssel-sparc.brg: Add new rule to avoid register moves.
22602
22603         * inssel.brg: Add ldind_to_load_membase helper function.
22604
22605 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22606
22607         * mini.c: OffsetToStringData intrinsic.
22608         
22609 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22610
22611         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22612
22613         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22614         regression tests.
22615
22616         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22617 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22618
22619         * mini.c: reinstated mono_compile_get_interface_var()
22620         on x86, too, since the change breaks the Gtk# build there as well.
22621
22622 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22623
22624         * driver.c: remove loop from the default optimizations: it seems to
22625         interact badly with some of the other options (see bug #60613).
22626
22627 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22628
22629         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22630         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22631
22632 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22633
22634         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22635         vararg-using methods.
22636
22637 2004-06-21  Martin Baulig  <martin@ximian.com>
22638
22639         * mini/mini-exceptions.c
22640         (mono_handle_exception): Added `gpointer original_ip' argument.
22641         After calling mono_unhandled_exception(), call
22642         mono_debugger_unhandled_exception() and if that returns true,
22643         restore the context and return.
22644
22645 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22646
22647         * mini-ppc.c: prefer the use of relative branches so
22648         they won't need to be patched in aot code (patch from Patrick Beard).
22649
22650 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22651
22652         * aot.c: patch from Patrick Beard to make the output assembly
22653         more correct for the MacOSX assembler. Small tweak to
22654         generate sane images on Linux/PPC, too.
22655
22656 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22657
22658         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22659         case until bug #59509 is fixed (shows up in #60332).
22660
22661 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22662
22663         * mini.c: make sure the needed wrappers are compiled, too, with
22664         precomp.
22665
22666 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22667
22668         * driver.c: remove NPTL reference in --version output.
22669
22670 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22671
22672         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22673         generate valid assembly for the Mach-O assembler.
22674
22675 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22676
22677         * driver.c: don't include abcrem in the all optimization specifier
22678         since it slows down jit compilation too much for now.
22679
22680 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22681
22682         * mini.c: use BIGMUL only if both operands have the same signage.
22683         * iltests.il: Test for bug 60056. (errors related to signage in
22684         BIGMUL).
22685
22686         r=lupus.
22687
22688 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22689
22690         * mini.c, aot.c: memory leak fixes.
22691
22692 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22693
22694         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22695
22696 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22697
22698         * Makefile.am: remove the -static hack completely, it links in
22699         statically glib as well.
22700
22701 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22702
22703         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22704         * exceptions.cs: make it compile with new mcs/csc.
22705
22706 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22707         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22708         and added relevant test case.
22709
22710 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22711
22712         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22713         regressions in gtk-sharp.
22714
22715 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22716
22717         * exceptions.cs: New regression tests.
22718
22719         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22720
22721 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22722
22723         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22724
22725 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22726
22727         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22728
22729         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22730
22731 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22732
22733         * mini.c (mono_jit_runtime_invoke): Init class in this
22734         method instead of trusting mono_jit_compile_method to
22735         do the work (because wrappers can be in object class)
22736
22737 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22738
22739         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22740
22741         * basic-long.cs: New regression test.
22742
22743 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22744
22745         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22746         and div/rem checks.
22747
22748 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22749
22750         * Makefile.am: fix miguel's change to build mono statically against
22751         libmono (track build dependencies).
22752
22753 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22754
22755         * cfold.c: Some glib versions do not have G_MININT32.
22756
22757 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
22758
22759         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
22760         with precision of tan, atan, sin and cos, and implemented related
22761         regressions tests (fixes bug 54467, but one new problem appeared and
22762         is not fixed yet).
22763
22764 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22765
22766         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
22767
22768         * exceptions.cs: Add test for constant folding && division by zero.
22769
22770         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
22771         since driver.c is in libmono too, so the optimization was useless.
22772
22773         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
22774         variable to driver.c so the compiler can emit more efficient code to
22775         access them.
22776
22777 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22778
22779         * Makefile.am: don't distribute generated inssel.[ch] files.
22780
22781 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22782
22783         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
22784         into the default appdomain. Fixes #58707.
22785
22786         * jit-icalls.c: Remove the broken approximation for truncl, doing
22787         no conversion is better.
22788
22789         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
22790         Fixes #58863.
22791
22792 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22793
22794         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
22795         of the mcrxr instruction which is not available on some processors
22796         even if it's documented to be. Implement add and sub overflow correctly
22797         (still not complete for long unsigned). Speed up icalls a bit.
22798
22799 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
22800
22801         * mini.c (mono_jit_compile_method_with_opt): Make sure that
22802         we run .cctor in the current domain instead of target_domain.
22803         
22804         Fixes bug #58558, .cctor not being called in -O=shared.
22805
22806 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22807
22808         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
22809
22810 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
22811
22812         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
22813         which can be done with an imm8, do it that way.
22814         (mono_arch_output_basic_block): ditto for a jmp
22815         (mono_arch_emit_prolog): Computate maximum offset of a label.
22816
22817 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
22818
22819         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
22820         now tries to allocate prefered physical reg's for virtual
22821         regs. This reduces the number of emited spills/loads with
22822         20-30% on our core assemblies.
22823
22824 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22825
22826         * jit-icalls.c: truncl() is not needed and trunc() is
22827         the correct thing to do anyway (bug #58287).
22828
22829 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
22830
22831         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
22832         if available.
22833
22834 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
22835
22836         * driver.c: enable loop optimizations by default.
22837
22838 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22839
22840         * mini-x86.c: fix calc of max loop size when aligning loops start.
22841
22842 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
22843
22844         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
22845         the stack.
22846
22847 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
22848
22849         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
22850         should set carry.
22851
22852         * basic-long.cs: Add tests for add/subtract of immediates with carry.
22853
22854         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
22855         
22856         * mini.c (inline_method): Allways inline some wrappers even if the cost
22857         is too large. Fixes #58785.
22858
22859         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
22860         
22861 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
22862
22863         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
22864         (crichton@gimp.org). Beginning of support for sparc/linux.
22865
22866         * mini-sparc.c: Optimize retrieval of LMF address.
22867
22868 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
22869
22870         * exceptions-ppc.c:  handle alloca in methods with clauses.
22871
22872 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
22873
22874         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
22875
22876 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
22877
22878         * mini.c: Delegate most of the abort signal work to 
22879           mono_thread_request_interruption, which also handles Stop and Suspend
22880           states.
22881
22882 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
22883
22884         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
22885         supports the save/restore lmf opcodes.
22886
22887 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
22888
22889         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
22890         by gcc-3.4 as well.
22891
22892         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
22893
22894 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22895
22896         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
22897         methods which contain array accesses.
22898
22899         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
22900         boundaries. Fixes #58537.
22901
22902         * iltests.il: Add regression test for #58537.
22903
22904 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22905
22906         * mini-x86.c (mono_arch_local_regalloc): Last part of
22907         fix for bug #58633 (releasing register to early).
22908
22909 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
22910
22911         * basic-long.cs: Add new regression test.
22912
22913 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22914
22915         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
22916         register too early on the chain.
22917
22918 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22919
22920         * mini.c (create_helper_signature): Use a helper function to reduce
22921         the code which needs to be written. Also set the calling convention of
22922         icalls on windows. Fixes #57840.
22923
22924 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22925
22926         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
22927         exceptions-ppc.c: added helper function to get the instruction address
22928         from a signal handler context.
22929
22930 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22931
22932         * helpers.c: use g_get_tmp_dir. Invokes happyness 
22933         from gonzalo.
22934
22935 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22936
22937         * helpers.c: Add new env variable to pass args to objdump.
22938         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
22939
22940 2004-05-17  Radek Doulik  <rodo@ximian.com>
22941
22942         * Makefile.am (common_sources): added abcremoval.h so it get
22943         disted and daily mono packages on go-mono.com will build again
22944
22945 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
22946
22947         * abcremoval.c: Fixed coding style, added copyright header.
22948
22949         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
22950
22951         * mini.h: Added prototype for abc removal main function.
22952
22953         * build_relations_propagation_table.pl: Added copyright header.
22954
22955 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22956
22957         * basic-long.cs: reg test for complex ceq_long bug.
22958
22959 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22960
22961         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
22962         reg in long and clob case (bug #58343). Fixed/added comments.
22963
22964 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
22965
22966         * mini.c (mono_jit_runtime_invoke): Follow new convention
22967         of calling the invoke method with an function pointer.
22968
22969 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
22970
22971         * ChangeLog: Fix author of memory leak patch.
22972
22973 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
22974
22975         * Makefile.am: fix make dist as well...
22976
22977
22978 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
22979
22980         * cfold.c: Made so that conversions from pointer to int4 are no-ops
22981         on archs where pointers are 4 bytes long.
22982
22983         * Makefile.am: Added abcremoval.c source file.
22984
22985         * abcremoval.c: Added abcremoval.c.
22986
22987         * abcremoval.h: Added abcremoval.h.
22988
22989         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
22990
22991         * inssel.brg: Enabled bounds check removal.
22992
22993         * mini.c: Added support for abcrem optimization.
22994
22995         * mini.h: Added abcrem optimization label.
22996
22997         * driver.c: Added support for abcrem optimization.
22998
22999         * propagated_relations_table.def: Added propagated_relations_table.def.
23000
23001 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23002
23003         * mini.c, cfold.c: fix style.
23004
23005 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23006
23007         * mini.c: handle issue with the low-level implementation of
23008         some long opcodes (bug #54209).
23009
23010 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23011
23012         * basic.cs: test for my new cmov stuff.
23013
23014 2004-05-13      Patrik Torstensson
23015
23016         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23017         opt and added peephole documentation.
23018
23019 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23020
23021         * tramp-ppc.c: rewrote the generic trampoline code.
23022
23023 2004-05-11      Patrik Torstensson
23024
23025         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23026
23027 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23028
23029         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23030
23031         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23032         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23033
23034         * mini.c: Add new icalls for AsAny marshalling.
23035
23036 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23037
23038         * tramp-ppc.c, mini-ppc.c: more cleanups.
23039
23040 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23041
23042         * mini.c: no warnings.
23043
23044 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23045
23046         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23047
23048 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23049
23050         * mini.c: In the thread abort signal handler, if the thread is in the
23051         process of being stoped, don't throw the Abort exception, just stop the
23052         thread.
23053
23054 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23055
23056         * tramp-ppc.c: removed old code.
23057
23058 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23059
23060         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23061         do some simple speed optimizations on ppc.
23062
23063 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23064
23065         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23066         and large offsets in load/store.
23067
23068 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23069
23070         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23071         it causes regressions.
23072
23073 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23074
23075         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23076         support.
23077
23078 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23079
23080         * jit-icalls.c: remove warnings.
23081         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23082         speedups for unsafe code.
23083
23084 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23085
23086         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23087
23088 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23089
23090         * basic-calls.cs: Add new regression test.
23091
23092         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23093         more portable.
23094
23095         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23096
23097         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23098         is no longer used.
23099
23100 2004-05-06      Patrik Torstensson
23101
23102         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23103         long reg allocation in any reg (not only eax:edx) and implemented 
23104         long shl/shr ops in asm instead of helpers.
23105
23106 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23107
23108         * mini-sparc.h: Fix warnings.
23109
23110         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23111         stack.
23112
23113         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23114         separate statement for clarity.
23115
23116         * mini-sparc.c: Update status.
23117
23118 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23119
23120         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23121         here.
23122
23123 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23124
23125         * inssel-ppc.brg: another small pre-release workaround:
23126         we don't do overflow detection for long_sub_un.
23127
23128 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23129
23130         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23131         (also works around a weird ppc bug: 57957).
23132
23133 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23134
23135         * tramp-ppc.c: trampoline fixes.
23136
23137 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23138
23139         * mini-ppc.c: fixed typos.
23140
23141 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23142
23143         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23144         at the top of the stack. Fixed typos. Use a frame registers
23145         for all the methods with exception clauses.
23146
23147 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23148
23149         * exceptions-ppc.c: restore fp registers.
23150
23151 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23152
23153         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23154         order from the stack top (moved the stack room to save the
23155         return value for trace after the param area). Fixed corruption
23156         in restoring registers on unwind.
23157
23158 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23159
23160         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23161
23162 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23163
23164         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23165         and prolog/epilog for methods that use it. Allow
23166         enough param area room for varargs methods. Fix miguel's
23167         breakage in exception handling.
23168
23169 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23170
23171         * Makefile.am: run genmdesc only on current arch.
23172
23173 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23174
23175         * exceptions-x86.c:
23176         * mini-x86.h: fix the build on windows.
23177
23178 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23179
23180         * 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.
23181
23182         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23183
23184         * mini-exceptions.c: New file.
23185         
23186         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23187         Move some parts of the x86 exception handling code to an 
23188         arch-independent file so it can be shared with other ports.
23189
23190 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23191
23192         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23193
23194 2004-04-26  David Waite  <mass@akuma.org>
23195
23196         * driver.c: remove comma from end of enumeration declaration
23197
23198 2004-04-26  Jackson Harper  <jackson@ximian.com>
23199
23200         * driver.c: parse config file before loading first assembly. This
23201         allows the user gac to be enabled/disabled. 
23202         
23203 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23204
23205         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23206         simpler mechanism: we do not care what is encoded initially
23207         (branch absolute or relative), we care about the code and its
23208         target.  I kept the old code for reference for now.
23209
23210         The new code tries first to determine if the jump is anywhere in
23211         the -/+32 absolute meg range, if it succeeds, it encodes using the
23212         absolute branch;  If not, it tried to find something in the
23213         relative range, if not, it uses the handle_thunk code. 
23214
23215 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23216
23217         * exceptions-ppc.c: use the correct ip register on macosx.
23218
23219 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23220
23221         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23222
23223 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23224
23225         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23226         Raise exception on integer divide by zero by hand since the hw
23227         doesn't support it. Handle NaNs in FP compares.
23228
23229 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23230
23231         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23232         code reducing duplication between the platforms and enabled
23233         signal exception handling (on linux for now).
23234
23235 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23236
23237         * exceptions-ppc.c: more macosx support.
23238
23239 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23240
23241         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23242
23243 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23244
23245         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23246
23247 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23248
23249         * iltests.il: more tests.
23250
23251 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23252
23253         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23254         vars as well.
23255
23256 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23257
23258         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23259
23260 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23261
23262         * liveness.c: Mark variables as volatile in all basic blocks reachable
23263         from exception clauses.
23264
23265 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23266
23267         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23268         inlining.
23269
23270 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23271
23272         * iltests.il, basic.cs: more tests for regalloc.
23273
23274 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23275
23276         * iltests.il: Some tests for register allocation modifications
23277         I have locally.
23278
23279 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23280
23281         * exceptions.cs: Add regression test for bug #56782.
23282
23283         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23284         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23285         the beauty of fixing the same thing in 5 different files...
23286
23287 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23288
23289         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23290         methods.
23291
23292 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23293
23294         * mini.c: Add support for STRWLPARRAY marshalling convention.
23295
23296 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23297
23298         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23299         to init the context to setup the regs pointer).
23300
23301 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23302
23303         * exceptions-ppc.c: more exceptions work.
23304
23305 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23306
23307         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23308         not allowed.
23309
23310 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23311
23312         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23313         can use the memory directly.
23314
23315         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23316
23317         add x86_add_membase, x86_sub_membase, x86_mul_membase
23318
23319 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23320
23321         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23322         GENERAL_REGS they were also hardcoded for all PPC ports.
23323
23324         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23325
23326         Remove hard-coded limit for floating point registers, use
23327         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23328
23329         Notice that in MacOS X calling conventions you can fit a lot more
23330         floating point values in registers, so I should update the PInvoke
23331         test to excercise the passing of floating point values on the
23332         stack (currently broken).
23333         
23334 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23335
23336         * tramp-ppc.c (create_trampoline_code): Added
23337         JUMP_TRAMPOLINE_SIZE. 
23338         (ppc_magic_trampoline): Follow the pattern from
23339         x86_magic_trampoline: if code is set to zero, return. 
23340         (create_trampoline_code): Always pass MonoMethod to the jump
23341         trampoline, before it was passing a null.
23342         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23343         share the code with mono_arch_create_jit_trampoline. 
23344
23345         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23346         implemented.
23347         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23348         implemented.  
23349
23350         * cpu-g4.md: Added length for jmp instruction, the worst case
23351         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23352         for save_lmf).
23353
23354 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23355
23356         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23357
23358 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23359
23360         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23361         before each IL instruction.
23362
23363         * mini.c (CEE_BOX): Fix warnings.
23364
23365 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23366
23367         * mini.c: removed a few unused vars and extra whitespace.
23368
23369 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23370
23371         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23372         checks.
23373         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23374         index.
23375         (OP_GETCHR): use the above
23376         (CEE_LDELEMA): use the above.
23377
23378         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23379         version of the generic impl.
23380         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23381         (CEE_LDELEMA): use the above.
23382
23383 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23384
23385         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23386         Fixes #56317.
23387
23388         * iltests.il: Added new regression test for #56317.
23389
23390 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23391
23392         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23393         under NetBSD. Fixes #56450.
23394
23395         * liveness.c (update_gen_kill_set): Fix previous patch.
23396
23397 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23398
23399         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23400
23401 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23402
23403         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23404         ldsfld and ldsflda.
23405
23406         * inssel-sparc.brg: Add more optimizations.
23407
23408         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23409
23410 2004-04-01  Martin Baulig  <martin@ximian.com>
23411
23412         * mini.c (handle_box): New static function; moved the
23413         implementation of CEE_BOX here.
23414         (mono_method_to_ir): Added `constrained_call' variable.
23415         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23416         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23417         mono_method_get_constrained() to get the method.
23418
23419 2004-04-01  Martin Baulig  <martin@ximian.com>
23420
23421         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23422         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23423         (mono_method_to_ir): We don't need these macros anymore since
23424         mono_class_get_full() already takes care of it. 
23425
23426 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23427
23428         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23429         use @function (as doesn't accept #function here) and check the return
23430         value of system and stop if fails.
23431
23432 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23433
23434         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23435
23436 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23437
23438         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23439
23440         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23441
23442         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23443         #56223.
23444
23445         * basic-long.cs: Add test for negation of Int64.MinValue.
23446
23447 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23448
23449         * mini-sparc.c: Update status.
23450
23451         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23452
23453         * exceptions-sparc.c: Fix return value in filters.
23454
23455         * inssel-sparc.brg: Fix register allocation in some rules.
23456
23457 2004-03-28  Martin Baulig  <martin@ximian.com>
23458
23459         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23460         if neccessary.  
23461
23462 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23463
23464         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23465         
23466         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23467         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23468         remove unused conv_u4 opcode.
23469
23470         * mini-x86.c: Remove valgrind workaround since it slows down things
23471         even when mono is not run under valgrind.
23472
23473 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23474
23475         * mini-sparc.c: Update status.
23476
23477         * inssel-sparc.brg: Add some optimizations.
23478
23479         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23480         future delay slot filling. Add support for varargs, tail calls and JMP.
23481
23482         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23483         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23484
23485         * inssel.brg: Fix register allocation in OP_ARGLIST.
23486
23487         * inssel.brg: Fix warnings.
23488
23489 2004-03-25  Martin Baulig  <martin@ximian.com>
23490
23491         * mini.c (inflate_generic_field): Removed.
23492         (mini_get_method): Removed, use mono_get_method_full(),
23493         (mini_get_class): Removed, use mono_class_get_full().
23494         (mono_method_to_ir): Pass our generic context to
23495         mono_field_from_token().        
23496
23497 2004-03-25  Martin Baulig  <martin@ximian.com>
23498
23499         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23500         of a `MonoMethod *'.
23501         (mini_get_method): Take a `MonoGenericContext *' instead
23502         of a `MonoMethod *'.
23503         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23504         a new local variable called `generic_context' which holds the
23505         current `MonoGenericContext *'; use it to lookup things.
23506
23507 2004-03-24  Martin Baulig  <martin@ximian.com>
23508
23509         * mini.c (mini_get_class): New static method; if we're inside a
23510         generic instance, inflate the class if neccessary.
23511         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23512
23513 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23514
23515         * iltests.il: New regression test for #55976.
23516
23517         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23518         #55976.
23519
23520 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23521
23522         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23523         output.
23524
23525 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23526
23527         * liveness.c: Consider SSA stores as well as loads when making vars
23528         volatile.
23529
23530         * exceptions.cs: New regression tests for register allocation.
23531         
23532 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23533
23534         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23535         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23536           domain lock only to protect puntual access to data structures.
23537           Added access lock for sighash, jit_icall_hash_name, 
23538           jit_icall_hash_addr and domain->code_mp.
23539
23540 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23541
23542         * driver.c: Print SIGSEGV handling method.
23543
23544         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23545
23546         * mini.c (setup_jit_tls_data): Handle case when this is called
23547         multiple times for a thread.
23548
23549         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23550         is different from fbxx_un. Fixes #54303. Also use constants instead of
23551         magic numbers in a lot of places.
23552
23553 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23554
23555         * exceptions.cs: Fix cctor test when --regression is used.
23556
23557 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23558
23559         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23560         for Linux/ppc.
23561
23562 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23563
23564         * inssel-ppc.brg: fixed register assignments for some rules.
23565
23566 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23567
23568         * exceptions.cs: Add test for exceptions in static constructors.
23569
23570         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23571         static constructors outside the domain lock. Fixes #55720.
23572
23573 2004-03-17  Martin Baulig  <martin@ximian.com>
23574
23575         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23576         (inflate_generic_field): Take the `MonoMethod *' instead of the
23577         `MonoClass *' and added support for generic method.
23578         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23579         have a `field->parent->gen_params', only inflate the field if it's
23580         an open constructed type.
23581
23582 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23583
23584         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23585         exception object instead of the preconstructed ones.
23586
23587 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23588
23589         * mini.c: reverted changed to sigsegv_signal_handler commited
23590         accidentally in the previous patch.
23591
23592 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23593
23594         * mini.c:
23595         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23596         running --aot with an old assembly.
23597
23598 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23599
23600         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23601         point values.
23602
23603         * mini-sparc.c: Add support for v9 branches with prediction.
23604
23605 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23606
23607         * mini.c (mini_init): #warning is GNUC only
23608
23609         * mini-sparc.h: implement __builtin_frame_address
23610         and __builtin_return_address for Sun C compiler
23611
23612 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23613
23614         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23615
23616 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23617
23618         * basic-calls.cs: Add test for unaligned byref long argument passing.
23619
23620         * mini-ops.h: Add sparcv9 compare and branch instructions.
23621
23622         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23623         v9 instructions if we have a v9 cpu.
23624
23625         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23626         registers for global allocation.
23627
23628         * exceptions-sparc.c: Fixes.
23629         
23630 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23631
23632         * liveness.c (mono_analyze_liveness): Optimized version.
23633
23634         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23635
23636         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23637         sparc work.
23638
23639         * basic-float.cs basic-calls.cs: New regression tests.
23640
23641 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23642
23643         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23644         sigaltstack implementation.
23645
23646         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23647         
23648         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23649         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23650
23651 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23652
23653         * mini.c: Fix warnings.
23654         
23655         * mini.c (mono_resolve_patch_target): New function which contains the
23656         arch independent part of the patching process.
23657
23658         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23659         patching code to a separate function.
23660
23661 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23662
23663         * mini.c (add_signal_handler): ifdef out on Windows
23664
23665 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23666
23667         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23668         cpu-sparc.md: Add exception handling support + other fixes.
23669
23670         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23671         typed GC detection in --version.
23672
23673         * basic.cs exceptions.cs: New regression tests.
23674
23675         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23676         the arch specific code can store data during a compilation.
23677
23678         * mini-ops.h: Add OP_SETFRET.
23679
23680         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23681         function, register a separate icall for each arity, so the icalls can
23682         get a wrapper.
23683         
23684         * mini.c (mono_print_tree): Print negative offsets in a more readable
23685         form.
23686         
23687         * mini.c: Make signal handling work on sparc.
23688         
23689         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23690
23691         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23692
23693         * jit-icalls.c: Emulate truncl by aintl on solaris.
23694
23695         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23696
23697 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23698
23699         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23700
23701 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23702
23703         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23704         a MarshalByRef type, inline a method that performs the check, taking into
23705         account that the object can be a proxy. Also implemented tow new opcodes:
23706         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23707         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23708         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23709
23710 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23711
23712         * mini-ppc.c: if a relative branch displacement is too big
23713         but it points to and area reachable with an absolute branch, 
23714         avoid the thunks.
23715
23716 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23717
23718         * mini.c: optimize small copies in cpblk.
23719
23720 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23721
23722         * basic-calls.cs basic-float.cs: New regression tests.
23723
23724         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23725         negative offsets from %fp. Implement localloc. Fix local register 
23726         allocation. Fix the case when the this argument needs to be saved to
23727         the stack. Implement some missing opcodes.
23728
23729 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23730
23731         * mini.c (mini_method_compile): Reenable global regalloc in methods
23732         with exception handlers.
23733
23734         * linear-scan.c (mono_varlist_sort): Fix warning.
23735
23736         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23737
23738         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23739         regalloc costs.
23740
23741         * liveness.c: Make all variables uses in exception clauses volatile, to
23742         prevent them from being allocated to registers. Fixes #42136.
23743
23744 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23745
23746         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23747         causes regressions.
23748
23749         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23750         argument to mono_arch_regalloc_cost.
23751
23752         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
23753         precisely.
23754
23755 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
23756
23757         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
23758         Make the cost of allocating a variable to a register arch dependent.
23759
23760         * basic-calls.cs: Fix compilation of tests.
23761         
23762         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
23763         helper function to cut back on the number of #ifdefs needed.
23764
23765         * mini-ppc.c: Fix compilation.
23766
23767         * basic-calls.cs: New regression tests.
23768
23769         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
23770
23771         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
23772         of l0 since that is callee saved.
23773
23774         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
23775         to virtual calls.
23776
23777         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
23778         of delay instruction.
23779
23780         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
23781
23782         * mini.h (MonoCallInst): Add 'virtual' flag.
23783
23784         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
23785
23786 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23787
23788         * *.cs: New regression tests.
23789
23790         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
23791         work.
23792
23793         * mini.c (mono_runtime_install_handlers): Fix build.
23794
23795         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
23796         'signal_stack_size' members.
23797
23798         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
23799         alternate signal stack.
23800
23801         * exceptions-x86.c: Add stack overflow handling.
23802
23803         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
23804         functions to arch independent code.
23805
23806         * mini.c (mono_print_tree): Print more detailed info for load_membase
23807         opcodes.
23808         
23809 2004-02-23  Martin Baulig  <martin@ximian.com>
23810
23811         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
23812
23813 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23814
23815         * mini-x86.c: fixed reg allocation for div/rem.
23816
23817 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
23818
23819         * driver.c (mono_main): Report some configuratio options on --version.
23820
23821 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
23822
23823         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
23824         low in the address space. Correctly flush memory in thunks where we
23825         output native code.
23826
23827 2004-02-20  Martin Baulig  <martin@ximian.com>
23828
23829         * mini.c (mini_get_method): New static method; inflate all generic
23830         methods and methods in open generic instances.
23831         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
23832         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
23833
23834 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23835
23836         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
23837
23838         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
23839
23840 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
23841
23842         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
23843
23844         * mini-sparc.c (flushi mono_arch_output_basic_block): make
23845         it compile using Sun's compiler.
23846
23847 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23848
23849         * 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.
23850
23851         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
23852
23853 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
23854
23855         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
23856         code.
23857         * mini-ppc.c: handle calls outside of the allowed range with thunks
23858         allocated using the code manager.
23859         * tramp-ppc.c: use the code manager to hold generated native code.
23860         Fixed the magic trampoline to just patch vtable entries.
23861
23862 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
23863
23864         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
23865         independent file.
23866
23867 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
23868
23869         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
23870         PPC.
23871
23872         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
23873         if we have a working __thread implementation.
23874
23875         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
23876         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
23877
23878 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
23879
23880         * mini-x86.c: Fix compilation under gcc 2.
23881         
23882 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
23883
23884         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
23885         contains a call to the wrapped function.
23886
23887         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
23888         OP_<CALL>_IMM opcodes, and use them under X86.
23889         
23890         * mini.c (mono_jit_find_compiled_method): Fix warning.
23891
23892         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
23893
23894         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
23895
23896         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
23897         functionality to mini.c.
23898
23899         * mini.c (mono_create_jump_trampoline): New function to create a jump
23900         trampoline. Return a compiled method instead of a trampoline if it
23901         exists. Add a cache for jump trampolines.
23902
23903         * mini.c (mono_jit_find_compiled_method): New function to return a
23904         compiled method if it exists.
23905
23906         * mini-x86.c: Call mono_create_jump_trampoline instead of 
23907         mono_arch_create_jit_trampoline.
23908
23909         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
23910         a jump trampoline. Fixes #52092.
23911         
23912 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
23913
23914         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
23915         which is not up-to-date. Add check_corlib_version () instead.
23916
23917         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
23918         have to call it.
23919         
23920         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
23921         since newer valgrind versions do not need it.
23922
23923         * mini.c (mono_jit_compile_method_with_opt): New helper function to
23924         compile a method with a given set of optimizations.
23925
23926         * mini.c: Compile icall wrappers on-demand instead of at startup.
23927
23928         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
23929         wrapper for an icall.
23930
23931 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
23932
23933         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
23934         #54063.
23935
23936         * iltests.il: Add test for non-empty stack before switch instruction.
23937
23938 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
23939
23940         * mini.c: Add support for new stringbuilder marshalling conventions.
23941
23942         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
23943
23944 2004-02-01  Martin Baulig  <martin@ximian.com>
23945
23946         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
23947         in `ginst->mtype_argv'.
23948
23949 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
23950
23951         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
23952         facilitate grepping.
23953
23954 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
23955
23956         * mini.c: fixed buglet in initobj generic implementation for references.
23957
23958 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
23959
23960         * Makefile.am: make the version script conditional.
23961         * jit-icalls.c: handle missing truncl().
23962
23963 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
23964
23965         * exceptions.cs: Add more tests for double->int conversion.
23966
23967         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
23968         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
23969
23970 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
23971
23972         * driver.c: make --verbose --version emit an error
23973         if the loaded corlib doesn't match the runtime version.
23974
23975 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
23976
23977         * mini-ppc.h: export ppc_patch().
23978         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
23979         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
23980         on par or better than on MacOSX.
23981
23982 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
23983
23984         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
23985         mono_lookup_pinvoke_call.
23986
23987         * mini-x86.c: Under windows, the default pinvoke calling convention is
23988         stdcall. Fixes #52834.
23989
23990         * mini.c (optimize_branches): Add an upper bound to the number of
23991         iterations to prevent infinite loops on strange loops. Fixes #53003.
23992
23993 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23994
23995         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
23996         and ISINST. Fixes #52093.
23997
23998         * objects.cs (test_0_vector_array_cast): New tests.
23999         
24000 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24001
24002         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24003         checking in Array.Set ().
24004
24005         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24006         #52590.
24007
24008         * object.cs (test_0_multi_array_cast): New regression test.
24009
24010 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24011
24012         * exceptions-ppc.c: fix build on Linux/PPC.
24013
24014 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24015
24016         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24017         running under valgrind.
24018         (x86_magic_trampoline): Fix build bustage.
24019
24020         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24021         negative values as well. This is needed for the encoding of the line number
24022         info, since sometimes the line numbers are not in increasing order.
24023
24024 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24025
24026         * cpu-pentium.md (localloc): Increase the size of the localloc 
24027         instruction since it is a loop under Win32.
24028
24029         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24030         allocation.
24031
24032 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24033
24034         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24035         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24036         Max Horn (max@quendi.de). Fix file names in comments.
24037
24038 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24039
24040         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24041         avoid stack overflow.
24042         (replace_usage): Avoid uninitialized variable warnings.
24043
24044         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24045         and taking the address of valuetype variables.
24046
24047 2004-01-03  Patrik Torstensson
24048
24049         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24050         for other purposes than FP later on.
24051
24052 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24053
24054         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24055         of tail calls.
24056
24057 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24058
24059         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24060
24061 2003-12-30  Patrik Torstensson <p@rxc.se>
24062
24063         * mini-x86.h: Decreased number of availiable fp regs.
24064         Solves corner cases with FP spilling.
24065
24066 2003-12-23  Patrik Torstensson <p@rxc.se>
24067
24068         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24069         for floating point stack tracking / spilling on x86. 
24070         Fixes bug #49012.
24071         
24072         * basic-float.cs: added float mul overflow test.
24073
24074 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24075
24076         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24077
24078 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24079
24080         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24081         supports for cond branches that overflow the immediate
24082         overflow offset. mcs can compile simple programs.
24083
24084 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24085
24086         * exceptions-ppc.c: exception handling support wip:
24087         finally handlers get run on exception.
24088
24089 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24090
24091         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24092         profiling.
24093
24094 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24095
24096         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24097         initial support for stack walking and unwinding.
24098
24099 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24100
24101         * driver.c (mono_main): Make corlib-out-of-sync message more 
24102         descriptive. Also remove verify_corlib call.
24103
24104 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24105
24106         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24107         not overlap with other call's arguments, too.
24108
24109 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24110
24111         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24112         move to arch-specific code the choice of arch-specific
24113         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24114         * mini.c: ensure emulation calls will not interleave
24115         with other calls.
24116
24117 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24118
24119         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24120         the magic trampoline stack frame is dropped before executing
24121         the new method.
24122
24123 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24124
24125         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24126         and integer to fp conversions. Added support for overflowing
24127         arguments on the stack. Reserve a couple more registers as temps.
24128         Added support for aot compilation (as output still needs to be
24129         tweaked, though).
24130
24131 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24132
24133         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24134         Don't overwrite return register in some corner cases.
24135
24136 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24137
24138         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24139         static constructors when AOT compiling.
24140
24141         * driver.c (mono_main): Call mono_check_corlib_version.
24142
24143 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24144
24145         * cpu-g4.md, basic.cs: fixed div target register.
24146
24147 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24148
24149         * mini-ppc.c, basic.cs: shl_imm fix with test.
24150
24151 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24152
24153         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24154         structures by value. Misc fixes.
24155         * objects.cs: more tests.
24156
24157 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24158
24159         * mini-ppc.c: lconv.ovf.i implemented.
24160
24161 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24162
24163         * mini.c:
24164         (mini_init): don't error out if someone already called g_thread_init.
24165
24166 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24167
24168         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24169         to be any type per the spec. Fix abnormal memory usage when
24170         the same object is repeatedly thrown.
24171
24172 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24173
24174         * mini.c: check for overruns in IL code.
24175
24176 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24177
24178         * TODO: Add/remove some todo entries.
24179
24180 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24181
24182         * driver.c (mono_main): Call mono_verify_corlib.
24183
24184 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24185
24186         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24187         This has been moved to mini.c
24188         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24189         type being casted is marshalbyref it could be a proxy, so instead of
24190         emitting the type check code, emit a call to a runtime method that will
24191         perform the check by calling CanCastTo if needed.
24192
24193 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24194
24195         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24196         methods with large stack frames under Win32.
24197
24198 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24199
24200         * Makefile.am: Distribute regression tests.
24201
24202         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24203         at the end instead of inserting each variable into the sorted list.
24204
24205         * linear-scan.c (mono_varlist_sort): New helper function.
24206         
24207 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24208
24209         * mini.c: ensure arguments and locals are within bounds.
24210
24211 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24212
24213         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24214         related fixes.
24215
24216 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24217
24218         * mini.c (mono_cprop_copy_values): Fix crash.
24219
24220         * aot.c: Set verbosity back to 0.
24221         
24222 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24223
24224         * regalloc.c: complete memory leak fix by Laurent Morichetti
24225         (l_m@pacbell.net).
24226
24227 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24228
24229         * driver.c (main_thread_handler): Revert the previous patch.
24230
24231         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24232         under valgrind.
24233
24234         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24235         memory from the memory pool.
24236
24237         * driver.c (main_thread_handler): Turn on all optimizations when
24238         --aot is used.
24239
24240         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24241         an array for better performance.
24242
24243         * regalloc.c (mono_regstate_assign): Fix memory leak.
24244
24245         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24246         serialize the debug info.
24247
24248         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24249         debug info from the serialized representation.
24250
24251         * aot.c: Save debug info into the generated file and load it when 
24252         loading a method.
24253
24254         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24255
24256 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24257
24258         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24259         More FP-related fixes.
24260
24261 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24262
24263         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24264         and register allocation buglet. Hello world now runs.
24265
24266 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24267
24268         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24269         * tramp-ppc.c: fixed class init trampoline.
24270         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24271
24272 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24273
24274         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24275         mini.c: more ppc changes/fixes.
24276
24277 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24278
24279         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24280         Also optimize the case when the arguments are the same in the caller 
24281         and in the callee.
24282
24283         * iltests.il: Add tests for tail calls with valuetype arguments.
24284
24285 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24286
24287         * mini-ppc.c: fixes for struct return type.
24288
24289 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24290
24291         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24292         mono_spillvar_offset() to arch-specific code.
24293
24294 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24295
24296         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24297
24298 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24299
24300         * exceptions-x86.c: Fix stack space leaks.
24301         
24302         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24303         registers from the lmf if the method has save_lmf set.
24304
24305 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24306
24307         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24308         of icall wrappers into InvokeInDomain, since these are now per-domain.
24309
24310 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24311
24312         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24313         make some opcode emulation and intrinsic ops enabled/disabled 
24314         according to the architecture. More fixes.
24315
24316 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24317
24318         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24319
24320 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24321
24322         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24323         arch-specific handling for 'this' and struct return type to
24324         arch-specific code.
24325
24326 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24327
24328         * aot.c: prevent divide by zero error when reporting (it happened with
24329         Accessibility.dll).
24330
24331 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24332
24333         * mini.h (inst_switch): Remove unused macro.
24334
24335 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24336
24337         * aot.c:
24338         (load_aot_module): free 'info->methods' and 'info' properly. No more
24339         "free(): invalid pointer blah" messages when you have an old aot
24340         compiled assembly.
24341
24342 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24343
24344         * jit-icalls.c, mini.c: Added support for context static fields.
24345
24346 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24347
24348         * mini.c (mono_method_blittable): Methods which set LastError are not 
24349         blittable either. Fixes #51108.
24350         
24351 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24352
24353         * mini.c: flush icache.
24354         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24355
24356 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24357
24358         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24359
24360 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24361
24362         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24363         safe on IA32.
24364
24365         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24366         vararg calls.
24367
24368         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24369
24370 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24371
24372         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24373         instruction when the result is discarded.
24374
24375         * iltests.il (test_0_div_regalloc): New regression test.
24376
24377         * arrays.cs: Fix compilation error.
24378
24379 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24380
24381         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24382         float rules to inssel-x86.brg: sane architectures with FP registers
24383         don't need to implement these rules.
24384
24385 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24386
24387         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24388
24389 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24390
24391         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24392         implementation of 32 bit systems.
24393
24394 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24395
24396         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24397         (Jeroen Zwartepoorte).
24398
24399 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24400
24401         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24402         the caller and the callee matches.
24403         
24404         * mini.c (mono_method_to_ir): Add comment.
24405
24406         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24407         signbit is missing on some platforms.
24408
24409 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24410
24411         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24412
24413         * mini.c (setup_jit_tls_data): Call the new function.
24414         
24415         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24416
24417         * mini-x86.c: Add experimental support for fast access to the lmf
24418         structure under NPTL/Linux 2.6.x.
24419
24420 2003-11-06  Martin Baulig  <martin@ximian.com>
24421
24422         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24423         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24424         the debugger.
24425
24426 2003-11-02  Martin Baulig  <martin@ximian.com>
24427
24428         * mini.c (inflate_generic_field): New static method.
24429         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24430         generic instance and the field is declared in a generic type, call
24431         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24432
24433 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24434
24435         * mini.h mini.c (mono_method_same_domain): New function to return
24436         whenever the caller and the callee are in the same domain.
24437
24438         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24439
24440 2003-10-30  Martin Baulig  <martin@ximian.com>
24441
24442         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24443         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24444         method parameters.
24445         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24446         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24447
24448 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24449
24450         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24451         propagation.
24452
24453         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24454         object here, so it is in the correct appdomain etc.
24455
24456 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24457
24458         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24459         already done.
24460         (mono_method_to_ir): Avoid freeing the type created returned from
24461         mono_type_create_from_typespec, since it is put into an internal cache
24462         by the function. Fixes pointer.exe.
24463
24464         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24465         trampolines for icalls and pinvokes as well. Fixes #33569.
24466
24467 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24468
24469         * mini.c: Update after appdomain changes.
24470
24471         * mini.c (mono_jit_compile_method_inner): Allways compile native
24472         method wrappers in the root domain, since there can only be one
24473         instance of them, whose address is stored in method->info.
24474
24475 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24476
24477         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24478         environment variable. Instead detect automatically whenever running
24479         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24480         valgrind.h.
24481
24482 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24483
24484         * trace.c, trace.h: New files that implement the new trace option
24485         parsing. 
24486
24487         * driver.c: Document new --trace options.
24488
24489         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24490         mini-x86.c: Apply:
24491
24492         -       if (mono_jit_trace_calls)
24493         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24494
24495         * mini.h: prototypes.
24496         
24497 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24498
24499         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24500
24501         * mini.c inssel.brg: Implement typedefbyref opcodes.
24502
24503         * mini.c (mono_jit_compile_method): Remove unused local variable.
24504
24505         * mini.c (mono_jit_compile_method_inner): Ditto.
24506         
24507 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24508
24509         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24510         
24511         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24512
24513 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24514
24515         * mini.c (mono_no_aot): Remove unused global variable.
24516
24517         * mini.c: Thread safety fixes.
24518
24519 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24520
24521         * mini.c (mono_create_class_init_trampoline): Add a lock around
24522         class_init_hash_addr.
24523
24524         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24525         #30073.
24526
24527         * mini.c: Decompose the NEWARR instruction before decomposing its
24528         arguments. Fixes #30073.
24529
24530 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24531
24532         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24533         convention.
24534
24535 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24536
24537         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24538
24539         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24540
24541         * driver.c: Add support for compiling icall wrappers to --compile.
24542
24543 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24544
24545         * inssel.brg: The empty value in class->interface_offsets is -1, not
24546         0. Fixes #49287.
24547
24548 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24549
24550         * objects.cs: New test for 'is' operator on an array of interfaces.
24551
24552 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24553
24554         * tramp-ppc.c: update trampoline code to support jumps
24555         and class initialization.
24556
24557 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24558
24559         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24560
24561         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24562
24563         * inssel.brg (OP_UNBOX): Remove unused rule.
24564
24565         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24566         region instead of one for each method. Fixes #47813.
24567
24568 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24569
24570         * exceptions.cs (test_0_nested_finally): New regression test for
24571         nested exception handlers.
24572
24573         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24574
24575         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24576
24577         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24578         inlining.
24579
24580         * mini.c (mono_method_check_inlining): Make the inlining limit 
24581         configurable by an environment variable.
24582         
24583         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24584
24585         * mini.h: Bump AOT file version.
24586
24587         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24588         token, store the image along with the token, since the token might not 
24589         refer to the same image as the method containing the relocation, 
24590         because of inlining.
24591
24592 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24593
24594         * mini.c (mono_precompile_assemblies): New function to compile
24595         all methods in all loaded assemblies.
24596
24597         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24598
24599         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24600         iassign and fassign to int*, since they can contain large negative
24601         values if the register is spilled. Also added some comments. Fixes
24602         #45817.
24603
24604         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24605         under Win32. Fixes #42964.
24606
24607 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24608
24609         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24610
24611         * aot.c: Added support for AOT compiling methods which contain calls
24612         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24613         handled.
24614         
24615         * driver.c (compile_all_methods): Run the compilation in a thread
24616         managed by mono. Fixes #44023.
24617
24618         * mini.c (mono_codegen): Print full method name in verbose output.
24619
24620         * mini-x86.c (mono_arch_patch_code): Fix warning.
24621         
24622         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24623         jumps, since the method we are jumping to might be domain-specific.
24624
24625         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24626
24627 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24628
24629         * inssel.brg: string chars are unsigned.
24630
24631 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24632
24633         * TODO: New todo item.
24634
24635         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24636         which calls mono_runtime_class_init and patches the call site to
24637         avoid further calls.
24638         (mono_arch_create_class_init_trampoline): New arch specific function 
24639         to create a class init trampoline.
24640         (create_trampoline_code): Generalized so it can create
24641         class init trampolines as well.
24642
24643         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24644         (mono_create_class_init_trampoline): New function to create and cache
24645         class init trampolines.
24646         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24647         vtable given the address of a class init trampoline. Used by the
24648         patching process.
24649         (mono_codegen): Generate a call to a trampoline instead of
24650         mono_runtime_class_init in LDSFLD[A].
24651         (mono_codegen): Add relocations for the new trampoline.
24652         
24653         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24654         MONO_PATCH_INFO_CLASS_INIT.
24655
24656         * mini.h: Bump AOT version number.
24657
24658         * aot.c: Create a copy of the loaded code instead of using the original
24659         so methods which call each other will be close in memory, improving
24660         cache behaviour.
24661         
24662         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24663         patch since it breaks the regression tests.
24664         
24665         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24666         for the register saving instruction sequence since the 
24667         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24668
24669 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24670
24671         * TODO: Fix todo item && remove another.
24672
24673 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24674
24675         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24676         previous checkin.
24677
24678         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24679         function of the module.
24680
24681         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24682         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24683         --no-aot command line option.
24684
24685 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24686
24687         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24688         by Bernie Solomon (bernard@ugsolutions.com).
24689
24690         * inssel.brg: Refactor the interface offset table related code into
24691         its separate functions and add support for the AOT case.
24692
24693 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24694
24695         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24696         
24697         * aot.c: Added mono_aot_verbose variable and made all debugging
24698         output depend on the value of this variable.
24699
24700         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24701         method_label and info_label.
24702
24703         * mini.h mini-x86.c aot.c: Added a new relocation type 
24704         MONO_PATCH_INFO_IID for klass->interface_id.
24705
24706         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24707         the MonoJitInfo structure.
24708
24709         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24710         a non-root appdomain in shared mode.
24711
24712 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24713
24714         * aot.c: make aot loader less verbose. Remove free of unused variable.
24715
24716 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24717
24718         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24719
24720         * .cvsignore: Added *.dll.
24721
24722         * mini.c (mono_print_tree_nl): New function callable while debugging.
24723
24724         * mini.c (mono_print_code): Export this.
24725
24726         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24727         patched code.
24728
24729 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24730
24731         * mini.h (MonoCompile): Added 'jit_info' field.
24732
24733         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24734         the cfg structure, since it is needed by the AOT compiler.
24735
24736         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24737
24738         * aot.c: A major rewrite. Changes include:
24739         - save exception tables for methods which have them.
24740         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24741         to g_module_symbol.
24742         - reworked the file format so it is now much smaller and needs
24743         fewer relocation entries.
24744         
24745 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24746
24747         * aot.c (load_aot_module): Fix build bustage on platforms without
24748         Boehm GC.
24749
24750 2003-09-04  Martin Baulig  <martin@ximian.com>
24751
24752         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
24753
24754 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24755
24756         * TODO: Some new optimization ideas.
24757
24758         * aot.c: Move AOT module loading logic here from mono_assembly_open.
24759
24760         * aot.c: Save the optimization flags used to compile the code into
24761         the AOT module.
24762
24763         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
24764         support emitting domain specific code.
24765         
24766         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
24767         no longer domain neutral. It can be made domain neutral by compiling 
24768         with --optimize=shared.
24769
24770         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
24771         between appdomains.
24772
24773         * driver.c mini.h mini.c: New --no-aot debugging option which disables
24774         loading of AOT code.
24775
24776         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
24777         
24778         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
24779         if there is no domain neutrality information.
24780
24781 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
24782
24783         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
24784         format version into the generated library.
24785
24786         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
24787         callee method into the caller since one of them could be shared.
24788
24789         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
24790         system exceptions from AOT code now works.
24791
24792         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
24793         method if it is domain neutral and the callee is not.
24794
24795         * graph.c (cfg_emit_one_loop_level): Fix warning.
24796
24797 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
24798
24799         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
24800         last checkin.
24801
24802 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
24803
24804         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
24805         is needed  by code which is executed before mono_runtime_init ().
24806         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
24807         
24808         * mini.c (mono_thread_abort): Fix warning.
24809         (mono_jit_compile_method): Call static constructor in the AOT case too.
24810
24811         * aot.c (mono_compile_assembly): Fix warning.
24812
24813 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24814
24815         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
24816
24817 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
24818
24819         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
24820
24821         * cpu-pentium.md: Fix the length of call opcodes so they include the
24822         ESP restoring instruction. Fixes #47968.
24823
24824 2003-08-28  Martin Baulig  <martin@ximian.com>
24825
24826         * mini-x86.c (mono_arch_call_opcode): Added support for
24827         MONO_TYPE_GENERICINST.
24828
24829         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
24830
24831 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
24832
24833         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
24834         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
24835
24836         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
24837         metadata_section.
24838
24839 2003-08-26  Martin Baulig  <martin@ximian.com>
24840
24841         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
24842         when reporting an error, set this to the actual error location.
24843         (mono_method_to_ir): Report the correct error location if
24844         get_basic_blocks() returned an error.
24845
24846 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
24847
24848         * mini.c (mono_type_blittable): OBJECT is not blittable.
24849         (mono_method_blittable): Methods which have marshalling descriptors
24850         are not blittable either. Fixes #47842.
24851
24852 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
24853
24854         * driver.c mini.c: Use an environment variable instead of a global 
24855         variable. Also fix the build.
24856
24857         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
24858         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
24859         reporting this. 
24860
24861         * driver.c mini.c: Added --with-valgrind option to turn off some
24862         code which prevents mono from running under valgrind.
24863
24864         * mini.c (mono_emit_call_args): Fixed warning.
24865
24866         * mini.c (mono_emulate_opcode): Fixed warning.
24867
24868 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24869
24870         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
24871         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
24872         regalloc.c, regalloc.h: specify available registers in arch-specific
24873         code and support floats in the regallocator (patch by Laurent Morichetti 
24874         <l_m@pacbell.net>)
24875
24876 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24877
24878         * mini.c: mono_thread_current() can be called only after
24879         mono_runtime_init(): rearrange code to not call it early on.
24880
24881 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24882
24883         * mini.c: allocate jump tables in the code mempools.
24884
24885 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24886
24887         * mini.c, mini.h: make sure per-thread data allocated by the jit is
24888         freed.
24889
24890 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
24891
24892         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
24893         12 to 16.  This fixes bug #47453.
24894
24895
24896 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
24897
24898         * mini-ppc.c: fixed indexed load and unsigned compares.
24899
24900 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
24901
24902         * mini.c: reenabled installation of handler for
24903           thread abort signal.
24904
24905 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24906
24907         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
24908         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
24909         until it's fixed and actually useful.
24910
24911 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24912
24913         * inssel-long32.brg: couple more opcodes implemented.
24914
24915 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24916         
24917         * mini-sparc.c: Even more opcodes implemeted.
24918
24919 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
24920
24921         * mini-sparc.c: More opcodes implemented.
24922
24923 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
24924
24925         * mini-sparc.c: More opcodes implemented.
24926
24927 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24928
24929         * inssel-sparc.brg: Add some needed rules.  Direct
24930         copy from PPC.
24931         * Makefile.am: Use inssel-sparc.brg
24932         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
24933         an assert happy for now.
24934
24935 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
24936
24937         * mini-sparc.c: Fixed compile errors.
24938         * exceptions-sparc.c: Same.  We now produce a mono binary 
24939         on sparc-linux.  Yea.
24940
24941 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
24942
24943         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
24944         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
24945         They compile, but do not work.
24946
24947 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24948
24949         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
24950         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
24951         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
24952         (ct@gentoo.org).
24953
24954 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24955
24956         * mini.c: more opcodes implemented and better support for generics.
24957
24958 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
24959
24960         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
24961         * mini.c, mini.h: first cut at generics support: some new instructions 
24962         added and changed the behaviour of some of the existing ones.
24963
24964 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
24965
24966         * mini.c: Removed definition of metadata_shared mutex here.
24967
24968 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
24969
24970         * mini-x86.c: make vararg calls work for instance methods.
24971
24972 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
24973
24974         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
24975         returns the arguments in a separte list, now.
24976
24977 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24978
24979         * aot.c, mini.c: updates for array type representation changes.
24980
24981 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
24982
24983         * mini.c: register function to perform jit shutdown.
24984
24985 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24986
24987         * mini.c: use a faster allocator if possible.
24988
24989 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
24990
24991         * aot.c: some cleanups and portability changes.
24992
24993 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24994
24995         * mini.c: use faster allocation for CEE_BOX if possible.
24996
24997 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
24998
24999         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25000         Moved inlined mempcy code to its own function so that is can be
25001         reused. Added an inline memset function as well (optimized initobj).
25002         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25003
25004 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25005
25006         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25007
25008 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25009
25010         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25011         arch code can setup the cpu for CLR execution, if needed.
25012         We use it on x86 to set the precision of FP operations.
25013
25014 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25015
25016         * mini.c: disable some optimizations if we can guess they'll cost too
25017         much for a given method.
25018
25019 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25020
25021         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25022         
25023 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25024         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25025         info collection support.
25026
25027 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25028
25029         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25030         is now implemented in the profiling API. Get rid of a couple of
25031         unnecessary global variables.
25032
25033 2003-06-15  Nick Drochak <ndrochak@gol.com>
25034
25035         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25036         * cpu-g4.md: add op_bigmul and op_bigmul_un
25037         * cpu_pentium.md: add op_bigmul_un
25038         * inssel-long32.brg: add rule for unsigned bigmul
25039         * mini-ops.h: define OP_BIGMUL_UN
25040         * mini-x86.c: THE BUG: handle (un)signed properly
25041         * mini.c: choose unsigned opcode if needed.
25042         This set of patches fixes bug #44291
25043
25044 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25045
25046         * mini.c (optimize_branches): improved to handle all kinds of
25047         conditional branches.
25048
25049 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25050
25051         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25052         don't raise exceptions.
25053
25054 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25055
25056         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25057         to arch-specific files.
25058
25059 2003-06-09  Martin Baulig  <martin@ximian.com>
25060
25061         * Makefile.am (libs): Added $(LIBGC_LIBS).
25062
25063 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25064
25065         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25066         and OP_ATAN (fixes bug#44293).
25067
25068 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25069
25070         * Makefile.am, mini-x86.c: rename cpu description array to
25071         pentium_desc, since some compilers define the 'pentium' preprocessor
25072         symbol.
25073
25074 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25075
25076         * mini.c (mini_select_instructions): add explicit branch if the
25077         following block is not the false target of a conditional branch -
25078         we need this with any optimization that reorder or remove bblocks
25079
25080         * mini.c (optimize_branches): bug fixes
25081
25082 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25083
25084         * mini.c (mono_method_to_ir): inline static readonly fields
25085
25086         * ssa.c (fold_tree): start cfold support for long (very simple
25087         cases only)
25088
25089         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25090
25091 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25092
25093         * inssel.brg: fixed memcpy (bug #44219).
25094
25095 2003-06-05  Dick Porter  <dick@ximian.com>
25096
25097         * driver.c: Set the glib log levels to not abort if g_message
25098         recurses.
25099
25100         g_set_prgname() has to happen before mini_init() so that the
25101         process handle gets the info.
25102         
25103 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25104
25105         * driver.c: add intrins to the default optimizations to get wider
25106         exposure.
25107
25108 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25109
25110         * mini.h: some large basic blocks will overflow a 16-bit
25111         integers for symbolic registers.
25112
25113 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25114
25115         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25116         (mono_arch_output_basic_block): fix bug 43499 
25117
25118 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25119
25120         * mini.c: kill duplicated definition of mono_debug_format.
25121
25122 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25123
25124         * mini-x86.c, arrays.cs: fixed register allocation bug.
25125
25126 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25127
25128         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25129
25130         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25131
25132 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25133
25134         * mini.c:
25135         (print_method_from_ip): also print source location information if
25136         available.
25137
25138 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25139
25140         * mini.c (mono_find_block_region): bug fix in region code
25141         (mini_method_compile): enable removing unreachable code again, but
25142         only in methods without exception clauses.
25143
25144 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25145
25146         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25147         Implemented arglist opcode and handling of TypedReference type.
25148         Fixed x86 call convention when a structure is returned.
25149         Minimal support for calling static vararg methods.
25150
25151 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25152
25153         * mini.c (mini_method_compile):  always remove unreachable code,
25154         because the code in them may be inconsistent  (access to dead
25155         variables for example).
25156
25157 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25158
25159         * driver.c, debug-mini.c: warning fixes.
25160
25161 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25162
25163         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25164
25165 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25166
25167         * mini.c: thread-static fields are registered in mono_class_vtable(),
25168         so ensure the function is called before checking for them.
25169
25170 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25171
25172         * mini.c (optimize_branches): fix for bug 43586
25173
25174         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25175         overflow (fixes Bug #43639)
25176
25177 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25178
25179         * mini.c, objects.cs: allow the use of stobj for primitive types.
25180
25181 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25182
25183         * mini.c: be less strict about argument checking until we support
25184         running the verifier.
25185
25186 2003-05-27  Nick Drochak <ndrochak@gol.com>
25187
25188         * basic-long.cs: tests for (ulong)int * (ulong)int also
25189         * mini.c: use the same trick for (ulong)int * (ulong)int
25190
25191 2003-05-27  Nick Drochak <ndrochak@gol.com>
25192
25193         * basic-long.cs: add regression test for (long)int * (long)int
25194         * cpu-pentium.md: add op_bigmul specification
25195         * inssel-long32.brg: add OP_BIGMUL rule
25196         * mini-ops.h: add OP_BIGMUL
25197         * mini-x86.c: register allocator: handle case where src1 needs to be
25198         in EAX.
25199         * mini.c: substitute special BIGMUL opcode in the tree for 
25200         (long)int * (long)int
25201
25202 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25203
25204         * jit-icalls.c: call the type ctor on field access if needed.
25205
25206 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25207
25208         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25209         to a method (including results of ldelema, bug#43207).
25210
25211 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25212
25213         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25214         colors to show exception handler blocks.
25215
25216         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25217         (fix for pinvoke7.cs).
25218
25219 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25220
25221         * mini.h, mini.c: ensure correct initialization order for types that
25222         require it. Prepare for lazy compilation of jit icall wrappers.
25223         Provide a name for opcode emulation to reduce unneeded mallocing.
25224
25225 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25226
25227         * mini-x86.c: better register restoring code and profiling
25228         support for tail calls.
25229
25230 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25231
25232         * mini.h, driver.c: prepare for leaf methods optimization.
25233
25234 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25235
25236         * mini.c: get targets of branches before converting a method.
25237
25238 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25239
25240         * mini.c (optimize_branches): added some experimental code (disbaled) 
25241
25242 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25243
25244         * mini.c (optimize_branches): fix branch to branch optimization 
25245
25246         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25247
25248         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25249
25250         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25251
25252         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25253         if needed.
25254
25255 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25256
25257         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25258         enable use of interface variables again.
25259
25260         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25261         I1 to registers because there is no simply way to sign extend 8bit
25262         quantities in caller saved registers on x86.
25263
25264         * inssel-float.brg: set costs of some rules to 2 so
25265         that monobure always select the arch. specific ones if supplied,
25266         regardless of the order we pass the files to monoburg.
25267
25268 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25269
25270         * mini.c, mini-x86.c: since the magic trampoline for jumps
25271         can't patch the code directly, we do it as soon as the
25272         method gets compiled.
25273
25274 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25275
25276         * mini-x86.c, mini.h: introduce a new patching method
25277         to support CEE_JMP and tail calls.
25278         * mini.c: obey tail.call. Don't precompile methods target
25279         of CEE_JMP.
25280         * tramp-x86.c: new trampoline code to handle methods
25281         reached through a jump.
25282
25283 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25284
25285         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25286         bit values to registers
25287
25288 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25289
25290         * mini.c (mono_compile_get_interface_var): share interface
25291         variables if possible.
25292
25293 2003-05-16  Martin Baulig  <martin@ximian.com>
25294
25295         * debug-mini.c (mono_init_debugger): New function to initialize
25296         the debugger.  This is not in the debugger since it needs to
25297         access some of mini's internals.
25298
25299 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25300
25301         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25302
25303 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25304
25305         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25306         for value type handling.
25307
25308 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25309
25310         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25311         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25312
25313 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25314
25315         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25316           the constructor through a proxy.
25317
25318 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25319
25320         * jit-icalls.c, inssel.brg: fixes to array element address
25321         calculations.
25322
25323 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25324
25325         * mini-x86.c (is_regsize_var): allocate pointer to registers
25326
25327 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25328
25329         * driver.c: fixed typo, added intrins to the set of optimizations
25330         tested with regressions.
25331
25332 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25333
25334         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25335         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25336         test case.
25337
25338 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25339
25340         * inssel.brg: remove some common pop instructions without side effects
25341
25342 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25343
25344         * inssel-x86.brg: fixed thinko in int to double conversions.
25345
25346 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25347
25348         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25349
25350 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25351
25352         * inssel-long32.brg: two more missing instructions.
25353
25354 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25355
25356         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25357         if not already set.
25358
25359 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25360
25361         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25362         correctly.
25363
25364         * basic-float.cs: Added tests for negative zero.
25365
25366 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25367
25368         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25369         a couple of missing operations for long casts, with test cases.
25370
25371 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25372
25373         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25374
25375 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25376
25377         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25378         code size estimation.
25379
25380 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25381
25382         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25383         abstract methods (fix bug 42542)
25384
25385         * aot.c: add ability to handle array types
25386         
25387 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25388
25389         * mini.c: Call the _specific versions of the object allocation
25390         functions if possible.
25391
25392 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25393
25394         * driver.c: call setlocale ().
25395
25396 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25397
25398         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25399         windows build.
25400
25401 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25402
25403         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25404
25405         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25406         wrappers (fix bug 42122)
25407
25408 2003-05-04  Martin Baulig  <martin@ximian.com>
25409
25410         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25411
25412         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25413         s/mini_set_defaults/mono_set_defaults/g.
25414
25415 2003-05-04  Martin Baulig  <martin@ximian.com>
25416
25417         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25418
25419 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25420
25421         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25422         (reported by Don Roberts).
25423
25424 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25425
25426         * mini.c: temporarily work around two bugs for this release.
25427
25428 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25429
25430         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25431         that contains -export-dynamic and it makes using the ld script
25432         useless.
25433         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25434
25435 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25436
25437         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25438         specific cpu.
25439
25440 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25441
25442         * mini.c: make sure leave calls all the needed finally blocks,
25443         even when the target jumps out of multiple exception clauses.
25444
25445 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25446
25447         * ldscript, Makefile.am: add linker script to reduce the number of
25448         exported symbols (should also fix the issues with libwine defining
25449         some of the same symbols in io-layer).
25450
25451 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25452
25453         * driver.c (mini_main): Avoid assertion when no file name is given on 
25454         the command line.
25455
25456 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25457
25458         * driver.c: added --version/-V command line option.
25459         Added the inline optimization in the regression tests.
25460
25461 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25462
25463         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25464         to the type in the method signature (fixes bug#42134).
25465
25466 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25467
25468         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25469
25470 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25471
25472         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25473
25474 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25475
25476         * driver.c: fixed bug #42100.
25477
25478 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25479
25480         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25481
25482 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25483
25484         * mini.c: moved most of the code required to do inlining to its own
25485         function so it can be reused. Inline also ctors if appropriate.
25486
25487 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25488
25489         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25490         the runtime can call mono API functions.
25491
25492 2003-04-27  Martin Baulig  <martin@ximian.com>
25493
25494         * debug-mini.c (mono_debug_init_method): Added
25495         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25496         send a notification to the debugger.
25497
25498         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25499         running in the Mono Debugger, just pass the breakpoint number to
25500         mono_debug_init_method().
25501
25502         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25503
25504 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25505
25506         * mini.c: allow some more unsafe compares.
25507
25508 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25509
25510         * mini-x86.c, Makefile.am: make distcheck works (partially from
25511         a patch by Richard Lee <r.h.lee@attbi.com>).
25512         * regset.c, regset.h: removed, they are unused.
25513
25514 2003-04-25  Dick Porter  <dick@ximian.com>
25515
25516         * driver.c: Usage reports the name as 'mono' not 'mini'
25517         * exceptions-x86.c: Build and run on freebsd
25518
25519 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25520
25521         * Makefile.am: install the program with the 'mono' name and
25522         the library as libmono instead of mini and libmini.
25523
25524 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25525
25526         * driver.c: provide the APIs for the embedding interface of the old jit.
25527
25528 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25529
25530         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25531
25532 2003-04-23  Martin Baulig  <martin@ximian.com>
25533
25534         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25535
25536         * driver.c: Added `--debug' command line argument to enable
25537         debugging support.
25538
25539 2003-04-23  Martin Baulig  <martin@ximian.com>
25540
25541         * debug.[ch]: Removed.  The code is now in
25542         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25543
25544         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25545         last six months.
25546
25547 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25548
25549         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25550
25551 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25552
25553         * mini.c:
25554         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25555         mono_domain_finalize.
25556         (mini_method_compile): use mono_method_profile* if the the option is
25557         enabled.
25558
25559 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25560
25561         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25562         methods with their wrapper.
25563
25564         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25565         methods with their wrapper.
25566
25567         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25568         their wrapper.
25569
25570         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25571         wrapper.
25572
25573         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25574         methods.
25575
25576 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25577
25578         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25579
25580 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25581
25582         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25583         of the mempool. This is slightly faster and uses less memory
25584
25585 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25586
25587         * mini.c: avoid O(n) allocation for variables.
25588
25589 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25590
25591         * mini.c: handle items on the stack after inlining methods.
25592
25593 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25594
25595         * mini.c: make the method->opcode optimization dependent
25596         on MONO_OPT_INSTRINS and do it lazily.
25597
25598 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25599
25600         * driver.c: print overall results at the end of regression run.
25601
25602 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25603
25604         * inssel.brg: don't overwrite symbolic registers.
25605
25606 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25607
25608         * inssel-x86.brg: fix conversion from long to float.
25609
25610 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25611
25612         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25613
25614 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25615
25616         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25617
25618         * driver.c: Added --print-vtable option as in the old JIT.
25619
25620 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25621
25622         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25623
25624 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25625
25626         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25627
25628 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25629
25630         * mini.c regalloc.c regalloc.h: Fix memory leak.
25631
25632 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25633
25634         * aot.c (mono_aot_get_method): register all used strings
25635
25636 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25637
25638         * mini.c: always intern strings references with ldstr at compile time.
25639
25640 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25641
25642         * Makefile.am: add BUILT_SOURCES.
25643
25644 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25645
25646         * driver.c: give a better error message when the assembly to execute
25647         doesn't have an entry point.
25648
25649 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25650
25651         * Makefile.am: added hack for automake
25652
25653         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25654         correct sematics.
25655
25656         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25657
25658 22003-04-07  Martin Baulig  <martin@ximian.com>
25659
25660         * Makefile.am: Added Makefile.am.
25661
25662         * debugger-main.c: Removed, this is now in the debugger where it
25663         belongs.
25664
25665         * mini.pc.in: Call this package `mini' for the moment.
25666
25667
25668
25669
25670
25671
25672
25673
25674
25675
25676
25677
25678
25679
25680