2010-06-25 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
4
5         * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
6
7         * debugger-agent.c (get_objref): Implement support for sgen.
8
9         * driver.c: Remove the unused gc_wrapper.h include.
10
11         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
12         implementation.
13
14 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
15
16         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
17
18         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
19         in MonoCompile.
20
21         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
22         instead.
23
24 2010-06-23  Miguel de Icaza  <miguel@novell.com>
25
26         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
27         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
28
29         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
30         it only for Boehm diagnostics.
31
32         * Makefile.am: Make the file a bit more consistent.
33
34         * debug-debugger.c: Wrap the entire file with an #ifdef
35         MONO_DEBUGGER_SUPPORTED to simplify the build.
36
37         * Makefile.am: Fix the opcodes build issue by including the
38         source, not by including the .lo file directly
39
40         Always bring the MDB sources into the build, to drop the
41         dependency on the AM_CONDITIONAL from configure.in as the hard
42         debugger supports Boehm, but not Sgen, this simplifies the build. 
43
44         * Renamed the *.s files into *.S
45
46 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
47
48         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
49         wb for now on 64bits systems while issues with valuetype returns
50         are not fixed.
51
52 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
53
54         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
55         passes by calling createStandardFunctionPasses ().
56
57 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
58
59         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
60
61 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
62
63         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
64         MONO_INST_FAULT.
65
66         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
67         allow better optimization if the OP_LDADDR which caused the flag to be set was
68         optimized away.
69
70         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
71
72         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
73         the type token.
74
75         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
76
77         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
78
79 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
80
81         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
82         to handle the code sequence generated for non-near calls. Fixes #616056.
83
84 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
85
86         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
87
88         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
89
90         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
91         nesting clause too.
92         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
93         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
94         trampoline which saves the context, so changes made to callee saved registers in
95         finally clauses are visible to a nesting catch clause.
96
97         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
98
99         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
100         in LLVM compiled code.
101         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
102         the finally handler has ran.
103
104         * mini.h (ResumeState): New structure containing information required to resume
105         exception handling after executing LLVM compiled finally clauses.
106
107         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
108         bit, by passing all the registers as one argument.
109
110 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
111
112         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
113         to avoid an assert.
114
115 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
116
117         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
118
119         * aot-compiler.c aot-runtime.c: Fix LLVM support.
120
121         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
122         pad, branch to a new bblock instead.
123
124         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
125         orig_method.
126
127         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
128
129         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
130
131 2010-06-17  Geoff Norton  <gnorton@novell.com>
132
133         * mini-arm.h:
134         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
135         can be used by sgen.
136
137 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
138
139         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
140
141         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
142         fails.
143
144         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
145         the ip done by throw_exception (), it is not needed for corlib exceptions.
146
147 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
148
149         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
150         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
151         of size > 5 words. This support fast barriers for value types up to
152         256/512 bytes which     beyond that the copying itself is the major issue.
153
154         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
155         for gsharing, so use it.
156
157         This eliminate all calls to mono_value_copy from managed code in
158         gmcs, fsharp and ipy.
159
160         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
161
162         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
163         performance kept
164
165         * mini.c (mini_init): Register new icall.
166
167 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
168
169         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
170         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
171
172 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
173
174         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
175         value types as the overhead is huge. Manually expand it up to 5 words to
176         avoid code bloat.
177
178         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
179         is an exception that performance is dominated by mono_value_copy.
180
181         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
182
183 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
184
185         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
186         trampolines on x86, since those have their own cconv.
187
188         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
189         exception trampolines.
190
191         * tramp-x86.c: Add xdebug info for a few trampolines.
192
193         * mini-llvm.c: Set the name of the arguments.
194
195         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
196         using a block address if using the LLVM mono branch.
197
198         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
199         trampolines.
200
201 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
202
203         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
204
205         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
206
207         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
208
209         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
210
211         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
212         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
213         to identify the vtable slot address plus the method which needs to be compiled.
214
215         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
216         using llvm.
217
218         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
219         'this' is always passed as the first argument, before the vtype ret arg. This
220         simplifies get_this_arg_reg () and LLVM integration.
221
222         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
223         the latest changes.
224
225         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
226         these trampolines.
227
228         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
229
230         * mini-llvm.c: Fix compilation with llvm 2.6.
231
232         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
233
234         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
235         defined.
236
237         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
238         is always passed as the first argument, before the vtype ret arg. This simplifies
239         get_this_arg_reg () and LLVM integration.
240
241 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
242
243         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
244
245         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
246         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
247         translate into much nicer code.
248
249 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
250
251         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
252         parameter index information. Use this to simplify a lot of code.
253
254         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
255
256 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
257
258         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
259         to fix infinite generic recursion. Fixes #612702.
260
261 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
262
263         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
264         imt trampoline per imt slot when using LLVM.
265
266 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
267
268         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
269
270 2010-06-09  Levi Bard  <levi@unity3d.com>
271
272         * debugger-agent.c: Clear unloaded types on appdomain unload.
273
274 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
275
276         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
277         Fixes #612206.
278
279         * exceptions.cs: Add a test.
280
281 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
282
283         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
284
285         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
286
287         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
288         so it doesn't have to do it.
289
290         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
291         process does not mix with ours.
292
293         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
294         ones.
295
296         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
297         loads/stores which can throw exceptions inside clauses.
298
299 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
300
301         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
302         one ENDFINALLY.
303
304         * mini.c (mini_init): Register mono_resume_unwind as an icall.
305
306 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
307
308         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
309
310         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
311         locals.
312
313 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
314
315         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
316         appdomain.
317
318 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
319
320         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
321         Use a separate generic class init trampoline for llvm, since it needs a different
322         signature.
323
324         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
325         includes the location of this/rgctx.
326
327         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
328         branch.
329
330 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
331
332         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
333
334         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
335         clause.
336
337 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
338
339         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
340         says so.
341
342         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
343
344         * aot-compiler.c (patch_to_string): New debugging helper function.
345
346 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
347
348         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
349         trampoline.
350
351         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
352
353         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
354
355         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
356
357         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
358         clauses.
359
360         * mini.c (create_jit_info): Print EH clause info for LLVM too.
361
362 2010-05-28  Mark Probst  <mark.probst@gmail.com>
363
364         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
365         cpobj with reference types.
366
367 2010-05-28  Mark Probst  <mark.probst@gmail.com>
368
369         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
370         write barrier for reference types.
371
372 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
373
374         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
375         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
376
377 2010-05-31  Martin Baulig  <martin@ximian.com>
378
379         Fix #608271.
380
381         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
382         clear_breakpoint() on all breakpoint events and remove them from the list.
383
384 2010-05-27  Martin Baulig  <martin@ximian.com>
385
386         Fix #605698.
387
388         * debugger-agent.c (method_commands, type_commands): Temporarily
389         set the appdomain while executing this method; do all metadata
390         calls in the debuggee's appdomain where user assemblies are loaded.
391
392 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
393
394         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
395
396 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
397
398         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
399
400 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
401
402         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
403         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
404         be referenced even after the header is freed.
405
406         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
407         section.
408
409 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
410
411 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
412
413         * genmdesc.c (main): Fixing the detection of the nacl switch.
414
415         Code is contributed under MIT/X11 license.
416
417 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
418
419         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
420
421         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
422
423         * mini.h (LLVM_CHECK_VERSION): New helper macro.
424
425 2010-05-25  Miguel de Icaza  <miguel@novell.com>
426
427         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
428         the Perl program
429
430         * genmdesc.c: Added support for nacl: key on the machine
431         description files to support the extra space required by Google
432         Native Client.
433
434 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
435
436         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
437
438 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
439
440         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
441         mono_runtime_class_init_full ().
442         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
443
444 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
445
446         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
447
448 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
449
450         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
451         two are not the same on ilp32.
452
453 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
454
455         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
456         added by mistake.
457
458         * mini-ppc.c: Fix the DISABLE_JIT build.
459
460 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
461
462         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
463         (make_writable): Remove this unused function.
464
465 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
466
467         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
468         structure. Make the labels to plt entries local symbols instead of assembler local
469         labels, since tha latter causes problems for the iphone linker.
470
471 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
472
473         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
474
475 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
476
477         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
478         (ppc_patch_full): Ditto.
479
480         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
481
482         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
483         if gshared is enabled, to avoid asserts in the trampoline code.
484
485         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
486         on ia64.
487
488 2010-05-15  Geoff Norton  <gnorton@novell.com>
489
490         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
491         xdebug mode.
492
493 2010-05-14  Geoff Norton  <gnorton@novell.com>
494
495         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
496         misaligned stack on darwin.
497
498 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
499
500         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
501         arm.
502
503 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
504
505         * xdebug.c: Fix ARM support.
506
507 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
508
509         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
510         and do most of the work on the normal stack.
511         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
512
513 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
514
515         * aot-compiler.c: Put non-code data into the .rodata section on linux.
516
517 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
518
519         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
520
521 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
522
523         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
524         and do most of the work on the normal stack.
525
526 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
527
528         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
529         and do most of the work on the normal stack even if sigaltstack is disabled.
530
531 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
532
533         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
534         UCONTEXT_REG_ constants are available on linux as well.
535         (mono_arch_monoctx_to_sigctx): Ditto.
536         (mono_arch_ip_from_context): Ditto.
537
538 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
539
540         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
541         other domains.
542
543 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
544
545         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
546         no longer needed.
547
548 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
549
550         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
551         if a breakpoint cannot be inserted.
552
553 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
554
555         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
556
557 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
558
559         * debugger-agent.c (frame_commands): Return an error instead of asserting if
560         no JIT info is found for the method.
561
562 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
563
564         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
565         in debug printf.
566
567 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
568
569         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
570         a list of arch specific trampolines.
571
572         * aot-compiler.c (emit_trampolines): Use it.
573
574 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
575
576         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
577         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
578         get rid of the _full from their name.
579
580 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
581
582         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
583         get_nullified_class_init_trampoline to remove some code duplication.
584
585 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
586
587         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
588         attach.
589
590 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
591
592         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
593
594         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
595
596         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
597         there is no need to jump through the first plt entry.
598
599         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
600
601         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
602         arch-specific function.
603         (mono_aot_get_plt_info_offset): Ditto.
604
605         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
606         mono_arch_init () to register jit icalls called from full-aot trampolines.
607         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
608         to mini-<ARCH>.c.
609
610         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
611         the specialized throw corlib exception trampoline, use a variant of the normal
612         trampoline along with a new C function which does the call to
613         mono_exception_from_token (), just like on x86.
614
615 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
616
617         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
618         Reorganize the full aot trampoline creation functions, instead of taking a bunch
619         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
620         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
621         creation functions on architectures which have the full-aot ones.
622
623 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
624
625         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
626
627 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
628
629         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
630         explicitly, this seems to be required by some gcc versions at -O2.
631
632         * mini-arm.c: Ditto.
633
634 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
635
636         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
637         has_target delegate invokes.
638
639 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
640
641         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
642         info fields.
643
644         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
645         add patches/unwind info arguments, move to mini.c.
646
647         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
648
649 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
650
651         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
652         command which returns full path names.
653
654 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
655
656         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
657         code_size output variable.
658
659         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
660         mono_get_lmf_addr.
661         
662 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
663
664         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
665         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
666         (mono_arch_cpu_enumerate_simd_versions): Ditto.
667
668 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
669
670         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
671         apple assembler.
672
673 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
674
675         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
676
677 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
678
679         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
680
681 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
682
683         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
684
685 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
686
687         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
688         line number support works with eglib.
689
690 2010-04-27  Miguel de Icaza  <miguel@novell.com>
691
692         * driver.c, mini.c: Since linking with LLVM makes the default Mono
693         dirty an extra 70kb pages on startup we are now going to choose a
694         different strategy: ship mono and mono-llvm binaries, with the
695         second being the one that links with LLVM and defaults to LLVM
696         being enabled.
697
698 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
699
700         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
701         Implement full-aot support on x86.
702
703         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
704         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
705         the first register returned by get_global_int_regs ().
706
707         * cpu-x86.md: Fix the length of insertx_u1_slow.
708
709         * iltests.il.in: Disable tail call tests when running with full-aot.
710
711 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
712
713         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
714
715 2010-04-24  Mark Probst  <mark.probst@gmail.com>
716
717         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
718         in the initializer, because it's non-constant.
719
720 2010-04-23  Miguel de Icaza  <miguel@novell.com>
721
722         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
723         of LLVM on by default.   Used for buildbots and other setups.
724
725 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
726
727         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
728
729 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
730
731         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
732         initonly static fields when using moving GC.
733
734         Contributed under MIT/X11 license.
735
736 2010-04-23  Geoff Norton  <gnorton@novell.com>
737
738         * mini-amd64.h: Darwin x86_64 support.
739
740 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
741
742         * exceptions-arm.c: Remove platform checks in favor of configure checks.
743
744 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
745
746         * exceptions-arm.c: Add Android support for sigcontext structure.
747
748 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
749
750         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
751         wrappers correctly now that their wrapper info is NULL.
752
753 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
754
755         * mini.c (mono_jit_compile_method_inner): Avoid calling
756         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
757
758 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
759
760         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
761         so the latter can be #ifndef DISABLE_JIT-ed.
762
763         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
764
765 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
766
767         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
768
769 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
770
771         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
772         stack.
773
774 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
775
776         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
777         calling mono_class_num_methods (). Fixes #592244.
778
779 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
780
781         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
782
783         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
784
785 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
786
787         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
788         version.
789         * (handle_alloc): Ditto.
790         (mono_method_to_ir): Remove the constrained call restriction added by a previous
791         change, its not needed anymore.
792
793 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
794
795         * mini-posix.c (sigusr1_signal_handler): Fix build on
796         non x86/amd64 systems.
797
798 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
799
800         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
801         calls where the constrained class needs a context. Fixes #595863.
802
803         * iltests.il.in: Add a test.
804
805 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
806
807         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
808         2.6/SVN seems to have broken support for them.
809
810 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
811
812         * mini-llvm.c: Fix support for LLVM 2.6.
813
814 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
815
816         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
817         MonoInternalThread belonging to the thread.
818
819 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
820
821         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
822         unsafe optimization that will remove bound checks.
823
824 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
825
826         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
827         CompareExchange not to be inlined for I8.
828
829         Contributed under MIT/X11 license.
830
831 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
832
833         * array.cs: Add tests for cast between primitive array types.
834
835 2010-04-07 Andreia Gaita  <avidigal@novell.com>
836
837         * Makefile.am: create a convenience library for moon to link with
838
839 2010-04-07 Paolo Molaro <lupus@ximian.com>
840
841         * method-to-ir.c: optimize array accesses from generic interfaces.
842
843 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
844
845         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
846
847 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
848
849         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
850         of marshalbyref classes.
851
852         Fixes #515884.
853
854 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
855
856         * aot-compiler.c (emit_exception_debug_info): Encode try holes
857         information.
858
859         * aot-runtime.c (decode_exception_debug_info): Decode try holes
860         information.
861
862         * mini.h: Increase AOT version.
863
864 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
865
866         * mini-x86.h: Only enable soft debugger when using sigaction or on
867         Windows. Fixes build on Haiku (lacks siginfo_t).
868
869         Code is contributed under MIT/X11 license.
870
871 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
872
873         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
874         BeOS-style signal handlers.
875
876         Code is contributed under MIT/X11 license.
877         
878 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
879
880         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
881
882 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
883
884         * mini-exceptions.c: Fix win32 build.
885
886 2010-04-01  Mark Probst  <mark.probst@gmail.com>
887
888         * mini.c, driver.c: Call mono_gc_base_init() before
889         mono_debug_init().
890
891 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
892
893         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
894         call_method]): Delegate the actual work in security-core-clr.c
895         to ease code sharing.
896
897 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
898
899         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
900         float conv.ovf.un opcodes are encountered, instead of asserting later.
901         Fixes #566296.
902
903 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
904
905         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
906
907         * iltests.il.in: Add a test.
908
909 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
910
911         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
912         large. Fixes #567040.
913
914         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
915
916 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
917
918         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
919         #592711.
920
921 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
922
923         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
924         mono_create_handler_block_trampoline with the proper #ifdef so that it
925         compiles on amd64.
926
927 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
928
929         * mini-exceptions.c: Introduce mono_walk_stack_full, which
930         allows to select if it's new or old context that is passed to 
931         the callback.
932
933         * mini-exceptions.c (mono_handle_exception_internal): Handle the
934         case when executing a guarded handler from the EH machinery.
935
936         * mini-exceptions.c (mono_install_handler_block_guard): New function
937         responsible for checking for handler blocks, installing the guard and
938         clearing abort state.
939
940         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
941         to check for handler blocks and skip interruption logic if one was found.
942
943         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
944         by the handler block guard trampoline. Resumes interruption by raising the
945         pending ThreadAbortException.
946
947         * mini.c (create_jit_info): Calculate the end address of a finally block.
948
949         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
950         of a finally block to a specified address and return the old one.
951
952         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
953         trampoline patches the original return address and calls the trampoline function.
954
955 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
956
957         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
958
959         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
960         does the patching if the callee is in the same domain.
961
962         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
963         of mono_arch_patch_plt_entry ().
964
965 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
966
967         * mini.c (create_jit_info): Fix try block hole length encoding.
968
969 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
970
971         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
972         duplicate information and print offsets instead of absolute addresses.
973
974 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
975
976         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
977         event is sent. Fixes #591733.
978
979 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
980
981         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
982         OpenBSD.
983
984 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
985
986         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
987         thread_to_tls hash table.
988
989         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
990         section. Fixes #591000.
991
992 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
993
994         * Makefile.am (version.h): Check for pure .git directory only,
995         fixes SVN revision when using git without git-svn.
996
997         Contributed under MIT/X11 license.
998
999 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1000
1001         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
1002
1003 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1004
1005         * basic-simd.cs: Test for vector x scalar binary operators.
1006
1007 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1008
1009         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1010         intrinsics with expanded scalar arguments.
1011
1012 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1013
1014         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1015         don't have an exception class, so don't decode it. This would crash
1016         with filter clauses.
1017
1018 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1019
1020         Make sure that trunk builds with DISABLE_JIT, an update to the
1021         PlayStation 3 port.
1022         
1023         * mini.c (mini_get_shared_method): this code seems to be necessary
1024         regardless of whether DISABLE_JIT has been defined.
1025
1026         (mono_jit_compile_method_inner): it seems that this method is
1027         required even in full AOT mode, so ifdef out only the pieces that
1028         try to genrate code (the body of code that applies patches to the
1029         code).  
1030
1031         (mini_method_compile): do not compile when using DISABLE_JIT.
1032
1033         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1034         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1035         compile when DISABLE_JIT is set.
1036
1037 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1038
1039         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1040         arch really supports it.
1041
1042 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1043
1044         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1045
1046 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1047
1048         * exceptions-s390x.c: Add support for
1049         mono_arch_get_throw_corlib_exception and fix throw by name.
1050
1051         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1052         logic (especially for varargs); Correct localloc sizing; Add
1053         mono_arch_get_this_arg_from_call and
1054         mono_arch_get_this_arg_from_call.
1055
1056         * mini-s390x.h: Add support for facility list extraction;
1057         Correct/update MONO_ARCH_xxx settings.
1058
1059         * mini-s390.c: Minor corrections to instruction output for
1060         varargs. No IMT implementation - I think it's time to deprecate
1061         s390 and just leave s390x.
1062
1063         * tramp-s390x.c: Correct creation of trampoline instruction
1064
1065
1066         * cpu-s390x.md: Update some instruction lengths
1067
1068 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1069
1070         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1071         can be hit with partial sharing.
1072
1073         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1074         in non-shared classes correctly.
1075         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1076         Turn on partial sharing.
1077
1078 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1079
1080         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1081         by mistake.
1082
1083 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1084
1085         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1086         mono_method_signature ().
1087
1088         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1089
1090         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1091         error checking, so later calls do not need error checking.
1092
1093 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1094
1095         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1096
1097         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1098
1099 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1100
1101         * mini-exceptions.c (mono_handle_exception_internal): Don't
1102         check try_end for archs different than s390. 
1103
1104         * mini.c (create_jit_info): Don't crash if the finallt block is the
1105         last one.
1106
1107 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1108
1109         * driver.c (mono_main): Don't free global codeman under linux since
1110         glic now peeks at code on stack for more archs than just amd64.
1111
1112 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1113
1114         * mini.c, method-to-ir.c: changes to support compressed interface
1115         bitmaps.
1116
1117 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1118
1119         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1120         Use sigaction on OpenBSD too.
1121
1122 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1123
1124         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1125
1126 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1127
1128         * debugger-agent.c: #include sys/select.h for fd_set.
1129
1130         Code is contributed under MIT/X11 license.
1131
1132 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1133
1134         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1135         (openbsd+amd64 ?).
1136
1137 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1138
1139         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1140         some large methods with lots of exception handlers. Fixes #440924.
1141
1142 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1143
1144         * method-to-ir.c: remove code duplication for interface checks.
1145
1146 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1147
1148         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1149         (assembly_unload): Clear all event requests referencing the to-be unloaded
1150         assembly.
1151
1152
1153 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1154
1155         * mini.h, mini-exceptions.c: restore the state of the stack
1156         guard page permissions.
1157
1158 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1159
1160         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1161         call site patching code, it doesn't appear to be needed.
1162
1163 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1164
1165         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1166         sharing generic methods whose type arguments are a mix of reference and
1167         non-reference types. Not yet turned on.
1168
1169         * mini.c (mini_get_shared_method): New helper function to return
1170         the method which will be compiled/registered in the JIT tables when doing
1171         generic sharing.
1172         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1173         use mini_get_shared_method ().
1174
1175         * mini.c (mini_method_compile): Register the same method which is compiled when
1176         doing generic sharing.
1177
1178         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1179
1180         * generics.cs: Add partial sharing tests.
1181
1182 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1183
1184         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1185                    Add an enum value that or's all possable values together. Add an enum value
1186                    that marks the end of the used bit indexes.
1187
1188         * mini-amd64.c : Make changes to match the changes in mini.h 
1189
1190         * mini-x86.c : Make changes to match the changes in mini.h
1191
1192         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1193                    simd_version to support more simd versions. Changed the name of
1194                    simd_version to simd_version_flags to make it more intuitive that
1195                    it now contains bit flags. Reordered the *_intrinsics arrays to
1196                    match the changes above. Changed emit_intrinsics() to use the new
1197                    setup mentioned above.
1198
1199         Code is contributed under MIT/X11 license.
1200
1201 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1202
1203         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1204         remaining archs. Alpha and hppa maintainers, please stand up.
1205
1206 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1207
1208         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1209         is needed even when fail_tramp!=NULL.
1210
1211 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1212
1213         * debugger-agent.c (insert_breakpoint): Write a log message.
1214
1215 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1216
1217         * iltests.il.in: Add a few tests for LEAVE going over multiple
1218         finally clauses.
1219
1220 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1221
1222          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1223
1224 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1225
1226         * mini.h (MonoBasicBlock): Add native_length field.
1227         * mini.h (MonoCompile): Add try_block_holes field.
1228         * mini.h (MonoInst): Add exception_clause pointer to
1229         the data union.
1230
1231         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1232         * mini.c (mono_cfg_add_try_hole): New function to register possible
1233         holes in try blocks.
1234         * mini.c (create_jit_info): Fill in the holes information.
1235
1236         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1237         by a try block.
1238
1239         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1240
1241 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1242
1243         * jit-icalls.c: adjusted for the array API changes.
1244
1245 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1246
1247         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1248
1249 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1250
1251         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1252         the 'pending' flag. This fixes support for appdomains too.
1253
1254
1255 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1256
1257         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1258
1259 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1260
1261         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1262         when using LLVM, LLVM generates it itself when needed.
1263
1264         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1265
1266         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1267         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1268         OP_ANDNPS/OP_ANDNPD.
1269
1270 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1271
1272         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1273         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1274         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1275
1276 2010-03-11  Martin Baulig  <martin@ximian.com>
1277
1278         * debugger-agent.c (type_commands): Add NULL check to
1279         `CMD_TYPE_GET_SOURCE_FILES'.
1280
1281 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1282
1283         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1284
1285 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1286
1287         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1288         #586664.
1289
1290         * iltests.il.in: Add a test.
1291
1292 2010-03-05  Martin Baulig  <martin@ximian.com>
1293
1294         Add support for aborting invocations.
1295
1296         * debugger-agent.c
1297         (InvokeData): Added `InvokeData *last_invoke'.
1298         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1299         added a new `invoke' field to keep the `InvokeData *' throughout
1300         the invocation.
1301         (ErrorCode): Added `ERR_NO_INVOCATION'.
1302         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1303         (mono_debugger_agent_handle_exception): Don't report any exception
1304         if an abort was requested.
1305         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1306         a thread abort if necessary.
1307         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1308
1309 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1310
1311         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1312         so we can release the whole list and not just the first one. Free
1313         it in more places as well.
1314
1315 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1316
1317         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1318
1319 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1320
1321         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1322
1323 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1324
1325         * driver.c: report also other misc build options.
1326
1327 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1328
1329         * method-to-ir.c: Generate better code for the NewObject
1330         intrinsic.
1331         
1332 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1333
1334         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1335         is disabled. Fixes #582322.
1336
1337         * iltests.il.in: Add a test.
1338
1339 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1340
1341         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1342         the handling of obj->synchronization == null and owner != current thread to
1343         mono_monitor_exit ().
1344
1345         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1346
1347
1348 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1349
1350         * mini.c: change the way emulated opcode info is stored and save about
1351         4 KB of runtime memory.
1352
1353 2010-03-04  David S. Miller  <davem@davemloft.net>
1354
1355        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1356        that don't provide the siginfo in the second signal handler argument
1357        are buggy, and this has been fixed for years.
1358        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1359        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1360
1361 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1362
1363         * aot-runtime.c (find_symbol): Fix a leak.
1364         (decode_patch): Ditto.
1365
1366 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1367
1368         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1369
1370 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1371
1372         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1373
1374 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1375
1376         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1377
1378 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1379
1380         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1381         to check for errors, it's enough to create the metadata open.
1382
1383         Fixes #562150
1384
1385 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1386
1387         * trace.c|h:
1388         * mini-exceptions.c: Add support for printing stack traces when handling
1389         exceptions, and when printing exceptions thrown while tracing also print
1390         the exception message.
1391
1392 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1393
1394         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1395         since the exclude token is a valid string character.
1396
1397 2010-03-02  Levi Bard  <levi@unity3d.com>
1398
1399         * debugger-agent.c: Invalidate thread stacks on domain unload.
1400
1401 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1402
1403         * method-to-ir.c: Emit dummy_use for stored reference after write
1404         barriers to make sure the object is pinned if the GC interrupts
1405         before the write barrier is done.
1406
1407 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1408
1409         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1410
1411 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1412
1413         * debugger-agent.c: Add a log message printing the protocol version.
1414
1415 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1416
1417         * debugger-agent.c: Add a new command to communicate the protocol version used
1418         by the client. This could be used to allow newer runtimes to communicate with
1419         older clients.
1420
1421 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1422
1423         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1424
1425 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1426
1427         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1428         type.
1429
1430 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1431
1432         * mini-arm.c: make the arm cpu arch configurable with the
1433         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1434         Bug #584198.
1435
1436 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1437
1438         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1439         support for the perf tool on Linux.
1440
1441 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1442
1443         * method-to-ir.c: make string.InsertenalSetChar() specialization
1444         effective.
1445
1446 2010-03-01  Robert Jordan  <robertj@gmx.net>
1447
1448         * Makefile.am: fix the non-static build.
1449
1450 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1451
1452         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1453         here.
1454
1455 2010-02-26  Robert Jordan  <robertj@gmx.net>
1456
1457         * tasklets.c (continuation_store): Return from an error condition
1458         immediately.
1459
1460 2010-02-26  Martin Baulig  <martin@ximian.com>
1461
1462         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1463
1464         * debug-mini.c
1465         (MonoDebuggerThreadInfo): Added `internal_flags'.
1466         (MonoDebuggerInternalThreadFlags): New enum.
1467         (_mono_debugger_throw_exception): Don't signal the debugger if a
1468         type abort was requested.
1469         (_mono_debugger_unhandled_exception): Likewise.
1470         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1471         (mono_debugger_runtime_invoke): If the debugger requested a thread
1472         abort during the invocation, reset it here.
1473
1474 2010-02-26  Martin Baulig  <martin@ximian.com>
1475
1476         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1477         instead of `MonoThread *'.
1478
1479 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1480
1481         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1482         code offsets table, as it is mostly sorted.
1483
1484 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1485
1486         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1487         Fixes #582991.
1488
1489 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1490
1491         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1492
1493 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1494
1495         * Makefile.am: build the new ABI version of the libmono library.
1496         * debugger-agent.c, mini.c: fix warnings with the new API.
1497         * jit.h: don't depend on glib.h being included.
1498
1499 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1500
1501         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1502
1503 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1504
1505         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1506         ThreadStatic variables.
1507
1508 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1509
1510         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1511         data is not freed yet. Fixes #582460.
1512
1513 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1514
1515         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1516         event requests. Bump protocol minor version.
1517
1518 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1519
1520         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1521
1522 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1523
1524         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1525         #581950.
1526
1527         * iltests.il.in: Add a test.
1528
1529 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1530
1531         * mini.c (inline_method): Check for loader errors.
1532
1533 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1534
1535         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1536         instead of mono_method_get_header as it doesn't decode locals
1537         so the called method can have unresolved dependencies that will only
1538         be satisfied after the current method is JIT'd.
1539
1540         Fixes #550968.
1541
1542 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1543
1544         * basic.cs (test_0_div_opt): Speed this up a bit.
1545
1546 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1547
1548         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1549
1550         * mini.c (mono_jit_create_remoting_trampoline): Call
1551         mono_create_specific_trampoline () instead of
1552         mono_arch_create_specific_trampoline ().
1553
1554         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1555
1556 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1557
1558         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1559         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1560
1561         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1562
1563         * mini-amd64.c: Fix DISABLE_JIT support.
1564
1565 2010-02-20  Geoff Norton  <gnorton@novell.com>
1566
1567         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1568
1569 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1570
1571         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1572         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1573         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1574         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1575         handle_exception.
1576
1577 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1578
1579         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1580         edx/ecx too. This is needed to support OP_SEQ_POINT.
1581
1582 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1583
1584         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1585
1586         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1587
1588 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1589
1590         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1591         LLVM+AOT+exceptions, not enabled yet.
1592
1593 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1594
1595         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1596
1597 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1598
1599         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1600         xdebug info for these.
1601
1602         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1603         in a few places.
1604
1605         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1606         not used yet.
1607
1608 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1609
1610         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1611
1612 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1613
1614         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1615         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1616
1617         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1618         for mtouch.
1619
1620 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1621
1622         * debugger-agent.c: handle incomplete reads and EINTR in
1623         recv()/send(). This could have been causing random
1624         disconnections.
1625
1626 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1627
1628         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1629         points.
1630
1631         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1632         so they have small offsets. Fixes #566311.
1633
1634 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1635
1636         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1637
1638 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1639
1640         * mini-amd64.c: Remove the special casing of byref in a few places now that
1641         mini_type_get_underlying_type () handles it.
1642
1643         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1644         by returning native int. Fixes #577984.
1645
1646 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1647
1648         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1649         a macro.
1650
1651         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1652         of putting the clause itself.
1653
1654         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1655
1656 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1657
1658         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1659         might be unaligned.
1660
1661 2010-02-10  Geoff Norton  <gnorton@novell.com>
1662
1663         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1664
1665 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1666
1667         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1668         llvm methods too.
1669
1670         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1671         it is not an LLVM generated symbol.
1672
1673         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1674
1675         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1676         implementation in gshared mode because it causes regressions.
1677
1678         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1679
1680         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1681         should be done by the caller.
1682
1683         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1684
1685         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1686
1687         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1688         since mono_jit_info_table_find () doesn't do it anymore.
1689
1690         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1691         instead of mono_jit_info_table_find ().
1692
1693 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1694
1695         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1696
1697         * aot-compiler.c (encode_method_ref): Update after the removal of
1698         mono_gc_get_managed_allocator_type ().
1699
1700         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1701         Fixes #564538.
1702
1703 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1704
1705         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1706         generic params as well.
1707         (handle_isinst): Ditto.
1708
1709         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1710         instead of always calling an icall.
1711
1712         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1713         computing the size of the got.
1714
1715         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1716         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1717         the assembly directive '.set' so it points to the first LLVM emitted method.
1718
1719 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1720
1721         * mini.c (mini_method_verify): Report the method which failed to verify.
1722
1723 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1724
1725         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1726         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1727         runtime MS verifier.
1728
1729 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1730
1731         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1732         #561962.
1733
1734 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1735
1736         * mini-llvm.c: Init the jit module only when first JITting.
1737
1738         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1739
1740         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1741
1742         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1743         replaced with the real got.
1744
1745         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1746
1747         * image-writer.c: Reduce the amount of #ifdefs a bit.
1748
1749         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1750         llvm on darwin/arm.
1751
1752         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1753
1754         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1755         global.
1756
1757 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1758
1759         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
1760         (mono_llvm_emit_method): Fix unaligned stores too.
1761
1762         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
1763         so async stack walks don't crash.
1764
1765 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1766
1767         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
1768         was not patched if the callee needed an rgctx trampoline.
1769
1770 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1771
1772         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
1773         vtable address in AOT code.
1774
1775 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1776
1777         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
1778         MonoInst's.
1779
1780 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
1781
1782         * genmdesc.pl: remove dependency on external cpp.
1783
1784 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1785
1786         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
1787         using LLVM, its not needed, and abcrem can't handle it.
1788
1789 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1790
1791         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
1792         it easier to group instructions and reduce duplication.
1793
1794 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1795
1796         * decompose.c: Move the array/soft float decompose routines here from
1797         method-to-ir.c.
1798
1799         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
1800
1801 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
1802
1803         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
1804         to tell LLVM that the got is constant, not used yet.
1805
1806         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
1807
1808 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1809
1810         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
1811         managed wrappers.
1812
1813 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1814
1815         * aot-compiler.c (add_wrappers): Commit the hack which generates
1816         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
1817         custom attribute.
1818
1819 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1820
1821         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
1822         a fault, only used by the LLVM backend.
1823
1824         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
1825         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
1826
1827         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
1828         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
1829
1830         * mini-llvm.c: Only generate volatile loads from load instructions which have
1831         the MONO_INST_FAULT flag set.
1832
1833 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1834
1835         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
1836         64 bit platforms.
1837
1838 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1839
1840         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
1841         sequence points. Fixes #571236.
1842
1843 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1844
1845         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
1846         end of the appdomain unload process, after assemblies have been unloaded.
1847         Fixes #574842.
1848
1849 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
1850
1851         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
1852         works.
1853
1854         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
1855         Fixes #573988.
1856
1857 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
1858
1859         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
1860
1861 2010-01-26  Geoff Norton  <gnorton@novell.com>
1862
1863         * aot-compiler.c: Fix a logic error introduced when guarding against enums
1864         with struct marshalability.
1865
1866 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1867
1868         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
1869         it supports class names as well.
1870
1871         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
1872         needed by the GC map code.
1873
1874         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
1875         flags if needed.
1876
1877         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
1878         if cfg->init_ref_vars is set.
1879
1880         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
1881         cfg->disable_initlocals_op_refs is set.
1882
1883         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
1884         using liveness info if cfg->compute_precise_live_ranges is set.
1885
1886         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
1887         volatile variables correctly. Add comments about the live ranges. Not enabled
1888         yet.
1889
1890 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1891
1892         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
1893         0x2a into them in method prologs.
1894
1895         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
1896
1897 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
1898
1899         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
1900         classes, since llvm is compiled with -fno-rtti.
1901
1902         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
1903
1904         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
1905         llvm does not require it.
1906
1907         * aot-runtime.c (load_method): Print the full name of the last aot method.
1908
1909 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1910
1911         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
1912         thread has not fully started yet.
1913
1914 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1915
1916         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
1917
1918 2010-01-21  Miguel de Icaza  <miguel@novell.com>
1919
1920         * driver.c: Do not abort if LLVM is not supported, print a
1921         warning and add the information to the Mono JIT information.
1922
1923 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1924
1925         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
1926         using explicit null checks.
1927
1928 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
1929
1930         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
1931         related code.
1932
1933         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
1934         () in one place.
1935         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
1936         its no longer needed.
1937
1938         * method-to-ir.c (mono_method_to_ir): Fix a warning.
1939
1940         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
1941         define for platforms still using it (s390). Get rid of the
1942         mono_arch_get_throw_exception_by_name () routines on all other platforms.
1943
1944         * exceptions-x86.c: Rework the throw trampolines so there is only one function
1945         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
1946
1947         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
1948         the caller pushed the arguments.
1949
1950         * mini-llvm.c: Enable throwing exceptions on x86.
1951
1952         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
1953         "Thread (nil) may have been prematurely finalized" messages if this is called
1954         on a thread not registered with the runtime.
1955
1956         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
1957
1958 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1959
1960         * jit-icalls.c (mono_array_new_3): New jit icall.
1961
1962         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
1963
1964         * arrays.cs: Add a test for 3 dimensional arrays.
1965
1966 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1967
1968         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
1969         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
1970         used.
1971
1972         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
1973         thrown on x86.
1974
1975         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
1976
1977         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
1978
1979         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
1980
1981 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
1982
1983         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
1984           HOST_WIN32.  Also including winsock2. to define struct in_addr.
1985
1986         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1987
1988         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1989
1990         Code is contributed under MIT/X11 license.
1991
1992 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1993
1994         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
1995
1996         * branch-opts.c (mono_optimize_branches): Honor the new flag.
1997
1998         * mini.c (mini_method_compile): Set the new flag when running under the
1999         debugger.
2000
2001 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2002
2003         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2004         a ref/noref value + a global pin flag, so parts of stack frames can still be
2005         precisely marked even if they include stuff which needs pinning. Improve logging.
2006         Fix many bugs. Not enabled yet.
2007
2008         * gc-test.cs: Add a few tests.
2009
2010         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2011         the normal -v options. Avoid propagating liveness information through bblocks
2012         which end with a NOT_REACHED opcode.
2013
2014         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2015         after cfg has been freed.
2016
2017 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2018
2019         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2020         if a clause is skipped because it uses the exception object, since it could
2021         have caught the exception.
2022
2023         * exceptions.cs: Add a test.
2024
2025 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2026
2027        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2028
2029         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2030         ICollection<T> wrappers.
2031
2032 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2033
2034         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2035
2036 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2037
2038         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2039         NOMAP32BIT or optimize_for_xen is set.
2040
2041 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2042
2043         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2044         mono_metadata_str_hash () instead.
2045
2046 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2047
2048         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2049         sizeof (void*).
2050
2051         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2052
2053 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2054
2055         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2056         flag is set.
2057
2058         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2059         throwing code correctly.
2060
2061         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2062
2063 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2064
2065         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2066         ftnptrs created by us, handle RGCTX_FETCH correctly.
2067         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2068
2069         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2070         ftnptr added by mono_aot_get_named_code ().
2071
2072 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2073
2074         * mini-arm.c: Fix a few LLVM problems.
2075
2076         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2077
2078 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2079
2080         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2081         AOT compiling.
2082
2083 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2084
2085         * jit.h, method-to-ir.c: added ability to set the policy for
2086         inserting breakpoints from the break IL instruction or the
2087         Debugger.Break () API call.
2088
2089 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2090
2091         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2092         assemblies need to be eagerly loaded.
2093
2094 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2095
2096         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2097
2098 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2099
2100         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2101         an argument which matches any exception.
2102
2103 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2104
2105         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2106         optimization if the called method is gshared and marshalbyref, since gshared
2107         methods can' have wrappers. Fixes #569390.
2108
2109         * generics.cs: Add a test.
2110
2111 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2112
2113         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2114         callable from gdb.
2115
2116 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2117
2118         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2119
2120 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2121
2122         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2123         since it is not supported in win2000.
2124
2125 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2126
2127         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2128         error if loading an assembly fails.
2129         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2130
2131         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2132         if exists.
2133
2134         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2135         compiled methods.
2136
2137         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2138
2139         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2140         is not supported yet.
2141
2142         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2143
2144 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2145
2146         * method-to-ir.c: All types with variant arguments must fallback to the
2147         slow path. This makes cast of variant delegates work.
2148
2149         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2150         argument that is set to TRUE is the returned vtable slot is for a variant
2151         interface. Changed a g_print + g_assert_not_reached to a g_error.
2152
2153         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2154         a similar fashion of generic virtual methods.
2155
2156 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2157
2158         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2159         when cfg is null.
2160
2161         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2162         method using a variance aware function.
2163
2164         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2165
2166 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2167
2168         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2169         do an icall for now.
2170
2171 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2172
2173         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2174         If LLVM decides to set the code model to Large, reset it to Default.
2175
2176 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2177
2178         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2179         stripped binaries as well.
2180
2181 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2182
2183         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2184         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2185
2186         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2187         reg.
2188
2189 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2190
2191         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2192         separate function.
2193
2194         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2195         as the type info to llvm.eh.selector.
2196         (exception_cb): Use the type info for filling out some fields of
2197         MonoJitExceptionInfo like the flags and the exception class. This is needed
2198         because the LLVM produced exception handling clauses might not match the original
2199         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2200
2201         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2202         separate function. Add an extra argument which returns the type infos
2203         corresponding to the exception clauses.
2204
2205         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2206         exception handling clauses.
2207
2208 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2209
2210         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2211         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2212         to fix an AOT case.
2213
2214 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2215
2216         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2217         internal assembly.
2218
2219 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2220
2221         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2222         llvm code.
2223
2224 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2225
2226         * mini.c (mini_method_compile): Verify the method before calling
2227         mono_compile_create_vars as this might crash since it uses method
2228         information.
2229
2230         Fixes #560196.
2231
2232 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2233
2234         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2235         one case if AOTing, since the class might not be a concrete class.
2236
2237 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2238
2239         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2240         functions which are now defined in mempool-internals.h.
2241
2242         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2243
2244         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2245
2246 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2247
2248         * mini.c:
2249         * method-to.ir.c:
2250         * mini-*.c: Properly handle generic enums.
2251
2252         Fixes #566294
2253
2254 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2255
2256         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2257         in a few more places.
2258
2259 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2260
2261         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2262         nullable parameters. Fixes #567351.
2263
2264 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2265
2266         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2267
2268 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2269
2270         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2271         mono_get_generic_context_from_code () call.
2272
2273         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2274
2275 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2276
2277         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2278         needed.
2279
2280 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2281
2282         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2283         mono_method_get_signature returns NULL. Fix #567084
2284
2285 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2286
2287         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2288         instead of once for each module.
2289
2290 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2291
2292         * debugger-agent.c (ss_start): Implement step over for the last sequence
2293         point in methods.
2294
2295         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2296         have the STEP_LOC flag set.
2297
2298         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2299         fails. Fixes #566689.
2300
2301 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2302
2303         * mini.c (mono_add_seq_point): New helper function.
2304         (mono_save_seq_point_info): New function to save sequence point info, extracted
2305         from mini_method_compile ().
2306
2307         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2308
2309         * mini.h (MonoSeqPointInfo): New structure containing information about
2310         the sequence points of a JITted method.
2311         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2312         'bucket' field.
2313
2314         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2315         point information is stored, use a MonoSeqPointInfo structure instead of a
2316         GPtrArray. For each seq point, compute a list of successor seq points.
2317
2318         * debugger-agent.c: Use the successor list to implement step-over more
2319         efficiently: instead of single stepping until a different line/IL offset is
2320         reached, place breakpoints into all successor seq points.
2321
2322         * mini.h: Bump AOT file format version.
2323
2324 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2325
2326         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2327
2328         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2329
2330 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2331
2332         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2333         build.
2334
2335 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2336
2337         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2338         alloca as g_malloc is not signal safe.
2339
2340 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2341
2342         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2343         VALGRIND_DISCARD_TRANSLATIONS.
2344
2345         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2346         checks, they are no longer needed.
2347
2348         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2349         a function into a sigctx which can handle function pointers.
2350
2351         * mini-ppc.c: Implement soft debugger support on ppc64.
2352
2353         * mini-ppc.c: Implement soft debugger support.
2354
2355 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2356
2357         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2358
2359 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2360
2361         * mini.c (mono_get_runtime_build_info): include Mono version in
2362         the returned value.
2363
2364         * driver.c (mono_main): VERSION is now included in the string
2365         returned from mono_get_runtime_build_info()
2366
2367 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2368
2369         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2370         signatures. Fixes #565143.
2371
2372         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2373
2374 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2375
2376         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2377
2378 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2379
2380         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2381         making max stack 10x smaller.
2382
2383 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2384
2385         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2386
2387 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2388
2389         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2390
2391 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2392
2393         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2394         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2395
2396         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2397
2398         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2399
2400         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2401
2402         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2403         the compilation.
2404
2405 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2406
2407         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2408         raise an invalid program exception.   
2409
2410         For other opcodes that we might not handle use a g_warning and
2411         raise the exception.   Beats termination.
2412
2413         Fixes #561724
2414
2415 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2416
2417         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2418
2419         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2420         by merging the LLVM and !MAP_32BIT cases.
2421
2422 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2423
2424         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2425         sigctx being passed in, as we have no CONTEXT available in the APC.
2426
2427         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2428         for now.
2429
2430         Code contributed under MIT/X11 license.
2431
2432 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2433
2434         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2435         in the LLVM backend on AMD64.
2436
2437         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2438         FDE.
2439
2440         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2441
2442         * mini-llvm.c: Export mono_personality for AOT.
2443
2444         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2445
2446         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2447         implicit exception can occur.
2448
2449         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2450         OP_IMPLICIT_EXCEPTION instruction.
2451
2452         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2453
2454         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2455
2456         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2457         inside a protected block.
2458
2459         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2460         trampolines doesn't include the argument.
2461
2462         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2463         trampolines on amd64.
2464
2465         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2466         of RDI.
2467
2468         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2469         disabled for methods with clauses.
2470
2471         * mini-llvm.c: Enable support for catch clauses.
2472
2473         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2474         end of an LLVM compiled finally clause.
2475         (mono_handle_exception_internal): Save the exception handling state in TLS
2476         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2477         resume unwinding from that point.
2478
2479         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2480         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2481         to obtain the addresses of the exception handling regions.
2482
2483         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2484         finally clauses are supported.
2485
2486         * mini.c (mini_method_compile): Add support for LLVM code with exception
2487         handlers.
2488
2489 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2490
2491         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2492         proper size.
2493
2494 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2495
2496         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2497         as a primitive type.
2498
2499 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2500
2501         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2502         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2503         #564000.
2504
2505 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2506
2507         * method-to-ir.c (mini_redirect_call): do not redirect the
2508         InternalAllocateStr internal call if string profiling is enabled.
2509
2510 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2511
2512         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2513         generic methods.
2514
2515         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2516         unwind.h header file.
2517
2518         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2519         newer valgrind versions seems to handle this fine.
2520
2521 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2522
2523         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2524         on the debugger thread.
2525
2526 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2527
2528         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2529
2530         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2531
2532         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2533
2534         * cpu-<ARCH>.md: Make call_handler clob:c.
2535
2536         * mini.c: Reenable SSA for methods with clauses.
2537
2538         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2539         as it causes failures on x86.
2540
2541 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2542
2543         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2544         returns NULL (e.g. a bad assembly).
2545
2546 2009-12-08  Geoff Norton  <gnorton@novell.com>
2547
2548         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2549         stepping out into native code.  There were issues with nested invokes
2550         like .cctors.
2551
2552 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2553
2554         * mini.c (mini_method_compile): Do the disable_llvm checks early
2555         and avoid the LLVM compile pass if the checks fail.
2556
2557         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2558
2559         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2560         LLVM optimizations don't try to remove them.
2561
2562         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2563         different file so the original remains.
2564
2565 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2566
2567         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2568
2569         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2570
2571         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2572         support for non-inline unwind descriptors.
2573
2574 2009-12-07  Geoff Norton  <gnorton@novell.com>
2575
2576         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2577         the interrupt_count slightly differently.  Native threads were never
2578         marked as resumed.
2579
2580 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2581
2582         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2583         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2584         yet generate this info.
2585
2586         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2587
2588         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2589         client can distinguish between intptrs and longs.
2590
2591 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2592
2593         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2594         blob.
2595
2596         * aot-runtime.c (load_function): Update after the change above.
2597
2598         * mini.h: Bump AOT file format version.
2599
2600         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2601         if the delegate class is dynamic.
2602
2603         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2604         in gshared code too using the new rgctx info type
2605         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2606
2607 2009-12-04  Geoff Norton  <gnorton@novell.com>
2608
2609         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2610         we need to track the original suspend count so the thread properly
2611         wakes up in resume_thread.
2612
2613 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2614
2615         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2616         code.
2617
2618         * generics.cs: Add a test.
2619
2620         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2621         is 0. Simplify a lot of code using this.
2622
2623         * mini-trampolines.c (mono_delegate_trampoline): Call
2624         mono_create_static_rgctx_trampoline () before saving the final address in
2625         delegate->method_code, to avoid calling it each time a delegate is first called.
2626
2627         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2628         which need static rgctx trampolines.
2629
2630         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2631         keyed on the method+addr pair, since addr could be either the method addr or
2632         an unbox trampoline in the AOT case. Fixes #560246.
2633
2634 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2635
2636         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2637         place it was called before too.
2638
2639 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2640
2641         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2642         if no security manager is present, to speed up the AOT case. Call
2643         mono_class_vtable () full with raise_on_error == TRUE instead.
2644
2645 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2646
2647         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2648         the local optimization passes can take its result into account. Fixes
2649         #559876.
2650
2651         * exceptions.cs: Add a test.
2652
2653 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2654
2655         This patch is contributed under the terms of the MIT/X11 license
2656
2657         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2658
2659 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2660
2661         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2662
2663         * debugger-agent.c: Rework the handling of stack traces of running threads to
2664         avoid crashes if compute_frames () tries to walk the stack of running thread.
2665
2666         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2667
2668         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2669
2670         * mini.h (StackFrameInfo): Add an 'lmf' field.
2671
2672 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2673
2674         * debugger-agent.c (suspend_current): Always set really_suspended.
2675
2676         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2677
2678         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2679
2680 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2681
2682         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2683         really suspended.
2684
2685 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2686
2687         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2688
2689 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2690
2691         * mini-trampolines.c: Fix MSVC build.
2692
2693 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2694
2695         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2696
2697 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2698
2699         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2700         the instruction following an OP_FCOMPARE is optimized away.
2701
2702 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2703
2704         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2705         emit_autoreg () into this arch-specific function.
2706
2707         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2708         code, it is no longer needed.
2709
2710         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2711
2712         * mini.h: Bump AOT file format version.
2713
2714         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2715         using the sorted_code_offsets array, instead of reading it from the
2716         exception debug info.
2717         (load_method): Call mono_aot_find_jit_info instead of
2718         decode_exception_debug_info ().
2719
2720         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2721         LLVM compiled as a flag.
2722
2723 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2724
2725         * debugger-agent.c (resume_thread): Fix a warning.
2726
2727         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2728         generated.
2729
2730 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2731
2732         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2733         contents to MonoAotFileInfo.
2734
2735 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2736
2737         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2738         Put all binary data into a giant blob, similarly to the way .net assemblies
2739         store binary data. Emit offset tables in a compact form to reduce their size.
2740
2741         * mini.h: Bump AOT file format version.
2742
2743         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2744         places.
2745
2746         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2747         avoid linear searches at runtime.
2748
2749         * aot-runtime.c (find_symbol): Update this to use the hash.
2750
2751         * mini.h: Bump AOT file format version.
2752
2753 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2754
2755         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
2756         container.
2757
2758         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
2759         too.
2760
2761         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
2762         the distribution of got slot types.
2763
2764         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
2765
2766         * method-to-ir.c: Add support for generating explicit null checks.
2767
2768 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2769
2770         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
2771         on a random thread if possible.
2772
2773         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
2774         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
2775         correctly.
2776
2777         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
2778         regs. Pass the real size of the regs array to mono_unwind_frame ().
2779
2780         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
2781         ones instead.
2782
2783 2009-11-24  Geoff Norton  <gnorton@novell.com>
2784
2785         * mini-darwin.c: Work around apple bug rdar://7209349  See
2786         http://openradar.appspot.com/7209349 for details.  Synopsis,
2787         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
2788         never been initialized before.
2789
2790 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2791
2792         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
2793
2794         * mini-arm.c (mono_arm_thumb_supported): New helper function.
2795
2796 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2797
2798         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
2799         OP_SHL_IMM is not 32 bit.
2800
2801 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2802
2803         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
2804
2805 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2806
2807         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
2808         encountered.
2809
2810         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
2811         > 0 since some threads can resume if their resume_count is > 0.
2812         (invoke_method): Avoid reading freed memory.
2813
2814         * debugger-agent.c (process_suspend): Extract the suspend code from
2815         process_single_step_inner () to a separate function. Rework the code to prevent
2816         races between this function and thread interrupts.
2817
2818         * debugger-agent.c (suspend_current): Check the resume_count field instead
2819         of resume_one so suspends+resumes during single threaded invokes work
2820         correctly.
2821
2822 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
2823
2824         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
2825         to make the generated code smaller.
2826
2827         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
2828         sequence generated by recent LLVM versions.
2829
2830         * mini-llvm.c: Add support for a few simple cases which weren't supported
2831         before.
2832
2833         * mini-trampolines.c (mono_magic_trampoline): Don't call
2834         mono_arch_get_vcall_slot () when llvm is enabled.
2835
2836         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
2837
2838         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
2839         into a new function called common_call_trampoline () which is used by the
2840         llvm vcall trampoline as well.
2841
2842         * debugger-agent.c: Implement single threaded invokes.
2843
2844         * debugger-agent.c: Revert change which broke the agent on linux.
2845
2846         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
2847         #557606.
2848
2849         * generics.cs: Add a test.
2850
2851 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
2852
2853         * debugger-agent.c: Fix the cygwin build.
2854
2855 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2856
2857         * cprop.c: Remove this unused file.
2858
2859 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2860
2861         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
2862         #557262.
2863
2864         * basic.cs: Add a test.
2865
2866 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2867
2868         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
2869         in one more place.
2870
2871 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
2872
2873         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
2874         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
2875         it. Use this flag to control llvm related code paths instead of #ifdef
2876         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
2877         AOT code.
2878
2879         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
2880
2881         * mini.h: Bump AOT file format version.
2882
2883         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
2884         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
2885
2886         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
2887         was used as an assembly filter.
2888
2889 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2890
2891         * unwind.c: Fix support for ppc.
2892
2893         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
2894         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
2895
2896 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2897
2898         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
2899         port.
2900         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
2901         added by the ps3 changes.
2902
2903 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2904
2905         * mini-gc.c: Resurrect this, so at least it compiles.
2906
2907         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
2908
2909 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
2910
2911         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
2912         create_event_list () so assembly filters can be used.
2913
2914         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
2915         from the LMF.
2916
2917 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
2918
2919         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
2920         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
2921         is disabled.
2922
2923         * aot-compiler.c (add_generic_instances): Emit instances of common generic
2924         classes for char/bool too.
2925
2926         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
2927
2928         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
2929         used.
2930
2931         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
2932         Fix warnings.
2933
2934 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
2935
2936         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
2937         
2938         Code contributed under MIT/X11 license.
2939
2940 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
2941
2942         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
2943         threads in native code work.
2944
2945         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
2946         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
2947         version.
2948
2949 2009-11-13 Jonathan Chambers <joncham@gmail.com>
2950
2951         * debugger-agent.c: Implementation for Windows platform.
2952
2953         * mini-x86.c: Add support for Windows. Use mono-* synchronization
2954         primitives. Use SEH to implement breakpoints and single stepping.
2955
2956         * mini-x86.h: Enable soft debugger on Windows.
2957
2958         Code contributed under MIT/X11 license.
2959
2960 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2961
2962         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
2963         under XEN. Fixes #522894.
2964
2965         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
2966
2967         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
2968         interface calls in LLVM AOT code.
2969
2970         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
2971         is found.
2972
2973         * mini-llvm.c: Add support for OP_VPHI.
2974
2975         * objects.cs: Add a test.
2976
2977 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2978
2979         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
2980         this is called on the debugger thread.
2981
2982 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
2983
2984         * mini-llvm.c: Add soft-float support.
2985
2986         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
2987         FCALL which returns an R4.
2988
2989         * driver.c (mono_main): Add a missing '\n'.
2990
2991         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
2992         platforms which doesn't support the LLVM IMT trampoline.
2993
2994 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
2995
2996         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
2997
2998         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
2999
3000         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
3001         virtual calls.
3002
3003         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3004
3005 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3006
3007         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3008         Instead of emitting a method_order table, sort the contents of the code_offsets
3009         table and do a binary search in the sorted table. The previous approach doesn't
3010         work with LLVM which emits methods in a arbitrary order.
3011
3012         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3013         in the .eh_frame section in ELF files.
3014
3015         * mini.h: Bump corlib file format version.
3016
3017         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3018
3019         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3020         LDMIA->LDM macro name change.
3021
3022 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3023
3024         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3025         x86.
3026
3027         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3028         SVN.
3029
3030         * aot-compiler.c: Ditto.
3031
3032         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3033         &align to mini_type_stack_size_full ().
3034
3035         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3036
3037         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3038
3039 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3040
3041         * mini-arm.c: Compute the stack space used by arguments using
3042         mini_type_stack_size_full ().
3043
3044 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3045
3046         * optflags-def.h: Remove dead TREEPROP optimization.
3047
3048 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3049
3050         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3051
3052         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3053
3054 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3055
3056         * driver.c (mono_jit_parse_options): New public API function to parse options
3057         as done by the runtime executable.
3058
3059         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3060         when handling named arguments.
3061
3062 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3063
3064         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3065         for passing small vtypes in registers, make the CallInfo structures more
3066         similar to the code on the other platforms.
3067
3068         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3069         the code in the prolog requires it.
3070
3071 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3072
3073         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3074         (koush@koushikdutta.com).
3075
3076         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3077         where the thunk memory should be allocated from. Fixes appdomain unloading
3078         on arm.
3079
3080 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3081
3082         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3083         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3084
3085 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3086
3087         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3088         AOT, as it is not implemented yet.
3089
3090         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3091
3092 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3093
3094         * debugger-agent.c: Fix windows build.
3095
3096 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3097
3098         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3099         after the client connects/disconnects.
3100
3101         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3102         when an exception of a given type is thrown.
3103
3104         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3105         only on an uncaught exception.
3106
3107         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3108
3109         * debugger-agent.c: Add a 'launch' option.
3110
3111 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3112
3113         * debugger-agent.c: Add a 'timeout' option.
3114
3115 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3116
3117         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3118         the JDWP agent.
3119
3120 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3121
3122         * debugger-agent.c (set_breakpoint): Emit a log message.
3123
3124 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3125
3126         * mini-arm.c: Fix the arm build.
3127
3128 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3129
3130         * aot-compiler.c: don't leak the value returned from
3131         mono_type_full_name().
3132
3133 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3134
3135         * debugger-agent.c: defer including mono-mutex.h until we know the
3136         agent is supported.
3137
3138 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3139
3140         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3141         of pthreads directly.
3142
3143         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3144         exception handlers. Pass info argument.
3145
3146         * mini.h: Adjust signatures of soft debugger functions to pass void*
3147         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3148
3149         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3150         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3151         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3152         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3153
3154         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3155
3156         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3157         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3158         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3159         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3160
3161         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3162
3163         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3164
3165         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3166
3167         * mono-semaphore.h: Skeleton implementation for Windows.
3168
3169         Code contributed under MIT/X11 license.
3170
3171 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3172
3173         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3174
3175         Code contributed under MIT/X11 license.
3176
3177 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3178
3179         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3180
3181         Code contributed under MIT/X11 license.
3182
3183 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3184
3185         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3186         debug info to 100 because 10 still slows down gdb too much.
3187
3188         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3189         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3190         them in the wrappers.
3191
3192 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3193
3194         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3195
3196         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3197
3198         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3199         function mono_aot_get_array_helper_from_wrapper ().
3200
3201         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3202         array helper methods.
3203
3204 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3205
3206         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3207         the value was loaded from memory.
3208
3209         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3210         the value was loader from there.
3211
3212         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3213         without constant swizzle.
3214
3215 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3216
3217         * mini-amd64.c: Put soft debugger functions behind a
3218         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3219
3220         * mini-amd64.h: disable the soft debugger in windows.
3221
3222         Code contributed under MIT/X11 license.
3223
3224 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3225
3226         * mini-x86.c: Put soft debugger functions behind a
3227         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3228
3229         Code contributed under MIT/X11 license.
3230
3231 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3232
3233         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3234         to mono_arch_find_jit_info_ext.
3235
3236         Code contributed under MIT/X11 license.
3237
3238 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3239
3240         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3241
3242         * debugger-agent.c: Add support for filtering events by assemblies.
3243
3244         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3245         the agent is not enabled.
3246
3247 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3248
3249         * exceptions-x86.c: hopefully last change to fix the windows build.
3250         This one courtesy of Jonathan Chambers.
3251
3252 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3253
3254         * debugger-agent.c: remove unused function.
3255
3256 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3257
3258         * debugger-agent.c: add #ifdefs for a few header files.
3259         * mini-x86.h: disable the soft debugger in windows.
3260         Step 1 of 2 to make this compile on windows with gcc.
3261
3262 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3263
3264         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3265         as it breaks the build.
3266
3267 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3268
3269         Merge the soft debugger branch.
3270
3271         * debugger-agent.h debugger-agent.c: New files containing the soft
3272         mode debugger module.
3273
3274         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3275         at the appropriate locations.
3276
3277         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3278         opcode.
3279
3280         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3281         enable/disable single stepping.
3282
3283         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3284         which returns all information in a StackFrameInfo structure, and can handle the
3285         LMF frames added by the debugger.
3286
3287         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3288         about an LMF frame.
3289
3290         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3291         walker function which works on a specific thread and passes a StackFrameInfo
3292         structure to its callback.
3293
3294         * mini.c (mini_init): Initialize the debugger agent.
3295
3296         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3297
3298         * mini-ops.h: Add OP_SEQ_POINT opcode.
3299
3300         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3301         arguments to the debugger agent.
3302
3303 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3304
3305         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3306         speed things up.
3307
3308         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3309
3310         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3311
3312         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3313
3314         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3315         if needed.
3316         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3317         sets the IMT argument and makes a virtual call.
3318
3319         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3320
3321 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3322
3323         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3324         the windows build.
3325
3326 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3327
3328         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3329         runtime. Fixes #551228.
3330
3331 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3332
3333         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3334
3335         * basic.cs: Add a test.
3336
3337         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3338         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3339         CONSTRAINED. Fixes #550964.
3340
3341         * generics.cs: Add a test.
3342
3343 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3344
3345         * mini-posix.c (add_signal_handler): Use
3346         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3347
3348 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3349
3350         Contributed under the terms of the MIT/X11 license by
3351         Jerry Maine <crashfourit@gail.com>.
3352
3353         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3354         sse4a for simd intrinsics.
3355
3356         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3357         sse4a for simd intrinsics.
3358
3359 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3360
3361         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3362         instead of inst_p1 which is not the same on ILP32 platforms.
3363
3364 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3365
3366         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3367         not the mscorlib one before calling mono_get_lmf_addr.
3368
3369         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3370         of the ip to the LMF.
3371
3372         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3373         immediate in the op->op_imm optimization.
3374
3375         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3376         understand. VTypes now work, but are not abi compliant, as they are
3377         split into 4 byte parts instead of 8.
3378         (emit_memcpy): Fix the unrolled case to work on the PS3.
3379
3380         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3381
3382         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3383         the default when static linking.
3384
3385         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3386
3387         * aot-compiler.c: Add an autoreg option to automatically register
3388         statically linked aot modules using ELF .ctors.
3389
3390         * genmdesc.pl: Add __ppc64__ to allowed defines.
3391
3392 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3393
3394         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3395         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3396
3397 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3398
3399         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3400
3401 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3402
3403         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3404         which will contain the domain where the method was found.
3405
3406         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3407         mini_jit_info_table_find ().
3408
3409         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3410
3411         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3412
3413 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3414
3415         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3416         set, its not supported yet.
3417
3418 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3419
3420         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3421         iface wrapper is not found.
3422         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3423
3424 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3425
3426         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3427         which have a different name.
3428
3429         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3430         wrappers and Array.GetGenericValueImpl ().
3431
3432         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3433         because of the change above.
3434
3435         * generics.cs: Add a test for full aot + generic array ifaces.
3436
3437 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3438
3439         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3440         that hides the previous one.
3441
3442 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3443
3444         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3445         marshalled. Fixes #541623.
3446
3447 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3448
3449         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3450
3451 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3452
3453         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3454
3455 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3456
3457         * mini-posix.c (sigprof_signal_handler):
3458         Implemented support for building stat call chans in different ways.
3459
3460 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3461
3462         * mini-exceptions.c (mono_find_jit_info):
3463         Also check that a jit info has been found (fixes a profiler crash).
3464
3465 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3466
3467         * mini.c (mono_codegen):
3468         Call mono_profiler_code_buffer_new with correct code address.
3469
3470 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3471
3472         * driver.c (mono_main): Change the date in the copyright.
3473
3474 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3475
3476         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3477         allocator in shared generic code for open classes, because we
3478         can't get those classes' vtables.  We need to make managed
3479         allocators not depend on the vtable at compile-time to solve this.
3480
3481 2009-10-13  Martin Baulig  <martin@ximian.com>
3482
3483         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3484         `const guint8 *trampoline' argument; send both the old and the new
3485         notification.
3486
3487 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3488
3489         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3490         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3491         (can_marshal_struct): Skip structures with auto layout.
3492
3493         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3494
3495 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3496
3497         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3498         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3499         a variable to hold the stack slot used by the int<->float conversion opcodes.
3500
3501         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3502
3503 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3504
3505         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3506         when using full-aot.
3507
3508 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3509
3510         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3511         each instance of Comparer<T>.
3512
3513         * generics.cs: Add a new test.
3514
3515 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3516
3517         * driver.c (parse_debug_options): Add a 'gdb' option.
3518
3519         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3520
3521         * image-writer.c: Add support for emitting the image into a memory buffer.
3522
3523         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3524
3525         * aot-compiler.c: Add support for registering debug info with GDB using the
3526         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3527         MONO_XDEBUG to 'gdb'.
3528
3529 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3530
3531         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3532         gdb mode.
3533
3534 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3535
3536         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3537         can be used to set breakpoints in gdb.
3538
3539         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3540         segment to an absolute address.
3541
3542 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3543
3544         * method-to-ir.c: Use the managed array allocator method if
3545         available.
3546
3547 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3548
3549         * aot-compiler.c : Fix the MSVC builds
3550
3551         Code is contributed under MIT/X11 license.
3552
3553 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3554
3555         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3556         avoid registering 1 symbol file per method with gdb.
3557
3558 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3559
3560         * mini-sparc.c: Fix the handling of enums with base type long.
3561
3562         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3563
3564         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3565         instead of using type->data.klass as the later doesn't work with generics.
3566
3567 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3568
3569         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3570         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3571         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3572         works differently now and we don't handle it in the JIT anymore.
3573
3574         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3575         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3576         the Thread class split.
3577
3578 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3579
3580         * driver.c: Don't run tests with the obsolete treeprop optimization.
3581
3582         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3583         variable volatile. Fixes #541577.
3584
3585         * basic-calls.cs: Add a new test.
3586
3587         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3588
3589 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3590
3591         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3592         work/required with recent iphone sdk versions.
3593
3594         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3595         structures.
3596
3597         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3598         in the VCALL decomposition code.
3599
3600 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3601
3602         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3603
3604         * basic.cs: Add a test.
3605
3606         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3607         generic invokes.
3608
3609         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3610         searches all the domains of the current thread.
3611
3612         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3613
3614 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3615
3616         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3617         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3618
3619         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3620         for non-jit trampolines.
3621
3622         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3623
3624         * aot-compiler.c (add_wrappers): Ditto.
3625
3626         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3627         the size of the param area used by dyn_call to 6 which covers the majority of
3628         methods.
3629
3630         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3631
3632         * mini-arm.c: Implement support for passing/receiving
3633         longs and receiving floats in the dyn_call code.
3634
3635         * mini-amd64.c: Implement support for receiving vtypes in registers in
3636         the dyn_call code.
3637
3638         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3639         the dyn_call code.
3640
3641 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3642
3643         * mini-arm.c (get_call_info): Return more precise information in
3644         ArgInfo->regtype.
3645         (dyn_call_supported): Use the information in CallInfo.
3646
3647         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3648
3649         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3650         code.
3651
3652         * mini-arm.c: Update after the dyn_call api changes.
3653
3654         * mini.c (mini_create_jit_domain_info): Register a destructor function
3655         for the runtime_invoke_hash.
3656
3657         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3658         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3659         this function.
3660         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3661         (dyn_call_supported): Simplify this by using get_call_info ().
3662         (mono_arch_dyn_call_free): New destructor function.
3663
3664         * generics.cs: Remove a printf.
3665
3666         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3667
3668         * mini-arm.c: Add support for enum return values and passing a few arguments
3669         on the stack.
3670         
3671         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3672         dyn invoke.
3673
3674         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3675
3676         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3677         the dynamic invoke wrappers.
3678
3679         * mini-arm.c: Implement OP_DYN_CALL for arm.
3680
3681         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3682         supported by the dynamic runtime invoke wrapper.
3683
3684         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3685         runtime invoke wrapper.
3686
3687         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3688         if possible when running with full-aot.
3689
3690         * mini-ops.h: Add OP_DYN_CALL opcode.
3691
3692         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3693         with dynamic arguments lists similar to libffi.
3694
3695 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3696
3697         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3698         
3699         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3700         to NEWARR.
3701
3702         * iltests.il.in: Add a new test.
3703         
3704 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3705
3706         * aot-compiler.c (add_generic_instances): Add more instances of
3707         GenericEqualityComparer.
3708
3709 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3710
3711         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3712
3713 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3714
3715         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3716         comments on some functions that now can fail.
3717
3718 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3719
3720         * Makefile.am: Add Info.plist to EXTRA_DIST
3721
3722 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3723
3724         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3725         static synchronized wrappers. Fixes #539500.
3726
3727 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3728
3729         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3730         properly.
3731
3732 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3733
3734         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3735         lmf before calling filter clauses as well. Fixes #539550.
3736
3737         * exceptions.cs: Add a test.
3738         
3739 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3740
3741         * aot-compiler.c (add_generic_class): Add instances of
3742         Array.GetGenericValueImpl as well.
3743
3744         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3745         can be tested too.
3746
3747         * generics.cs: Add a fullaot linq test.
3748
3749 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3750
3751         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3752         reg r1 on arm.
3753
3754 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3755
3756         * mini-trampolines.c (mono_delegate_trampoline) : Call
3757           mono_cominterop_get_invoke if the delegate target object
3758           is a COM object.
3759
3760         Code is contributed under MIT/X11 license.
3761
3762 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
3763
3764         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
3765         internal call is defined outside platform code. Reduce code 
3766         duplication with existing [Method|Field]AccessException
3767
3768 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3769
3770         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
3771         if the return value is a small struct passed on regs.
3772
3773 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
3774
3775         * cpu-arm.md mini-arm.c: Remove unused opcodes.
3776
3777         * mini-codegen.c: Enable the cpu description validation for arm.
3778
3779 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
3780
3781         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
3782         test which depends on structs to objects.cs.
3783         
3784         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
3785         require object model related stuff working.
3786
3787         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
3788
3789         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
3790
3791         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
3792         against the instruction metadata in mini-ops.h. amd64 only for now.
3793
3794         * mini-ops.h: Fix some instruction descriptions.
3795
3796         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
3797         unused instructions.
3798
3799 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3800
3801         * exceptions.cs: Add a new test.
3802
3803 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
3804
3805         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
3806
3807 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3808
3809         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
3810         skip empty phi opcodes.
3811         
3812         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
3813         correctly by zero extending after loads. Skip methods containing calls
3814         to the monitor enter/exit trampolines.
3815
3816         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
3817         when calling mono_thread_force_interruption_checkpoint ().
3818
3819         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
3820
3821         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
3822         64 bit thunks.
3823         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
3824
3825         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
3826         bootstrap could run.
3827
3828 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
3829
3830         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
3831
3832 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3833
3834         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
3835         of the method to
3836         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3837         LLVM might be very short.
3838
3839         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
3840         in OP_THROW/RETHROW.
3841
3842         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
3843         alignment on osx.
3844
3845 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3846
3847         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
3848         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3849         LLVM might be very short.
3850
3851 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
3852
3853         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
3854         the alignment for the value of sp.
3855
3856 2009-09-01  Geoff Norton  <gnorton@novell.com>
3857
3858         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
3859         managed wrappers in full aot.
3860
3861 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
3862
3863         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
3864
3865 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
3866
3867         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
3868
3869 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3870
3871         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
3872
3873         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
3874         saved info.
3875
3876         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3877
3878         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
3879         depend on the info MonoMethodHeader which could be missing in IL stripped
3880         assemblies.
3881
3882 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3883
3884         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
3885         they are only 4 byte aligned.
3886
3887 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
3888
3889         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
3890         was done previously, since using SP causes too many problems.
3891
3892         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
3893         frames without a frame pointer works.
3894
3895         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
3896         global register in methods with calls, since the calls can go through
3897         a static rgctx trampoline which doesn't save it.
3898
3899 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
3900
3901         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
3902
3903 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3904
3905         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
3906
3907 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3908
3909         * method-to-ir.c: Fix warnings for uninitialized variables.
3910
3911 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3912
3913         * mini-exceptions.c:
3914         * aot-compiler.c: Fix printf warnings.
3915
3916 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3917
3918         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
3919         Add GetGenericValueImpl<string>.
3920         
3921         * aot-compiler.c (add_generic_instances): Add instances of
3922         GenericEqualityComparer<T> for primitive types. Only emit the array
3923         wrappers into the mscorlib image.
3924
3925 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
3926
3927         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
3928         the methods_loaded array using amodule->info->nmethods.
3929
3930         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
3931         (MONO_AOT_FILE_VERSION): Bump this.
3932
3933         * aot-compiler.c: Emit more generic instances allowing some parts of linq
3934         to work.
3935
3936         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
3937         MonoJitInfo doesn't belong to its methods aot image.
3938
3939 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
3940
3941         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
3942
3943         * mini-arm.c: Fix warnings.
3944         
3945         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
3946
3947         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
3948         supports it.
3949
3950 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
3951
3952         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
3953         avoid clobbering IP.
3954
3955         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
3956         hold the trampoline argument, so its initial value is available during
3957         debugging.
3958
3959 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
3960
3961         * exceptions-arm.c:
3962         * exceptions-hppa.c:
3963         * mini.c:
3964         * exceptions-s390x.c:
3965         * exceptions-mips.c:
3966         * exceptions-ppc.c:
3967         * exceptions-sparc.c:
3968         * exceptions-alpha.c:
3969         * aot-runtime.c:
3970         * mini-trampolines.c:
3971         * exceptions-x86.c:
3972         * exceptions-s390.c: add and use #define's instead of sizeof()
3973         for MonoJitInfo and MonoJitInfoTable.
3974
3975 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3976
3977         * tramp-arm.c:
3978         * tramp-amd64.c:
3979         * tramp-ppc.c:
3980         * tramp-x86.c: use a #define instead of sizeof() for a few
3981         structures that use a zero-length array.
3982
3983 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
3984
3985         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
3986         case when the method is dynamic. Fixes #529238.
3987
3988 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
3989
3990         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
3991         of asserting when a method is JIT compiled in full-aot mode.
3992
3993 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
3994         
3995         Contributed under the terms of the MIT/X11 license by
3996         Jerry Maine <crashfourit@gail.com>.
3997         
3998         * fixed wrong dates in changelog.
3999
4000 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4001         
4002         Contributed under the terms of the MIT/X11 license by
4003         Jerry Maine <crashfourit@gail.com>.
4004
4005         * basic-simd.cs: added test for packed double square root.
4006         * cpu-amd64.md: added opcode info for packed double square root.
4007         * cpu-x86.md: added opcode info for packed double square root.
4008         * mini-ops.h: added IR opcode for packed double square root.
4009         * mini-x86.c: added IR to native translation code for packed double square root.
4010         * mini-amd64.c: removed todo for packed double square root.
4011         * simd-intrinsics.c: added method to IR opcode converstion for
4012         packed double square root.
4013
4014 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4015
4016         Contributed under the terms of the MIT/X11 license by
4017         Jerry Maine <crashfourit@gail.com>.
4018
4019         * mini-amd64.c: Added a change to help tell the difference as 
4020         to what perpose the xmm register is being used--mainly to help
4021         with debuging.
4022         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4023         (one used for special cases) xmm registers for both fp
4024         and simd ops. Added define to turn on new feature in the regalloc
4025         that allows fp and simd ops to share the xmm regs happily.
4026         * codegen.c: Added code to detect for which perpose an xmm reg is
4027         being used (fp or simd) and to translate back and forth to the
4028         correct logical reg bank (fp or simd) for 'spill load's.
4029
4030 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4031
4032         Contributed under the terms of the MIT/X11 license by
4033         Jerry Maine <crashfourit@gail.com>.
4034
4035         * basic-simd.cs: Added tests for stressing the regalloc when running with
4036         16 simd regs and when simd and fp ops share the same reg bank.
4037
4038 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4039
4040         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4041         in shared generic code, we might have to look up the class in the
4042         RGCTX.  If we use the class directly, compute its GC descriptor.
4043
4044 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4045
4046         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4047
4048 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4049
4050         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4051         check for errors. Fixed the case when the class with the Main
4052         method is broken.
4053
4054 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4055
4056         Contributed under the terms of the MIT/X11 license by
4057         Jerry Maine <crashfourit@gail.com>.
4058
4059         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4060
4061 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4062
4063         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4064
4065 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4066
4067         * method-to-ir.c: Fix naming of stelem and ldelem.
4068
4069 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4070
4071         * driver.c (main_thread_handler): Check that the assembly loaded
4072         matches the filename when doing AOT.
4073
4074 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4075
4076         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4077         call it anymore.
4078
4079         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4080         utils/mono-sigcontext.h).
4081
4082         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4083         #ifdef.
4084
4085 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4086
4087         * mini.c (mono_codegen):
4088         Call profiler hook to keep track of method code buffers.
4089
4090 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4091
4092         * method-to-ir.c: Invoke write barriers for the
4093         Interlocked.(Compare)Exchange JIT intrinsics.
4094
4095 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4096
4097         * Makefile.am (version.h): Fix issues when built out of tree.
4098         Remove some redundant 'grep's piped through 'sed's.
4099
4100 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4101
4102         This patch is contributed under the terms of the MIT/X11 license
4103
4104         * mini-ppc.c (mono_arch_output_basic_block):
4105         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4106         for bits 32-47 with signed load/store diplacements for bits
4107         48-63.  Use prefered base/offset order for indexed form.
4108         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4109         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4110         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4111         OP_LOADI2_MEMBASE): Same.
4112         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4113         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4114         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4115         indexed form.
4116         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4117         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4118         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4119         OP_LOADI1_MEMINDEX): Same
4120         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4121         OP_STORER8_MEMINDEX): Same
4122         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4123         computations.
4124         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4125         for bits 32-47 with signed load/store diplacements for bits
4126         48-63.  Use prefered base/offset order for indexed form.
4127
4128 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4129
4130 This patch is contributed under the terms of the MIT/X11 license
4131
4132         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4133         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4134         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4135         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4136         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4137         cfg->stack_usage to avoid size warnings.
4138         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4139         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4140         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4141         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4142         to convert.
4143         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4144         after code varible is initialized.
4145         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4146         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4147         (mono_arch_emit_epilog): 
4148         Move Use ppc_load32 for cfg->stack_usage to avoid size
4149         warnings.
4150
4151 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4152
4153         * method-to-ir.c: The write barrier doesn't do the store anymore,
4154         so we have always to emit it.  Also, emit the wbarrier after the
4155         store.
4156
4157 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4158
4159         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4160         for argument count 3 too.
4161
4162 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4163
4164         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4165         the caller handle the exceptions.
4166         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4167         method. Fixes #524498.
4168
4169 2009-07-22  Geoff Norton  <gnorton@novell.com>
4170
4171         * mini-exceptions.c: Fix build on ia64.
4172
4173 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4174
4175         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4176         barriers.
4177
4178 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4179
4180         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4181         code.
4182
4183 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4184
4185         * basic-simd.cs (Main): Pass args to the test driver.
4186
4187 2009-07-20  Geoff Norton  <gnorton@novell.com>
4188
4189         * mini-x86.h: Fix the x86 version guards to use Apple's
4190         properly defined macros.
4191
4192 2009-07-20  Geoff Norton  <gnorton@novell.com>
4193
4194         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4195         aligned access.
4196
4197 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4198
4199         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4200         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4201         the information which is needed for invokes, so only one locking+hash table
4202         lookup is needed.
4203
4204         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4205         
4206         * aot-compiler.c (add_generic_instances): Emit instances of 
4207         GenericComparer<T> for primitive types.
4208
4209 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4210
4211         * mini-posix.c: Fix linux build.
4212
4213 2009-07-19  Geoff Norton  <gnorton@novell.com>
4214
4215         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4216         mono_gdb_render_native_backtraces
4217         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4218         so we implement the sane semantics to the runtime here
4219         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4220         so we need to call it differently (mono_gdb_render_native_backtraces)
4221         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4222         here for default implementations.
4223         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4224         support Apple's weird syscall (SYS_fork) implementation and not busy
4225         loop in abort() on native crashes on OSX anymore.
4226
4227 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4228
4229         * aot-runtime.c (load_method): Change the handling of the
4230         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4231         are used.
4232
4233         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4234
4235 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4236
4237         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4238         seems to break the aot tests.
4239         
4240         * mini.c (mono_patch_info_equal): Fix the handling of 
4241         MONO_PATCH_INFO_RGCTX_FETCH.
4242
4243 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4244
4245         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4246
4247         * mini.c (mono_patch_info_hash): Fix the handling of 
4248         MONO_PATCH_INFO_INTERNAL_METHOD.
4249         (mono_patch_info_equal): Ditto.
4250
4251 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4252
4253         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4254         in a few places.
4255         
4256         * mini-llvm.c: Add some infrastructure for AOT support.
4257
4258 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4259
4260         * mini-llvm-cpp.c: Update to the latest llvm api.
4261         
4262         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4263         option to false to prevent llvm from installing signal handlers which
4264         trip up the gc.
4265         
4266 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4267
4268         * cpu-x86.md:
4269         * cpu-amd64.md: Revert previous change as those instructions
4270         take 2 separate arguments. Remember to read the arch docs more
4271         carefully next time.
4272
4273 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4274
4275         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4276
4277 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4278
4279         * mini-ppc.c: exploit multiple load/store units if available (rest of
4280         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4281         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4282
4283 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4284
4285         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4286         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4287
4288 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4289
4290         * cpu-x86.md: Fix missing clobbering from trancendental simd
4291         ops.
4292
4293         * cpu-amd64.md: Same.
4294
4295 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4296
4297         Contributed under the terms of the MIT/X11 license by
4298         Jerry Maine <crashfourit@gail.com>.
4299
4300         * basic-simd.cs: Added tests for single and doulble indexers.
4301
4302         * cpu-amd64.md: Added simd opcode information.
4303
4304         * mini-amd64.c: Added IR to native simd generation code.
4305         Added simd register names and function that returns them.
4306
4307         * mini-amd64.h: Added marcos to turn on simd code compilation in
4308         amd64. Added max simd register count marco. Added caller/callee
4309         register mask marcos. Added marcos to use simd register bank.
4310
4311         * mini.h: Added helper marco for shufling dwords and simple
4312         floats.
4313
4314 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4315
4316         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4317
4318         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4319
4320         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4321         the length of the native code as well.
4322
4323         * basic-simd.cs: Add a test for #521662.
4324
4325 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4326
4327         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4328
4329 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4330
4331         * mini.c: Register function for getting the IP from a signal
4332         context with metadata.
4333
4334 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4335
4336         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4337         call a generic class init trampoline if needed. Fixes #519336.
4338
4339         * generics.cs: Add a test.
4340         
4341 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4342
4343         * method-to-ir.c: When doing a call which might be remote from
4344         shared generic code to other shared code with open type arguments,
4345         get the remoting invoke wrapper from the RGCTX and do an indirect
4346         call to it.
4347
4348 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4349
4350         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4351         after the unbox trampoline in the full-aot case.
4352
4353 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4354         
4355         * mini.c: Move initialization of jit_mutex before debugger initialization
4356         
4357         to avoid crashes.
4358         
4359         
4360         * Info.plist: added Info.plist and link flag to enable the mono executable
4361         to access other processes. Requires codesigning of the executable to work.
4362         
4363         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4364         
4365         compile on OS X.
4366         
4367
4368 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4369
4370         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4371
4372 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4373
4374         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4375         when the generic instance is an instantiation of a subclass of the
4376         methods class. Fixes #517166.
4377
4378 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4379
4380         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4381         code.
4382
4383         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4384         AOTed code.
4385
4386         * CMakeLists.txt: Add minimal support for installation.
4387
4388 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4389
4390         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4391         determine whenever a method is directly callable to a separate function.
4392
4393         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4394         needed ones as a result of the previous change.
4395
4396         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4397         type of register arrays.
4398
4399         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4400         type of register arrays.
4401
4402 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4403         
4404         Contributed under the terms of the MIT/X11 license by
4405         Jerry Maine <crashfourit@gail.com>.
4406
4407         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4408
4409 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4410
4411         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4412
4413 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4414
4415         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4416         dump of structure return value. Fix some formatting.
4417         * cpu-s390x.md: Fix lengths of instruction sequences.
4418         * mini-s390.c: Minor formatting changes.
4419
4420 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4421
4422         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4423         Use sigaction on freebsd as well.
4424
4425 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4426
4427         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4428         uses #ifdef on it.
4429         
4430         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4431
4432 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4433
4434         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4435
4436 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4437
4438         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4439
4440 2009-06-20  Martin Baulig  <martin@ximian.com>
4441
4442         * debug-mini.c
4443         (MonoDebuggerThreadFlags): New enum typedef.
4444         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4445         (mono_debugger_thread_created): Added `gpointer func' argument;
4446         initialize the new `thread_flags' field.
4447
4448 2009-06-18  Martin Baulig  <martin@ximian.com>
4449
4450         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4451         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4452
4453         * debug-debugger.c
4454         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4455         flag in `MONO_DEBUGGER__info.runtime_info'.
4456
4457         * driver.c
4458         (mono_main): Call mini_debugger_set_attach_ok() if generics
4459         sharing is disabled.
4460
4461 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4462
4463         * aot-compiler.c (add_wrappers): Fix a warning.
4464
4465         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4466         the ppc load/store macro changes.
4467
4468 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4469
4470         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4471
4472         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4473         not just the got symbol.
4474
4475         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4476         on ppc.
4477
4478         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4479         ppc.
4480         
4481         * aot-compiler.c: Remove some fixmes.
4482
4483         * driver.c (mono_main): Print a helpful message when cross-compiling.
4484
4485         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4486
4487         * method-to-ir.c (initialize_array_data): Do the optimization if the
4488         target byte order is little endian, instead of the host byte order.
4489
4490         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4491         wrappers into the mscorlib image, Emit a unique plt symbol for each
4492         image, emit symbols for plt entries.
4493
4494         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4495         a .size directive.
4496         
4497 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4498
4499         * aot-compiler.c (add_wrappers): Avoid calling 
4500         mono_marshal_get_type_info () since it can assert for some types.
4501
4502         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4503         ldtoken are used inside wrappers.
4504
4505         * helpers.c: Add support for prefixing tools with the arch name.
4506
4507         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4508         quantities when using ilp32.
4509
4510         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4511         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4512
4513         * image-writer.c: Use .long on ilp32.
4514
4515         * aot-compiler.c: Use 32 bit loads on ilp32.
4516         
4517 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4518
4519         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4520
4521         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4522
4523         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4524
4525         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4526         second got slot of every aot image.
4527         
4528         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4529         aot on platforms with function pointers.
4530
4531         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4532         support for aot/full aot on ppc/ppc64.
4533         
4534         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4535         arguments which are needed on ppc.
4536
4537         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4538         argument.
4539
4540         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4541         
4542         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4543
4544         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4545
4546         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4547
4548         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4549
4550 2009-06-17  Geoff Norton  <gnorton@novell.com>
4551
4552         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4553
4554 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4555
4556         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4557         to control whenever the dwarf writer is in xdebug or aot mode.
4558         (emit_class_dwarf_info): Use a separate abbrev for structures without
4559         children.
4560
4561         * aot-compiler.c: Pass the appending parameter to 
4562         mono_dwarf_writer_create ().
4563
4564         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4565         falls through to its next bblock. Fixes #513931.
4566
4567         * iltests.il: Add a test.
4568
4569         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4570         infor even if emit_line is FALSE, as the apple linker seems to require it.
4571
4572         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4573
4574         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4575         gcc does.
4576         (emit_fde): Ditto.
4577
4578 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4579
4580         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4581         mips build.
4582
4583 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4584
4585         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4586         'has_call_handler' fields.
4587
4588         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4589
4590         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4591         first bblock if not needed. Fixes #512790.
4592         
4593 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4594
4595         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4596         
4597         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4598         wrappers.
4599
4600         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4601         remoting-invoke-with-check wrappers, which are not needed when running with
4602         full-aot, since it doesn't support remoting.
4603         
4604 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4605
4606         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4607
4608         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4609         method info, it is not used anymore.
4610
4611         * mini.h: Bump AOT file format version.
4612         
4613         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4614         word smaller.
4615
4616         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4617         change above.
4618         
4619         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4620
4621         * mini.h: Bump AOT file format version.
4622         
4623 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4624
4625         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4626         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4627         iphone.
4628
4629         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4630         of CKFINITE and FBGE for VFP.
4631
4632 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4633
4634         * aot-compiler.c: Don't align code to 16 bytes on arm.
4635         
4636         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4637         before the methods they belong to.
4638
4639         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4640         the full-aot case if possible, since the trampoline will be called right 
4641         away.
4642
4643         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4644         trampolines to 1024 after the change above.
4645
4646         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4647         trampoline to save 8 bytes per trampoline.
4648
4649         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4650         change above.
4651
4652 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4653
4654         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4655
4656 2009-06-08  Martin Baulig  <martin@ximian.com>
4657
4658         * debug-mini.c
4659         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4660         (_mono_debugger_throw_exception): Don't make this static.
4661         (_mono_debugger_unhandled_exception): Likewise.
4662         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4663
4664         * debug-mini.c
4665         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4666         (_mono_debugger_throw_exception): Add function prototype.
4667         (_mono_debugger_unhandled_exception): Likewise.
4668
4669         * mini-exceptions.c
4670         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4671         arg; return the first exception handler if the exception is caught
4672         and we're running inside the debugger.
4673         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4674         improve exception handle inside runtime-invoke, check whether the
4675         exception is actually caught in the method being invoked and not
4676         by the runtime-invoke-wrapper.
4677
4678 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4679
4680         * image-writer.c: Improve support for the osx assembler.
4681
4682         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4683         support them.
4684
4685 2009-06-08  Martin Baulig  <martin@ximian.com>
4686
4687         * debug-mini.c
4688         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4689         (_mono_debugger_throw_exception): Don't make this static.
4690         (_mono_debugger_unhandled_exception): Likewise.
4691         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4692
4693         * debug-mini.c
4694         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4695         (_mono_debugger_throw_exception): Add function prototype.
4696         (_mono_debugger_unhandled_exception): Likewise.
4697
4698         * mini-exceptions.c
4699         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4700         arg; return the first exception handler if the exception is caught
4701         and we're running inside the debugger.
4702         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4703         improve exception handle inside runtime-invoke, check whether the
4704         exception is actually caught in the method being invoked and not
4705         by the runtime-invoke-wrapper.
4706
4707 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4708
4709         * image-writer.c (append_subsection): Don't align subsections of the
4710         debug_line section as a workaround.
4711
4712         * dwarfwriter.c: Emit line number info in the AOT case as well.
4713
4714 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4715
4716         This patch is contributed under the terms of the MIT/X11 license
4717
4718        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4719        code_len <= code_size
4720
4721 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4722
4723         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4724
4725 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4726
4727         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4728         invoke wrappers, we now use trampolines instead.
4729
4730 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4731
4732         * mini-darwin.c: The exception thread must not be registered with
4733         the GC.
4734
4735 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4736
4737         * mini-gc.c: Disable the code because it makes SGen crash.
4738
4739 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4740
4741         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4742         instead of asserting.
4743
4744 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4745
4746         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4747         output file after the code has been compiled.
4748
4749 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4750
4751         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4752
4753 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4754
4755         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
4756         entries distinction to simplify the code.
4757
4758         * mini.h: Bump AOT file format version.
4759         
4760 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
4761
4762         * objects.cs: Fix the signature of one of the tests.
4763
4764         * mini.c (mini_create_ftnptr): New helper function, moved here from
4765         object.c.
4766         (mini_get_addr_from_ftnptr): Ditto.
4767         (mini_init): Install the new helpers.
4768
4769 2009-05-28  Martin Baulig  <martin@ximian.com>
4770
4771         Correctly initialize the debugger when embedding Mono.
4772
4773         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
4774         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
4775         see documentation in mini_debug_running_inside_mdb().
4776
4777         * debug-debugger.c
4778         (mini_debug_running_inside_mdb): New function to check whether
4779         we're running inside mdb.
4780
4781         * mini.c (mini_init): Call mini_debugger_init() if we're running
4782         inside the debugger.
4783
4784         * driver.c (mono_main): Moved the call to mini_debugger_init()
4785         into mini_init() to make this work when embedding Mono.
4786
4787         * debug-debugger.c (mini_debugger_init): Warn about duplicate
4788         calls to mini_debugger_init().
4789
4790         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
4791         mono_debugger_main() -> mini_debugger_main() and put them inside a
4792         `MONO_DEBUGGER_SUPPORTED' conditional.
4793
4794 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
4795
4796         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
4797         this is no longer in use.
4798         * mini.h: Same.
4799
4800 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
4801
4802         * mini-sparc.c (add_outarg_load): Fix the sparc build.
4803
4804         * aot-compiler.c (emit_method_code): Always write out C style symbols for
4805         methods.
4806
4807 2009-05-27  Martin Baulig  <martin@ximian.com>
4808
4809 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4810
4811         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
4812         long_conv_to_r_un to 64 bits.
4813
4814         * cpu-x86.md: Increase the instruction size due to the changes.
4815
4816         * iltests.il.in: Add regression test.
4817
4818         Fixes #467201.
4819
4820 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4821
4822         * objects.cs: Move the previous test from basic.cs to here.
4823
4824 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4825
4826         * basic.cs: Add regression test for #506915.
4827
4828 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4829
4830         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
4831         optimization we must check the bb of the first byte of stobj as
4832         it's the only one set in cil_offset_to_bb.
4833
4834         Fixes #506915.  
4835
4836 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
4837
4838         * image-writer.c: Fix pointer directive on ppc64.
4839
4840 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
4841
4842         * image-writer.c (asm_writer_emit_section_change): Avoid using
4843         .bss subsections on ppc too.
4844
4845 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
4846
4847         * image-writer.c: Fix the definition of TARGET_ASM_....
4848         
4849         * image-writer.c: Fix the emission of assembler directives in the last
4850         change.
4851
4852         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
4853         exception throwing code to accomodate ppc64.
4854
4855         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
4856         size to work on ppc64 too.
4857
4858         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
4859         too.
4860
4861         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
4862         the assembler dialect instead of using platform specific defines.
4863
4864 2009-05-22  Geoff Norton  <gnorton@novell.com>
4865
4866         * mini-arm.c (get_call_info): If a structure is split between the stack
4867         and argument registers, we should not advance the stack pointer by the entire
4868         native size, but just by the amount that spilled.
4869
4870 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
4871
4872         * mini-arm.c (get_call_info): Handle structures with alignment requirements
4873         correctly.
4874
4875 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4876
4877         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
4878         wrappers normally.
4879         
4880         * aot-compiler.c (add_extra_method): Fix up the collection of extra
4881         methods so wrapper don't get added twice.
4882         (add_generic_instances): Don't add methods of arrays.
4883
4884         * generics.cs: Mark one test as !FULLAOT.
4885
4886 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4887
4888         * mini-x86.c (emit_move_return_value): Remove unused vars.
4889
4890 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4891
4892         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
4893         decomposing 8 bytes structs into a LCALL.
4894
4895         * mini-x86.c (emit_move_return_value): We no longer push the vtype
4896         pointer for where to store the returned regs.
4897
4898         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
4899         state the concern.
4900
4901         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
4902
4903 2009-05-20  Miguel de Icaza  <miguel@novell.com>
4904
4905         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
4906         without getenv.
4907
4908 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4909
4910         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
4911
4912         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
4913         generics.
4914
4915 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
4916
4917         * local-propagation.c (mono_local_cprop): Avoid local propagation
4918         across paired add/sub if the first instruction dest reg is it's
4919         source reg. For example:
4920
4921         int_add_imm R12 <- R12 [1] clobbers: 1
4922         int_sub_imm R42 <- R12 [1] clobbers: 1
4923
4924         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
4925         maintain the math identify.
4926
4927         Fixes #505375.
4928
4929 2009-05-20  Andreia Gaita  <avidigal@novell.com>
4930
4931         * Makefile.am: avoid going on the network just to get the revision,
4932         use git log instead
4933
4934 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
4935
4936         Fixed estimate for short branches on amd64 (they were off mark, and
4937         enabling call prolog-epilog instrumentations caused assertions).
4938         * mini.h (struct MonoBasicBlock): added max_length field to hold the
4939         estimate for the maximum length of this basic block.
4940         * mini-amd64.c:
4941         - mono_arch_emit_prolog: compute max_length for each basic block
4942           (instead of max_offset), and inflate size estimate also for entry bb
4943           in case of code instrumentation.
4944         - mono_arch_output_basic_block: get rid of "cpos" (the current
4945           estimated "position" in the code), and always use "offset" instead,
4946           which is accurate; at the beginning of the function quickly recompute
4947           max_offset for all the remaining blocks, starting from the current
4948           cfg->code_len (which is correct, and not estimated) and using the
4949           estimated block lengths computed previously.
4950
4951 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
4952
4953         * exceptions-ppc.c: Remove the caching from the trampoline creation 
4954         functions, it is already done in the caller.
4955
4956         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
4957
4958         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
4959         MONO_ARCH_GSHARED_SUPPORTED define.
4960
4961         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
4962
4963         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
4964         function.
4965
4966 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
4967
4968         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
4969         call to mono_marshal_get_rgctx_invoke ().
4970
4971         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
4972         mono_marshal_get_static_rgctx_invoke (), all platforms which support
4973         gshared use the static rgctx trampolines now.
4974         
4975         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
4976         platform supports it.
4977
4978 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4979
4980         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
4981
4982         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
4983
4984 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4985
4986         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
4987
4988         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
4989         for ppc.
4990
4991 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
4992
4993         Made it possible for mono_arch_instrument_epilog to preserve
4994         argument registers, otherwise instrumenting the "epilogue" before
4995         a tail call would clobber them.
4996         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
4997         if like mono_arch_instrument_epilog but with an additional parameter
4998         that states if argument registers must be preserved.
4999         * mini.c: implemented mono_arch_instrument_epilog as a call to
5000         mono_arch_instrument_epilog_full without asking to preserve argument
5001         registers (this makes the existing code work as usual).
5002         * mini-amd64.c:
5003         - mono_arch_instrument_epilog: add parameter to transform it into
5004         mono_arch_instrument_epilog_full, and preserve argument registers
5005         when required.
5006         - mono_arch_output_basic_block, OP_TAILCALL case: call
5007         mono_arch_instrument_epilog_full.
5008         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5009         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5010         only transformed mono_arch_instrument_epilog into
5011         mono_arch_instrument_epilog_full.
5012
5013 2009-05-15  Geoff Norton  <gnorton@novell.com>
5014
5015         * mini-darwin.c: This works on arm now.
5016
5017 2009-05-14  Geoff Norton  <gnorton@novell.com>
5018
5019         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5020         embedding api.
5021
5022 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5023
5024         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5025         label names.
5026
5027         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5028         wrappers during full aot mode correctly.
5029
5030         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5031         methods correctly.
5032
5033         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5034         mono_metadata_type_hash ().
5035
5036 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5037
5038         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5039         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5040         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5041         Removed MONO_INST_BRLABEL from the instruction flags, and the
5042         remaining code that used it, because we do not support branches inside
5043         basic blocks (and branch target labels) anymore.
5044         * Makefile.am: As part of the above cleanup, remove reference to
5045         BURG files which don't exist anymore.
5046
5047 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5048
5049         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5050         osx.
5051
5052         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5053         to use mono_arch_throw_corlib_exception.
5054
5055         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5056         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5057
5058         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5059         domain mempool.
5060
5061         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5062
5063         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5064         for the got to make debugging easier and to avoid confusing it with the
5065         system got.
5066         
5067         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5068         method so a breakpoint can be set when using gdb.
5069
5070 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5071
5072         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5073         on mono_method_get_imt_slot ().
5074
5075         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5076         num_decodes variables.
5077
5078         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5079         change as it doesn't seem to work.
5080         
5081         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5082         wrappers.
5083
5084 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5085
5086         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5087         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5088
5089         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5090         builder when using full aot.
5091
5092         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5093         here, it is already handled.
5094         
5095         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5096         correctly for IMT.
5097
5098         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5099
5100         * mini-arm.h: Enable IMT for full aot.
5101         
5102         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5103         arch doesn't support it.
5104
5105         * mini.c (mini_init): Don't disable IMT for full aot if the
5106         architecture supports it.
5107
5108         * mini.h (MonoAotTrampoline): New enum containing the different types
5109         of 'numerous' trampolines.
5110         (MONO_AOT_FILE_VERSION): Bump this.
5111
5112         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5113         static rgctx trampolines. Add support for full-aot IMT thunks.
5114
5115         * mini-amd64.h: Enable IMT for full aot.
5116
5117         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5118         to exclude tests belonging to a category.
5119
5120         * generics.cs: Mark some tests with a !FULLAOT category.
5121
5122         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5123         generics tests.
5124
5125 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5126
5127         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5128         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5129         (emit_plt): Fix a warning.
5130
5131 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5132
5133         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5134         back into aot-compiler.c to a place where the other functions shared by
5135         the runtime and aot compiler are.
5136         
5137         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5138         as done previously, instead of in MonoAotFileInfo, since pointers might have
5139         alignment requirements.
5140
5141         * mini.h: Bump AOT file format version.
5142
5143 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5144
5145         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5146         that is used at runtime from the aot-compiler.c, this makes it
5147         work on setups that remove the AOT compiler from the output
5148         image. 
5149
5150 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5151
5152         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5153         PPC.
5154
5155         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5156
5157         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5158
5159         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5160         stuff to mono_arch_decompose_long_opts ().
5161         (mono_decompose_opcode): Remove some dead code.
5162
5163 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5164
5165         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5166         cmethod can be null for quite a some reasons.
5167
5168 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5169
5170         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5171
5172 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5173
5174         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5175
5176 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5177
5178         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5179         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5180         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5181         calls returning structures by addr on amd64.
5182
5183         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5184
5185         * iltests.il.in: Restructure the tail call tests a bit.
5186         
5187 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5188
5189         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5190         for virtual methods too.
5191
5192 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5193
5194         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5195         due to regression in verifying System.dll.
5196
5197 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5198
5199         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5200         in dynamic methods.
5201
5202         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5203         instances.
5204
5205         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5206         g_str_hash () which can change.
5207
5208         * driver.c (mini_regression): Disable optimizations not supported by
5209         the cpu. Fixes #500019.
5210
5211         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5212         build.
5213
5214 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5215
5216         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5217         to the latest LLVM code.
5218
5219 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5220
5221         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5222
5223 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5224
5225         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5226         x86/amd64.
5227
5228         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5229         no longer saving offsets, so just save the patch types along with the other
5230         info.
5231         * aot-runtime.c (load_patch_info): Update after the changes to 
5232         encode_patch_list ().
5233         (decode_got_entry): Removed, merged into load_patch_info ().
5234         (is_shared_got_patch): Removed, call the same function from
5235         aot-compiler.c.
5236
5237         * mini.h: Bump aot file format version.
5238         
5239         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5240         half-finished no-dlsym code.
5241
5242         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5243         option.
5244
5245         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5246         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5247
5248 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5249
5250         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5251         buffer length to work with AOT code.
5252
5253         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5254         ldfld/stfld opcodes.
5255
5256         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5257         as it is not used.
5258
5259         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5260
5261         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5262
5263         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5264         LLVM API.
5265
5266         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5267         if needed. Don't decompose long operations when using llvm.
5268
5269 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5270
5271         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5272         PAGESIZE constant.
5273
5274         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5275
5276 2009-05-03  Martin Baulig  <martin@ximian.com>
5277
5278         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5279         mono_debugger_insert_method_breakpoint() since the class init
5280         handler we're inserting at the top of the method already gives us
5281         a notification.
5282
5283 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5284
5285         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5286         to mono_arch_decompose_long_opts () for x86 and arm.
5287
5288 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5289
5290         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5291         TARGET_AMD64 here.
5292
5293 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5294
5295         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5296         JIT code.
5297
5298 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5299
5300         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5301         number of trampolines used in full-aot mode.
5302
5303         * aot-compiler.c: Add an ntrampolines option to set the number of 
5304         trampolines emitted in full-aot mode.
5305
5306 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5307
5308         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5309         a volatile load. Get rid of get_tempname (), llvm assigns names
5310         automatically.
5311
5312         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5313         builder function.
5314
5315         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5316         a value.
5317
5318         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5319         level 1.
5320
5321         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5322         to the same register as a fixed sreg2. Fixes #497271.
5323
5324         * iltests.il.in: Add a new test.
5325
5326 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5327
5328         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5329         stack, since pushes complicate exception handling.
5330
5331         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5332         the stack if they are passed using moves.
5333
5334         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5335
5336         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5337         when using llvm.
5338
5339         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5340         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5341         of FMOVE if it is an R4.
5342
5343 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5344
5345         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5346
5347         * mini.h (LLVMCallInfo): New structure to store calling convention 
5348         information for the LLVM back end similar to the CallInfo structures in 
5349         the back-ends.
5350
5351         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5352         call information in a format usable by LLVM.
5353         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5354
5355         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5356         mono_llvm_emit_call () when compiling using LLVM.
5357
5358         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5359         comments to all functions. Fix memory leaks. Add a public init/cleanup
5360         function.
5361
5362         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5363
5364         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5365         mono_array_new_va () jit icall.
5366         
5367 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5368
5369         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5370         multiple machine description files to be specified.
5371         * mini-ops.h: fixes for cross-compilation.
5372
5373 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5374
5375         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5376         some porting work.
5377
5378 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5379
5380         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5381         to prevent asserts in various passes. Fixes #497220.
5382
5383 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5384
5385         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5386         a racy assert.
5387
5388         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5389         table to avoid duplicates.
5390
5391         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5392         
5393         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5394         option is used.
5395
5396 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5397
5398         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5399         is for method or field access.
5400
5401 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5402
5403         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5404         a Value to stdout.
5405
5406         * mini-llvm.c (mono_llvm_emit_method): Use it.
5407         
5408         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5409         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5410         on volatile values.
5411
5412         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5413         synchronized methods.
5414
5415         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5416
5417         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5418
5419         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5420         OP_LOADI8_MEM.
5421
5422         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5423         allowing some options to be set dynamically.
5424
5425 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5426
5427         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5428         unconditional branch.
5429
5430         * mini.h (MonoTrampolineType): Add new trampoline type 
5431         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5432         compiled code.
5433
5434         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5435         function.
5436
5437         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5438         creation function.
5439
5440         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5441         is enabled. Instead, use the llvm vcall trampoline.
5442         
5443         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5444
5445         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5446         
5447         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5448         functions.
5449
5450         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5451         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5452
5453         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5454         OP_IA64_CSET opcode.
5455
5456         * mini.c: Fix a warning.
5457
5458         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5459         THROW to the appropriate llvm type.
5460
5461 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5462
5463         * mini.c (mini_method_compile): Add statistics for methods JITted
5464         with/without LLVM.
5465
5466 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5467
5468         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5469         OP_IA64_CMP_<cond>_IMM opcodes.
5470
5471 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5472
5473         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5474         corlib exceptions.
5475
5476         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5477         correctly.
5478
5479         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5480         GENERICINST.
5481
5482 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5483
5484         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5485
5486 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5487
5488         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5489         support.
5490
5491         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5492         rgctx invoke trampolines for x86.
5493
5494         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5495         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5496         (mono_arch_get_vcall_slot): Simplify this.
5497
5498 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5499
5500         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5501         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5502
5503 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5504
5505         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5506         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5507
5508         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5509
5510         * liveness.c (visit_bb): Remove a needless assert.
5511
5512 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5513
5514         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5515         full aot support to the arch specific code.
5516
5517         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5518
5519         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5520
5521         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5522         
5523         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5524         collect information about the delegate invoke impl trampolines.
5525
5526         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5527         to save trampolines during full-aot mode.
5528
5529         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5530         creation function which returns a trampoline which sets the rgctx
5531         argument.
5532         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5533         wrapper if possible.
5534         (mono_delegate_trampoline): Ditto.
5535
5536         * mini.c (mono_jit_runtime_invoke): Ditto.
5537
5538         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5539         
5540         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5541
5542         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5543         
5544 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5545
5546         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5547         just setting the opcode to OP_NOP.
5548
5549 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5550
5551         * mini.c (mini_method_compile): Put the last change inside an 
5552         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5553         
5554         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5555         and extend live ranges to cover the whole method when using xdb.
5556
5557         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5558         do it in the trampolines.
5559
5560         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5561         needed.
5562
5563         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5564         
5565         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5566         call code in full-aot mode since IMT is disabled there.
5567         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5568         new JIT no longer has that restriction.
5569
5570         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5571
5572         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5573         a more compact format.
5574         (mono_aot_wrapper_name): New function to return a unique name for a
5575         wrapper method, also used by the AOT runtime.
5576
5577         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5578         aot-compiler.c.
5579
5580         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5581         when a ICollection<T> etc is encountered.
5582         (add_generic_instances): Process method arguments/locals too.
5583         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5584         trampoline names.
5585
5586         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5587         
5588 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5589
5590         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5591
5592         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5593
5594         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5595         representing the result of the decomposition. Nullify instructions
5596         instead of setting them to OP_NOP since nops can't have registers
5597         set.
5598
5599 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5600
5601         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5602         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5603         info. Strip 'mapping symbols' on ARM.
5604
5605         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5606         
5607         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5608         this with the native genmdesc.
5609
5610 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5611
5612         * aot-runtime.c:  Fixing the MSVC build.
5613
5614         Code is contributed under MIT/X11 license.
5615
5616 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5617
5618         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5619         JITted code depends on it.
5620
5621 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5622
5623         * aot-compiler.c: Use new MonoGenericParam accessors.
5624
5625 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5626
5627         Reduce memory usage and improve correctness wrt MonoGenericParam
5628         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5629         handing.  Avoid allocating MonoGenericParams, but use the ones in
5630         the container itself.
5631
5632 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5633
5634         * tasklets.c: Return exceptions in the out argument.
5635
5636 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5637
5638         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5639         opcode. Use pointer types in more places instead of casting them to 
5640         integers.
5641
5642         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5643         optimizations.
5644         (mono_llvm_optimize_method): New helper function to optimize a method.
5645
5646         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5647         widening code so it could be called from more places.
5648         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5649         code paths in the call opcodes.
5650
5651 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5652
5653         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5654
5655 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5656
5657         * dwarfwriter.c: Use _ to separate class name 
5658         components as gdb can't handle '.'. Represent reference variables
5659         as 'class <NAME>&'.
5660         
5661         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5662
5663         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5664         
5665         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5666
5667         * gc-test.cs: New file with GC stack marking tests.
5668         
5669         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5670         negative numbers for vfp.
5671
5672         * basic-float.cs: Add a test.
5673         
5674 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5675
5676         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5677
5678 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5679
5680         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5681         part of tasklet/continuation support.
5682
5683 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5684
5685         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5686         amd64 opcodes inside an ifdef.
5687
5688         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5689         of complex types.
5690         
5691         * dwarfwriter.c (emit_type): Emit the class info for classes.
5692
5693 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5694
5695         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5696
5697         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5698
5699         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5700
5701         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5702
5703 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5704
5705         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5706
5707         * mini-llvm.c: Update comments.
5708
5709         * mini.h (COMPILE_LLVM): New macro.
5710
5711         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5712
5713         * ssa.c (mono_ssa_compute): Ditto.
5714         
5715         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5716         the unwind ops from a DWARF FDE.
5717
5718         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5719         methods by extracting the dwarf unwind ops from the unwind info generated
5720         by LLVM.
5721         
5722         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5723         calls.
5724
5725         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5726         addressing modes.
5727
5728 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5729
5730         * Makefile.am (llvm_sources): Enable this.
5731
5732         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5733         failing back to the JIT if something cannot be handled.
5734
5735         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5736         compiling with LLVM.
5737
5738         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5739         compiling with LLVM.
5740
5741         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5742         compiling with LLVM.
5743
5744         * mini-ops.h: Add a few opcodes needed by LLVM.
5745
5746         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5747         has no unwind info.
5748
5749         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5750         backend.
5751
5752         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5753
5754         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5755
5756 2009-04-01  Mark Probst  <mark.probst@gmail.com>
5757
5758         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
5759         ridiculously large methods.
5760
5761 2009-03-31  Martin Baulig  <martin@ximian.com>
5762
5763         * debug-debugger.c (debugger_remove_breakpoint): Call
5764         mono_debugger_remove_class_init_callback ().
5765
5766 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
5767
5768         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
5769         right before emitting code, not at the start.
5770
5771         * mini.c (mono_postprocess_patches): Extract this into a separate function
5772         from mono_codegen ().
5773
5774         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
5775         byref types correctly.
5776
5777 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
5778
5779         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
5780         by the last change.
5781
5782 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
5783
5784         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
5785         indirect calls, this avoids problems where get_vcall_slot () would get
5786         confused by the native code for the instruction preceeding the call.
5787         (mono_arch_get_vcall_slot): Simplify this.
5788         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
5789
5790         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
5791         register allocator now seems to depend on them instead of the data in
5792         cpu-<ARCH>.md.
5793
5794         * mini.c (mini_method_compile): Throw the correct type of exception if
5795         mono_method_get_header () fails because of a loading error.
5796
5797 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
5798
5799         * mini.c (mini_method_compile): Clear the loader error if the method
5800         header cannot be decoded.
5801
5802         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
5803         interface methods on proxies correctly.
5804
5805         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
5806         this argument for vtype methods. Add precise liveness info for arguments.
5807
5808         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
5809         LIVERANGE_START/END opcodes.
5810
5811         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
5812         for arguments and values in registers.
5813
5814 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
5815
5816         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
5817         return a valuetype. Fixes #487518.
5818
5819         * iltests.il: Add a test.
5820         
5821         * aot-compiler.c: Use mono_thread_create () to create helper threads.
5822
5823         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
5824         closed over a null reference correctly.
5825
5826 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
5827
5828         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
5829
5830 2009-03-25  Mark Probst  <mark.probst@gmail.com>
5831
5832         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
5833         allocated to the same registers as fixed sregs.
5834
5835 2009-03-24  Mark Probst  <mark.probst@gmail.com>
5836
5837         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
5838         ATOMIC_CAS_IMM ops.
5839
5840         * method-to-ir.c: Handle more cases for
5841         Interlocked.CompareExchange.
5842
5843         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
5844         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
5845         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
5846
5847 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
5848
5849         * aot-runtime.c (decode_method_ref): Fix a warning.
5850
5851         * unwind.c (mono_unwind_frame): Ditto.  
5852
5853 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5854
5855         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
5856         (mono_compile_assembly): Enable the binary writer for full-aot as well.
5857
5858         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
5859         fix the handling of large values in the ALU_PC_G0_NC relocation.
5860
5861 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5862
5863         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
5864
5865 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5866
5867         * method-to-ir.c (mono_spill_global_vars): Support for ternary
5868         ops.
5869
5870 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5871
5872         * method-to-ir.c: MINI_OP3 needs a comma.
5873
5874         * method-to-ir.c, mini.h, mini.c: Remove
5875         mono_init_op_sreg_counts ().
5876
5877 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5878
5879         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
5880         OP_JMP.
5881         
5882         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
5883         assertion.
5884
5885         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
5886
5887         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
5888         code somewhat.
5889
5890 2009-03-21  Mark Probst  <mark.probst@gmail.com>
5891
5892         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
5893         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
5894         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
5895         operations.
5896
5897 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
5898
5899         * driver.c: Change location of gc_wrapper.h.
5900
5901         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
5902         inside finally clauses correctly. Fixes #485721.
5903
5904         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
5905         after the change above.
5906
5907         * exceptions.cs: Add a test.
5908         
5909 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5910
5911         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
5912
5913         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
5914         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
5915         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
5916
5917         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
5918         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
5919
5920 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
5921
5922         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
5923         Simplify logic for ensure_method_is_allowed_to_call_method. 
5924         Handle wrappers on callers.
5925
5926 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5927
5928         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
5929         them don't run yet.
5930
5931         * basic-simd.cs: Fix the names of some test methods.
5932
5933 2009-03-18  Geoff Norton  <gnorton@novell.com>
5934
5935         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
5936
5937 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
5938
5939         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
5940
5941 2009-03-17  Jb Evain  <jbevain@novell.com>
5942
5943         * driver.c: remove now uneeded call to mono_gc_base_init before
5944         mono_profiler_load.
5945
5946 2009-03-17  Jb Evain  <jbevain@novell.com>
5947
5948         * dwarfwriter.c (token_handler): handle more cases.
5949
5950 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
5951
5952         * method-to-ir.c: Remove more dead code (that was required only
5953         because of method_is_safe). Fix compiler warnings.
5954
5955 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
5956
5957         * method-to-ir.c: Remove unneeded/useless method_is_safe
5958         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
5959
5960 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
5961
5962         * mini.c (mini_method_compile): Print the method been compiled with
5963         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
5964         for people not familiar with the runtime.
5965
5966 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
5967
5968         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
5969         a managed object which is later put into a GList. Return its class instead.
5970
5971         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
5972         stack slots when using sgen.
5973
5974 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
5975
5976         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
5977
5978 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
5979
5980         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
5981         > so it works on the first vreg as well.
5982
5983 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
5984
5985         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
5986         trigger randomly.
5987
5988         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
5989         
5990         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
5991         implement GArray.
5992
5993 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
5994
5995         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
5996         native->IL offset mapping.
5997
5998 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
5999
6000         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
6001
6002         * basic.cs: Add a test.
6003
6004 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6005
6006         * mini-x86.c (mono_arch_output_basic_block): Use different
6007         registers in case the ones we want to overwrite are used by the
6008         other operand.  Fixes regression in #480807.
6009
6010 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6011
6012         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6013
6014         * dwarfwriter.c (emit_line_number_info): The line number info for
6015         IL code was off by one. Fix that.
6016
6017         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6018         stack.
6019
6020 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6021
6022         Contributed under the terms of the MIT/X11 license by Steven
6023         Munroe <munroesj@us.ibm.com>.
6024
6025         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6026         Fixes #483462.
6027
6028 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6029
6030         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6031         as well.
6032
6033 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6034
6035         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6036         the delegate ctor handling code. Fixes #482638.
6037         
6038         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6039         #481458.
6040
6041         * iltests.il.in: Add a test.
6042         
6043         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6044         mini-posix.c.
6045
6046 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6047
6048         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6049         is shared generic code, return the trampoline, even if the method
6050         has already been compiled.  Fixes #479763.
6051
6052         * mini.c, mini.h: New function
6053         mono_jit_find_compiled_method_with_jit_info() which is the same as
6054         mono_jit_find_compiled_method() but also returns the jit info.
6055
6056 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6057
6058         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6059         for methods which actually have one.  For all other methods, make
6060         sure the this argument var is live the whole method.
6061
6062         * mini.c (mini_method_compile): Every shared method has a
6063         this/vtable/mrgctx info.  Fixes #480807.
6064
6065 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6066
6067         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6068         generic/imt thunks where some entries branch through the vtable,
6069         while other entries branch directly.
6070
6071 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6072
6073         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6074
6075         * mini-windows.c: Ditto.
6076         
6077         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6078         ctors.
6079
6080 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6081
6082         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6083         down an assert.
6084
6085 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6086
6087         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6088         #481403.
6089
6090 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6091
6092         * exceptions-x86.c: Include debug-mini.h - fixes build.
6093
6094 2009-03-04  Martin Baulig  <martin@ximian.com>
6095
6096         * debug-mini.c: Clean up the exception API and add documentation.
6097         (mono_debugger_handle_exception): New public method; this is
6098         called when throwing an exception or encountering an unhandled one.
6099         (mono_debugger_call_exception_handler): Formerly known as
6100         mono_debugger_handle_exception(); this is used to tell the
6101         debugger that we're about to invoke an exception handler.
6102
6103 2009-03-04  Martin Baulig  <martin@ximian.com>
6104
6105         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6106         ../metadata/mono-debug-debugger.c; save and reset exception state.
6107
6108 2009-03-02  Martin Baulig  <martin@ximian.com>
6109
6110         * debug-mini.c: Moved the debugger exception handling here from
6111         ../metadata/mono-debug-debugger.c.
6112
6113         * debug-mini.h
6114         (MonoDebuggerExceptionAction): New exception typedef.
6115
6116         * debug-mini.c
6117         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6118
6119         * exceptions-amd64.c
6120         (mono_amd64_throw_exception): Use the new debugger exception
6121         handling code.
6122
6123         * mini-exceptions.c
6124         (mono_handle_exception_internal): Don't call
6125         mono_debugger_unhandled_exception() here.
6126
6127 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6128
6129         * mini.c aot-compiler.c: Update after the changes to 
6130         mono_marshal_get_runtime_invoke ().
6131
6132         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6133         Virtual generic methods might not have method->slot set, work around
6134         that.
6135
6136         * generics.cs: Add a test.
6137
6138 2009-03-02  Geoff Norton  <gnorton@novell.com>
6139
6140         * mini.c:
6141         * driver.c: Allow signal chaining of SIGFPE as well.
6142
6143 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6144
6145         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6146         this since it now receives the method not its generic context in the
6147         IMT reg.
6148
6149         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6150         generic/imt thunks where some entries branch through the vtable, while
6151         other entries branch directly.
6152
6153         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6154
6155         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6156         support for interface methods as well.
6157
6158         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6159         using the normal IMT thunks.
6160
6161         generics.cs: Add new tests.
6162         
6163         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6164         the generic inst to the generic imt thunks. This fixes AOT support, 
6165         improves consistency with the normal IMT thunks, and makes it easier to
6166         add support for interface generic virtual methods later.
6167
6168         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6169         
6170 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6171
6172         * driver.c (mono_set_signal_chaining): New public API function to enable
6173         signal chaining on POSIX platforms.
6174
6175         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6176         (si@lindenlab.com) to implement signal chaining. The original patch was
6177         contributed under the MIT X/11 license:
6178         https://bugzilla.novell.com/show_bug.cgi?id=318894
6179
6180 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6181
6182         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6183         too until it can be made to run on amd64.
6184
6185 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6186
6187         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6188         to  get_generic_context_from_code () + get_call_info () if possible.
6189
6190 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6191
6192         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6193         suspend-on-sigsegv functionality.
6194
6195         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6196         to suspend when a native SIGSEGV is received. This is useful for debugging
6197         crashes which don't happen under gdb, since a live process contains more
6198         information than a core file.
6199
6200         * mini-exceptions.c (mono_print_thread_dump): Use 
6201         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6202
6203         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6204
6205         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6206         
6207         * basic-float.cs: Disable the tests which currently fail on amd64.
6208
6209         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6210         value to mono_arch_patch_callsite () to fix crashes.
6211         
6212         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6213
6214 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6215
6216         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6217         nop code by patching the call address to point to the nullified class init
6218         trampoline, as the former does not seem to be safe on SMP machines.
6219
6220 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6221
6222         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6223         they were wrong.
6224
6225 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6226
6227         * basic-float.cs basic-calls.cs: Fix warnings.
6228
6229 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6230
6231         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6232         correct frame pointer in the LMF.  Should fix #478394.
6233
6234 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6235
6236         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6237
6238         * image-writer.c: Make the binary writer less verbose.
6239
6240 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6241
6242         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6243         are called from runtime invoke wrappers.
6244
6245 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6246
6247         * cpu-ppc.md (store_memindex): Increase the size of this.
6248
6249 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6250
6251         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6252
6253         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6254
6255         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6256         OP_LCONV_TO_R_UN.
6257
6258         Last fix for of #467201.
6259
6260
6261 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6262
6263         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6264
6265         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6266         and long_conv_to_r8_2:
6267
6268         Fixed part of #467201.
6269
6270 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6271
6272         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6273
6274         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6275         conversion to 32 bits.
6276
6277         * cpu-x86.md: Increase the size of int_conv_to_r4.
6278
6279         * basic-float.cs: Add a test for this.
6280
6281         Fixed part of #467201.
6282
6283 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6284
6285         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6286
6287         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6288         conversion to 64 bits.
6289
6290         * basic-float.cs: Add a test for this.
6291
6292         Fixed part of #467201.
6293
6294 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6295
6296         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6297
6298         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6299         This behavior is compatible with MS.
6300
6301         * iltest.il.in: Add a test for this.
6302
6303         Fixed part of #467201.
6304
6305 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6306
6307         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6308
6309         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6310         change the precision of the value.
6311
6312         * cpu-x86.md: Define len for float_conv_to_r4.
6313
6314         * basic-float.cs: Add a test for this.
6315
6316         Fixed part of #467201.
6317
6318 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6319
6320         * mini.c: Adjust locking order to the new semantics where the loader lock
6321         comes first.
6322
6323 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6324
6325         * aot-runtime.c:
6326         * mini-amd64.c:
6327         * mini-arm.c:
6328         * mini-ia64.c:
6329         * mini-mips.c:
6330         * mini-ppc.c:
6331         * mini-sparc.c:
6332         * mini-trampolines.c:
6333         * mini-x86.c:
6334         * mini.c:
6335         * tramp-alpha.c:
6336         * tramp-amd64.c:
6337         * tramp-arm.c:
6338         * tramp-hppa.c:
6339         * tramp-ia64.c:
6340         * tramp-mips.c:
6341         * tramp-ppc.c:
6342         * tramp-s390.c:
6343         * tramp-s390x.c:
6344         * tramp-sparc.c:
6345         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6346
6347 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6348
6349         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6350         as it is incorrect.
6351
6352 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6353
6354         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6355         for cctors if needed.
6356
6357 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6358
6359         * mini-ppc.c: Fix build on Darwin.
6360
6361 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6362
6363         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6364         version instead of 3 as valgrind doesn't like version 3.
6365
6366         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6367
6368         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6369         usable for hashing methods.
6370         (emit_extra_methods): Use the new hash to avoid putting every method in the
6371         same hash bucket.
6372
6373         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6374
6375         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6376         whenever a method ref could match a method.
6377         
6378         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6379         test to fail.
6380         
6381         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6382         methods refs.
6383
6384         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6385
6386         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6387         the encoding buffer.
6388
6389         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6390         mono_method_get_header () on inflated methods as an optimization.
6391
6392 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6393
6394         * ssa.c (fold_ins): Fix another crash if the instruction following the
6395         switch was optimized away.
6396
6397 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6398
6399         Contributed under the terms of the MIT/X11 license by Steven
6400         Munroe <munroesj@us.ibm.com>.
6401
6402         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6403
6404 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6405
6406         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6407         around the mono_domain_alloc calls, it is now done by the functions
6408         themselves.
6409
6410         * aot-compiler.c (compile_method): Only add wrappers referenced by
6411         the method if compiling with full AOT.
6412         (mono_compile_assembly): Error out if --aot=full is specified on
6413         a platform where it is not supported.
6414
6415         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6416         on ARM too.
6417
6418         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6419         AOT support.
6420
6421         * aot-runtime.c (load_named_code): Handle 
6422         mono_arm_throw_exception_by_token.
6423
6424         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6425
6426         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6427         unaligned.
6428
6429         * Makefile.am (fullaotcheck): Exit if a test fails.
6430
6431         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6432         on ARM.
6433         (mono_compile_assembly): Handle the assembler failing.
6434
6435         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6436         accepting subsections of .bss.
6437
6438         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6439         was optimized away.
6440
6441         * aot-compiler.c: Remove some unused includes.
6442         
6443         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6444         now in MonoImageWriter.
6445
6446         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6447         code sequence which matches a non-virtual call. Fixes #472654.
6448
6449 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6450
6451         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6452         xdebug code.
6453         
6454         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6455         use the image/dwarf writers directly.
6456
6457         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6458         field.
6459
6460         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6461         MonoDwarfWriter.
6462
6463         * image-writer.h: Fix some typos.
6464
6465         * dwarfwriter.h dwarfwriter.c: New files.
6466         
6467         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6468         separate module.
6469
6470         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6471         argument to return unwind info.
6472
6473         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6474
6475         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6476         
6477         * aot-runtime.c (decode_method_ref): Add a case for 
6478         MONO_AOT_METHODREF_WRAPPER_NAME.
6479
6480         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6481         for AOT.
6482
6483         * aot-compiler.c (encode_method_ref): Use the new constants.
6484
6485         * aot-runtime.c (decode_method_ref): Ditto.
6486
6487         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6488         be compiled, not the icall itself.
6489
6490 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6491
6492         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6493         using decode_method_ref ().
6494
6495         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6496         convert it to an in32. Fixes #475859.
6497
6498         * arrays.cs: Add a test.
6499
6500 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6501
6502         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6503         OP_LCONV_TO_U2.
6504
6505         * basic-long.cs: Add a test.
6506
6507 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6508
6509         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6510         remove the frame pointer in leaf methods which don't receive any
6511         arguments, don't throw exceptions and don't do dynamic stack
6512         allocations.
6513
6514 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6515
6516         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6517         the fail_tramp changes. Hopefully fixes #475132.
6518
6519 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6520
6521         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6522         instead of mono_metadata_signature_dup_full.
6523
6524 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6525
6526         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6527         for processing jump tables. Fixes #473787.
6528
6529 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6530
6531         * mini-generic-sharing.c: mini_method_get_context() just calls
6532         mono_method_get_context_general() now.
6533
6534         * mini.c, mini.h: Moved get_object_generic_inst(),
6535         construct_object_context_for_method() and
6536         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6537
6538 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6539
6540         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6541         basic block fell through to its successor bblock without a branch. Fixes
6542         #474718.
6543
6544         * iltests.il.in: Add a test.
6545         
6546         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6547         (can_encode_patch): We can now handle arrays of generic parameters and
6548         array methods.
6549
6550         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6551
6552         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6553         the AOT file to avoid some #ifdefs in aot-runtime.c
6554
6555         * mini.h: Bump AOT file format version.
6556
6557 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6558
6559         * Makefile.am (fullaotcheck): Make this run the tests.
6560
6561         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6562
6563 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6564
6565         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6566         individually.  Fixes #473482.
6567
6568 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6569
6570         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6571
6572 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6573
6574         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6575         (mono_compile_assembly): Hush compile warnings about
6576         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6577         code path.
6578
6579 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6580
6581         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6582
6583         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6584
6585         * aot-compiler.c: Fix arm support.
6586
6587         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6588         img_writer_emit_unset_mode () function.
6589
6590         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6591         (mono_unwind_get_dwarf_pc_reg): Ditto.
6592
6593         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6594         Move almost all platform specific code to a set of arch_ functions, 
6595         and document them to ease porting.
6596         
6597         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6598
6599         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6600
6601         * aot-compiler.c: Extract the image writing functionality into a separate
6602         module to reduce the size of this file.
6603
6604 2009-02-09  Geoff Norton  <gnorton@novell.com>
6605
6606         * mini-s390.c: Fix the signature of emit_sig_cookie.
6607
6608 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6609
6610         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6611
6612         * aot-runtime.c (is_shared_got_patch): Ditto.
6613
6614         * aot-runtime.c (load_named_code): Cope with the fact that 
6615         decode_got_entry () won't decode the patch fully if its corresponding got
6616         entry is already filled.
6617         
6618         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6619         Initialize *ji.
6620         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6621
6622         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6623         as the moving pointer instead of 'buf' for consistency with the rest of the
6624         codebase.
6625         (mono_arch_create_monitor_exit_trampoline): Ditto.
6626
6627         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6628         generic_class_init trampolines.
6629         (add_generic_class): Extract some code from add_generic_instances () into a
6630         separate function so it can be called from other places too.
6631         (compile_method): Call add_generic_class () for the classes of inflated methods
6632         referenced by the method.
6633         (can_encode_patch): Allow references to generic parameters.
6634
6635         * aot-runtime.c: Add support the patches required by the new trampolines.
6636         
6637         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6638         support.
6639
6640         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6641         full-aot support.
6642
6643         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6644         this from get_throw_pending_exception, make the signature full aot compatible.
6645
6646         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6647
6648         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6649
6650         * exceptions.cs: Add a test.
6651
6652 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6653
6654         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6655         use the DWARF_DATA_ALIGN constant instead.
6656
6657         * exception-<ARCH>.c: Update after the above change.
6658
6659         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6660         dwarf unwinder.
6661
6662         * mini-arm.c: Enable the dwarf unwinder.
6663
6664         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6665         instead of mono_class_setup_vtable ().
6666
6667 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6668
6669         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6670         dwarf unwinder.
6671
6672         * mini-x86.h: Enable the dwarf unwinder.
6673
6674 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6675
6676         Fix mcs/tests/test-7.cs
6677         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6678         2009-02-03.
6679
6680 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6681
6682         * mini.c (print_jit_stats): Remove some unused statistics.
6683
6684 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6685
6686         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6687
6688 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6689
6690         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6691         the method we get from mono_object_get_virtual_method() because
6692         that function does it properly, now.
6693
6694 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6695
6696         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6697         opcodes. Fixes #472775.
6698
6699 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6700
6701         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6702         fact that mono_find_jit_info() sometimes returns the context
6703         corresponding to the jit info in new_ctx.  Fixes #472600.
6704
6705 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6706
6707         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6708         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6709         klass->enum_basetype directly.
6710
6711         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6712         enum subtypes.
6713
6714         * unwind.c: Avoid 0 sized arrays.
6715
6716 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6717
6718         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6719         size on systems with 64k pages. Fixes #471389.
6720
6721 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6722
6723         Contributed under the terms of the MIT/X11 license by Steven
6724         Munroe <munroesj@us.ibm.com>.
6725
6726         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6727         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6728         necessary.
6729
6730 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6731
6732         Contributed under the terms of the MIT/X11 license by Steven
6733         Munroe <munroesj@us.ibm.com>.
6734
6735         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6736         comparison fix.
6737
6738         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6739         The trampoline can be longer on PPC64.
6740
6741 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6742
6743         Contributed under the terms of the MIT/X11 license by Steven
6744         Munroe <munroesj@us.ibm.com>.
6745
6746         * mini-ppc.c: Compiler warning fixes and trivial code
6747         simplifications.
6748
6749 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6750
6751         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6752         ins->dreg which could be a hardware register, not a vreg.
6753
6754         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6755         
6756         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
6757         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
6758
6759         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
6760         
6761         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
6762         ->dreg, that is not the vreg we are looking for.
6763
6764         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
6765
6766         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
6767         LIVERANGE_END.
6768
6769         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
6770         strange crashes.
6771
6772 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6773
6774         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
6775
6776         * aot-compiler.c (emit_line_number_info): Fix line number emission when
6777         the line diff is 0.
6778
6779         * aot-compiler.c: Add xdebug support on x86.
6780
6781         * unwind.c: Add x86 support.
6782         
6783         * aot-compiler.c (emit_exception_debug_info): Control the emission of
6784         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
6785
6786         * mini.c (mini_method_compile): Ditto.
6787         
6788         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
6789         the variable index.
6790
6791         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
6792         which mimic .push_section/.pop_section in GAS.
6793         
6794         * aot-compiler.c: Emit precise live range information for variables.
6795
6796         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
6797
6798         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
6799         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
6800         them.
6801
6802         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
6803         the live ranges of variables.
6804
6805         * mini.h (struct MonoMethodVar): Add two fields containing the live range
6806         of the variable in terms of native offsets.
6807
6808 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
6809
6810         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
6811         
6812 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6813
6814         Contributed under the terms of the MIT/X11 license by Steven
6815         Munroe <munroesj@us.ibm.com>.
6816
6817         * exceptions-ppc.c (restore_regs_from_context): Correct operand
6818         order (offset then base reg) for ppc_load_multiple_regs.
6819         (emit_save_saved_regs) Correct operand order for
6820         ppc_store_multiple_regs.
6821         (mono_arch_get_call_filter): Correct operand order for
6822         ppc_load_multiple_regs.
6823
6824         * mini-ppc.c (emit_memcpy): Fix operand order for
6825         ppc_load_reg_update and ppc_store_reg_update.
6826         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
6827         (mono_arch_emit_epilog): Correct operand order for
6828         ppc_load_multiple_regs.
6829
6830         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
6831         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
6832
6833 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6834
6835         * cpu-ppc64.md: Fixed storer4_memindex length.
6836
6837 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
6838
6839         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
6840         line number info.
6841         
6842         * aot-compiler.c (emit_line_number_info): Optimize this.
6843
6844 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
6845
6846         * aot-compiler.c: Disassemble tokens in the IL disassembly.
6847         
6848         * aot-compiler.c: Add debug info for methods without debug info by
6849         emitting an IL file and having the line number info referencing that file.
6850
6851         * aot-compiler.c: Optimize the size of the generated line number info.
6852
6853         * aot-compiler.c: Emit line number info in xdebug mode.
6854
6855         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
6856         million arguments.
6857
6858 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
6859
6860         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
6861
6862         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
6863         is used.
6864
6865 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6866
6867         * basic-calls.cs: Test for the weird crash found on arm.
6868         
6869 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6870
6871         * cpu-arm.md: Increase the size of storer8_membase_reg and
6872         loadr8_membase_reg to 24 bytes to accomodate the extra add.
6873
6874         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
6875         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
6876         reg to LR otherwise we'll be loading/storing from just the offset.
6877
6878 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6879
6880         Question: if we are storing gint32's inside the "*native_offset",
6881         should we change the signature to "gint32 *native_offset" to
6882         ensure that we do not have type definition problems?
6883         
6884         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
6885         an int * as this is what the other function expects, causes
6886         problems with Freescale's compiler that defined int32_t to be a
6887         long and makes int incompatible 
6888
6889 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6890
6891         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
6892         filename conflict with bjam.
6893
6894 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6895
6896         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
6897         as it might use decomposed ops.
6898
6899 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6900
6901         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
6902
6903         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
6904         is defined.
6905
6906         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
6907
6908         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
6909         offsets.
6910
6911         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
6912         way registers are stored in MonoContext on arm.
6913
6914         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
6915         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
6916
6917         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
6918
6919         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
6920
6921         * mini.c (mini_init): Register mono_isfinite.
6922
6923         * jit-icalls.c (mono_isfinite): New jit icall.
6924
6925         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
6926         
6927         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
6928         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
6929         the parent frame.
6930
6931 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6932
6933         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
6934         separate frame and stack pointers, so we must use FP to find the register
6935         spill area.
6936         The FP reg is retrieved from the MonoContext::regs array.
6937
6938 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6939
6940         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
6941         as FPA requires it.
6942
6943 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6944
6945         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
6946         return R4 and R8 when not running under softfloat.
6947
6948         Fixes basic-calls.exe
6949
6950 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6951
6952         * mini-arm.c: Implement some overflow opcodes.
6953
6954 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6955
6956         * ssa.c: handle another alloca.h
6957
6958         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
6959         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
6960         MONO_ARCH_USE_SIGACTION. 
6961
6962         * aot-runtime.c, mini-exceptions.c: Replace platform define with
6963         capability defines.
6964
6965         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
6966
6967         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
6968         PPC targets as sigaction does not exist on all platforms, define
6969         this on a per-platform basis.
6970
6971         Instead of erroring out if the platform is not defined, include
6972         mini-ppc-os.h, and expect that the OS specific setting provides
6973         the required information.   
6974
6975 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6976
6977         * aot-compiler.c: Fix --enable-minimal=aot.
6978
6979 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6980
6981         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
6982         previous change.
6983
6984 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
6985
6986         * exceptions-arm.c: Fix warnings.
6987
6988         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
6989         ARM.
6990
6991         * mini-x86.c: Fix --enable-minimal=jit build.
6992
6993         * mini.c: Really fix --enable-minimal=jit build.
6994         
6995         * mini.c (construct_object_context_for_method): Move this outside
6996         the DISABLE_JIT block to fix the --enable-minimal=jit build.
6997
6998         "Backported" of r124984 from 2.0 branch.
6999         
7000         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
7001
7002         "Backport" of r124977 + r124978 from 2.0 branch.
7003         
7004         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7005         to avoid calling mono_exception_from_token () from the throw trampoline.
7006         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7007         for throwing corlib exceptions, this fixes full-aot support for corlib
7008         exceptions.
7009
7010         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7011
7012 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7013
7014         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7015         part of the changes to split the code in mini into operating
7016         system specific files.
7017
7018         This patch was done by copying mini.c to the respective files to
7019         preserve SVN history.
7020
7021 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7022
7023         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7024
7025 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7026
7027         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7028         remoting-invoke-with-check wrappers of shared methods.
7029
7030         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7031
7032 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7033
7034         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7035         optimization if the top of stack is the last instruction in the
7036         bblock.  Otherwise it might have been used after its definition.
7037         Fixes #469742.
7038
7039 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7040
7041         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7042         method as well when get_vcall_slot () fails to match a code sequence.
7043
7044         * mini-arm.c: Fix the android build, which doesn't have
7045         __aeabi_read_tp.
7046
7047 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7048
7049         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7050         the s390x build.
7051
7052 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7053
7054         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7055
7056 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7057
7058         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7059         and put its id into jinfo->used_regs. This is only used on amd64,
7060         which is currently the only platform generating unwind info.
7061
7062         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7063         the dwarf unwinder. This is required to correctly handle async exceptions
7064         like thread abort and stack overflows, which can happen while a method
7065         is in the middle of its prolog or epilog.
7066         
7067         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7068         the unwind info belonging to an AOTed method.
7069
7070         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7071         into cfg->unwind_ops.
7072         
7073         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7074
7075         * mini.c (mini_init): Call mono_unwind_init ().
7076         (mini_cleanup): Call mono_unwind_cleanup ().
7077
7078         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7079         unwind info to be shared between methods.
7080
7081         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7082         saved in the LMF.
7083
7084         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7085         get_throw_pending_exception () to avoid initialization races.
7086
7087         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7088         mono_arch_exceptions_init () function.
7089
7090         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7091
7092 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7093
7094         * mini.c (mono_get_domain_intrinsic): New helper function.
7095         (mono_get_thread_intrinsic): Ditto.
7096
7097         * mini-arm.c mini-ia64.c: Use the new helper functions.
7098         
7099         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7100         the last constrained_call change, since it is needed in the non-AOT
7101         case as well.
7102
7103         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7104         
7105         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7106         mono_get_lmf_addr () on arm eabi linux.
7107
7108 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7109
7110         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7111         code sequence which matches a non-virtual call.
7112
7113 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7114
7115         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7116         stack pointer (r1).
7117
7118 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7119
7120         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7121         runtime-invoke wrappers, since they are also shared based on signature.
7122
7123 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7124
7125         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7126         info from the (correct) context.
7127
7128 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7129
7130         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7131         
7132         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7133         using dwarf unwinding info. Not yet used.
7134
7135         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7136
7137 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7138
7139         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7140         descriptors.
7141
7142         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7143         special case and handle mono_arch_delegate_invoke_impl() returning
7144         function descriptors.
7145
7146         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7147         trampolines return function descriptors, too.
7148
7149 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7150
7151         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7152         out_of_line optimization.
7153
7154 2009-01-21  Martin Baulig  <martin@ximian.com>
7155
7156         * mini.h
7157         (MonoCompile): Added `disable_deadce_vars' to disable removing
7158         unused variables.
7159
7160         * mini.c
7161         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7162         inside the debugger.
7163
7164         * liveness.c (mono_analyze_liveness): Don't remove any unused
7165         variables if `cfg->disable_deadce_vars' is set.
7166
7167 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7168
7169         * method-to-ir.c: Only apply exception constructor optimization if
7170         the the method actually belongs to an exception class.  Fixes
7171         #467456.
7172
7173 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7174
7175         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7176         change inside a #ifdef __mono_ppc64__.
7177
7178         * aot-compiler.c (compile_method): Remove the previous limitation.
7179
7180         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7181         on type variables in AOTed code.
7182         
7183         * aot-compiler.c (compile_method): Skip generic methods having type 
7184         constraints on their generic parameters.
7185
7186         * aot-compiler.c (compile_method): Check for methods which cannot be
7187         encoded inside RGCTX_FETCH patches as well.
7188
7189         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7190         build.
7191
7192 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7193
7194         * method-to-ir.c: Force the vtable variable in shared generic code
7195         for the case that they might show up on a stack trace where they
7196         are needed.
7197
7198         * mini-exceptions.c: Save and use generic sharing info as well as
7199         IP in stack traces to resolve shared generic instantiations.
7200
7201 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7202
7203         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7204         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7205
7206 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7207
7208         * method-to-ir.c: Do generic sharing for array constructors.
7209
7210 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7211
7212         * mini-exceptions.c (mono_print_thread_dump): Add information
7213         about the thread state using wapi_current_thread_desc.
7214
7215 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7216
7217         * basic-simd.cs: Tests for the new constructors. 
7218
7219 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7220
7221         * mini-ops.h: Added OP_EXPAND_*
7222
7223         * cpu-x86.md: Same.
7224
7225         * mini-x86.c (mono_arch_output_basic_block): Same.
7226         
7227         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7228
7229 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7230
7231         * iltests.il.in: Add a test for #467385.
7232
7233 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7234
7235         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7236         thread been cleaned up is not the same currently in execution.
7237
7238         Fixes appdomain-unload crashes on windows, osx and linux variants
7239         without the __thread keyword.
7240
7241 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7242
7243         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7244         (koush@koushikdutta.com). Implement this for android.
7245
7246         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7247         begins with a digit.
7248
7249         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7250         mono_marshal_get_write_barrier ().
7251
7252 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7253
7254         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7255         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7256         that pass them on a register pair.
7257
7258         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7259         test was crashing due to that.
7260
7261 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7262
7263         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7264         trampoline code. Include ucontext.h only if available.
7265
7266 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7267
7268         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7269         and doesn't check whether it's sharable, like it was before
7270         removing the shared generics hash.  This brings IronPython
7271         performance back to what it was before that change.
7272
7273 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7274
7275         * method-to-ir.c: Handle delegate invocation optimization earlier,
7276         otherwise it would be handled (much more slowly) by the
7277         final/sealed optimization.
7278
7279 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7280
7281         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7282         domain is not set. Fixes #465864.
7283
7284 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7285
7286         * method-to-ir.c: Don't stop sharing of generic methods with catch
7287         clauses - we already handle those.
7288
7289 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7290
7291         * mini.c, mini.h: lookup_generic_method() is now
7292         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7293         making the shared_generics_hash obsolete.
7294
7295 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7296
7297         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7298         use the red zone.  Make room on the stack first and then use it,
7299         not the other way around.
7300
7301 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7302
7303         * mini.c (mini_init): Call mono_xdebug_init ().
7304
7305         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7306
7307 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7308
7309         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7310
7311         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7312         trampolines.
7313
7314         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7315         debug+unwind info for trampolines.
7316
7317         * mini.c (mono_create_unwind_op): New helper function.
7318
7319         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7320
7321 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7322
7323         * aot-compiler.c: Fix the build.
7324
7325 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7326
7327         * Makefile.am: Update dtrace-prelink.sh location.
7328
7329 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7330
7331         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7332         optimization. Fixes #464520.
7333
7334 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7335
7336         * mini-amd64.c : Adding code to save/restore non-volatile registers
7337            on Winx64.
7338
7339         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7340           registers on Winx64.
7341
7342         Contributed under MIT/X11 license.
7343
7344 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7345
7346         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7347         __GNUC_MINOR__ which can break when the major version changes.
7348
7349 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7350
7351         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7352
7353 2009-01-07  Geoff Norton  <gnorton@novell.com>
7354
7355         * helpers.c:  Allow mono -v -v -v to work on darwin.
7356
7357 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7358
7359         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7360           pattern. 
7361
7362         Contributed under MIT/X11 license.
7363
7364 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7365
7366         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7367         instead of directly accessing type->data.klass. Fixes #462016.
7368         (mono_allocate_stack_slots_full): Ditto.
7369
7370         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7371         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7372
7373         * aot-compiler.c (emit_plt): Fix ARM build.
7374
7375 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7376
7377         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7378         
7379         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7380         change.
7381
7382         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7383         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7384         #463357.
7385
7386         * iltests.il.in: Add a regression test.
7387
7388 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7389
7390         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7391
7392 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7393
7394         * basic-simd.cs: Add a regression test for #462457.
7395
7396 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7397
7398         * mini-ops.h: Add a definition of XPHI.
7399
7400         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7401
7402         * ssa.c (op_phi_to_move): Handle XPHI.
7403
7404         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7405
7406         Fixes #462457
7407
7408 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7409
7410         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7411
7412 2008-12-31  Geoff Norton  <gnorton@novell.com>
7413
7414         * mini-ppc.c: The prolog size allocated can be too small for darwin
7415         ppc32 under certain circumstances.  Also fix a small logic bug.
7416
7417 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7418
7419         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7420         while loading AOT methods.
7421
7422         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7423         since only the former is nulled out after a successful cast. This prevents
7424         crashes with rethrown exceptions when using --debug=casts.
7425
7426 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7427
7428         * mini.h: New macro for checking whether a method is final,
7429         i.e. whether the method or its class is marked final.
7430
7431         * method-to-ir.c: Use the new macro for all final-checks
7432         consistently.  Fixes the crash in the System.ServiceModel tests.
7433
7434 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7435
7436         * mini-exceptions.c (get_exception_catch_class): Corrected another
7437         overly strict assertion.
7438
7439 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7440
7441         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7442         Clobbering it is not allowed because the caller might use it as
7443         the vtable register in the interface call.
7444
7445 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7446
7447         * mini-exceptions.c (get_exception_catch_class): Corrected an
7448         overly strict assertion.
7449
7450 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7451         
7452         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7453
7454         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7455
7456         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7457
7458         * cpu-mips.md: correct lengths for certain long_ opcodes.
7459
7460         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7461
7462         * 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().
7463         
7464 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7465
7466         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7467         
7468 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7469         
7470         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7471         
7472 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7473
7474         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7475         next basic block.
7476         
7477 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7478
7479         * 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
7480
7481         * 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)
7482         
7483 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7484         
7485         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7486         
7487 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7488
7489         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7490         gshared code. Fixes #458947.
7491
7492         * generics.cs: Add a test.
7493
7494 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7495         
7496         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7497         
7498         * mini-mips.c: first pass n32 code generation.
7499
7500         * mini-mips.h: datatypes and defines for n32 support.
7501
7502         * exceptions-mips.c: first pass n32 code generation.
7503         
7504         * tramp-mips.c: first pass n32 code generation.
7505         
7506         * cpu-mips.md: add long_ opcodes.
7507         
7508 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7509
7510         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7511
7512         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7513         
7514         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7515         
7516         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7517
7518         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7519
7520         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7521
7522         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7523
7524         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7525
7526         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7527
7528 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7529
7530         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7531
7532 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7533
7534         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7535
7536 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7537
7538         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7539         descriptors for helper functions directly in front of the code.
7540
7541 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7542
7543         * method-to-ir.c: Removed an unnecessary assertion.
7544
7545 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7546
7547         * method-to-ir.c: Merge SGEN changes from the old JIT.
7548
7549 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7550
7551         * driver.c (compile_all_methods_thread_main): Handle failure of
7552         mono_get_method ().
7553
7554 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7555
7556         * mini-ppc.c: Merged with mini-ppc64.c.
7557
7558         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7559
7560         * Makefile.am: Use the same sources for PPC and PPC64.
7561
7562         * mini-ppc64.c: Removed.
7563
7564 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7565
7566         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7567         code to mono_bb_is_fall_through.
7568         
7569         * branch-opts.c (mono_remove_critical_edges): Same.
7570
7571 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7572
7573         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7574         expect that an OP_BR_REG will be there.
7575
7576 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7577
7578         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7579         for the many branch ops. The original check miss OP_BR_REG.
7580
7581         Fixes #457574.
7582         
7583 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7584
7585         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7586
7587 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7588
7589         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7590         while holding the aot lock.
7591
7592 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7593
7594         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7595         
7596 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7597
7598         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7599           to release all runtime callable wrappers held by the runtime.
7600
7601         Contributed under MIT/X11 license.
7602
7603 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7604
7605         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7606           for Winx64.
7607
7608         Contributed under MIT/X11 license.
7609
7610 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7611
7612         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7613         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7614
7615 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7616
7617         * cpu-mips.md: fix ckfinite length
7618
7619         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7620         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7621         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7622         
7623 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7624
7625         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7626         
7627 2008-12-08  Geoff Norton  <gnorton@novell.com>
7628
7629         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7630         size by 8 bytes as well.
7631
7632 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7633
7634         * basic-simd.cs: Fix method names for Vector16b.
7635         
7636 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7637
7638         * basic-simd.cs: Fix method names for Vector16sb.
7639
7640 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7641
7642         * basic-simd.cs: Fix method names for Vector8us.
7643         
7644 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7645
7646         * basic-simd.cs: Fix method names for Vector8s.
7647         
7648 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7649
7650         * basic-simd.cs: Fix method names for Vector4ui.
7651
7652 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7653
7654         * basic-simd.cs: Fix method names for Vector2l.
7655
7656 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7657
7658         * basic-simd.cs: Fix method names for Vector2d.
7659
7660 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7661
7662         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7663         that are extension methods.
7664
7665 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7666
7667         * basic-simd.cs: Fix method names for Vector4f.
7668
7669 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7670
7671         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7672         as such. Fixes #456669.
7673
7674 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7675
7676         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7677         
7678 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7679
7680         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7681         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7682         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7683         (mips_adjust_stackframe): handle FP spills
7684                 
7685         * mini-ops.h: add mips_mtc1_s2
7686         
7687         * cpu-mips.md: add mips_mtc1_s2
7688         
7689 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7690
7691         * unwind.c: New file, move the unwind info encoding functions here from
7692         aot-compiler.c, so they could be used at runtime too.
7693
7694 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7695
7696         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7697         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7698         
7699 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7700
7701         * mini-mips.c: cleanup warnings
7702         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7703         (mips_adjust_stackframe): handle case of taking the address of stack locals
7704         
7705 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7706
7707         * aot-compiler.c: Implement a few functions missing from the asm writer.
7708         (emit_method_code): Only write symbols for methods when using the bin
7709         writer, since the assembler can't deal with the characters in our method
7710         names.
7711
7712         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7713
7714         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7715         call.
7716
7717         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7718         a bit to also restore %rax.
7719
7720 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7721
7722         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7723
7724 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7725
7726         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7727         arguments.
7728
7729 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7730
7731         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7732
7733         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7734         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7735
7736         * exceptions-ppc64.c: Removed.
7737
7738         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7739
7740 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7741
7742         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7743         tramp-ppc64.c.
7744
7745         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7746
7747         * tramp-ppc64.c: Removed.
7748
7749 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7750
7751         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7752         the TYPESPEC table.
7753
7754 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7755
7756         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
7757
7758         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
7759         mini-ppc.h instead of mini-ppc64.h.
7760
7761         * mini-ppc64.h: Removed.
7762
7763 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7764
7765         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
7766         
7767         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
7768         
7769 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7770
7771         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
7772         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
7773         code easier.
7774
7775 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7776
7777         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
7778
7779 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7780
7781         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
7782
7783 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7784
7785         * basic-simd.cs: Tests for operator == and != on Vector4f.
7786
7787 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7788
7789         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
7790
7791         * simd-intrinsics.c: Kill useless enum.
7792
7793 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7794
7795         * cpu-mips.md: add long_conv_to_ovf_i4_2
7796         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
7797
7798 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7799
7800         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
7801         
7802         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
7803
7804 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7805
7806         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
7807         
7808 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7809
7810         * basic-simd.cs: Add tests for new methods.
7811
7812 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7813
7814         * simd-intrinsics.c: Add support for operator == and !=
7815         on Vector4(u)i.
7816
7817         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
7818
7819 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7820
7821         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
7822
7823 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
7824
7825         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
7826
7827         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
7828         MONO_PATCH_INFO_ICALL_ADDR.
7829
7830         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
7831
7832         * aot-compiler.c: Resurrect full-aot support.
7833
7834 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7835
7836         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
7837         
7838 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7839
7840         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
7841         
7842 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
7843
7844         * basic-simd.cs: Fix tests to work under ppc.
7845         Remove tests for methods that will be removed.
7846
7847 2008-12-03  Mark Probst  <mark.probst@gmail.com>
7848
7849         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
7850         generic type (via a typedef or typeref) correctly.
7851
7852 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
7853
7854         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
7855         diagnose an assertion failure.
7856
7857 2008-12-02  Mark Probst  <mark.probst@gmail.com>
7858
7859         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
7860         Fix trampoline size.
7861
7862         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
7863         conversion opcodes are implemented natively instead via emulation.
7864
7865 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7866
7867         * cpu-mips.md: remove mips_xori
7868
7869         * mini-ops.h:  remove mips_xori
7870
7871         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
7872
7873         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
7874         
7875         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
7876         
7877 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7878
7879         * cpu-mips.md: fix instruction lengths.
7880
7881         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
7882
7883         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
7884
7885         * mini-ops.h: fix slti / sltiu op profiles.
7886         
7887 2008-12-02  Martin Baulig  <martin@ximian.com>
7888
7889         * method-to-ir.c (mono_method_to_ir): Disable debugging
7890         information for the init locals block to make the debugger stop
7891         after all locals have been initalized.
7892
7893 2008-12-02  Martin Baulig  <martin@ximian.com>
7894
7895         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
7896         running inside the debugger.
7897
7898 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
7899
7900         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
7901         is enabled.
7902
7903         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
7904         alu->alu imm optimization which only shows if deadce is disabled.
7905
7906         * aot-compiler.c: Rename the function names for the binary and asm writers
7907         so they can coexist in the same process. Rework the xdebug code to use the
7908         asm writer. This avoids the need to call into the runtime to dump the
7909         debugging info. Add more debugging info for types.
7910
7911         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
7912
7913         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
7914         cpu description tables, they can't occur in cpu-<ARCH>.md.
7915
7916         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
7917         the stack in CEE_LDFLDA. Fixes #450542.
7918
7919         * generics.cs: Add a new test.
7920
7921 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7922
7923         * mini-ops.h: updated MIPS opcodes
7924         * mini-mips.c: decompose long opts
7925         * mini-mips.h: decompose long opts
7926         
7927 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
7928
7929         * cpu-mips.md: fix length on int_rem_un
7930         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
7931         
7932 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
7933
7934         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
7935
7936         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
7937
7938 2008-11-29  Martin Baulig  <martin@ximian.com>
7939
7940         * mini-exceptions.c (mono_handle_native_sigsegv): Check
7941         mono_debug_using_mono_debugger() in addition to the
7942         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
7943
7944 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7945
7946         * mini-ops.h: updated more MIPS opcodes
7947         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
7948         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
7949         
7950 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7951
7952         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
7953
7954 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7955
7956         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
7957         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
7958         * mini-ops.h: correct selected mips opcode entries
7959         
7960 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7961
7962         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
7963         make them work.
7964
7965 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7966
7967         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
7968
7969 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7970
7971         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
7972         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
7973         * mini-mips.h: disable IMT
7974         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
7975         
7976 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7977
7978         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
7979
7980 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7981
7982         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
7983
7984 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
7985
7986         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
7987         consistency.
7988
7989 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7990
7991         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
7992         for Set/GetVector aligned versions.
7993
7994 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7995
7996         * basic-simd.cs: Add tests for Get/SetVector.
7997
7998 2008-11-27  Mark Probst  <mark.probst@gmail.com>
7999
8000         * mini.c: Removed g_slist_append_mempool().  Now in
8001         metadata/mempool.c.
8002
8003 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8004
8005         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8006         size properly and make the bounds check optional.
8007
8008         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8009         for SetVector and IsAligned.
8010
8011 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8012
8013         * mini.c: Remove unused mono_normalize_opcodes () function.
8014
8015 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8016
8017         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8018         using the new atomic add ops now.
8019
8020         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8021         add.
8022
8023 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8024
8025         * mini-ppc64.c: Several fixes.
8026
8027 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8028
8029         * cpu-mips.md: added jump_table
8030         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8031
8032 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8033
8034         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8035
8036 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8037
8038         * mini-ops.h: corrected a handful of MIPS opcodes.
8039
8040 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8041
8042         * aot-compiler.c: MIPS to use ELF writer
8043
8044 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8045
8046         * mini-codegen.c: remove MIPS specific assert.
8047
8048 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8049
8050         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8051         fixes.  PPC64 now passes most of the runtime regressions.
8052
8053 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8054
8055         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8056         volatile intervals a bit.
8057
8058 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8059
8060         * basic-long.cs: New test case.
8061
8062 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8063
8064         * mini.c (mini_method_compile): Disable globalra for large methods for 
8065         now.
8066
8067         * regalloc2.c (order_moves): Add fp support.
8068
8069         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8070         source bblock ends with an OP_BR_REG.
8071
8072         * ratests.cs: Add a new test.
8073
8074 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8075
8076         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8077         sharing.  PPC64 now passes generics.exe.
8078
8079 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8080
8081         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8082
8083 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8084
8085         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8086         memory when mono_jit_info_table_find () can't find the method in the
8087         LMF case.
8088
8089         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8090         AOTed code too.
8091         
8092         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8093         writer too.
8094
8095 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8096
8097         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8098         Several fixes.  PPC64 now runs exceptions.exe and
8099         devirtualization.exe.
8100
8101 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8102
8103         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8104         arrays.exe and basic-math.exe.
8105
8106 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8107
8108         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8109         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8110
8111 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8112
8113         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8114
8115 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8116
8117         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8118
8119         * ir-emit.h: Move macros from method-to-ir.c to here.
8120
8121 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8122
8123         * mini-ops.h: Correct the long simd ops to use LREG.
8124
8125 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8126
8127         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8128         
8129         * mini-ops.h: Correct the dreg type of a few long opcodes.
8130
8131         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8132         Add netbsd support.
8133
8134 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8135
8136         * mini-ppc.c: remove negative stack references in epilog
8137         for platforms that don't support the red zone.
8138
8139 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8140
8141         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8142         point regs.  Now PPC64 passes basic-calls.exe.
8143
8144 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8145
8146         * basic-simd.cs: Add tests for accessors of Vector2l.
8147
8148 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8149
8150         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8151
8152         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8153         
8154         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8155
8156 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8157
8158         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8159         PPC64 passes basic-long.exe.
8160
8161 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8162
8163         * decompose.c: Decompose carry and overflow add on PPC64 like on
8164         other 64 bit archs.  Don't decompose sub at all on PPC64.
8165
8166         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8167         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8168         basic-long.exe.
8169
8170 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8171
8172         * basic-simd.cs: Add tests for accessors of Vector2d.
8173
8174 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8175
8176         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8177
8178         * cpu-x86.md: Same.
8179
8180         * mini-x86.c (mono_arch_output_basic_block): Same.
8181         
8182         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8183
8184 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8185
8186         * basic-simd.cs: Add tests for accessors of Vector4f.
8187
8188 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8189
8190         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8191
8192         * cpu-x86.md: Same.
8193
8194         * mini-x86.c (mono_arch_output_basic_block): Same.
8195         
8196         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8197
8198 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8199
8200         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8201
8202 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8203
8204         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8205
8206         * cpu-x86.md: Same.
8207
8208         * mini-x86.c (mono_arch_output_basic_block): Same.
8209         
8210         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8211
8212 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8213
8214         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8215
8216 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8217
8218         * simd-intrinsics.c: Enable setters for Vector16sb.
8219
8220 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8221
8222         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8223
8224         * cpu-x86.md: Same.
8225
8226         * mini-x86.c (mono_arch_output_basic_block): Same.
8227         
8228         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8229
8230 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8231
8232         * simd-intrinsics.c: Implement setter for Vector8us.
8233
8234 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8235
8236         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8237         for dead variables.
8238
8239 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8240
8241         * mini-ppc.c: remove references to the red zone in the prolog
8242         (for systems that don't support it).
8243
8244 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8245
8246         * cpu-ppc64.md: Fixed a few instruction lengths.
8247
8248         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8249         now.
8250
8251 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8252
8253         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8254         basic.exe now.
8255
8256 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8257
8258         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8259
8260 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8261
8262         * mini-ops.h: Added OP_INSERT_I2.
8263
8264         * cpu-x86.md: Same.
8265
8266         * mini-x86.c (mono_arch_output_basic_block): Same.
8267         
8268         * simd-intrinsics.c: Implement setter for Vector8s.
8269
8270         * simd-methods.h: Add the names of get setters of Vector8s.
8271
8272 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8273
8274         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8275         
8276         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8277         parameters.
8278
8279         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8280
8281 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8282
8283         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8284         for PPC64.  An empty program runs now.
8285
8286 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8287
8288         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8289
8290         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8291         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8292         info for JITted code is emitted into a shared library, loadable into gdb.
8293
8294 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8295
8296         * Makefile.am: Changes to build PPC64.
8297
8298         * mini-arch.h: Include mini-ppc64.h on PPC64.
8299
8300 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8301
8302         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8303         in PPC code up to r119147.
8304
8305 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8306
8307         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8308         cpu-ppc64.md: Changes for PPC64.
8309
8310         Based on code submitted by andreas.faerber@web.de at
8311         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8312         X11/MIT license.
8313
8314 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8315
8316         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8317         cpu-ppc64.md: Copied from the corresponding PPC files from
8318         r118846.
8319
8320 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8321
8322         * mini-ops.h: Added OP_ROUND.
8323
8324         * cpu-x86.md: Added round.
8325
8326         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8327
8328         * basic-math.cs: Added test_0_round to test rounding.
8329
8330         Contributed under MIT/X11 license.
8331
8332 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8333
8334         * aot-compiler.c : Fix the Winx64 build.
8335
8336         Contributed under MIT/X11 license.
8337
8338 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8339
8340         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8341         in OP_EXTRACT_R8 to avoid possible stack corruption.
8342
8343 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8344
8345         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8346
8347         * cpu-x86.md: Added extract_r8.
8348
8349         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8350         
8351         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8352         a couple of OP_EXTRACT_I4.
8353
8354         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8355
8356         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8357
8358 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8359
8360         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8361         and not 4.1. 
8362
8363 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8364
8365         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8366         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8367
8368         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8369         are not needed any more.
8370
8371         * mini.h: Remove the unused INS_LIST macros.
8372
8373         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8374         longer needed.
8375
8376         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8377         ir-emit.h.
8378
8379         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8380         mono_alloc_ireg () instead.
8381
8382         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8383         macros.
8384
8385         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8386         on amd64.
8387
8388         * aot-runtime.c (load_aot_module): Disable AOT when running under
8389         CAS.
8390
8391         * mini-amd64.h: Change the monitor fastpath defines to check for
8392         !PLATFORM_WIN32 so they work on *bsd too.
8393
8394         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8395
8396         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8397
8398         * mini.h (MonoCompile): Remove new_ir flag.
8399
8400         * regalloc.h regalloc.c: Remove unused code.
8401
8402         * cpu-*.md: Remove more unused opcodes.
8403
8404         * simple-cee-ops.h simple-mini-ops.h: Removed.
8405
8406         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8407         
8408 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8409
8410         * aliasing.h: Removed.
8411
8412         * *.c: Remove references to aliasing.h and inssel.h.
8413
8414         * mini.c: Remove additional unused functions.
8415
8416         * mini-ops.h cpu-*.md: Remove unused opcodes.
8417
8418 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8419
8420         Remove the old JIT code.
8421
8422         * inssel*.brg: Removed.
8423
8424         * ssa.c abcremoval.c aliasing.c: Removed.
8425
8426         * ssa2.c: Renamed to ssa.c.
8427
8428         * abcremoval2.c: Renamed to abcremoval.c.
8429
8430         * *.c: Removed all !cfg->new_ir code.
8431
8432         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8433         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8434
8435         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8436         
8437 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8438
8439         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8440         to simplify the code and cut back on the number of global symbols in the AOT
8441         file.
8442         
8443         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8444
8445 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8446
8447         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8448         with the got/got_info tables.
8449
8450         * mini.h: Bump AOT file format version.
8451         
8452         * unwind.h: New file, contains definitions for stack unwinding.
8453
8454         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8455         to cfg->unwind_ops.
8456         
8457         * aot-compiler.c: Generalize the emitting of unwind information to use the
8458         information in cfg->unwind_ops.
8459
8460         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8461
8462         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8463         AOT method frames. Enable writing symbols for methods by default.
8464
8465 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8466
8467         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8468         and make it work with vectors of element sizes 1, 2 and 4.
8469
8470         * simd-intrinsics.c: Enable getter for all vectors with element size
8471         1, 2 or 4.
8472
8473         * simd-methods.h: Add the names of other getters.
8474
8475         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8476
8477         * cpu-x86.md: Same.
8478
8479         * mini-x86.c: Same.
8480
8481 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8482
8483         * mini-ppc.h: portability fix.
8484
8485 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8486
8487         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8488         buggy and will overwrite it.
8489
8490 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8491
8492         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8493         Use it to emit local symbols for all methods so AOTed methods show up with
8494         their full name in gdb/valgrind output.
8495
8496 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8497
8498         * mini-ppc.c: portability fixes.
8499
8500 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8501
8502         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8503         entries out of the if (!generic_shared...) code so it is always done.
8504         (mono_class_init_trampoline): Do the patching when running under valgrind
8505         too, newer versions of valgrind have no problems with it.
8506
8507 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8508
8509         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8510         further sections.
8511
8512 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8513
8514         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8515         filters.
8516
8517 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8518
8519         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8520
8521 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8522
8523         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8524
8525         * cpu-x86.md: Same.
8526
8527         * mini-x86.c: Same.
8528
8529         * simd-intrinsics.c: Same.
8530
8531 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8532
8533         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8534
8535 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8536
8537         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8538         to work with more Vector types.
8539
8540 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8541
8542         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8543         store the elemens directly instead of using and intermediate.
8544
8545 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8546
8547         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8548
8549         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8550         to preserve %eax for aot plt trampolines.
8551
8552         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8553         (encode_method_ref): Flag synchronized methods so they won't go through
8554         the AOT trampoline.
8555
8556         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8557         wrappers.
8558
8559         * cpu-ia64.md (jmp): Increase max length.
8560
8561 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8562
8563         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8564         open generic classes.
8565
8566         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8567
8568         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8569         box+brtrue optimization since it causes test failures on x86.
8570
8571 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8572
8573         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8574
8575         * cpu-x86.md: Same.
8576
8577         * mini-x86.c: Same.
8578
8579         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8580         for simd ctor values. 
8581
8582         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8583         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8584
8585 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8586
8587         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8588         LogicalRightShift.
8589
8590         * simd-instrincs.c: Same.
8591
8592         * basic-simd.cs: Same.
8593
8594 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8595
8596         * ratests.cs: Add more tests.
8597
8598         * regalloc2.c (add_spill_code): Handle more corner cases.
8599
8600 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8601
8602         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8603         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8604         both the source an destination of an instruction.
8605
8606 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8607
8608         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8609         wapihandles.c: more portability changes.
8610
8611 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8612
8613         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8614         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8615         safe to execute in a signal handler and the kernel provides better
8616         the info in /proc/self/smaps. Avoid the assert on sigaction during
8617         cleanup.
8618
8619 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8620
8621         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8622         do the bblock linking hack if it is actually needed.
8623
8624         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8625         up linking.
8626
8627         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8628         crash problem is fixed.
8629
8630         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8631         bblocks.
8632
8633         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8634         for catch clauses.
8635         (mini_method_compile): Set the starting value of next_vreg to 
8636         MAX_IREGS + MAX_FREGS when using globalra.
8637
8638         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8639         filter clauses with BB_EXCEPTION_HANDLER.
8640
8641         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8642
8643 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8644
8645         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8646         space for stdcall.  Fixes regressions on Win32.
8647
8648 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8649
8650         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8651         bblocks.
8652         (linear_scan): Remove an assert which doesn't seem to be needed.
8653
8654         * local-propagation.c (mono_local_deadce): Avoid a call to
8655         MONO_DELETE_INS which would screw up the instruction linking.
8656
8657         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8658
8659         * regalloc2.c: Upgrade to work the current JIT code.
8660
8661 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8662
8663         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8664         case.
8665
8666         * aot-runtime.c: Remove some dead code.
8667
8668         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8669         consistency.
8670         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8671
8672         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8673         trampolines using sscanf since atoi doesn't work on large unsigned values.
8674
8675         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8676         Initialize code_size.
8677
8678 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8679
8680         * method-to-ir.c (mini_emit_inst_for_method): Make
8681         Interlocked.CompareExchange work for Int arguments on 32 bit
8682         archs, as well.
8683
8684 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8685
8686         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8687
8688 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8689
8690         * main.c Fix MSVC build.
8691
8692         Contributed under MIT/X11 license.
8693
8694 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8695
8696         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8697         alignment larger than 8 bytes are aligned correctly, too.
8698
8699         * mini.c: Honor the min_align field of MonoClass when laying out
8700         the stack.
8701
8702 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8703
8704         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8705
8706         * aot-compiler.c (emit_plt): Fix a warning.
8707         
8708         * aot-compiler.c: Implement ARM support in the binary writer.
8709
8710 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8711
8712         * basic-simd.cs: Add test for getter with byref arg.
8713         Fix the naming of a few tests.
8714         Add missing checks to a test.
8715
8716 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8717
8718         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8719
8720         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8721         most of the full-aot support for monitor enter/exit trampolines.
8722
8723         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8724         enter/exit trampoline creation functions.
8725
8726         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8727         make dist.
8728
8729 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8730
8731         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8732         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8733         implement the needed functionality without adding crap to the runtime.
8734
8735 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8736
8737         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8738         non-x86 builds.
8739
8740         * mini.c (mono_build_date): New global version holding the build date in
8741         string format.
8742         
8743         * Makefile.am (buildver.c): Generate a file containing the build date.
8744
8745         * main.c: Set the build date from the generated file.
8746
8747         * mini.c (mono_get_runtime_build_info): New helper function returning build
8748         information in a string format.
8749         
8750         * driver.c (mono_main): Print the build date in --version.
8751
8752         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8753         file when the bind-to-runtime-version option is used.
8754
8755 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8756
8757         * simd-intrinsics.c: Fix bug when using getters and byref args. 
8758
8759 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8760
8761         * simd-methods.h: Rename prefetch methods.
8762
8763         * simd-intrinsics.c: Same.      
8764
8765 2008-11-05  Mark Probst  <mark.probst@gmail.com>
8766
8767         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
8768         sizes.
8769
8770 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8771
8772         * aot-compiler.c: Use the bundled elf header files instead of depending on
8773         the system one.
8774         
8775         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
8776         mempool.
8777
8778         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
8779         on every call.
8780
8781 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
8782
8783         * cpu-x86.md: Add store nta ops.
8784
8785         * mini-ops.h: Same.
8786
8787         * mini-x86.c: Same.
8788
8789         * mini.h: Add an enum for simd prefetch modes.
8790
8791         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
8792         of store. Use the changed code to support store nta.
8793
8794         * simd-intrinsics.c: Add prefetch ops for all vector types.
8795
8796 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8797
8798         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
8799         threads.
8800         
8801         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
8802         names.
8803
8804         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
8805         trampolines.
8806
8807 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8808
8809         * mini-x86.c: Fixed commit.
8810
8811 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8812
8813         * aot-compiler.c (emit_plt): Align the plt section only on x86.
8814
8815 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8816
8817         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
8818         and MONITOR_EXIT, for the ASM fastpaths.
8819
8820         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
8821         available.
8822
8823         * mini.c, patch-info.h: Signature and patch infos for
8824         Monitor.Enter/Exit trampolines.
8825
8826         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
8827
8828         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
8829         Monitor.Enter/Exit ASM fastpath for Linux.
8830
8831 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8832
8833         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
8834
8835         * objects.cs: Add a new test.
8836         
8837         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
8838
8839         * aot-runtime.c (load_method): Run class initialization in the PLT case even
8840         if MONO_LOG_LEVEL is set.
8841
8842         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
8843
8844         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
8845
8846         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
8847         
8848         * aot-compiler.c: Change the relocation code to use virtual addresses instead
8849         of file offsets. Align the sections belonging to the data segment to 
8850         PAGESIZE.
8851
8852 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8853
8854         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
8855         elf.h. Port it to amd64.
8856
8857 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8858
8859         * driver.c: Enable SIMD by default.
8860
8861 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8862
8863         * cpu-x86.md: Add prefetch op.
8864
8865         * mini-ops.h: Same.
8866
8867         * mini-x86.c: Same.
8868
8869         * mini.h: Add an enum for simd prefetch modes.
8870
8871         * simd-methods.h: Add prefetch function names.
8872
8873         * simd-intrinsics.c: Add prefetch ops for all vector types.
8874
8875 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8876
8877         * aot-compiler.c (emit_bytes): Speed this up a little.
8878
8879 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
8880
8881         * aot-compiler.c: Add JIT time etc. statistics.
8882         
8883         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
8884
8885         * mini.h (MonoCompile): Add 'got_offset' field.
8886
8887         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
8888         method_got_offsets array.
8889
8890         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
8891         wrappers.
8892
8893         * aot-compiler.c (compile_method): Add generic method instances referenced
8894         by the method to the list of methods to be compiled, this is required so if
8895         A<T> references B<T>, and another assembly references A<int>, then it will
8896         also get a copy of B<int>.
8897
8898         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
8899         when checking for monitor enter/exit.
8900
8901 2008-10-30  Mark Probst  <mark.probst@gmail.com>
8902
8903         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
8904         for Monitor.Enter and Monitor.Exit if enabled.
8905
8906         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
8907         Solaris.
8908
8909 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
8910
8911         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
8912         of an OP_MOVE. Fixes #440046.
8913
8914         * basic-long.cs: Add a new test.
8915
8916 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8917
8918         * mini.h: Add synchronization note for the managed counter-part.
8919
8920         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
8921         returns the simd caps of the current cpu.
8922
8923 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8924
8925         * basic-simd.cs: Remove Console.WriteLine.
8926
8927 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8928
8929         * basic-simd.cs: New tests for Vector2ul.
8930
8931 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8932
8933         * simd-intrinsics.c: Add new vector type Vector2ul.
8934
8935 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8936
8937         * basic-simd.cs: New tests for Vector2l.
8938
8939 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8940
8941         * cpu-x86.md: Add long version of most packed int ops.
8942
8943         * mini-ops.h: Same.
8944
8945         * mini-x86.h: Same.
8946
8947         * simd-intrinsics.c: Add new vector type Vector2l.
8948
8949 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8950
8951         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
8952
8953         * simd-methods.h: Remove SN_op_BitwiseXor.
8954
8955 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8956
8957         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
8958         alignment.
8959
8960 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8961
8962         * basic-simd.cs: Test for Vector2d.
8963
8964         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
8965         value.
8966
8967 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8968
8969         * cpu-x86.md: Add double version of all packed float ops.
8970
8971         * mini-ops.h: Same.
8972
8973         * mini-x86.h: Same.
8974
8975         * simd-intrinsics.c: Add new vector type Vector2d.
8976
8977         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
8978
8979         * simd-methods.h: Add Duplicate.
8980
8981 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8982
8983         * basic-simd.cs: Test for packing with signed saturation.
8984
8985 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8986
8987         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
8988         found in the TYPESPEC table.
8989
8990 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
8991
8992         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
8993         too.
8994
8995         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8996
8997         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
8998         instead of the RVA, since the RVA can be changed by tools like the cil 
8999         stripper.
9000
9001         * method-to-ir.c (mono_method_to_ir2): Ditto.
9002
9003         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9004         (deserialize_variable): Ditto.
9005
9006 2008-10-25  Martin Baulig  <martin@ximian.com>
9007
9008         * debug-mini.c (write_variable): Use
9009         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9010
9011 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9012
9013         * cpu-x86.md: Add unsigned variants of packd and packw.
9014
9015         * mini-ops.h: Same.
9016
9017         * mini-x86.h: Emit the right instruction for packd and packw.
9018         Add unsigned variants of packd and packw.
9019
9020         * simd-intrinsics.c: Packd and packw were used in place of their
9021         unsigned variants. Change that.
9022         Add intrinsics for (Signed)PackWithSignedSaturation.
9023
9024         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9025
9026 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9027
9028         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9029
9030 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9031
9032         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9033
9034         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9035
9036         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9037         sse instructions.
9038
9039         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9040
9041 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9042
9043         * method-to-ir.c, mini.c: Special casing for the synchronized
9044         wrapper for the ldtoken+GetTypeFromHandle case.
9045
9046 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9047
9048         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9049
9050         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9051         created/split bblocks.
9052
9053 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9054
9055         * mini-ops.h: Add packed signed mul high.
9056         
9057         * cpu-x86.md: Same.
9058
9059         * mini-x86.c (mono_arch_output_basic_block): Same.
9060
9061         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9062
9063         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9064
9065 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9066
9067         * basic-simd.cs: Tests for Vector16sb.
9068
9069 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9070
9071         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9072
9073 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9074
9075         * mini-ops.h: Add packed signed min, max and compare greater.
9076         
9077         * cpu-x86.md: Same.
9078
9079         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9080         saturation.
9081
9082         * simd-methods.h: Add CompareGreaterThan.
9083
9084         * simd-methods.h: Remove CompareEquals.
9085
9086         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9087
9088         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9089
9090         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9091         CompareEqual.
9092
9093 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9094
9095         * basic-simd.cs: Fix tests due to change in the API.
9096
9097 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9098
9099         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9100
9101 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9102
9103         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9104
9105         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9106         inst_offset as this has invalid values for LDADDR.
9107
9108 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9109
9110         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9111
9112         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9113
9114 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9115
9116         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9117         for accessing field->data.
9118
9119 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9120
9121         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9122
9123 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9124
9125         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9126
9127         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9128
9129 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9130
9131         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9132         from the cfg mempool.
9133
9134 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9135
9136         * basic-simd.cs: Tests for new methods in Vector8us.
9137
9138 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9139
9140         * mini-ops.h: Add multiply and store high.
9141         
9142         * cpu-x86.md: Same.
9143
9144         * mini-x86.c (mono_arch_output_basic_block): Same.
9145
9146         * simd-methods.h: Same.
9147
9148         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9149         and CompareEqual.
9150
9151 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9152
9153         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9154         mono_class_setup_vtable ().
9155
9156         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9157         mono_class_get_vtable_entry () for accessing klass->vtable.
9158
9159         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9160
9161         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9162         found.
9163
9164         * method-to-ir.c (mono_save_token_info): Don't save references made from
9165         wrappers.
9166
9167         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9168         of generic instances.
9169
9170         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9171
9172 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9173
9174         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9175         OP_JMP depends on the method signature.  Calculate it properly.
9176
9177 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9178         
9179         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9180         called directly.
9181
9182         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9183         instances.
9184         (emit_extra_methods): Add another table mapping method indexes to 
9185         offsets in the extra_method_info table.
9186
9187         * mini.h: Bump AOT file format version.
9188         
9189         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9190         and mono_aot_get_method_from_token () into one function.
9191
9192 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9193
9194         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9195         separate counter.
9196
9197 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9198
9199         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9200         methods.
9201
9202         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9203         disable_aot.
9204
9205         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9206
9207         * mini.h: Bump aot file format version.
9208
9209         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9210         AOT file can contain native code for methods which are not in the METHOD
9211         table. Generate code for non-sharable generic instances of generic methods
9212         found in the METHODSPEC table.
9213         
9214         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9215         encoding generic type handles.
9216
9217         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9218         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9219
9220         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9221         macros + MONO_ADD_INS.
9222
9223         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9224         context as well.
9225
9226         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9227
9228         * mini.h: Bump aot file format version.
9229
9230         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9231
9232 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9233
9234         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9235         platforms, with definable stack alignment value.  Set to 16 now
9236         for all platforms.
9237
9238         * mini.c, mini.h, driver.c: Command line option for disabling
9239         stack alignment.
9240
9241 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9242
9243         * basic-simd.cs: Tests for new methods in Vector4ui.
9244
9245 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9246
9247         * mini-ops.h: Add packed int shuffle.
9248         
9249         * cpu-x86.md: Same.
9250
9251         * mini-x86.c (mono_arch_output_basic_block): Same.
9252
9253         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9254         extract mask, max, min, shuffle.
9255
9256         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9257
9258 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9259
9260         * basic-simd.cs: Tests for new methods in Vector8us.
9261
9262 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9263
9264         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9265         RuntimeTypeHandle, not a TypedReference.
9266
9267 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9268
9269         * simd-intrinsics.c: remove relocations.
9270
9271 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9272
9273         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9274         optimizations from the x86 backend.
9275
9276 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9277
9278         * simd-methods.h, simd-intrinsics.c: debloat method names and
9279         prepare for no relocations.
9280
9281 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9282
9283         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9284         
9285         * cpu-x86.md: Same.
9286
9287         * mini-x86.c (mono_arch_output_basic_block): Same.
9288
9289         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9290         extract mask, max, min and sum of absolute differences.
9291
9292         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9293         method name.
9294
9295 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9296
9297         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9298         Renamed one test for consistency.
9299
9300 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9301
9302         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9303         fix to the code that deal with other blocks.
9304
9305 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9306
9307         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9308
9309 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9310
9311         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9312         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9313         able to process the source reg.
9314
9315 2008-10-16  Martin Baulig  <martin@ximian.com>
9316
9317         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9318
9319         * inssel.brg: Add `OP_HARD_NOP'.
9320
9321         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9322
9323         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9324         `OP_HARD_NOP' instruction when running inside the debugger.
9325
9326         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9327         `OP_HARD_NOP' instruction when running inside the debugger.
9328
9329 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9330
9331         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9332         now works. The issue with the regalloc tripping up no longer
9333         happens.
9334
9335         * simd-intrinsics.c (load_simd_vreg): Same.
9336
9337 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9338         
9339         * basic-simd.cs: Tests for new Vector8ui methods.
9340
9341 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9342
9343         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9344         only for type. This fixes crashes where MonoInst::klass is checked
9345         for ops of type != VTYPE or OBJ.
9346
9347         * simd-intrinsics.c (load_simd_vreg): Same.
9348
9349 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9350
9351         * mini-ops.h: Add ops for packed shuffle/max/avg and
9352         extract mask.
9353         
9354         * cpu-x86.md: Same.
9355
9356         * mini-x86.c (mono_arch_output_basic_block): Same.
9357
9358         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9359         extract mask.
9360
9361         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9362         to emit extract mask op.
9363
9364         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9365         to emit word shuffles.
9366
9367 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9368
9369         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9370         the largest alignment needed by a variable, but at least
9371         sizeof(gpointer).
9372
9373 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9374
9375         * basic-simd.cs: Tests for the fixes in the last commit.
9376
9377 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9378
9379         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9380         no longer handles STACK_PTR input.
9381
9382         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9383
9384         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9385         get_simd_vreg   but handles STACK_PTR input.
9386
9387         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9388         as the input can be an arbitrary pointer.
9389
9390         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9391         LDADDR local optimization directly otherwise use a store op.
9392
9393 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9394
9395         * basic-simd.cs: Tests for dup low and dup high.
9396
9397 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9398
9399         * mini-ops.h: Add dup low and dup high ops.
9400         
9401         * cpu-x86.md: Same.
9402
9403         * mini-x86.c (mono_arch_output_basic_block): Same.
9404
9405         * simd-intrinsics.c (vector4f_intrinsics): Same.
9406
9407 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9408
9409         * basic-simd.cs: Tests for recently added functionality.
9410
9411 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9412
9413         * mini-ops.h: Add remaining sse1 fp ops.
9414         
9415         * cpu-x86.md: Add remaining sse1 fp ops.
9416
9417         * mini-x86.c (mono_arch_output_basic_block): Same.
9418
9419         * mini.h: Add enum for simd FP compare conditions.
9420
9421         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9422
9423         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9424         so the backed can generate the appropriate op.
9425
9426 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9427         This patch squeese one more byte from the SimdIntrinsc struct.
9428
9429         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9430         a a shift amount intead of simply or'ing it.
9431
9432         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9433
9434         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9435         byte so we can have an aditional flags field without increasing struct size.
9436
9437         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9438         against the simd_supported_versions bitmask.
9439
9440         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9441
9442 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9443
9444         * mini.c: remove rawbuffer code (the only use here is unsafe because
9445         it takes locks during signal handling and the kernel now provides much
9446         better info in proc/pid/smaps these days).
9447
9448 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9449
9450         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9451         OP_X86_PUSH_OBJ. Fixes #434620.
9452
9453         * objects.cs: Add a test.
9454         
9455 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9456
9457         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9458         that the packuswb/packusdw don't work with unsigned numbers for what
9459         would be negative numbers in signed format.
9460
9461         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9462         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9463
9464         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9465
9466         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9467
9468         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9469
9470         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9471
9472         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9473         add more ops.
9474
9475         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9476         version as the enum in mini.h.
9477
9478         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9479         for sse3 ops, check the simd_version field if present. This way the code
9480         works with all versions of sse.
9481
9482 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9483
9484         * simd-intrinsics.c: Fixed intrinsic name typo.
9485
9486         * mini.h: Added missing simd exported function.
9487
9488         * basic-simd.cs: Added tests for Vector4ui.
9489         Fixed broken test for Vector16b.
9490
9491 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9492
9493         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9494         the max length to 64.
9495
9496 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9497
9498         * method-to-ir.c: Only do the fast virtual generic method call for
9499         non-wrapper methods.
9500
9501         * mini.h, mini-trampolines.c: The new generic virtual remoting
9502         trampoline handles virtual method calls via the vtable (as done by
9503         the fast virtual generic method calls) to remoting proxies.
9504
9505         * mini.c (mono_jit_create_remoting_trampoline): For generic
9506         methods reate a generic virtual remoting trampoline.
9507
9508         * mini-amd64.h: Enable fast virtual generic method calls again.
9509
9510 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9511
9512         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9513         restore registers when doing tail calls.
9514
9515 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9516
9517         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9518         Vector4ui.
9519
9520 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9521
9522         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9523
9524 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9525
9526         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9527
9528 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9529
9530         * basic-simd.cs: Retrofit for API changes.
9531
9532 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9533
9534         * mini-ppc.c: Handle integer stack arguments for tail calls.
9535
9536 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9537
9538         * optflags-def.h: Removed sse3 optimization.
9539
9540         * driver.c: Same.
9541
9542         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9543         sse3.
9544
9545         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9546
9547         * mini.h: Added enumeration with simd versions.
9548
9549         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9550         for detecting SSE3.
9551
9552         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9553
9554         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9555
9556 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9557
9558         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9559
9560         * basic-simd.cs: Fixed test naming.
9561
9562 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9563
9564         * mini-ops.h: Added ops for packed and saturated math, shifts
9565         and packing/unpacking.
9566
9567         * cpu-x86.md: Added descriptors for the above ops.
9568
9569         * mini-x86.c: Added code to emmit the above ops.
9570
9571         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9572
9573 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9574
9575         * aot-compiler.c (compile_method): Enable AOT for generic code.
9576
9577         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9578
9579 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9580
9581         * mini.c: add a workaround for a common screwup that ends up blamed
9582         to mono (other processes blocking signal delivery).
9583
9584 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9585
9586         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9587         in the LDFLD/STFLD opcodes. Fixes #432673.
9588
9589         * iltests.il.in: Add a new test.
9590
9591 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9592
9593         * mini-arm.c: attach the thread in unmanaged->managed transitions
9594         using delegates (bug #433148).
9595
9596 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9597
9598        * basic-simd.cs: Use new ShuffleSel constants.
9599
9600 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9601
9602         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9603
9604         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9605         only disable simd intrinsics if no sse2 is detected.
9606
9607         * optflags-def.h: Added sse3.
9608
9609         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9610         is disabled.
9611
9612 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9613
9614         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9615         when adding delegate-invoke wrappers.
9616
9617 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9618
9619         * Makefile.am: Reenable the simd tests.
9620
9621 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9622
9623         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9624           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9625           other vreg is allocated to that hreg.
9626
9627         Contributed under MIT/X11 license.
9628
9629 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9630
9631         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9632         yet checked in.
9633
9634 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9635
9636         * basic-simd.cs: New test suite for SIMD intrinsics.
9637
9638         * Makefile.am: Added new tests.
9639
9640 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9641
9642         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9643
9644         * mini-ops.h: Same.
9645
9646         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9647
9648         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9649         using SSE2 aware opcodes.
9650
9651         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9652         is enabled, this code path is only reachable if conversion ops are emmited after
9653         mono_method_to_ir.
9654
9655         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9656
9657         This optimization saves 6 bytes per conversion against the old version.
9658
9659 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9660
9661         * aot-compiler.c (compile_method): Don't skip methods referencing 
9662         generic methods without a corresponding entry in token_info_hash, since
9663         encode_method_ref () can handle all generic methods now.
9664
9665         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9666         generic context is set.
9667         
9668         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9669         generic sharing of LDTOKEN.
9670
9671 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9672
9673         * mini-amd64.h: Temporarily disabled fast virtual generic method
9674         calls because it breaks the System.Runtime.Remoting tests.
9675
9676 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9677
9678         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9679
9680         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9681         so inlining actually works.
9682         (check_inline_caller_method_name_limit): Ditto.
9683
9684 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9685
9686         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9687         64 bit safety (from Olaf Hering and Andreas Farber).
9688
9689 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9690         
9691         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9692         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9693         unused virtual call support code.
9694
9695         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9696         
9697         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9698         which can't use aot trampolines.
9699         (decode_patch): Don't create aot trampolines for methods which can't use
9700         them.
9701
9702         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9703         use aot trampolines.
9704
9705         * mini.h: Bump AOT image format version.
9706         
9707 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9708
9709         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9710         to save_token_info () since cmethod is inflated for constrained calls.
9711
9712         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9713
9714 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9715
9716         * Makefile.am: Add build rules for ppc64.
9717         This avoids the build failing at pedump with unresolved symbols
9718         due to lack of arch_sources. Instead it will now fail earlier
9719         due to lack of cpu-ppc64.md.
9720
9721         Contributed under MIT/X11 license.
9722
9723 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9724
9725         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9726         tail calls.
9727
9728         * iltests.il.in: Add test case for tail call with many arguments.
9729
9730 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9731
9732         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9733         to the fast virtual generic method code until the aot case is fixed.
9734
9735 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9736
9737         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9738
9739 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9740
9741         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9742         thunks.
9743
9744 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9745         
9746         * simd-intrinsics.c: Forgot to add this one.
9747
9748         * mini-codegen.c: Fix macro in case SIMD is not supported.
9749
9750 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9751         
9752         This patch land initial JIT support for simd intrinsics.
9753
9754         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9755
9756         * Makefile.am: Added simd-intrinsics.c
9757
9758         * simd-intrinsics.c: New file with simd instrinsic related
9759         code.
9760
9761         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
9762
9763         * cpu-x86.md: Add simd related instructions.
9764
9765         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
9766
9767         * driver.c: Added two new --regression variants.
9768
9769         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
9770
9771         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
9772
9773         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
9774         extract some complicated logic to helper functions.
9775
9776         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
9777
9778         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
9779
9780         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
9781         the specialized simplification pass.
9782
9783         * method-to-ir.c (mono_spill_global_vars): Use new macro.
9784
9785         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
9786
9787         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
9788         table.
9789
9790         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
9791         if MONO_ARCH_NEED_SIMD_BANK is defined.
9792
9793         * mini-ops.h: Added the new simd ops.
9794
9795         * mini-x86.c: Added mono_arch_xregname.
9796
9797         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
9798
9799         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
9800
9801         * mini-x86.h: Define simd related MONO_ARCH macros.
9802
9803         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
9804
9805         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
9806
9807         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
9808         MONO_CLASS_IS_SIMD to deal with simd related IR.
9809
9810         * mini.h (MonoInst): Added spill_var to the backend union.
9811
9812         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
9813
9814         * mini.h: Added forward declarations of the new simd fuctions.
9815
9816         * optflags-def.h: Added new optimization names SIMD.
9817
9818         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
9819
9820         * regalloc.h: Added support for working with 3 register banks.
9821
9822         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
9823
9824         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
9825
9826 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
9827
9828         * mini-exceptions.c: remove 64 bit related ifdef clutter.
9829
9830 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9831
9832         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
9833         instead of one on 64 bit systems.
9834
9835         * method-to-ir.c: Remove unused includes.
9836
9837 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
9838
9839         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
9840         cfg->used_int_regs, since the two are different on arm.
9841
9842 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9843
9844         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
9845         mono_method_get_vtable_index() to get the vtable index.
9846
9847 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9848
9849         * method-to-ir.c (mono_method_to_ir2): Don't create native
9850         wrappers for array methods, because they're never called (and if
9851         they were called they wouldn't work).
9852
9853 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9854
9855         * method-to-ir.c (mono_method_to_ir2): Array methods are
9856         special-cased and must not be invoked indirectly via the (M)RGCTX
9857         when generic sharing is turned on.  Fixes #431413.
9858
9859 2008-10-01  Mark Probst  <mark.probst@gmail.com>
9860
9861         * method-to-ir.c: When generic sharing is active, call
9862         non-interface virtual generic methods via the standard trampoline.
9863
9864         * mini-trampolines.c: Handle virtual generic shared methods.
9865
9866         * mini.h, mini-x86.c, mini-x86.h: New argument for
9867         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
9868         method thunks and which is the trampoline to call if the lookup
9869         fails.  Enable the virtual generic method thunk for x86.
9870
9871         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
9872         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
9873         argument but assert that it's NULL, because these archs don't yet
9874         implement the virtual generic method thunk.  Changes in the IMT
9875         thunk data structures.
9876
9877 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
9878
9879         * aot-compiler.c (emit_globals): Avoid invalid characters in
9880         the static linking symbol.
9881
9882         * objects.cs: Add a test for the range check optimization. Fix warnings.
9883
9884         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
9885         optimization from the current JIT.
9886
9887         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
9888         later in decompose_array_access_opts () to allow more optimizations.
9889
9890         * method-to-ir.c (mono_handle_soft_float): Rename this to 
9891         mono_decompose_soft_float () for consistency.
9892
9893         * mini-ops.h: Fix arguments of OP_STRLEN.
9894
9895         * method-to-ir.c (save_cast_details): Extract the cast details saving code
9896         into a separate function.
9897         (reset_cast_details): Ditto.
9898         (handle_unbox): Save cast details. Fixes #431254.
9899
9900         * method-to-ir.c: Remove some obsolete FIXMEs.
9901
9902 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9903
9904         * ir-emit.h (alloc_dreg): Write a warning before crashing.
9905
9906 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9907
9908         * mini-codegen.c: More work on macros to make them
9909         ready for multiple regbanks.
9910
9911 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9912
9913         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
9914
9915         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
9916
9917 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9918
9919         * mini-codegen.c (mono_spillvar_offset): Proper support for
9920         multiple regbanks.
9921
9922 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9923
9924         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
9925         the stack overflow changes.
9926
9927 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9928
9929         * mini-codegen.c: Make all bank macros depend on reg_bank.
9930
9931         * mini-codegen.c (mono_local_regalloc): Make free mask
9932         initialization regbank aware.
9933
9934 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9935
9936         * mini-codegen.c (mono_local_regalloc): Extract callee
9937         mask selection to a function and make it regbank aware.
9938
9939 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9940
9941         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
9942         code to deal with many regbanks.
9943
9944 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9945
9946         * mini-codegen.c: More fp->regbank changes.
9947
9948 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9949
9950         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
9951         of a hardcoded constant.
9952
9953 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9954
9955         * method-to-ir.c (type_from_stack_type): Fix typo.
9956
9957 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
9958
9959         * mini-ia64.c (emit_move_return_value): Convert float return values to
9960         double.
9961
9962         * objects.cs: Add a new test.
9963         
9964         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
9965         VARARG methods to fix an assert later.
9966
9967         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
9968         end so it at least compiles.
9969
9970 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9971
9972         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
9973
9974 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
9975
9976         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
9977         optimization to a new function (emit_optimized_ldloca_ir) and enable
9978         it for both ldloca and ldloca_s.
9979
9980 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9981
9982         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
9983         gshared CASTCLASS code.
9984
9985         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
9986         amd64, where the libc stack unwinder encounters stack frames referring to
9987         native code in unmapped memory.
9988
9989         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
9990         sharing.
9991
9992         * generics.cs: Add new test.
9993
9994 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
9995
9996         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
9997         add a check that one of the ARM_FPU_ constants is defined.
9998
9999         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
10000         
10001         * mini-exceptions.c: Fix build on non-altstack platforms.
10002
10003         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10004         sharing of vtypes.
10005
10006         * ir-emit.h: Add a comment to NEW_PCONST.
10007
10008         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10009
10010         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10011
10012         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10013         after the changes to MonoJitDomainInfo.
10014
10015 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10016
10017         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10018
10019 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10020
10021         * mini-ppc.c: Compiler warning fixes.
10022
10023 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10024
10025         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10026         for pinvokes.
10027
10028 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10029
10030         * exceptions-ppc.c, mini-ppc.h: Compile
10031         mono_arch_handle_altstack_exception() on Darwin, too.
10032
10033 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10034
10035         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10036         work on archs which don't have generic sharing implemented, only
10037         without the vtable_arg.
10038
10039 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10040
10041         * mini.c: Added comment explaining why delegate ctor icall
10042         wrappers are compiled.
10043
10044 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10045
10046         * mini.c: Don't produce trampolines to delegate ctor icall
10047         wrappers but compile them upfront.
10048
10049 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10050
10051         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10052         runtime-set function when going back to managed code. Currently this
10053         is used to set back the protection on the soft ovf pages and/or to
10054         throw the stack overflow exception that happened in unmanaged code.
10055
10056 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10057
10058         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10059         runtime-set function when going back to managed code. Currently this
10060         is used to set back the protection on the soft ovf pages and/or to
10061         throw the stack overflow exception that happened in unmanaged code.
10062
10063 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10064
10065         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10066         the support code for restoring stack protection after stack overflows
10067         that happen in unmanaged code. Don't set the exec permission on the
10068         soft overflow area.
10069
10070 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10071
10072         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10073         delegate->method_ptr is set. Fixes #428054.
10074
10075 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10076
10077         * tests.cs: Rename to ratests.cs.
10078
10079         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10080         emit_get_rgctx_... functions.
10081
10082 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10083
10084         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10085
10086 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10087
10088         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10089         before asserting that method is sharable.
10090
10091 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10092
10093         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10094         whether method needs a static RGCTX wrapper used instead of
10095         complex conditions.
10096
10097         * generic-sharing.c, mini.h: A few functions moved to
10098         metadata/generic-sharing.c.
10099
10100 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10101
10102         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10103         Generic code sharing for value types, which essentially means
10104         treating value type methods like static methods.  The RGCTX is
10105         passed in the same way.
10106
10107 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10108
10109         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10110         opcode when creating multi-dimensional arrays of open types.
10111
10112         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10113         open generic types.
10114
10115         * generics.cs: Add a test.
10116
10117         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10118
10119 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10120
10121         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10122
10123         * mini.c (mini_method_compile): Set it when running under the debugger. 
10124
10125         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10126         vreg optimization if the flag is set.
10127
10128         * driver.c (mono_main): Add --attach= option to pass options to
10129         the attach agent.
10130
10131         * mini.c (sigquit_signal_handler): Start the attach agent.
10132
10133         * ssapre.c: Disable this to save space since it is not yet ported to
10134         linear IR.
10135
10136         * regalloc2.c: Disable this to save space.
10137
10138         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10139
10140 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10141
10142         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10143         the -v option useful again.
10144
10145 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10146
10147         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10148         --break-at-bb.
10149
10150         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10151         arrays of arrays. Fixes #428406.
10152
10153         * method-to-ir.c (mini_emit_castclass): Ditto.
10154
10155         * objects.cs: Add new test.
10156         
10157 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10158
10159         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10160         was wrong at it choked against target_type_is_incompatible for byref types.
10161
10162 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10163
10164         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10165         places.
10166
10167 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10168
10169         * mini-exceptions.c: update a few more exceptions-related counters.
10170
10171 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10172
10173         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10174         new functions to allocate from persistent mempools.
10175
10176 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10177
10178         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10179         multiple register banks in the future.
10180
10181         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10182
10183 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10184
10185         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10186
10187         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10188
10189         * mini.h: Export type_to_eval_stack_type.
10190
10191         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10192         is only ins->klass of byref types.
10193
10194 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10195
10196         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10197         (mini_emit_memcpy2): Ditto.
10198
10199         * mini-amd64.c: Fix a warning.
10200
10201 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10202
10203         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10204         linking.
10205
10206 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10207
10208         * method-to-ir.c: Extract stloc micro-optimization to a
10209         function and apply it to all cases.
10210
10211 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10212
10213         * method-to-ir.c: Don't fail generic code sharing in cases we
10214         already support.
10215
10216 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10217
10218         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10219
10220 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10221
10222         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10223         implementation.
10224
10225 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10226
10227         * trace.c: make tracing more useful and correct, with per-thread
10228         id and indent info.
10229
10230 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10231
10232         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10233         doing a method call and the argument is an R4.
10234
10235 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10236
10237         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10238         generic methods.
10239
10240 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10241
10242         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10243
10244 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10245
10246         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10247         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10248
10249 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10250
10251         * driver.c: Add a --agent argument (not supported yet) to load managed
10252         agent assemblies before loading the main assembly, similarly to how the
10253         Java VM handles agents.
10254
10255 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10256
10257         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10258         function to do stack layout of local variables.
10259
10260 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10261
10262         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10263         calculation.
10264
10265 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10266
10267         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10268         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10269         JIT if DISABLE_JIT is defined.
10270
10271         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10272         defined.
10273
10274 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10275
10276         * iltests.il.in: Disable the fconv test on PPC (the result is
10277         undefined according to ECMA).
10278
10279 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10280
10281         * iltests.il.in: Enable tail call tests for PPC.
10282
10283         * mini.h: Add variable for storing incoming valuetype argument
10284         addresses for tail calls.
10285
10286         * mini-ppc.c: Implement valuetype arguments and return values for
10287         tailcalls on Linux.
10288
10289 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10290
10291         * mini-ppc.c: Partially implement tail calls (struct arguments and
10292         return values not supported).
10293
10294         * method-to-ir.c: Enable tail calls on PPC.
10295
10296 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10297
10298         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10299         runtime-invoke wrappers to work around the problem of them getting
10300         assigned to a random class.
10301
10302         * aot-runtime.c (mono_aot_get_method): Ditto.
10303         
10304 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10305
10306         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10307         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10308
10309 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10310
10311         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10312         until they're implemented properly.
10313
10314         * exceptions-ppc.c: Use arch-independent exception-handling code
10315         instead of custom one.
10316
10317         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10318         for Linear IR.
10319
10320         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10321
10322         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10323         applies when __powerpc__ is defined.
10324
10325 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10326
10327         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10328         methods to their code to avoid computing the full name of wrappers and
10329         doing a lookup in a string hash table.
10330
10331 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10332
10333         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10334         we identify bblocks before method_to_ir () is ran.
10335
10336         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10337         Also avoid optimizing branches pointing to themselves.
10338
10339         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10340
10341 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10342
10343         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10344
10345 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10346
10347         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10348         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10349         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10350         'buf'.
10351
10352         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10353         jumped to the same entry in plt_jump_table.
10354
10355 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10356
10357         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10358         dynamic images.
10359
10360 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10361
10362         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10363         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10364         #421807.
10365
10366 2008-08-29  Geoff Norton  <gnorton@novell.com>
10367
10368         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10369         segment, and doesn't properly handle .space as .text.  Fixes
10370         AOT Mach/ARM
10371
10372 2008-08-29  Geoff Norton  <gnorton@novell.com>
10373
10374         * mini.c: Disable the mach exception handler when running on 
10375         ARM
10376
10377 2008-08-29  Geoff Norton  <gnorton@novell.com>
10378
10379         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10380         globals on Darwin/ARM
10381
10382 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10383
10384         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10385         since too many things depend on it. Instead, call 
10386         mono_runtime_set_no_exec ().
10387         
10388         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10389         the new JIT.
10390
10391         * aot-compiler.c: Add an 'asm-only' AOT option.
10392
10393         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10394                 
10395         * aot-compiler.c (compile_method): Disable gshared support for now as it
10396         doesn't yet work.
10397
10398 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10399
10400         * mini-amd64.h : Fix a compiler warning.
10401
10402         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10403           Changed to use a callback function to retrieve the unwind info.
10404           This avoids problems observed when code blocks were removed by
10405           unloading an app domain.
10406
10407         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10408           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10409           to work properly.
10410
10411         Contributed under MIT/X11 license.
10412
10413 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10414
10415         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10416           case to keep the stack aligned to 8.
10417
10418         Contributed under MIT/X11 license.
10419
10420 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10421
10422         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10423         avoid repeated linear searches.
10424
10425 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10426
10427         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10428         methods it can't handle.
10429         
10430         * aot-compiler.c (add_method): Avoid adding a method twice.
10431         (add_wrappers): Add runtime invoke wrappers for all methods.
10432
10433         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10434         function to create an aot-compatible version of this trampoline.
10435
10436         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10437
10438 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10439
10440         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10441
10442         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10443         with a generic sharing failure.
10444
10445         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10446
10447         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10448         CEE_RETHROW. Fixes #419634.
10449
10450         * mini.c (mono_method_to_ir): Ditto.
10451
10452         * exceptions.cs: Add a new test.
10453         
10454         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10455         to mono_type_stack_size_internal () since some callers might not pass in
10456         an rgctx.
10457
10458         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10459         instrument_prolog. Fixes #419878.
10460
10461         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10462         doubles in soft float mode volatile.
10463
10464 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10465
10466         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10467
10468         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10469         to handle soft float correctly.
10470
10471         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10472         the fast path.
10473
10474         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10475
10476         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10477         to sp, since the generics catch code requires it.
10478
10479         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10480         copying.
10481
10482         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10483         mono_arch_emit_imt_argument ().
10484
10485         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10486
10487         * mini-arm.c tramp-arm.c: Generic sharing updates.
10488
10489 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10490
10491         * mini-arm.c: Fix the arm build.
10492
10493         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10494         handling enums, generic instances and generic sharing.
10495         (mini_type_stack_size_full): Ditto.
10496
10497         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10498         
10499         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10500
10501         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10502
10503         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10504         trampolines.
10505
10506         * mini-arm.c: Various small generic sharing changes.
10507
10508         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10509         this for x86.
10510         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10511         custom code.
10512
10513         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10514         helper function to return a generic class init trampoline.
10515
10516         * method-to-ir.c mini.c: Use it.
10517         
10518         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10519         arch-specfic function to return a generic class init trampoline.
10520
10521         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10522         the GENERIC_CLASS_INIT custom code.
10523
10524         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10525         a fatal error, not a sharing failure.
10526
10527         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10528         needed.
10529
10530         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10531         trampoline argument from MONO_ARCH_VTABLE_REG.
10532
10533         * tramp-x86.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
10537         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10538         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10539         argument, and pass the vtable in VTABLE_REG.
10540         (mono_arch_create_trampoline_code_full): Remove some special casing for
10541         the rgctx fetch trampoline.
10542
10543         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10544         Fixes #419273.
10545
10546         * iltests.il: Add a test for it.
10547
10548 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10549
10550         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10551
10552         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10553         no longer needed.
10554
10555         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10556         use mono_jit_info_table_find () to avoid recursion.
10557         (mono_delegate_trampoline): Add a sync wrapper here.
10558
10559         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10560         here.
10561
10562         * mini.c (mono_method_to_ir): Ditto.
10563         
10564         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10565         add_sync_wrapper argument. Don't add a sync wrapper here.
10566         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10567
10568         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10569         
10570 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10571
10572         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10573           of nonvolatile registers back from MonoContext to CONTEXT.
10574
10575         Contributed under MIT/X11 license.
10576
10577 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10578
10579         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10580           arguments on Winx64 there are only 4 argument registers.  For this
10581           logic to work the last argument must be pulled from the stack.  
10582
10583         Contributed under MIT/X11 license.
10584
10585 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10586
10587         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10588
10589         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10590         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10591         encode/decode_method_ref ().
10592
10593         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10594
10595         * aot-runtime.c (decode_patch): Ditto.  
10596
10597         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10598         MONO_PATCH_INFO_METHOD.
10599
10600         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10601         MonoGenericJitInfo.
10602
10603         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10604         MonoGenericJitInfo.
10605
10606         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10607
10608         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10609         one from the caller.
10610
10611         * aot-runtime.c (decode_generic_inst): New function to decode and
10612         return a interned generic inst.
10613         (decode_klass_ref): Use it.
10614         (decode_method_ref): Ditto.
10615
10616         * aot-compiler.c (emit_exception_debug_info): Save 
10617         jinfo->has_generic_jit_info too.
10618
10619 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10620
10621         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10622
10623         * iltests.il.in: Add a test for fconv_to_i.
10624
10625         * liveness.c: Disable the liveness2 pass for now to save space.
10626
10627         * regalloc2.c: Include mempool-internals.h to fix warnings.
10628
10629         * aot-compiler.c (encode_method_ref): Encode the context of generic
10630         instance methods.
10631
10632         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10633         the context saved in the aot file.
10634
10635         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10636
10637         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10638
10639         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10640         volatile so they won't be optimized away.
10641
10642 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10643
10644         * ssa.c:
10645         * ssa2.c:
10646         * mini.c:
10647         * regalloc2.c:
10648         * dominators.c: Remove duplicated functions that now are in
10649         mempool-internals.h.
10650
10651 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10652
10653         * aot-compiler.c: Fix warnings.
10654
10655         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10656
10657         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10658
10659         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10660         as the patch type.
10661
10662         * mini.c (mono_resolve_patch_target): Ditto.
10663         
10664         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10665         (encode_klass_ref): Add support for encoding VARs/MVARs.
10666
10667         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10668
10669         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10670         the handling of the got entries into a separate 'decode_got_entry' function.
10671         Add support for RGCTX_FETCH.
10672
10673         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10674         clobbered by the trampoline code.
10675
10676         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10677         not clobbered by the indirect calling code.
10678
10679 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10680
10681         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10682         to fix the build.
10683
10684 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10685
10686         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10687         signature using the compilation mempool otherwise we would leak it.
10688
10689 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10690
10691         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10692         mono_emit_abs_call ().
10693
10694         * patch-info.h: Add GENERIC_CLASS_INIT.
10695
10696         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10697
10698         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10699         as their target as a near call.
10700
10701         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10702         ABS handling code.
10703         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10704
10705         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10706         call to a runtime function described by a patch.
10707
10708         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10709         mono_emit_abs_call, this has the advantage that the ABS handling code in
10710         mono_codegen () can handle them both, and can handle other stuff in the
10711         future without additional code.
10712
10713         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10714         entry.
10715         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10716         abs addresses.
10717
10718         * mini.h: Add missing bblock related prototypes.
10719
10720         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10721         reverse_inst_list_len fields.
10722
10723         * mini.c: Refactor this file a bit by moving branch optimizations to 
10724         branch-opts.c.
10725
10726         * method-to-ir.c: Merge generic sharing changes missed earlier.
10727
10728         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10729
10730         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10731         shared patches. Process METHODCONST as a shared patch.
10732
10733         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10734         as it crashes on the 2.0 mscorlib.
10735
10736         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10737         to cause crashes.
10738         
10739         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10740         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10741         by IMT.
10742
10743         * aot-compiler.c: Reorganize the got handling code to be a bit more
10744         understandable.
10745
10746 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10747
10748         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10749         mono_patch_info_equals/hash, and use it to massively simplify
10750         get_plt_index ().
10751
10752         * mini.c (mono_patch_info_hash): Simplify this and add support for
10753         more patch types.
10754
10755         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
10756
10757         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
10758         handling code, since an offset is not enough to identify a trampoline.
10759
10760         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
10761
10762 2008-08-17  Mark Probst  <mark.probst@gmail.com>
10763
10764         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
10765
10766         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
10767
10768         * mini-ops.h: Argument and result types for OVF_CARRY ops.
10769
10770         * decompose.c: PPC decompositions for various ops.
10771
10772         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
10773
10774 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10775
10776         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
10777         call the generic trampoline code using a call, instead of a jump, to
10778         remove some special casing from the generic trampoline code.
10779
10780         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
10781         (mono_codegen): Ditto.
10782
10783         * aot-compiler.c aot-runtime.c: Ditto.
10784
10785         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
10786
10787         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
10788         helper function to find the offset corresponding to a lazy fetch trampoline.
10789
10790         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
10791         when doing generic sharing.
10792
10793         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
10794         places.
10795         
10796         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
10797         mini-trampolines.c to be with the other trampoline creation functions.
10798
10799         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
10800         as it is equal to method->signature in most cases, add a 
10801         mono_emit_method_call_full variant which takes a signature and an imt
10802         argument as well.
10803
10804 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10805
10806         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
10807         to this function, since it could be computed easily from the method 
10808         argument.
10809         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
10810         more.
10811
10812         * method-to-ir.c mini.c: Remove references to 
10813         compile_generic_method_wo_context.
10814
10815         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
10816         generic method calls.
10817         
10818         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
10819         dimensional non-szarrays.
10820
10821         * mini.c (mini_init): Register mono_array_new_1.
10822
10823         * jit-icalls.c (mono_array_new_1): New jit icall.
10824
10825         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
10826         pointing to the method.
10827
10828         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
10829         method addresses belonging to METHOD_JUMP patches in the 
10830         jump_target_got_slot_hash.
10831         (mono_aot_load_method): Ditto.
10832
10833         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
10834         METHOD_JUMP patches.
10835
10836         * mini.c (mini_create_jit_domain_info): New helper function which 
10837         initializes/frees domain->runtime_info.
10838         (mini_free_jit_domain_info): Ditto.
10839         (mini_init): Install the domain hook functions with the runtime.
10840
10841         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
10842         information maintained by the JIT.
10843
10844         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
10845         insertion into jump_table_hash into mono_codegen (), also implement proper
10846         locking.
10847
10848         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
10849         tail calls, it is already done by the aot code.
10850         
10851         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
10852         mechanism on amd64.
10853
10854         * iltests.il.in: Make the jmp test a bit more complex.
10855
10856         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
10857         generic instances which doesn't have a token.
10858
10859         * aot-runtime.c (decode_method_ref): Ditto.
10860         
10861         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
10862         can handle this case now.
10863         (handle_box): Ditto.
10864
10865 2008-08-15  Geoff Norton  <gnorton@novell.com>
10866
10867         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
10868         debugging check.
10869
10870 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10871
10872         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
10873         calling generic methods.
10874
10875         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
10876
10877         * aot-runtime.c (decode_patch_info): Ditto.
10878
10879         * mini.c (mono_resolve_patch_target): Ditto.
10880         
10881         * patch-info.h: Add METHOD_RGCTX.
10882
10883         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
10884
10885 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
10886
10887         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
10888         arguments in registers.
10889
10890         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
10891         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
10892
10893         * mini.c (mini_method_compile): Abort aot compilation for generic
10894         methods if generic sharing is disabled.
10895         
10896         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
10897         an mrgctx.
10898
10899         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
10900         requiring an mrgctx.
10901
10902         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
10903         store instructions when converting a vcall to a normal call.
10904
10905         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
10906         mono_arch_find_jit_info.
10907
10908 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
10909
10910         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
10911         avoid calling mono_method_full_name () for every method even if the
10912         env var is not set.
10913         (check_inline_caller_method_name_limit): Ditto.
10914
10915 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10916
10917         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
10918         assemblies in one run.
10919
10920         * aot-compiler.c (mono_compile_assembly): Only print out a count of
10921         skipped methods if it is not 0.
10922
10923         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
10924
10925 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10926
10927         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
10928           MONO_ARCH_HAVE_UNWIND_TABLE.
10929
10930         Contributed under MIT/X11 license.
10931
10932 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10933
10934         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
10935           from default optimizaton list on Winx64.
10936
10937         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
10938
10939         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
10940           the LMF from the MonoJitTlsData structure.
10941
10942         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
10943
10944         Contributed under MIT/X11 license.
10945
10946 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10947
10948         * mini.c (sigsegv_signal_handler): Fix the build.
10949
10950         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
10951         assembly->aot_module.
10952
10953         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
10954         hash table. This simplifies and speeds up a lot of code, and fixes support
10955         for .netmodules.
10956
10957         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
10958         with the runtime.
10959
10960         * mini-exceptions.c: Ditto.
10961         
10962         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
10963         'native_offset' argument, since these are computed in the 
10964         mono_find_jit_info () function.
10965
10966         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
10967         is used by exceptions-ppc.c.
10968
10969         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
10970         mono_arch_find_jit_info ().
10971         
10972         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
10973         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
10974         generic code in mini-exceptions.c.
10975
10976 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
10977
10978         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
10979
10980         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
10981         
10982         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
10983         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
10984         called while holding the loader lock. Fixes #415608.
10985         (mono_aot_get_method_from_token_inner): Ditto.
10986
10987 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
10988
10989         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
10990         to reduce differences between this and the generic implementation in
10991         mini-exceptions.c.
10992         (ves_icall_get_frame_info): Ditto.
10993
10994         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
10995
10996         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
10997         longer neccesarry.
10998
10999         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
11000         mono_arch_get_call_filter () and make it non-static, for consistency with the
11001         other architectures.
11002
11003 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11004
11005         * mini.c:
11006         * local-propagation.c:
11007         * mini-x86.c: Correct the name of arch defines.
11008
11009 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11010
11011         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11012         NO_EMULATE_LONG_SHIFT_OPS define.
11013
11014 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11015
11016         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11017         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11018
11019         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11020         MACH fixes. Merged from the 2.0 branch.
11021
11022         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11023
11024         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11025         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11026
11027         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11028
11029         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11030         mono_marshal_get_native_wrapper () signature changes.
11031
11032 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11033
11034         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11035         conversion bug under arm.
11036
11037 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11038
11039         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11040
11041         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11042         with overflow checking.
11043
11044 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11045
11046         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11047         to the genmdesc.pl file
11048
11049 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11050
11051         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11052         arg_array in the soft-float versions of the LOAD/STORE macros.
11053
11054         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11055         implementation.
11056
11057         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11058
11059 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11060
11061         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11062         a float HFA. Fixes #413621.
11063
11064 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11065
11066         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11067         frame_size to args_size. Fixes build.
11068
11069 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11070
11071         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11072         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11073
11074         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11075         the stack are not unaligned. Fixes #413247.
11076         
11077 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11078
11079         * mini.c: update jitted methods performance counters.
11080
11081 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11082
11083         * mini-exceptions.c: increase the exceptions thrown performance
11084         counter in mono_handle_exception ().
11085
11086 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11087
11088         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11089         can work with netmodules.
11090
11091 2008-07-28  Geoff Norton  <gnorton@novell.com>
11092
11093         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11094         regression tests.
11095
11096 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11097
11098         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11099         correct place.
11100
11101 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11102
11103         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11104           The float param registers and other param registers must be the 
11105           same index on Windows x64.
11106
11107         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11108           ArgValuetypeAddrInIReg argument case.  Setting the argument
11109           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11110
11111         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11112           variable computed above as the copy length for arguments of storage
11113           type ArgValuetypeAddrInIReg.
11114
11115         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11116           ArgValuetypeAddrInIReg argument case.  This case will rely on
11117           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11118
11119         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11120           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11121           jump and tail call instructoins as they do not follow the typical call behavior.
11122
11123         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11124           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11125           local variable and pass the local variable by reference to the called method.
11126
11127         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11128           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11129           of a struct is passed in a register it must be saved with the other
11130           volatile argument on the stack.
11131
11132         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11133           frame pointer the stack adjustment value must be saved to the unwind 
11134           info structure.
11135
11136         Contributed under MIT/X11 license.
11137
11138 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11139
11140         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11141         which got lost in the merge.
11142
11143 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11144
11145         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11146         build.
11147
11148         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11149         
11150         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11151         icalls, since they won't be patched.
11152
11153         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11154         different code sequence when running under valgrind to prevent some valgrind
11155         errors.
11156
11157         * iltests.il.in: Add new regression test.
11158
11159         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11160         end with a throw.
11161
11162         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11163         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11164
11165         * iltests.il.in: Add new test.
11166
11167         * aot-compiler.c: Fix some warnings.
11168
11169         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11170         Fixes #412494.
11171
11172 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11173
11174         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11175         (mini_usage_jitdeveloper): Add a missing --wapi option.
11176
11177 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11178
11179         * mini-codegen.c: Simplify the is_fp macros.
11180         (free_up_ireg): Remove, use free_up_reg instead.
11181         (free_up_reg): Fix the fp case.
11182
11183 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11184
11185         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11186         lowered earlier.
11187
11188         * exceptions-x86.c: Merge some changes which seemed to have got lost
11189         in the linear-ir merge.
11190
11191         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11192
11193         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11194         long vreg volatile even if the variable was already created.
11195
11196         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11197         volatile variables.
11198
11199 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11200
11201         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11202
11203         * mini.c (mono_jit_compile_method_inner): Add support for 
11204         MONO_EXCEPTION_BAD_IMAGE.
11205
11206         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11207         mini_method_get_context () returns NULL. Fixes #356531.
11208
11209         * mini.c (mono_method_to_ir): Ditto.
11210         
11211         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11212         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11213
11214 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11215
11216         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11217         in the LDFTN implementation.
11218
11219 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11220
11221         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11222         code, patch calls to icalls, too, even if they're not in the
11223         shared generic code hash.  Fixes #411962.
11224
11225 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11226
11227         * cpu-x86.md: Increase the length of the fcall opcodes.
11228
11229         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11230         calls returning floats.
11231
11232         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11233         on NEWARR.
11234         
11235         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11236         missed earlier.
11237
11238         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11239         into the domain->method_code_hash.
11240
11241         * aot-compiler.c: Fix win32 build.
11242
11243         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11244         
11245         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11246         gshared NEWARR implementation.
11247
11248         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11249
11250         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11251         can be used outside of method_to_ir.
11252
11253         * mini.h (MonoCompile): Add arg_types field.
11254
11255         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11256         
11257         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11258         the values of the local arg_array and param_types array.
11259
11260 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11261
11262         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11263         got accesses might only get generated later when NEWOBJ is decomposed.
11264         
11265         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11266         looking up the native code of the target method when a delegate is called
11267         for the first time.
11268
11269         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11270         optimization.
11271
11272         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11273
11274         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11275         AOT work on platforms without a working dlsym implementation.
11276
11277         * mini.h: Bump AOT image format version.
11278         
11279 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11280
11281         * mini-exceptions.c: Free a MonoType with
11282         mono_metadata_free_type() instead of g_free().
11283
11284         * aot-runtime.c: Free a MonoType.
11285
11286 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11287
11288         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11289         optimization.
11290
11291         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11292         fp stack on x86.
11293
11294 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11295         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11296         profiler hook.
11297
11298 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11299
11300         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11301         NEWOBJ calls on valuetypes.
11302
11303         * iltests.il.in: Add new test.
11304
11305         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11306
11307 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11308
11309         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11310         is no longer needed.
11311
11312         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11313         non register sized integer arguments.
11314         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11315         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11316         emit_memcpy2 ().
11317
11318         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11319         CEE_MONO_RETOBJ.
11320         
11321         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11322         two a binop with different sized arguments is emitted.
11323
11324         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11325         instruction in the ins==NULL case.
11326
11327 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11328
11329         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11330
11331         * mini-x86.c: Fix osx build.
11332
11333         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11334         opcodes as well.
11335
11336         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11337         instruction for non int sized variables.
11338
11339         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11340         implementation.
11341
11342 2008-07-23  Robert Jordan  <robertj@gmx.net>
11343
11344         * method-to-ir.c: Fix MSVC build.
11345
11346 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11347
11348         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11349         a non int sized type, widen it to an int since newer versions of gcc seem to
11350         generate code which needs this.
11351
11352         * ssa2.c abcremoval2.c: Fix warnings.
11353
11354         * *: Merge the Linear IR branch.
11355
11356         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11357         the ChangeLog file there describes all the changes done over the years. 
11358         Further documentation can be found at www.mono-project.com/Linear_IL.
11359
11360 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11361
11362         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11363           The float param registers and other param registers must be the 
11364           same index on Windows x64.
11365
11366         Contributed under MIT/X11 license.
11367
11368 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11369
11370         * mini.c: Make the previous fix GC safe.
11371
11372 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11373
11374         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11375
11376 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11377
11378         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11379           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11380           ArgValuetypeAddrInIReg instead.
11381
11382         Contributed under MIT/X11 license.
11383
11384 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11385
11386         * mini-codegen.c (get_register_spilling): Fix a warning.
11387
11388 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11389
11390         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11391         for types which the initialization fails. Raises the provided exception
11392         at the right stop after cleanup.
11393
11394 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11395
11396         * aot-compiler.c: Free most of the memory allocated during compilation.
11397
11398         * mini.c (mini_parse_debug_options): Fix a leak.
11399         
11400         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11401         during aot compilation.
11402
11403 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11404
11405         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11406         it has too much register pressure.
11407
11408 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11409
11410         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11411
11412 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11413
11414         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11415         on x86.
11416
11417         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11418         on amd64 similar to the way it is done on arm.
11419
11420         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11421
11422         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11423         consistency, normalize error messages, avoid loading aot-only modules in
11424         normal mode.
11425
11426         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11427         for consistency.
11428
11429         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11430
11431 2008-07-11  Martin Baulig  <martin@ximian.com>
11432
11433         * debug-debugger.h
11434         (MonoDebuggerInfo): Add `interruption_request'.
11435
11436 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11437
11438         * aot-compiler.c (emit_plt): Remove some dead code.
11439
11440         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11441
11442         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11443         return the plt info offset belonging to a given plt entry.
11444
11445         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11446         mono_aot_get_plt_info_offset.
11447         
11448         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11449         similar to the amd64 code by makeing jumps through a separate jump table 
11450         instead of embedding the jump addresses into the code.
11451
11452 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11453
11454         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11455         method.
11456
11457 2008-07-10  Martin Baulig  <martin@ximian.com>
11458
11459         * mini.c (mini_method_compile): Disable generics sharing when
11460         running in the debugger.
11461
11462 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11463
11464         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11465
11466         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11467         the local register allocator from running out of registers on x86 when 
11468         using aot.
11469
11470 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11471
11472         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11473         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11474         C4146.
11475
11476         Contributed under MIT/X11 license.
11477
11478 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11479
11480         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11481         speed up the assembler.
11482
11483 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11484
11485         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11486         support.
11487
11488         * mini.c: Move the soft float handling macros a bit earlier, add 
11489         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11490         place.
11491
11492         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11493
11494         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11495         read-only to help catch code allocation requests.
11496         
11497         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11498         and turn it off when using --aot-only or when compiling with --aot=full.
11499
11500         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11501         jump table for switches from the normal domain mempool, not the code
11502         manager.
11503
11504         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11505         unbox trampoline which handles aot-only mode too.
11506
11507         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11508         an AOTed unbox trampoline.
11509
11510         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11511
11512 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11513
11514         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11515         ""
11516
11517         Contributed under MIT/X11 license.
11518
11519 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11520
11521         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11522           the unwind information for the method at the end of the allocated block.
11523           
11524         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11525           MonoCompileArch to hold the unwind info for SEH on Winx64
11526         
11527         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11528           frame pointer info for the method being compiled.
11529           
11530         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11531           the call to mono_exception_from_token.
11532           
11533         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11534           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11535           information is stored a the end of the method block because it is all 32-bit offset based.
11536
11537         Contributed under MIT/X11 license.
11538
11539 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11540
11541         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11542
11543         * wapihandles.c: Fix warnings.
11544
11545         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11546         mode.
11547
11548         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11549         mono_jit_compile_method in aot-only mode since that calls the type 
11550         initializer.
11551         
11552         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11553         get_delegate_invoke_impl in aot-only mode.
11554
11555         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11556
11557 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11558
11559         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11560
11561         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11562         is on by default.
11563
11564         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11565
11566         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11567         init trampoline from the AOT file as well.
11568
11569         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11570         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11571         code.
11572
11573         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11574         mono_init.
11575
11576         * exceptions-amd64.c: Add _full variants for the remaining exception code
11577         creation functions as well, allow emission of relocatable code, remove
11578         caching since that is now done by the caller.
11579
11580         * mini-exceptions.c: Add _full variants for the remaining exception code
11581         creation functions as well, add aot-only support.
11582
11583         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11584         if we can determine a proper token for them.
11585         (add_wrappers): Add a few more wrappers.
11586         (emit_method_code): Remove some dead code.
11587         (emit_trampolines): Emit exception code too.
11588
11589         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11590
11591         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11592         mono_array_new_va which avoids varargs.
11593
11594         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11595
11596         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11597         mono_arch_create_specific_trampoline () in all places.
11598
11599         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11600         a bit so it can be used for other things as well.
11601         
11602         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11603         on demand as well.
11604
11605         * exceptions-amd64.c: Rename the caching from the exception code creation
11606         functions, it is done by the caller instead.
11607         
11608         * exceptions-amd64.c: Change the signature of the exception code creation 
11609         functions to allow the creation of relocatable code later.
11610
11611         * mini-exceptions.c: Add a set of functions to query the various 
11612         runtime-generated exception functions.
11613
11614         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11615         mono_arch_.. () functions.
11616         
11617 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11618
11619         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11620
11621         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11622
11623         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11624         (mini_get_vtable_trampoline): Ditto.
11625
11626         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11627         code in the AOT case by returning the code size and a list of relocations to
11628         the caller.
11629
11630         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11631
11632 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11633
11634         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11635           clean the stack.
11636
11637         Contributed under MIT/X11 license.
11638
11639 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11640
11641         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11642         so the buffer size can be computed correctly. Fixes #404735.
11643
11644         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11645         normally as cfg->debug_info is already freed.
11646
11647 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11648
11649         * mini-amd64.c: For calls returning vtypes in registers, don't store
11650         the return address on the stack, instead allocate a separate local for
11651         it. Fixes #404729.
11652
11653 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11654
11655         * mini-trampolines.c, mini.h: Add an argument to
11656         mono_create_jit_trampoline_in_domain() for turning off the adding
11657         of the sync wrapper.
11658
11659         * mini.c: Use the JIT trampoline without sync instead of
11660         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11661         be patched.
11662
11663 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11664
11665         * driver.c: Turn on GSHARED optimization by default.
11666
11667 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11668
11669         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11670         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11671
11672         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11673         create a variant of the generic trampoline code callable from AOTed trampolines.
11674
11675         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11676         trampoline code callable from AOTed trampolines.
11677
11678         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11679
11680 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11681
11682         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11683         pass-through manner.
11684
11685         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11686         and don't fail sharing for them anymore.
11687
11688         * mini-exceptions.c: Handle exceptions in shared generic methods.
11689
11690         * generic-sharing.c: When checking the context of a generic
11691         method, also check its class's context.  Don't treat wrappers as
11692         sharable.
11693
11694         * mini-trampolines.c: Some code factored out to
11695         metadata/generic-sharing.c.  Handle the MRGCTX case.
11696
11697         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11698         we must deal with the method being of another instantiation of the
11699         class.  Add static rgctx invoke wrappers to generic methods.
11700
11701 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11702
11703         * mini.c: Provide all jit infos of generic shared methods with a
11704         generic jit info.
11705
11706         * mini-exceptions.c: Handle the new situation that a generic info
11707         might be available, but not info about the this/vtable/mrgctx
11708         variable.
11709
11710 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11711
11712         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11713         generic methods.
11714
11715 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11716
11717         * dominators.c (check_dominance_frontier): Fix a warning.
11718
11719         * mini.h: Add some missing prototypes.
11720
11721         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11722
11723         * driver.c (mono_jit_init_version): Correct the comments since the first
11724         argument should be the name of the root domain, not a filename.
11725
11726         * aot-runtime.c (make_writable): Error out if this is called while running
11727         with --aot-only.
11728         (load_aot_module): Ditto.
11729
11730         * aot-compiler.c: Really fix the computation of method indexes.
11731
11732         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11733         optimizations as this is no longer called frequently.
11734
11735         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11736         method and the invoke impl code and pass it to the delegate trampoline instead of
11737         just the delegate class.
11738
11739 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11740
11741         * aot-compiler.c: Fixup the computation of method indexes.
11742         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11743         the method builder infrastructure.
11744
11745         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11746         has no header.
11747
11748         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11749         mode, load the method right away instead of creating a trampoline.
11750
11751         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11752
11753         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11754         some checks a bit.
11755
11756 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11757
11758         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
11759         (mono_aot_load_method): Use method_index instead of method->token.
11760
11761         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
11762         can handle icalls etc. properly.
11763
11764         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11765
11766         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
11767
11768         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
11769         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
11770         JIT_ICALL_ADDR patch type.
11771
11772         * patch-info.h: Add JIT_ICALL_ADDR patch type.
11773
11774         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
11775         request flag.
11776         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
11777
11778         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
11779
11780 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11781
11782         * mini.c: Use domain->jit_code_hash_lock for controlling access to
11783         domain->jit_code_hash.
11784
11785 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11786
11787         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
11788
11789 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11790
11791         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
11792         get_this_arg_from_call, let it compute it when needed.
11793
11794         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
11795         gsctx from code only when needed.
11796
11797         * mini-trampolines.c (get_generic_context): Rename this to 
11798         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
11799         it can be called by the arch backends.
11800
11801         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
11802
11803 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
11804
11805         * driver.c (mono_main): Add experimental --aot-only command line option.
11806
11807         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
11808         set.
11809
11810 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
11811
11812         * driver.c (DllMain): Remove mono_module_handle.
11813
11814         Contributed under MIT/X11 license.
11815
11816 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
11817
11818         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
11819         for emitting methods which are not in the source assembly. Detect and report
11820         failure of assembling+linking.
11821         
11822         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
11823
11824         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
11825
11826 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
11827
11828         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
11829
11830 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11831
11832         * mini.h: Remove some obsolete prototypes.
11833
11834         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
11835
11836 2008-06-24  Mark Probst  <mark.probst@gmail.com>
11837
11838         * mini.c (get_object_generic_inst): Variable-sized arrays are not
11839         supported by Visual Studio, so use alloca().
11840
11841 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
11842
11843         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
11844         Fixes #402585.
11845
11846 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11847
11848         * mini.c: Fail sharing of a generic method if it contains an open
11849         catch clause (because we don't pass MRGCTXs yet).
11850
11851 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11852
11853         * mini.c: When compiling a method with generic sharing, insert the
11854         method instantiated with an all-Object generic context into the
11855         jit info table, instead of the context of the first instantiation
11856         of the method we happen to compile.
11857
11858 2008-06-18  Martin Baulig  <martin@ximian.com>
11859
11860         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
11861         `major_version' and `minor_version'.
11862
11863 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11864
11865         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
11866         mono_method_is_generic_sharable_impl() takes an additional
11867         argument specifying whether to treat type variables as reference
11868         types.
11869
11870 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11871
11872         * mini.h: Removed obsolete prototypes.
11873
11874 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11875
11876         * mini.c: Don't fail generic sharing for initobj and sizeof - we
11877         already handle them.
11878
11879 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11880
11881         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
11882         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
11883         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
11884         tramp-x86.c: Added a MonoGenericContext* argument to
11885         mono_arch_get_unbox_trampoline() so that it can call other
11886         functions which require it.
11887
11888 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11889
11890         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
11891         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
11892         mono_arch_get_this_arg_from_call() takes a
11893         MonoGenericSharingContext* as well.
11894
11895 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11896
11897         * mini.c: Factor out code for emitting unbox into emit_unbox() and
11898         implement generic sharing of unbox.
11899
11900 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11901
11902         * mini.c: Don't compute the vtable to determine whether a field is
11903         special static, because it might not work for open types.
11904
11905 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11906
11907         * mini.c: Removed the unused token_type and token_source arguments
11908         from get_runtime_generic_context_ptr().
11909
11910 2008-06-17  Marek Habersack  <mhabersack@novell.com>
11911
11912         * mini.c (ADD_BINOP): fix the build
11913
11914 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
11915
11916         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
11917         a widening op.
11918
11919 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11920
11921         * mini.h: Removed class relations enum that's not used anymore.
11922
11923 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11924
11925         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
11926
11927         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
11928         the lazy fetch trampoline access code.
11929
11930 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11931
11932         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
11933
11934 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11935
11936         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
11937
11938         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
11939
11940         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
11941
11942 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11943
11944         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
11945         intrinsics.
11946
11947         * mini-ops.h: Add MIN/MAX_UN opcodes.
11948
11949         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
11950         intrinsics.
11951
11952         * basic-math.cs: Add more min/max tests.
11953
11954         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11955
11956 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11957
11958         * mini.c: Small fix in the prologue of emit_castclass.
11959
11960 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11961
11962         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11963
11964         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
11965         do not work even for unsigned types. Fixes #400014.
11966
11967         * basic-math.cs: Add regression tests for unsigned Min/Max.
11968
11969 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11970
11971         * mini.c: Added additional context_used argument to several
11972         functions, which will be needed for sharing generic methods.  Use
11973         GET_RGCTX macro wherever appropriate.  Declare only one
11974         context_used in mono_method_to_ir().
11975
11976 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11977
11978         * mini.c, generic-sharing.c: Removed generic class relations.
11979
11980         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
11981         functions due to MRGCTX changes.
11982
11983 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11984
11985         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
11986         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
11987         with calculated IMT.
11988
11989         * mini.c: Generic sharing of calls via generic interfaces.
11990
11991         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
11992         generic method with non-constant MonoGenericContext*.  Instead,
11993         the context is taken out of the method itself.
11994
11995 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11996
11997         * mini.c: Generic sharing of ldvirtftn.
11998
11999 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12000
12001         * mini.c: Generic sharing of ldftn.
12002
12003 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12004
12005         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12006
12007 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12008
12009         * mini.c: Generic sharing of the special case of ldtoken followed
12010         by a call to GetTypeFromHandle.
12011
12012 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12013
12014         * mini.c: Generic sharing of box for nullable types.
12015
12016 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12017
12018         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12019         are passed on the stack. Fixes #324807.
12020
12021 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12022
12023         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12024         for the ArgValuetypeAddrInIReg case.
12025
12026         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12027         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12028
12029         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12030         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12031         local variable and pass the local variable by reference to the called method.
12032           
12033         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12034         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12035
12036         Contributed under MIT/X11 license.
12037
12038 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12039
12040         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12041
12042         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12043         everything.
12044
12045 2008-06-10  Martin Baulig  <martin@ximian.com>
12046
12047         * debug-mini.c
12048         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12049
12050 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12051
12052         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12053         possible error when no arguments are passed.
12054
12055         Contributed under MIT/X11 license.
12056
12057 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12058
12059         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12060         where the file name is NULL.
12061
12062 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12063
12064         * mini.c: Fix s390 build.
12065
12066 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12067
12068         * trace.c (mono_trace_parse_options): Fix warnings.
12069
12070         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12071
12072 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12073
12074         * mini.c (remove_block_if_useless): Avoid printing the method name.
12075         
12076         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12077         MONO_INST_NEW.
12078
12079         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12080         LMF. Not yet used.
12081
12082         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12083         translated code after it has been patched.
12084
12085 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12086
12087         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12088         avoid problems during code patching on SMP systems.
12089         (emit_call): Avoid adding a patch info which is already added by 
12090         emit_call_body.
12091         (mono_arch_emit_exceptions): Ditto.
12092
12093 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12094
12095         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12096         MONO_TYPE_ISSTRUCT already checks for it.
12097
12098 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12099
12100         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12101           structs with floats on Winx64 the float registers are not used.  
12102           The integer registers are always used..
12103         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12104           only one register will be used and only if the size of the struct 
12105           is 1,2,4, or 8 bytes.
12106
12107         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12108           to work for Winx64.
12109
12110         Contributed under MIT/X11 license.
12111
12112 2008-06-05  Martin Baulig  <martin@ximian.com>
12113
12114         * debug-debugger.c (debugger_lookup_class): Also call
12115         mono_class_setup_methods() here; we're only called from RTI.
12116
12117 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12118
12119         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12120         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12121         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12122         Post-process object files and add dtrace-generated object, if necessary.
12123
12124         Contributed under MIT/X11 license.
12125
12126 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12127
12128         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12129         element class.
12130
12131         * mini.c: Generic sharing for unbox.any and castclass.
12132
12133 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12134
12135         * mini.c: Ignore tailcall prefix in shared generic code and when
12136         doing calls which require a vtable/rgctx argument.
12137
12138 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12139
12140         * mini.c: Don't free the JIT info.
12141
12142         * driver.c: Changes in the JIT info table testing code.
12143
12144 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12145
12146         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12147         interruption. Fix some warnings.
12148
12149         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12150         interruption_checkpoint.
12151
12152 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12153
12154         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12155         from embedding applications.
12156
12157 2008-06-02  William Holmes  <billholmes54@gmail.com>
12158
12159         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12160           reserving 32 bytes on the stack when making calls. 
12161
12162         Contributed under MIT/X11 license.
12163
12164 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12165
12166         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12167         the linear IL branch.
12168
12169         * driver.c: Print out more information for --version on arm.
12170
12171 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12172
12173         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12174         bb_exit instead, since out of line bblocks might not actually be emitted
12175         out-of-line.
12176         
12177         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12178         maximum epilog size for out of line bblocks if tracing is enabled.
12179
12180         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12181
12182 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12183
12184         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12185
12186 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12187
12188         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12189         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12190         opcodes.
12191
12192 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12193
12194         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12195         the 'value' to store is a constant.
12196
12197         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12198
12199         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12200         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12201
12202 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12203
12204         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12205         for accessing method->generic_container.
12206
12207 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12208
12209         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12210         
12211         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12212
12213         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12214
12215         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12216         fails.
12217
12218 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12219
12220         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12221
12222         * mini.c: Handle the case when mono_class_vtable () fails.
12223
12224 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12225         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12226         the stat profiler.
12227
12228 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12229
12230         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12231         together with domain sharing.
12232
12233 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12234
12235         * mini.c: Treat callvirts to final methods like non-virtual calls
12236         when doing generic sharing, i.e. look them up in the runtime
12237         generic context.
12238
12239 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12240
12241         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12242         with computed types (for generic sharing).
12243
12244         * mini.c: Generic sharing for mkrefany and refanyval.
12245
12246 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12247
12248         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12249         possible.
12250
12251         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12252         the generic sharing code.
12253         
12254         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12255         when needed.
12256
12257 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12258
12259         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12260
12261 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12262
12263         * driver.c: updated copyright date
12264
12265 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12266
12267         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12268         needed.
12269
12270 2008-05-19  Martin Baulig  <martin@ximian.com>
12271
12272         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12273         pointing to the new `_mono_debug_using_mono_debugger' variable.
12274
12275         * driver.c
12276         (mono_main): Check mono_debug_using_mono_debugger() rather than
12277         the `MONO_INSIDE_MDB' environment variable to check whether we're
12278         inside the debugger.
12279
12280 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12281
12282         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12283         argument.
12284
12285 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12286
12287         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12288
12289         * mini.c: Added mini_assembly_can_skip_verification. This
12290         function checks if the assembly requested to skip verification. 
12291         Fixes part of #387274.
12292
12293 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12294
12295         * mini.c (mini_get_method): Disable the check for open generic classes when
12296         using generic sharing.
12297
12298         * generics.cs: Add a test for #387034.
12299
12300         * mini.c (mini_get_method): Check whenever the method class is an open generic
12301         type, and return NULL in that case, causing a verification error. Fixes
12302         #384123.
12303
12304 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12305
12306         * driver.c (mono_main): Revert r102623. The right
12307         thing to do is to enable the verifier under verifiable
12308         unless a --security flag was passed.
12309
12310         We need this non-trivial behavior for --verify-all otherwise
12311         mcs-compileall won't be able to use it. As it needs everything to
12312         be verified under validil.
12313
12314 2008-05-06  Martin Baulig  <martin@ximian.com>
12315
12316         Fix #383749.
12317
12318         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12319         (mono_debugger_thread_cleanup): Likewise.
12320         (mono_debugger_extended_notification): Likewise.
12321
12322 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12323
12324         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12325         against both inflated and non-inflated methods. We need to check against the
12326         generic definition for cases where the instantiated method is not visible.
12327         We need to check against the inflated types for cases where the instantiation
12328         changes any super type. This fixes #382986.
12329
12330         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12331         that check for visibiliy as generic params only appears as the type subject
12332         of tokens on call opcodes. Field manipulation and ldftn must always
12333         target an exact type.
12334
12335 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12336
12337         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12338         if no related --security flag is passed.
12339
12340 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12341
12342         * mini-arch.h: Prepare support for ppc64.
12343
12344         Contributed under MIT/X11 license.
12345
12346 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12347
12348         * aot-runtime.c: Prepare support for ppc64.
12349
12350         Contributed under MIT/X11 license.
12351
12352 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12353
12354         * mini-ops.h: Prepare support for ppc64.
12355
12356         Contributed under MIT/X11 license.
12357
12358 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12359
12360         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12361
12362         Contributed under MIT/X11 license.
12363
12364 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12365
12366         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12367         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12368         assemblies on windows.
12369
12370 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12371
12372         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12373         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12374         * main.c: Use UTF-8 encoded command line instead of Windows default code
12375         page on Windows to support Unicode.
12376         * driver.c (DllMain): New function for mixed-mode assembly support.
12377         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12378         export __stdcall functions without decoration.
12379
12380         Contributed under MIT/X11 license.
12381
12382 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12383
12384         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12385         saving it very early.
12386
12387 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12388
12389         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12390         deleted.  The only way to access the new RGCTX is via the
12391         trampline.
12392
12393         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12394         vtable instead of the RGCTX to static methods.
12395
12396         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12397         accessing the new RGCTX.
12398
12399         * generic-sharing.c: There is no separation between self, type
12400         arguments and other types in the RGCTX anymore.
12401
12402 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12403
12404         * mini-amd64.c (add_general): Remove previous stack adjustment.
12405         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12406         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12407         for 32 bytes of stack space reserved for all calls.
12408         
12409         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12410         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12411         adjustment.
12412         
12413         Code contributed under MIT/X11 license.
12414
12415 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12416
12417         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12418         against the root definition, peeling out method and type instantiations.
12419         Cache verify success results, code that fails verification is still
12420         checked multiple times.
12421
12422 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12423
12424         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12425
12426 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12427
12428         * mini-amd64.c (add_general): Always increment stack on Win64.
12429         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12430         on Win64.
12431         
12432         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12433         stack based argument handling on Win64.
12434         
12435         Code contributed under MIT/X11 license.
12436
12437 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12438
12439         * Makefile.am (version.h): Add support for git-svn.
12440
12441 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12442
12443         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12444         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12445         avoiding allocations and libc functions which might deadlock.
12446         
12447         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12448         'no-gdb-backtrace' option is set.
12449
12450         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12451
12452         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12453
12454 2008-04-21  Martin Baulig  <martin@ximian.com>
12455
12456         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12457         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12458
12459 2008-04-21  Martin Baulig  <martin@ximian.com>
12460
12461         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12462         `thread_vtable', `event_handler_ptr' and `event_handler'.
12463
12464 2008-04-21  Martin Baulig  <martin@ximian.com>
12465
12466         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12467         allows delayed initialization of the `executable_code_buffer' when
12468         attaching.
12469
12470 2008-04-21  Martin Baulig  <martin@ximian.com>
12471
12472         * mini.h (mono_debugger_create_notification_function): Removed.
12473         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12474
12475         * mdb-debug-info64.s
12476         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12477
12478         * mdb-debug-info32.s
12479         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12480
12481         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12482         currently only works on x86 and x86_64, so don't create it on ppc.
12483
12484 2008-04-21  Martin Baulig  <martin@ximian.com>
12485
12486         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12487
12488         * mini.c
12489         (mini_method_compile): In the fp elimination check, check
12490         `debug_options.mdb_optimizations' in addition to
12491         mono_debug_using_mono_debugger().       
12492
12493         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12494         disable some JIT optimizations which are only disabled when
12495         running inside the debugger.
12496         Added `--help-debug' option to describe the debugging options.
12497         (parse_debug_options): New static function to parse the `--debug'
12498         options, so we can easily add more stuff in future.
12499
12500 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12501
12502         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12503         the method has no body.
12504
12505 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12506
12507         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12508         assembly is not allowed in MSVC 64-bit compiler. 
12509         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12510         as we get floating point exceptions everywhere.
12511         
12512         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12513         correctly align arguments for call to throw_exception.
12514         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12515         
12516         Code contributed under MIT/X11 license.
12517
12518 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12519
12520         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12521
12522 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12523
12524         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12525
12526         * mini-amd64.c (NEW_INS): Set cil_code.
12527
12528         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12529         from mini-amd64.c so all debugger related logic is in one place.
12530
12531         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12532         later won't have a random ip assigned to them.
12533
12534 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12535
12536         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12537         the arch specific function initializes code_size.
12538         (mono_create_delegate_trampoline): Ditto.
12539
12540         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12541         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12542         platforms.
12543
12544         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12545         running under the debugger.
12546
12547         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12548         debugger.
12549
12550         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12551         debugger. Also move the disabling of optimizations here from driver.c.
12552         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12553         debugger.
12554
12555         * mini.h (MonoCompile): Add a few new flags.
12556
12557 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12558
12559         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12560         so the cil_code field of created MonoInst's is properly set.
12561         (mini_select_instructions): Ditto.
12562
12563         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12564         (MONO_INST_NEW_CALL): Ditto.
12565
12566         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12567         in many places so the ins->cil_code field is properly initialized.
12568
12569         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12570         place.
12571
12572 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12573
12574         * mini.c (mini_method_compile): Print a different message when compiling a 
12575         shared method.
12576         
12577         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12578         > 1.
12579
12580 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12581
12582         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12583         SSE2 instructions.
12584
12585         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12586         
12587 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12588
12589         * mini.c (handle_stack_args): Make this return void since its return value was
12590         never used. Also set cfg->unverifiable for invalid IL instead of calling
12591         G_BREAKPOINT ().
12592
12593 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12594
12595         * mini.c: Make sure "this" is live in catch clauses with type
12596         variables in shared generic code.
12597
12598 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12599
12600         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12601         generic_class_is_reference_type() to ensure the proper behaviour
12602         when sharing generic code and the type in question is a type
12603         argument.
12604
12605 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12606
12607         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12608         race conditions when printing thread dumps. Fixes #377738.
12609
12610 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12611         
12612         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12613         shows up when both MonoInst arguments can cause aliasig.
12614         There is likely no way in the current JIT to trigger this problem, but
12615         it showed up in the development of generics sharing, when in a new
12616         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12617         When the generics sharing code will be committed, its tests will be
12618         valid also for this bug.
12619
12620 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12621
12622         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12623         PATCH_INFO_METHOD.
12624
12625         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12626         NULL.
12627
12628 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12629
12630         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12631         use a more detailed exception message for InvalidCastException.
12632
12633         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12634
12635         * driver.c (mono_main): Add --debug=casts option to turn on better 
12636         InvalidCastException message details.
12637
12638         * mini.c (mini_get_debug_options): New helper function to return the address of
12639         the debug_options variable.
12640
12641         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12642         the jit_tls TLS variable.
12643
12644         * mini.c (mono_jit_tls): New TLS variable.
12645
12646         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12647         option is used.
12648
12649 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12650
12651         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12652
12653         * mini.c: Removed verifer related stuff, code moved to verify.c.
12654
12655         * driver.c: Using code from verify.c instead of mini.c.
12656
12657 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12658
12659         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12660         longer valid.
12661
12662 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12663
12664         * mini.c (check_for_method_verify): Enabling verification of
12665         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12666         have been fixed.
12667
12668 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12669
12670         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12671         caller saved registers as well.
12672         
12673         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12674         saved registers as well.
12675
12676 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12677
12678         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12679
12680         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12681         code.
12682
12683 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12684
12685         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12686         to get_call_info.
12687         (get_call_info): Take a gsctx argument instead of 'cfg'.
12688
12689 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12690
12691         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12692         mono_verify_all is set.
12693
12694         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12695
12696         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12697
12698 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12699
12700         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12701         an exception.
12702
12703         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12704         verifier and the code generated by the compiler.
12705
12706 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12707
12708         * mini.c: Generic sharing of the non-nullable case of the box
12709         instruction.
12710
12711 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12712
12713         * inssel.brg: Fix the build.
12714
12715         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12716
12717 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12718
12719         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12720         Array:Address. Fixes #372410.
12721
12722         * iltests.il.in: New tests for readonly prefix.
12723
12724 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12725
12726         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12727         mini-trampolines.c.
12728
12729         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12730         mini-exceptions.c.
12731
12732         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12733         
12734         * mini.c (mono_decompose_op_imm): New helper function.
12735
12736         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12737         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12738         return value.
12739
12740         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12741         mono_arch_output_basic_block. Fix warnings.
12742
12743         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12744         for now.
12745
12746 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12747
12748         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12749         since the extra frame is now detected automatically inside the loop.
12750
12751         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12752         opts which are now in mono_peephole_ins ().
12753         
12754         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12755
12756         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
12757         frames and skip duplicate managed-to-native frames. Fixes #367665.
12758
12759         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12760         opts which are now in mono_peephole_ins ().
12761         (mono_arch_peephole_pass_2): Ditto.
12762
12763         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
12764
12765         * mini-codegen.c (mono_peephole_ins): New helper function containing the
12766         arch independent peephole optimizations.
12767
12768         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12769         opts which are now in mono_peephole_ins ().
12770
12771         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
12772         
12773         * mini-s390.c (mono_arch_output_basic_block): Fix build.
12774
12775         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
12776         pattern.
12777
12778         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
12779         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
12780         opcode. 
12781
12782 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
12783
12784         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
12785         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12786         return value.
12787
12788         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12789         mono_arch_output_basic_block. Fix warnings.
12790
12791 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12792
12793         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12794         conv.ovf.u.un.
12795
12796 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12797
12798         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12799         conv.ovf.u.un.
12800
12801         * iltests.il: Add new tests.
12802
12803 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
12804
12805         * mini.c: Removed Windows version macros.
12806
12807 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12808
12809         * generic-sharing.c: Put reflection types in the extensible part
12810         of the runtime generic context.
12811
12812         * mini.c: Generic sharing of the GetTypeHandle special case of the
12813         ldtoken instruction.
12814
12815 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12816
12817         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
12818
12819         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
12820         
12821         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
12822         consistency with the other version on the linear IR branch.
12823
12824         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
12825
12826         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
12827
12828         * iltests.il.in: Add new tests.
12829
12830 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
12831
12832         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
12833
12834         * iltests.il.in: Add new tests.
12835
12836 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12837
12838         * mini.c: Two variables with the same name were declared in
12839         nesting contexts and one wasn't initialized.  Fixed.
12840
12841 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12842
12843         * mini.c: Generic sharing of the initobj instruction.
12844
12845 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
12846
12847         * mini.c: make the test to optimize ldtoken from typeof() more
12848         precise.
12849
12850 2008-03-18  Mark Probst  <mark.probst@gmail.com>
12851
12852         * mini.c: Generic sharing of the initobj instruction for reference
12853         types.
12854
12855 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
12856
12857         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
12858         the mono_breakpoint_clean_code() code to perform bound checks.
12859
12860 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
12861
12862         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
12863         mono_arch_patch_callsite() to include the start of the managed method
12864         to be able to perform bound checks.
12865
12866 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12867
12868         * mini.c: Generic sharing for the isinst instruction.
12869
12870 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12871
12872         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12873         inssel-long32-mips.brg: Added opcodes for doing indirect calls
12874         with the runtime generic context argument.
12875
12876         * mini.c: Share calls to several types of unsharable methods by
12877         putting the address of the method code in the runtime generic
12878         context and doing an indirect call.
12879
12880         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12881         to switches.
12882
12883 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12884
12885         * generic-sharing.c: Change due to a change in the runtime genric
12886         context API.
12887
12888 2008-03-15  Martin Baulig  <martin@ximian.com>
12889
12890         * tramp-x86.c
12891         (mono_arch_nullify_class_init_trampoline): Add call to
12892         mono_breakpoint_clean_code() to make things work when running
12893         inside the debugger.
12894
12895         * tramp-amd64.c
12896         (mono_arch_nullify_class_init_trampoline): Add call to
12897         mono_breakpoint_clean_code() to make things work when running
12898         inside the debugger.
12899
12900 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12901
12902         * inssel-long.brg (reg): Fix 64 bit build.
12903
12904 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12905
12906         * mini.c, mini.h: Share static generic code by passing it an
12907         implicit argument pointing to the runtime generic context.
12908
12909         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12910         inssel-long32-mips.brg: New opcodes for calling shared static,
12911         which need to be passed the runtime generic context.
12912
12913         * mini-amd64.c, mini-x86.c: Save the runtime generic context
12914         argument on the stack in the prologue if needed.  New function for
12915         finding the runtime generic context argument from the registers
12916         saved by the trampoline.
12917
12918         * mini-amd64.h, mini-x86.h: Specify which register to use for the
12919         runtime generic context argument.
12920
12921         * tramp-amd64.c: Also restore the register used for the runtime
12922         generic context argument.
12923
12924         * mini-trampoline.c: Resolve shared static calls by consulting the
12925         runtime generic context via the new argument.
12926
12927         * generic-sharing.c: Add an argument to sharability-checking
12928         functions that specifies whether type variables should be treated
12929         as sharable type arguments.
12930
12931         * inssel-x86.brg: Removed a superfluous, buggy rule.
12932
12933         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12934         to switches.
12935
12936 2008-03-14  Martin Baulig  <martin@ximian.com>
12937
12938         * debug-debugger.c (main_thread_handler): Call
12939         mono_runtime_run_main() without sending any notifications.
12940
12941         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
12942
12943 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12944
12945         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
12946
12947 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12948
12949         * tramp-x86.c: Fixed register restore offsets in the trampoline
12950         code for ECX and EDX.
12951
12952 2008-03-12  Geoff Norton  <gnorton@novell.com>
12953
12954         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
12955         different ucontext_t implementations.
12956         * exceptions-arm.c: Use the above defines to get exceptions working on 
12957         iPhone (based on a patch by Luke Howard lukeh@padl.com)
12958         * mini-arm.c: Implement iPhone icache support (based on a patch by
12959         Luke Howard lukeh@padl.com)
12960
12961 2008-03-12  Mark Probst  <mark.probst@gmail.com>
12962
12963         * mini.c: Enable generic sharing of calls to non-static
12964         non-interface non-generic non-value-type methods.
12965
12966         * mini-trampolines.c: Resolve calls from shared generic code.
12967
12968 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
12969
12970         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
12971
12972         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
12973
12974 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
12975
12976         * mini.c: some fixes for the AOT compiler.
12977
12978 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12979
12980         * cpu-amd64.md: Add clob:1 to some float opcodes.
12981
12982 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
12983
12984         * mini.h: Added MiniVerifierMode enumeration.
12985
12986         * mini.c: Added mini_verifier_set_mode to control
12987         the usage of the new verifier.
12988
12989         * mini.c (mono_method): Integrated the new verifier.
12990
12991         * driver.c: Extended --security option with validil and
12992         verifiable options to activate the new verifier.
12993
12994 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12995
12996         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
12997         optimization to ctors taking 0 or 2 arguments too.
12998
12999         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
13000         a bit.
13001
13002         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
13003
13004         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13005
13006 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13007
13008         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13009         non-aot case as well.
13010
13011         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13012
13013         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13014         changes.
13015
13016         * aot-compiler.c (encode_patch): Ditto.
13017
13018         * mini.h (G_MININT32): Fix the definition of this.
13019
13020 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13021
13022         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13023
13024         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13025
13026 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13027
13028         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13029         methods returning vtypes in registers.
13030         (mono_arch_allocate_vars): Ditto.
13031
13032         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13033
13034         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13035
13036         * generics.cs: Add a test from the linear IR branch.
13037
13038         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13039
13040         * mini.c (inline_method): Cache failed inline attempts.
13041
13042 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13043
13044         * mini.c: For shared methods of generic classes put the location
13045         of "this" into the MonoGenericJitInfo.
13046
13047         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13048         register out of a MonoContext by register number.  Add the generic
13049         sharing context as an argument to mono_arch_find_this_argument().
13050
13051         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13052         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13053         for new arch function.
13054
13055         * mini-exception.c: Handle open exception clauses in shared
13056         generic code.
13057
13058         * mini-trampolines.c: Supply additional argument to
13059         mono_arch_find_this_argument().
13060
13061 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13062
13063         * Makefile.am (regtests): Run the bench.exe tests last.
13064
13065 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13066
13067         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13068         a bit.
13069
13070 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13071
13072         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13073         with MS.
13074
13075         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13076         
13077         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13078
13079         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13080         whose class has no cctor.
13081
13082         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13083
13084 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13085
13086         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13087         unverified.
13088
13089 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13090
13091         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13092         to be in sync with the code on the linear IR branch.
13093
13094         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13095
13096         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13097
13098 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13099
13100         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13101
13102         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13103
13104         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13105
13106         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13107
13108         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13109         
13110         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13111         body.
13112
13113 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13114
13115         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13116         OP_LOADR4_MEMBASE emission.
13117
13118         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13119         (mono_spillvar_offset_float): Ditto.
13120
13121         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13122
13123         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13124         emission.
13125
13126         * basic-long.cs: Add regression tests for them.
13127
13128         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13129         use.
13130         (mono_arch_allocate_vars): Fix representation of single-precision float
13131         argument.
13132         (mono_arch_output_basic_block): Ditto.
13133
13134         * inssel-mips.brg: Ditto, remove duplicate items.
13135
13136         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13137         arguments of tail calls as on other platforms.
13138         (mono_arch_output_basic_block): Handle tail calls.
13139
13140         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13141         register.
13142
13143         * objects.cs (test_5_pass_static_struct): Add test for it.
13144
13145         Contributed under MIT/X11 license.
13146
13147 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13148
13149         * Makefile.am: Use gmcs for compiling the regression tests.
13150
13151         * *.2.cs *.2.il: Rename to *.cs and *.il.
13152
13153 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13154
13155         * regalloc.h: Make the vassign array smaller.
13156
13157         * mini.c (mini_method_compile): Remove an unused field in cfg.
13158
13159         * mini-codegen.c: Add a bunch of micro optimizations.
13160
13161 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13162
13163         * regalloc.h: Remove some unused fields.
13164
13165 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13166
13167         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13168
13169         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13170
13171 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13172
13173         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13174
13175         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13176         trampoline: Fetch an entry from the runtime generic context.  If
13177         it's NULL, jump to the actual trampoline to fill the runtime
13178         generic context.  Otherwise, return it.
13179
13180         * mini.c: Call the lazy fetch trampoline to get entries out of the
13181         runtime generic context.
13182
13183         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13184         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13185         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13186
13187 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13188
13189         * mini.c: Fetch data out of the extensible part of the runtime
13190         generic context instead of calling a helper function.
13191
13192         * generic-sharing.c: Some functions moved into
13193         metadata/generic-sharing.c.  Helper function for fetching other
13194         types now checks and asserts against extensible rgctx (just for
13195         debugging purposes - the helper function isn't called anymore
13196         unless for debugging).
13197
13198 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13199
13200         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13201         for tail calls up to the point that the tests in iltests.exe run. Also add a
13202         dummy CKFINITE implementation.
13203         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13204         needed for trampoline LMF frames.
13205
13206         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13207         trampoline LMF frames.
13208
13209 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13210
13211         * mini.c (inline_method): clean any pending loader error when inlining fail.
13212         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13213
13214 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13215
13216         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13217
13218         * aot-runtime.c (decode_patch_info): Ditto.
13219
13220         * mini.c (mono_resolve_patch_target): Ditto.
13221         
13222         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13223         icall wrappers.
13224
13225         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13226         
13227         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13228         if it references an icall address.
13229
13230 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13231
13232         * cpu-s390x.md: Remove some more unused opcodes.
13233         
13234         * cpu-s390x.md: Remove some unused opcodes.
13235
13236         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13237         mono_op_imm_to_op ().
13238
13239         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13240         instead of a switch statement.
13241         
13242         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13243         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13244
13245         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13246         
13247         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13248
13249         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13250         -1.
13251
13252 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13253
13254         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13255         opened. Fixes #362607.
13256
13257         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13258
13259         * iltests.il.in: Add a test for static methods in interfaces.
13260
13261 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13262
13263         * genmdesc.c (build_table): Fix a crash on older glib versions.
13264
13265         * cpu-sparc.md: Remove some unused opcodes.
13266         
13267         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13268         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13269
13270         * cpu-amd64.md: Remove some unused opcodes.
13271
13272         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13273         like the other opcodes.
13274
13275 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13276
13277         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13278
13279         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13280
13281         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13282         variables 'cfg' instead of 'm' for consistency.
13283
13284         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13285
13286         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13287         argument holding the vtype return address, to avoid the ambigious use of
13288         cfg->ret for this purpose.
13289
13290         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13291
13292         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13293         
13294         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13295         new mono_print_ins () function which only takes one argument.
13296
13297 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13298
13299         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13300         macro arguments.
13301
13302 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13303
13304         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13305
13306         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13307
13308         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13309         opcodes and other small changes.
13310
13311         * mini-ops.h: Add some new opcodes from the linear IR branch.
13312
13313         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13314
13315         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13316         opcodes, use the REG_MEMBASE opcodes instead.
13317         
13318         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13319         opcodes, use the REG_MEMBASE opcodes instead.
13320         
13321         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13322         linear IR branch.
13323
13324         * mini.c (mono_op_imm_to_op): New helper function.
13325
13326         * mini-ops.h: Add some opcodes from linear IR branch.
13327
13328 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13329
13330         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13331         <tsv@solvo.ru>.
13332
13333 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13334
13335         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13336         OP_ICONV_TO_R4/R8.
13337
13338         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13339
13340 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13341
13342         * aot-compiler.c (emit_method_code): Add an assert.
13343
13344         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13345         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13346         methods.
13347
13348 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13349
13350         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13351         some load/store opcodes so they are consistent. 
13352         (mono_arch_emit_prolog): Simplify some code.
13353
13354         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13355
13356         * objects.cs: Add tests for large argument offsets on ARM.
13357
13358         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13359         stack offsets. Fixes #359651.
13360
13361         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13362
13363         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13364
13365         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13366
13367         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13368
13369         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13370
13371         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13372         rid of CEE_CONV_R_UN.
13373
13374         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13375
13376 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13377
13378         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13379
13380         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13381
13382         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13383
13384         * cpu-amd64.md: Remove some unused opcodes.
13385
13386         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13387
13388         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13389
13390         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13391         arch specific functions for its parts. Call the peephole pass after local
13392         regalloc so the prolog can compute a more accurate max_offset.
13393         
13394         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13395         the corresponding OP_I/OP_L opcodes.
13396
13397         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13398
13399         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13400
13401 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13402
13403         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13404         as they are handled in mini.c.
13405
13406         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13407         
13408         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13409         case since it is handled in mini.c.
13410
13411         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13412
13413         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13414
13415         * *.c: Use the new opcodes in the IR and back end code.
13416
13417         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13418
13419         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13420
13421 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13422
13423         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13424         an assert because it has a race condition.
13425
13426 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13427
13428         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13429
13430         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13431
13432         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13433
13434         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13435         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13436
13437 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13438
13439         * cpu-amd64.md (move): Correct the maximum size of move.
13440
13441 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13442
13443         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13444         the generic class init trampoline to return quickly if the class
13445         is already inited.
13446
13447 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13448
13449         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13450         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13451
13452 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13453
13454         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13455         branch.
13456
13457 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13458
13459         * objects.cs: Add some soft-float tests.
13460
13461         * mini.c: Fix a couple more soft-float issues.
13462
13463         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13464
13465         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13466         avoid a REX prefix.
13467
13468 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13469
13470         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13471         exception happens while compiling a virtual method.
13472
13473 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13474
13475         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13476         
13477         * mini-sparc.c: Fix build.
13478
13479         * mini-sparc.c (get_call_info): Add support for generic sharing.
13480
13481         * mini-exceptions.c: Add a FIXME.
13482
13483 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13484
13485         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13486         altstack handling code.
13487
13488         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13489         
13490         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13491
13492         * mini-s390.c: Add support for generic sharing.
13493
13494         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13495         Fix CAS on s390.
13496         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13497
13498         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13499
13500         * mini-s390x.c: Add support for generic sharing.
13501         
13502         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13503         Fix CAS on ia64.
13504         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13505
13506         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13507         can be used since it takes a 16 bit signed immediate.
13508
13509         * inssel-s390x.brg: Fix OP_SETRET.
13510
13511         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13512
13513         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13514
13515         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13516
13517         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13518
13519         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13520         in one place.
13521
13522         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13523         stuff.
13524
13525         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13526         of the unused mono_arch_patch_delegate_trampoline stuff.
13527
13528 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13529
13530         * basic-long.cs: Move the fp related tests to basic-float.cs.
13531
13532         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13533
13534         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13535
13536         * basic-calls.cs: Add a test for proper float argument passing.
13537
13538         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13539         if the context corresponds to an exception received through a signal.
13540
13541         * exceptions.cs: Add a test for nullref handling at the start of a try
13542         clause.
13543
13544         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13545
13546         * jit-icalls.c (mono_break): New JIT icall.
13547
13548         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13549
13550         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13551
13552 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13553
13554         * cpu-*.md: Get rid of unused opcodes.
13555
13556         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13557
13558         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13559         by all platforms.
13560
13561         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13562         define.
13563
13564         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13565         the arch independent trampoline code in mini-trampolines.c.
13566
13567         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13568
13569         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13570
13571         * mini-s390.h: Remove an unused define.
13572         
13573         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13574         the arch independent trampoline code in mini-trampolines.c.
13575
13576         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13577
13578 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13579
13580         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13581
13582         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13583
13584         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13585
13586         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13587
13588         * cpu-amd64.md: Use smaller sizes for int opcodes.
13589
13590         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13591
13592         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13593         objects.cs.
13594
13595         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13596         debugging.
13597
13598         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13599         instead of though a pointer to save an indirection when accessing elements of
13600         the array.
13601
13602         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13603         some typos.
13604         (NOT_IMPLEMENTED): New helper macro.
13605         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13606         of a bb.
13607
13608         * *.c: Use the new helper macro.
13609
13610 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13611
13612         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13613
13614 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13615
13616         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13617         stack slots.
13618
13619 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13620
13621         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13622         profiling is enabled.
13623         
13624         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13625         the end.
13626         (mono_arch_emit_prolog): Add more first bblock optimizations.
13627
13628         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13629         in order if possible.
13630         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13631         bblock, since the arguments are still in their original registers.
13632
13633         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13634
13635 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13636
13637         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13638         as well.
13639
13640         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13641         offset 0.
13642
13643         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13644
13645         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13646         process async exceptions received while in unmanaged code.
13647
13648         * mini.c (mini_init): Install a callback with the runtime which will be called
13649         when a thread receives an async exception while in unmanaged code.
13650
13651         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13652
13653         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13654
13655 2008-01-16  Wade Berrier  <wberrier@novell.com>
13656
13657         * cpu-g4.md:
13658         * cpu-arm.md:
13659         * cpu-s390x.md:
13660         fix build
13661
13662 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13663
13664         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13665         compilation with sun cc.
13666
13667         * cpu-*.md: Fix the build.
13668
13669         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13670
13671         * mini-amd64.h: Add some comments to the MonoLMF structure.
13672
13673         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13674         
13675         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13676         in the LMF structure if possible. This saves two instructions in the
13677         managed->native wrappers.
13678
13679         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13680
13681 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13682
13683         * generic-sharing.c: New type argument lookup code which uses the
13684         runtime generic context template.
13685
13686 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13687
13688         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13689
13690         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13691         (mono_arch_output_basic_block): Fix localloc implementation.
13692
13693         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13694
13695         * mini-ia64.c (peephole_pass): Fix ia64 build.
13696
13697         * mini-amd64.c (peephole_pass): Fix a warning.
13698         
13699         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13700         at a constant offset from sp/fp.
13701
13702         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13703         instead of obtaining it from *lmf in the managed method case.
13704
13705 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13706
13707         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13708
13709 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13710
13711         * mini.h (MonoInstList): New type.
13712         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13713         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13714         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13715         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13716         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13717         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13718         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13719         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13720         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13721         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13722         MONO_INST_LIST_FOR_EACH_ENTRY,
13723         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13724         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13725         mono_inst_list_first, mono_inst_list_last,
13726         mono_inst_list_next, mono_inst_list_prev): New instruction
13727         list handling interfaces.
13728         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13729         list head 'ins_list'.
13730         (MonoInst): Replace next pointer with list head 'node'.
13731         (MonoCallInst): Make 'out_args' a MonoInstList.
13732         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13733         (MonoCompile): Delete reverse_inst_list and
13734         reverse_inst_list_len.
13735         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13736         mono_arch_lowering_pass, mono_arch_local_regalloc,
13737         mono_arch_output_basic_block, mono_arch_emit_prolog):
13738         Convert to new instruction lists.
13739         (insert_after_ins): Delete.
13740         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13741         instruction lists.
13742         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13743         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13744         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13745         mono_emulate_opcode, mono_emit_load_got_addr,
13746         inline_method, mono_method_to_ir, mono_print_bb_code,
13747         print_dfn, decompose_pass, nullify_basic_block,
13748         replace_out_block_in_code, remove_block_if_useless,
13749         merge_basic_blocks, move_basic_block_to_end,
13750         try_unsigned_compare, optimize_branches, mono_print_code,
13751         mini_select_instructions, remove_critical_edges): Likewise.
13752         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13753         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13754         mono_arch_output_basic_block, mono_arch_emit_prolog):
13755         Likewise.
13756         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
13757         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13758         mono_arch_output_basic_block): Likewise.
13759         (inst_list_prepend, insert_after_ins): Delete.
13760         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
13761         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
13762         instruction lists.
13763         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
13764         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
13765         mono_arch_emit_prolog): Likewise.
13766         * cfold.c (mono_constant_fold): Likewise.
13767         * liveness.c (visit_bb, mono_analyze_liveness,
13768         optimize_initlocals): Likewise.
13769         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
13770         * graph.c (mono_draw_code_cfg): Likewise.
13771         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
13772         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
13773         mono_ssa_cprop): Likewise.
13774         * abcremoval (get_relations_from_previous_bb, process_block):
13775         Likewise.
13776         * local-propagation (mono_cprop_invalidate_values,
13777         mono_local_cprop_bb): Likewise.
13778         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
13779         peephole_pass, mono_arch_output_basic_block,
13780         mono_arch_emit_prolog): Likewise.
13781         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
13782         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13783         mono_arch_emit_prolog): Likewise.
13784         (insert_after_ins): Delete.
13785         * aliasing.c (print_code_with_aliasing_information,
13786         mono_build_aliasing_information, mono_aliasing_deadce):
13787         Convert to new instruction lists.
13788         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
13789         peephole_pass, NEW_INS, mono_arch_lowering_pass,
13790         mono_arch_local_regalloc, mono_arch_output_basic_block):
13791         Likewise.
13792         (insert_after_ins): Delete.
13793         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
13794         peephole_pass, mono_arch_output_basic_block): Convert to
13795         new instruction lists.
13796         * mini-codegen (InstList, inst_list_prepend,
13797         insert_after_ins): Delete.
13798         (insert_before_ins, get_register_force_spilling,
13799         get_register_spilling, free_up_ireg, free_up_reg,
13800         create_copy_ins, create_spilled_store, alloc_int_reg,
13801         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
13802         to new instruction lists.
13803         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
13804         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13805         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
13806         (insert_after_ins): Delete.
13807         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
13808         mono_arch_local_regalloc, mono_arch_output_basic_block,
13809         mono_arch_call_opcode): Convert to new instruction lists.
13810         (insert_after_ins): Delete.
13811         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
13812         peephole_pass, mono_arch_output_basic_block,
13813         mono_arch_emit_prolog): Convert to new instruction lists.
13814
13815 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13816
13817         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
13818
13819         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
13820         Fixes #353182.
13821
13822         * Makefile.am (version.h): Make this work with non-bash shells.
13823
13824 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13825
13826         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
13827
13828 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13829
13830         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
13831         the InitializeArray optimization.
13832
13833 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13834
13835         * mini.c driver.c: Don't include os/gc_wrapper.h.
13836
13837 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13838
13839         * mini.c (print_jit_stats): Print GC statistics if available.
13840
13841 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
13842
13843         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
13844
13845 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
13846
13847         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
13848
13849 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
13850
13851         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
13852         
13853         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
13854
13855         * driver.c (mono_main): Ditto.
13856
13857 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
13858
13859         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
13860
13861         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
13862         in the vtable can't be encoded.
13863         (compile_method): Ditto.
13864
13865 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
13866
13867         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
13868         defined.
13869
13870         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
13871         lmf->rbp.
13872
13873         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
13874         the top LMF entry belongs to the current method.
13875
13876         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
13877
13878 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
13879
13880         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
13881         
13882         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
13883
13884         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
13885
13886         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
13887
13888         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
13889
13890         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
13891         implementation.
13892
13893         * basic-float.cs: Add an ulong->double cast test.
13894
13895 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
13896
13897         * mini.c (mono_method_to_ir): Fix a warning.
13898
13899 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
13900
13901         * mini-ops.h: Add OP_SWITCH.
13902
13903         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
13904         CEE_SWITCH in back-end code, use OP_SWITCH instead.
13905
13906 2007-12-11  Geoff Norton  <gnorton@novell.com>
13907
13908         * mini-s390x.c: Minor change to the MAX() define to allow
13909         it to compile with other gcc versions.
13910
13911 2007-12-11  Geoff Norton  <gnorton@novell.com>
13912
13913         * cpu-s390x.md:
13914         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
13915
13916 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13917
13918         exceptions-arm.c (mono_arch_get_restore_context): Restore
13919         the frame pointer.
13920
13921         exceptions-arm.c (throw_exception): Save the frame pointer.
13922         This is a partial fix for #323747. Only the client side is
13923         fixed.
13924
13925 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13926
13927         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
13928         was using an unrelated variable to log the class which
13929         needed the cctor to be called. This was crashing on arm.
13930
13931 2007-12-09  Robert Jordan  <robertj@gmx.net>
13932
13933         * mini-x86.c (mono_arch_emit_epilog):
13934         Consider all kinds of 64-bit types. Fixes #323114.
13935
13936 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
13937
13938         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
13939
13940 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13941
13942         * mini-amd64.c (peephole_pass): Add a missing instruction check.
13943
13944 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13945
13946         * mini.c: run type ctor before allocating an object, not only
13947         when running it's constructor method (fixes at least part of bug #342507).
13948
13949 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13950         
13951         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
13952         
13953         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
13954         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
13955         function.
13956
13957         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
13958         mono_generic_class_init_trampoline () the same as it is done with the other
13959         trampolines.
13960
13961         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
13962         aot-runtime.c aot-compiler.c: Implement AOT support.    
13963
13964 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13965
13966         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
13967         build for archs which don't have the vtable trampoline defined
13968         yet.
13969
13970 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13971
13972         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
13973
13974         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
13975
13976         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
13977
13978         * tramp-<ARCH>.c: Use the new helper function.
13979
13980 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13981
13982         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
13983         trampoline call, which takes a vtable argument.
13984
13985         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
13986         OP_TRAMPCALL_VTABLEs like other calls.
13987
13988         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
13989         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
13990         call.  Implemented a support function which fetches the vtable
13991         from a register set.
13992
13993         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
13994         Implemented a generic class init trampoline, using the
13995         OP_TRAMPCALL_VTABLE opcode.
13996
13997         * mini.c: Implemented static field access when sharing generic
13998         code.  This implies initing the class using the new
13999         OP_TRAMPCALL_VTABLE call.
14000
14001 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14002
14003         * mini.c: Don't compile methods with sharing enabled if their
14004         classes are disabled for sharing.
14005
14006 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14007
14008         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14009         opcodes. Fixes #346563.
14010
14011         * objects.cs: Add a new test.
14012
14013         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14014
14015         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14016         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14017
14018 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14019
14020         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14021
14022 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14023
14024         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14025         code stream.
14026
14027 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14028
14029         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14030
14031         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14032         optimization in the AOT case.
14033         
14034 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14035
14036         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14037         
14038         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14039
14040         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14041
14042         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14043
14044         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14045         is created by the inlined delegate ctor.
14046
14047         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14048
14049         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14050
14051 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14052
14053         * cpu-x86.md: Fix the length of ckfinite.
14054
14055 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14056
14057         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14058         
14059         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14060         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14061
14062         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14063
14064         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14065         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14066
14067 2007-11-28  Martin Baulig  <martin@ximian.com>
14068
14069         * mini-x86.c
14070         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14071         after creating the trampoline.
14072
14073 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14074
14075         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14076
14077         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14078         the same version.
14079
14080         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14081         instead of the calling method to help AOT.
14082
14083         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14084
14085 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14086
14087         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14088         is defined.
14089
14090 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14091
14092         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14093         
14094         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14095         (encode_method_ref): No need to handle generic method definitions specially.
14096
14097         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14098
14099         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14100         decode_klass_info.
14101
14102         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14103         encode_klass_info.
14104         (compile_method): Enable generic sharing.
14105
14106 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14107
14108         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14109         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14110
14111         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14112         generic code.
14113
14114         * mini-trampolines.c: Fix a warning.
14115
14116         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14117         NEW_PCONST.
14118         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14119         (generic_class_is_reference_type): Remove unused function.
14120
14121         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14122         in the generic vtable trampoline case.
14123
14124         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14125         
14126         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14127         return an AOT method based on a vtable slot.
14128
14129         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14130
14131         * mini.c (mini_get_vtable_trampoline): Export this.
14132
14133 2007-11-22  Martin Baulig  <martin@ximian.com>
14134
14135         * debug-debugger.h
14136         (MonoDebuggerInfo): Move `debugger_version' up.
14137
14138 2007-11-22  Martin Baulig  <martin@ximian.com>
14139
14140         * mini-amd64.c
14141         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14142
14143         * mini-trampolines.c
14144         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14145         after compiling the method.
14146
14147 2007-11-20  Martin Baulig  <martin@ximian.com>
14148
14149         * debug-mini.c
14150         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14151         (mono_debugger_remove_breakpoint): Likewise.
14152         (mono_debugger_check_breakpoints): Likewise.
14153
14154         * debug-debugger.c: Implement the new breakpoint interface here.
14155
14156 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14157
14158         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14159         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14160
14161         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14162
14163 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14164
14165         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14166
14167         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14168         mini.c.
14169
14170         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14171         mini.c.
14172
14173         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14174         returning a vtype in a register.
14175
14176         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14177         here from the arch specific code.
14178
14179         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14180         mini.c.
14181
14182         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14183         (mono_arch_emit_prolog): Increment maximum prolog size.
14184
14185         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14186         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14187
14188         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14189         MonoGenericSharingContext.
14190
14191         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14192         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14193
14194 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14195
14196         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14197         which extract fields out of the runtime generic context.  Full
14198         sharing of the NEWARR opcode.
14199
14200 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14201
14202         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14203         --enable-minimal=ssa.
14204
14205 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14206
14207         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14208         mono_marshal_get_delegate_invoke () signature change.
14209
14210 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14211
14212         * mini.c: Removed the shared context in favor of the generic
14213         sharing context.  Allocate the MonoJitInfo structure with room for
14214         the generic sharing context if it's needed.
14215
14216         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14217         domain-internals.h now.
14218
14219         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14220
14221         * generic-sharing.c: Several changes for working without a shared
14222         context and instead operating on open types instead.
14223
14224 2007-11-12  David S. Miller  <davem@davemloft.net>
14225
14226        * inssel-sparc.brg: Fix double instruction emit.
14227
14228 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14229
14230         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14231         Get/Set/Address methods.
14232         
14233         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14234         mono_marshal_get_delegate_invoke signature change.
14235
14236 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14237
14238         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14239         This can happens with dynamic methods. Fixes the other bug in #322722.
14240
14241 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14242
14243         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14244         BX call sequence.
14245
14246         * mini-arm.c (arm_patch): Implement patching of BX call
14247         sequence. Fixes one of the bugs in #322722.
14248
14249 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14250
14251        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14252        under Linux.  We only need to flush every 32-byte cache line.    
14253
14254 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14255
14256         * mini.c:
14257         move_basic_block_to_end: Add branches when needed, eventually creating
14258         a new BB.
14259         optimize_branches: added a parameter that tells if it's ok to create
14260         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14261         and avoid calling move_basic_block_to_end when it's not ok.
14262         Fixes bug 318677.
14263
14264 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14265
14266         * mini.c: Abort inlining call to InitializeArray if something
14267         looks wrong.  Let the icall handle it, which now has proper safety
14268         checks.
14269
14270 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14271
14272         * mini.c (mono_spill_call): add support for soft-float.
14273
14274         * mini.c (mono_method_to_ir): add support for soft-float
14275         to inlined functions that return float.
14276
14277         * mini.c (mono_method_to_ir): add support for soft-float
14278         to cee_stsfld opcode on float fields.
14279
14280 2007-11-05  Geoff Norton  <gnorton@novell.com>
14281
14282         * mini-x86.h: Fix the structure access for X86 Leopard.
14283
14284
14285 2007-11-05  Martin Baulig  <martin@ximian.com>
14286
14287         * mini-trampolines.c
14288         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14289         after compiling the method to notify the debugger.
14290
14291 2007-11-05  Martin Baulig  <martin@ximian.com>
14292
14293         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14294
14295 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14296
14297         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14298         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14299
14300 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14301
14302         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14303         native-to-managed wrappers.
14304         
14305 2007-11-01  Geoff Norton  <gnorton@novell.com>
14306
14307         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14308         members.
14309
14310 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14311
14312         * mini.c, mini-x86.c: when getting back from unmanaged code
14313         to managed via a marshaled delegate we also need to set the
14314         right domain.
14315
14316 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14317
14318         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14319         for amd64.
14320
14321 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14322
14323         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14324         let the debugger or other external agents to tell the JIT when
14325         a sw breakpoint has been inserted in the code that the JIT needs
14326         to be able to inspect.
14327
14328 2007-10-31  Martin Baulig  <martin@ximian.com>
14329
14330         * debug-debugger.h
14331         (MonoDebuggerInfo): Remove `runtime_class_init'.
14332
14333 2007-10-30  Martin Baulig  <martin@ximian.com>
14334
14335         * debug-mini.h
14336         (mono_debugger_thread_created): Added `MonoThread *' argument.
14337         (mono_debugger_extended_notification): New public method.
14338         (mono_debugger_trampoline_compiled): New public method.
14339
14340         * debug-mini.c
14341         (MonoDebuggerThreadInfo): Added `thread' and
14342         `extended_notifications' fields.
14343
14344         * debug-debugger.c
14345         (debugger_executable_code_buffer): New static variable.
14346
14347         * debug-debugger.h
14348         (MonoDebuggerInfo): Added `executable_code_buffer',
14349         `executable_code_buffer_size', `breakpoint_info_area',
14350         `breakpoint_table' and `breakpoint_table_size'.
14351
14352 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14353
14354         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14355         that IP  either is an unused value or the vtable pointer. IMT 
14356         calls use vtable + offset now. Reduced by almost half the size
14357         of IMT entries.
14358
14359 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14360
14361         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14362         defines to access param registers. Replace long usage with
14363         gsize as sizeof(long) != sizeof(void*) on Win64.
14364
14365         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14366         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14367         instead of non-existant _GetAddressOfReturnAddress.
14368
14369         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14370         param registers. Save/restore %rdi and %rsi in MonoLMF.
14371
14372         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14373         param registers. Modify (throw_exception) signature to take 
14374         %rdi and %rsi on Win64. 
14375
14376         Code is contributed under MIT/X11 license.
14377
14378 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14379
14380         * helpers.c: unlink debugging output files.
14381
14382 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14383
14384         * mini.c: Move mono_create_ftnptr () to object.c.
14385
14386 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14387
14388         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14389         optional. This function can now be used to disassemble code generated
14390         outside the JIT such as trampolines and IMT thunks.
14391
14392         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14393
14394         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14395         vtable pointer from a ldr instruction.
14396
14397         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14398         new IMT call sequence.
14399
14400         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14401         call sequence for interface invocations.
14402
14403         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14404         for imt support. This function is empty since IMT on ARM requires no
14405         special handling on the IR side.
14406
14407         * mini-arm.c (mono_arch_find_imt_method): added, required for
14408         imt support.
14409
14410         * mini-arm.c (mono_arch_find_this_argument): added, required
14411         for imt support.
14412
14413         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14414         a ldr instruction to load a value stored in the code stream.
14415
14416         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14417         for imt support.
14418
14419
14420 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14421
14422         * mini.c (mini_init): Install the jump trampoline callback.
14423
14424 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14425
14426         * mini-trampolines.c: handle synchronized methods with the common
14427         vtable trampoline (bug #335601).
14428
14429 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14430
14431         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14432
14433         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14434         64 bit platforms.
14435
14436         * mini-ia64.h mini-ia64.c: Add support for IMT.
14437
14438         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14439         prolog. Fixes #331958.
14440
14441 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14442
14443         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14444
14445 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14446
14447         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14448         trampoline.
14449
14450 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14451
14452         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14453         trampoline.
14454
14455 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14456
14457         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14458         trampoline.
14459
14460 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14461
14462         * mini-trampolines.c: changed the magic rampoline to understand
14463         the common vtable trampoline method: the method to invoke is
14464         determined by the vtable displacement of the call.
14465
14466 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14467
14468         * mini.c, mini.h: register the common vtable trampoline if the
14469         architecture supports it.
14470
14471 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14472
14473         * cpu-amd64.md: use the correct max length for tls_get.
14474
14475 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14476
14477         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14478         CEE_STELEM_ANY. Fixes #333696.
14479
14480 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14481
14482         * exceptions-x86.c: provide more graceful handling of the case where
14483         we followed a bogus function pointer from managed code (bug #332866).
14484
14485 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14486
14487         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14488         replaces the generic_shared flag and will carry more information
14489         in the future.
14490
14491         * generic-sharing.c: Added mini_type_stack_size() which allows
14492         allows open types if given a generic sharing context.
14493         mini_get_basic_type_from_generic() takes a
14494         MonoGenericSharingContext* instead of a MonoCompile* now.
14495
14496         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14497         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14498         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14499         changes above.  Just passing arguments through to the right
14500         places.
14501
14502 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14503
14504         * mini-arm.c: unify the call emission to emit_code_seq().
14505
14506 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14507
14508         * tramp-arm.c: reduced the trampoline size.
14509
14510 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14511
14512         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14513         variable handling out of arch-specific code.
14514
14515 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14516
14517         * mini-arm.c: implemented fast delegate dispatch.
14518
14519 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14520
14521         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14522         that fp elimination is turned off if the space required by locals is too
14523         big. Fixes #331958.
14524
14525 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14526
14527         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14528         ARM to the new style trampoline.
14529
14530 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14531
14532         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14533
14534         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14535
14536 2007-10-09  Martin Baulig  <martin@ximian.com>
14537
14538         * debug-debugger.h
14539         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14540         `field_info_offset_offset'.     
14541
14542 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14543
14544         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14545         removed more internal usage of the r11 register and made it available
14546         to the register allocator.
14547
14548 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14549
14550         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14551         when sharing generics and treat type variables as references.
14552
14553 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14554
14555         * mini-ppc.c: started removing the internal uses of register r11
14556         to eventually allow the register allocator to manage it as an
14557         additional available register.
14558
14559 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14560
14561         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14562
14563 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14564
14565         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14566         specific trampolines as they are not performance critical as a jump
14567         target (maybe align as before only for AOT code?). This saves about
14568         200 KB of native code on x86 for monodevelop startup.
14569
14570 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14571
14572         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14573         monodevelop startup.
14574
14575 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14576
14577         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14578
14579         * mini-sparc.h mini-sparc.c: Implement IMT support.
14580
14581         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14582         its smaller and doesn't clobber sparc_g1.
14583
14584         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14585
14586 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14587
14588         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14589
14590 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14591
14592         * mini-ppc.c: implemented fast delegate invocation.
14593
14594 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14595
14596         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14597
14598 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14599
14600         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14601         code to the new style trampoline in preparation for IMT support.
14602
14603 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14604
14605         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14606         systems already. This also reduces the specific trampiline sizes and
14607         prepares for the use of r12 as the IMT identifier register.
14608
14609 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14610
14611         * mini-mips.h: endianess fix (simplified from a patch by
14612         Thomas Kunze <thommy@tabao.de>, bug #323737).
14613
14614 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14615
14616         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14617         to access ucontext fields and enable netbsd support
14618         (partially from Magnus Henoch <mange@freemail.hu>).
14619
14620 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14621
14622         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14623         use the preprocessor from the CPP env var if it is set.
14624
14625 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14626
14627         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14628         code, before interface_offset gets used.
14629
14630 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14631
14632         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14633         mono_class_setup_vtable () before accessing klass->vtable.
14634
14635 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14636
14637         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14638         hackish.
14639
14640 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14641
14642         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14643         IMT slots (this saves hundreds of KB of memory in programs like
14644         IronPython and Monodevelop).
14645
14646 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14647
14648         * mini.c: print the delegate counter.
14649
14650 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14651
14652         * mini-x86.c: make it easier to enable the debugging code for IMT
14653         slots.
14654
14655 2007-09-28  Martin Baulig  <martin@ximian.com>
14656
14657         * debug-debugger.h
14658         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14659         `mono_method_klass_offset' and `mono_method_token_offset'.
14660
14661 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14662
14663         * mini.c: First generics sharing implementation.  Can only share
14664         in very simple cases.  If sharing doesn't work it falls back to
14665         dedicated compilation.
14666
14667         * mini.h: Flag in MonoCompile to specify whether generic
14668         compilation is shared.  Flags enum for marking which generic inst
14669         of a context is used.  Prototypes for helper functions.
14670
14671         * generic-sharing.c: Helper functions for generic method sharing.
14672
14673         * optflags-def.h: Optimization flag (gshared) for enabling generic
14674         method sharing added.
14675
14676         * Makefile.am: generic-sharing.c added.
14677
14678 2007-09-19 Daniel Nauck <dna@mono-project.de>
14679
14680         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14681
14682 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14683         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14684         fixes bug 325507.
14685
14686 2007-09-19  Martin Baulig  <martin@ximian.com>
14687
14688         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14689         mono_debug_cleanup() is now part of mono_cleanup().
14690
14691 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14692
14693         * driver.c (mono_main): Fix a warning.
14694
14695 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14696
14697         * aot-compiler.c: Optimize various parts when processing large assemblies.
14698         Fixes ##325568.
14699
14700         * mini.c (mono_patch_info_hash): Improve hash function.
14701
14702 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14703
14704         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14705         
14706         Code is contributed under MIT/X11 license.
14707
14708 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14709
14710         * mini.c (mini_init): Fix a leak.
14711
14712         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14713
14714 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14715
14716         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14717
14718 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14719
14720         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14721
14722 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14723
14724         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14725         variance tests.
14726
14727         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14728
14729         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14730
14731         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14732
14733         * aot-runtime.c (decode_patch_info): Ditto.
14734
14735 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14736
14737         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14738         static case. Cache delegates in architecture specific code, 
14739         based on number of parameters.
14740         
14741         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14742         in architecture specific code, based on number of parameters.
14743         
14744         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14745         caching happen in architecture specific code now.
14746         
14747         Code is contributed under MIT/X11 license.
14748
14749 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14750
14751         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14752         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14753         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14754
14755         Code is contributed under MIT/X11 license.
14756
14757 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14758         * mini.c: (mono_thread_abort) Fixed bug #82416.
14759
14760 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14761
14762         * mini.: hook the new managed GC allocation feature into the JIT.
14763
14764 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14765
14766         * mini.c: implementation for the new runtime tls opcode.
14767
14768 2007-09-11  Martin Baulig  <martin@ximian.com>
14769
14770         * debug-debugger.h
14771         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
14772         `mono_method_inflated_offset'.
14773
14774 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
14775
14776         * driver.c mini.h mini.c: Add a new devel command line option for injecting
14777         async exceptions into a method.
14778
14779         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
14780         purpose of testing whenever the unwinder works at every instruction.
14781
14782 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
14783
14784         * mini.c: check accessibility of method used in ldftn (fixes
14785         bug #82635).
14786
14787 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
14788
14789         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
14790
14791         * inssel.brg: Fix a warning.
14792
14793 2007-09-03  Martin Baulig  <martin@ximian.com>
14794
14795         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
14796         now takes the `main_method' as argument.
14797
14798 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
14799
14800         * cpu-sparc.md (endfilter): Add missing src1:i argument.
14801
14802 2007-08-30  Jonathan Chambers <joncham@gmail.com>
14803
14804         * driver.c: include the cil-coff.h header on Windows.
14805         
14806         Code is contributed under MIT/X11 license.
14807
14808 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14809
14810         * mini.c, driver.c: don't include the cil-coff.h header.
14811
14812 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14813
14814         * mini.c: flag places that needs fixes fo soft-float support.
14815
14816 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
14817
14818         * mini.h, inssel-float.brg: fix soft-float constant loads on big
14819         endian systems (partially from Dean Jenkins, bug #81924).
14820
14821 2007-08-28  Mark Probst  <mark.probst@gmail.com>
14822
14823         * mini.c (check_linkdemand): Remove embedded reference object in
14824         call to LinkDemandSecurityException.
14825         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
14826         with an IntPtr instead of a reference object.
14827
14828 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
14829
14830         * mini.c (handle_initobj): Handle alignment properly.
14831
14832         * inssel.brg (mini_emit_memset): Ditto. 
14833
14834         * inssel.brg (mini_emit_memcpy): Ditto. 
14835
14836         * inssel-sparc.brg: Ditto.              
14837
14838         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
14839
14840 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
14841
14842         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
14843         exceptions raised in unmanaged code. Fixes part of #82594.
14844
14845 2007-08-24  Mark Probst  <mark.probst@gmail.com>
14846
14847         * mini.c (mono_method_to_ir), declsec.c
14848         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
14849
14850 2007-08-22  Martin Baulig  <martin@ximian.com>
14851
14852         * debug-mini.h
14853         (MonoDebuggerThreadInfo): New typedef.
14854         (mono_debugger_thread_table): New global variable.
14855         (mono_debugger_thread_created): New public function.
14856         (mono_debugger_thread_cleanup): New public function.
14857
14858         * debug-debugger.h
14859         (MonoDebuggerInfo):
14860         - removed `get_current_thread' and `lookup_assembly'.
14861         - removed `data_table'.
14862         - added `thread_table'.
14863
14864         * mini.c
14865         (mono_thread_start_cb): Call mono_debugger_thread_created().
14866         (mono_thread_attach_cb): Likewise.
14867         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
14868         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
14869         initial domain.
14870
14871         * driver.c (mono_main): Move mono_debug_init() up, before calling
14872         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
14873
14874 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14875
14876         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
14877         together when passing several arguments of type double (gives a small
14878         speedup and saves a few bytes of generated code).
14879
14880 2007-08-20  Jb Evain  <jbevain@novell.com>
14881
14882         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
14883
14884 2007-08-20  Jb Evain  <jbevain@novell.com>
14885
14886         * mini.c (mono_method_to_ir): throw MethodAccessException
14887         and FieldAccessException instead of InvalidProgramException.
14888
14889 2007-08-20  Mark Probst  <mark.probst@gmail.com>
14890
14891         * mini.c: CoreCLR security checks.
14892
14893         * mini.h: Removed MonoSecurityMode (moved to
14894         metadata/security-manager.h) and mono_security_mode global var
14895         (replaced by set/get functions in security-manager.h).
14896
14897         * driver.c: Added "core-clr-test" security mode for testing.  Used
14898         set-function for setting security mode.
14899
14900 2007-08-17  Mark Probst  <mark.probst@gmail.com>
14901
14902         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
14903         the new jit_info_table.
14904
14905         * driver.c: Test code for the new jit_info_table (enabled by the
14906         define MONO_JIT_INFO_TABLE_TEST).
14907
14908 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
14909
14910         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
14911         detection of call <REG> instruction sequence. Fixes build on freebsd.
14912
14913 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
14914
14915         * mini-exceptions.c: Fix a warning.
14916
14917 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
14918
14919         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
14920         stack overflow handling code on amd64 too.
14921
14922         * mini-exceptions.c (mono_setup_altstack): Make this use 
14923         mono_thread_get_stack_bounds ().
14924
14925         * mini-x86.h: Disable sigaltstack on solaris x86.
14926
14927 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
14928
14929         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
14930
14931 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
14932
14933         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
14934
14935 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
14936
14937         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
14938
14939         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
14940
14941 2007-08-03  Neale Ferguson <neale@sinenomine.net>
14942
14943         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
14944         due to alignment.
14945
14946 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14947
14948         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
14949         to be emitted (bug #82281).
14950
14951 2007-08-01  Martin Baulig  <martin@ximian.com>
14952
14953         Merged the `debugger-dublin' branch.
14954
14955         * debug-debugger.h (MonoDebuggerInfo):
14956         Removed the `old_*' compatibility entries.
14957         Added `debugger_version' and `data_table'.
14958         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
14959         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
14960
14961         * debug-mini.c
14962         (MiniDebugMethodBreakpointInfo): Add `address_list'.
14963         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
14964         instead of a `gconstpointer'.
14965         (mono_debugger_insert_method_breakpoint): Return a
14966         `MonoDebugMethodAddressList *'.
14967
14968 2007-06-28  Martin Baulig  <martin@ximian.com>
14969
14970         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
14971
14972 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
14973
14974         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
14975         __builtin_frame_address () since it is broken on older gcc versions.
14976
14977 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14978
14979         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
14980         on the stack overflow handling and made the managed stack overflows
14981         catchable in most cases using soft guard pages.
14982         * exceptions-x86.c: added code to restore the protection in the soft
14983         guard pages at the end of exception handling.
14984
14985 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
14986
14987         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
14988
14989 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14990
14991         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
14992         exception handling.
14993
14994 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14995
14996         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
14997         signal handling support until it has been ported to the new mechanism.
14998         * mini.c: fixed stack overflow detection and use the new
14999         architecture code  to handle signals on the altstack.
15000
15001 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15002
15003         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15004         stack overflows on the alt stack.
15005
15006 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15007
15008         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15009         stack overflows on the alt stack.
15010
15011 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15012
15013         * exceptions-ppc.c: cleanup preparing for altstack support.
15014
15015 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15016
15017         * exceptions-arm.c: cleanup preparing for altstack support.
15018
15019 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15020
15021         * mini.c (print_jit_stats): Output hazard pointer stats.
15022
15023 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15024
15025         * driver.c, mini.c: Replaced security mode flags with a single
15026         enum variable.
15027
15028 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15029
15030         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15031
15032 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15033
15034         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15035         (which doesn't do anything yet) for activating Core CLR
15036         (Silverlight) security.
15037
15038 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15039
15040         * mini-codegen.c: work around a possible gcc bug on arm.
15041
15042 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15043
15044         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15045         message for platforms that don't support AOT compilation.
15046
15047 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15048
15049         * mini.h, mini.c, driver.c: temporary smcs hack.
15050
15051 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15052
15053         * mini-arm.h, mini-arm.c: arm EABI fixes.
15054
15055 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15056
15057         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15058         case.
15059
15060         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15061         trampolines taking a method argument.
15062
15063         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15064
15065         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15066         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15067
15068         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15069         JIT compilation throws an exception. Fixes #82050.
15070
15071 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15072
15073         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15074         with the MONO_EXCEPTION_ defines.
15075
15076 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15077
15078         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15079         #82117.
15080         
15081         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15082         the cause of an assertion.
15083
15084 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15085
15086         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15087         removed.
15088
15089 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15090
15091         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15092         assert. Should fix #82103.
15093
15094 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15095
15096         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15097         here too. Fixes #82095.
15098
15099         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15100         addresses.
15101
15102         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15103
15104         * mini-amd64.h: Enable IMT for amd64.
15105         
15106         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15107
15108 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15109
15110         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15111
15112 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15113
15114         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15115         as soon as check_linkdemand sets an exception_type.
15116
15117 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15118
15119         * mini-x86.c: fixed offsets for IMT call sequence.
15120         * mini-x86.h: enable IMT again.
15121
15122 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15123
15124         * trace.c (mono_trace_enter_method): Decode MonoType too.
15125
15126         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15127
15128         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15129
15130         * mini-amd64.c: Add preliminary IMT implementation.
15131         
15132 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15133
15134         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15135         understand the new IMT-base interface invocation (thanks to
15136         Daniel Nauck for the report and the remote debugging session).
15137
15138 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15139
15140         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15141
15142 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15143
15144         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15145
15146 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15147
15148         * mini-trampolines.c: implement AOT IMT support.
15149         * mini-x86.h: enable IMT support for wider testing.
15150
15151 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15152
15153         * inssel.brg (emit_imt_argument): Add aot support here.
15154
15155         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15156
15157 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15158
15159         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15160         of the IMT implementation, partially from massi, with my
15161         implementation of the bsearch sequence. Disabled by default until
15162         the AOT code is implemented.
15163
15164 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15165
15166         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15167
15168         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15169
15170 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15171
15172         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15173         arch-independent IMT JIT code from Massimiliano
15174         Mantione (massi@ximian.com) with small cleanups from me.
15175
15176 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15177
15178         * Makefile.am: fix svn invocation to get the svn revision to be
15179         independent of the local language (build fix).
15180
15181 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15182
15183         * mini.c (inline_method): Reset cfg->exception_type if the
15184         inlining is aborted.  Fixes: 82049.
15185
15186 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15187
15188         * mini.c: remove assert from exception handling code when exception_ptr
15189         is not set.
15190
15191 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15192
15193         * mini.c (mono_codegen): Add an assert.
15194
15195         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15196         enter and leave code.
15197         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15198
15199 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15200
15201         * mini-ppc.c: fixed memory corruption for localloc(0)
15202         (bug #81852).
15203
15204 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15205         
15206         * mini.c: Fix warnings.
15207
15208 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15209
15210         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15211         to emit better double->int conversions.
15212
15213 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15214
15215         * mini.c: the provided Min/Max optimizations are valid for unisgned
15216         ints.
15217
15218 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15219
15220         * 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
15221
15222 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15223
15224         * mini.c (mono_running_on_valgrind): Add support for reporting the
15225         method and  its boundaries to valgrind.
15226
15227 2007-06-28  Martin Baulig  <martin@ximian.com>
15228
15229         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15230
15231 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15232
15233         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15234
15235         * generic.2.cs: Add new test case.
15236
15237 2007-06-25  Martin Baulig  <martin@ximian.com>
15238
15239         Merged the `debugger-dublin' branch.
15240
15241         * debug-mini.c
15242         (mono_debugger_insert_method_breakpoint): New public method.
15243         (mono_debugger_remove_method_breakpoint): Likewise.
15244         (mono_debugger_check_breakpoints): New static method.
15245         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15246
15247         * debug-debugger.h (MonoDebuggerInfo):
15248         Renamed (to keep backward compatibility in the vtable):
15249         `insert_breakpoint' -> `old_insert_breakpoint'.
15250         `remove_breakpoint' -> `old_remove_breakpoint'.
15251         `create_string' -> `old_create_string'.
15252         `lookup_class' -> `old_lookup_class'.
15253         `lookup_type' -> removed; changed into a dummy field.
15254         `lookup_assembly' -> `old_lookup_assembly'.
15255         Added (same functionality, but different signature):
15256         `create_string', `lookup_class', `lookup_assembly'
15257         Added new:
15258         `get_method_addr_or_bpt', `remove_method_breakpoint',
15259         `runtime_class_init'.
15260
15261         * debug-debugger.c: Merged the `debugger-dublin' branch.
15262
15263 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15264
15265         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15266         well.
15267         (peephole_pass): Likewise.
15268
15269 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15270
15271         * driver.c: hopefully make setaffinity work also for ancient
15272         versions of linux.
15273
15274 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15275
15276         * driver.c : win32 build fix.
15277
15278 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15279
15280         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15281         processor if it is set.
15282
15283 2007-06-21  Martin Baulig  <martin@ximian.com>
15284
15285         * debug-mini.h: New file.
15286
15287         * debug-mini.c
15288         (mono_debugger_insert_breakpoint_full): Moved here from
15289         ../metadata/mono-debug-debugger.c.
15290         (mono_debugger_remove_breakpoint): Likewise.
15291         (mono_debugger_breakpoint_callback): Likewise.
15292
15293 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15294
15295         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15296         changes in MonoGenericClass.
15297
15298 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15299
15300         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15301
15302 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15303
15304         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15305         removal of MonoGenericMethod.
15306
15307 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15308
15309         * mini-exceptions.c: hooks for the exception events profiling API.
15310
15311 2007-06-14  Randolph Chung  <tausq@debian.org>
15312
15313         * Makefile.ma: Add hppa target.
15314         * mini-arch.h: Include mini-hppa.h
15315         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15316         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15317         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15318
15319 2007-06-14  Randolph Chung  <tausq@debian.org>
15320
15321         * inssel.brg: Add rules for "chained" compare-branch operations so that
15322         a single compare op can affect multiple branches.  Adjust cost for
15323         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15324         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15325         cost for some rules so that they can more easily be overridden by
15326         per-arch rules (with fixes from lupus).
15327         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15328
15329 2007-06-13  Randolph Chung  <tausq@debian.org>
15330
15331         * mini-ops.h: Reorder branch ops so that they match the order of the
15332         corresponding CEE_* ops.  The code expects them this way.
15333         Add new ops for HPPA target.
15334         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15335
15336 2007-06-13  Randolph Chung  <tausq@debian.org>
15337
15338         * mini-exceptions.c: Handle cases where the stack grows towards
15339         larger addresses.
15340         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15341
15342 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15343
15344         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15345         counter.
15346         * driver.c: explain where a non-matching corlib is found.
15347
15348 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15349
15350         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15351
15352 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15353
15354         * mini-exceptions.c: Generate a method profile leave event during
15355         an exception to ensure that the profiler gets notified.
15356
15357 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15358
15359         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15360         branch.
15361
15362         * cpu-amd64.md: Add long_and/or/xor opcodes.
15363
15364 2007-06-06  Wade Berrier  <wberrier@novell.com>
15365
15366         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15367         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15368         length of instruction shr_imm (expected 8, got 10)
15369
15370 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15371
15372         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15373
15374 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15375
15376         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15377         MonoInternalHashTable again (fixed bug in the internal hash table
15378         code).
15379
15380 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15381
15382         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15383         Have to figure out what makes it crash the SWF regression.
15384
15385 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15386
15387         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15388
15389 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15390
15391         * mini.c: optimize out the type check when storing null in a
15392         reference array.
15393
15394 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15395
15396         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15397         MonoInternalHashTable.
15398
15399 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15400
15401         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15402         signed integer methods.
15403
15404 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15405
15406         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15407         permanently since the current approach doesn't work.
15408
15409 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15410
15411         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15412         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15413
15414 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15415
15416         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15417         the sreg2==rdx case.
15418         
15419         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15420         account if it contains a rex prefix.
15421         (peephole_pass): Handle OP_FMOVE as well.
15422
15423 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15424
15425         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15426         as it causes regressions.
15427
15428 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15429
15430         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15431         static case as well.
15432
15433         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15434
15435         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15436         (mono_arch_get_this_arg_from_call): Ditto.
15437
15438         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15439
15440         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15441         invoke_impl field.
15442
15443         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15444         (mono_arch_get_this_arg_from_call): Ditto.
15445
15446         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15447         
15448         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15449         try to create optimized invoke code and use that for further invocations. 
15450         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15451
15452         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15453
15454 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15455
15456         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15457         sealed classes or methods.
15458         *devirtualization.cs: tests for the new optimization
15459
15460 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15461
15462         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15463         by the update_volatile () function.
15464
15465 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15466
15467         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15468         require it.
15469
15470         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15471
15472 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15473
15474         * mini.c: Add configure checks for header files.
15475         * mini-x86.c: Add configure checks for header files.
15476         * trace.c: Add configure checks for header files.
15477         * aot-runtime.c: Add configure checks for header files.
15478         * aot-compiler.c: Add configure checks for header files.
15479         * driver.c: Add configure checks for header files.
15480         * mini-codegen.c: Add configure checks for header files.
15481         
15482         Code is contributed under MIT/X11 license.
15483
15484 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15485
15486         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15487         icompare_imm -128 + op_iclt. Fixes #81703.
15488
15489 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15490
15491         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15492
15493 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15494
15495         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15496         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15497         so that all isinst checks now use "interface_bitmap".
15498
15499 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15500
15501         * cpu-amd64.md (jmp): Fix a warning.
15502
15503         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15504
15505         * basic.cs: Add new regression test.
15506
15507         * basic.cs: Remove test which is now in basic-long.cs.
15508
15509         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15510
15511         * basic-long.cs: Add new test.
15512         
15513 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15514
15515         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15516
15517 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15518
15519         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15520
15521         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15522         places.
15523         
15524         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15525         throwing code a bit.
15526
15527         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15528         the exception throwing code a bit.
15529
15530         * mini-x86.c (get_call_info): Allocate result from a mempool.
15531
15532 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15533
15534         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15535
15536         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15537
15538         * mini.h (MonoCompile): Add 'token_info_hash' field.
15539
15540         * mini.c: Save token->method associations during compilation so the AOT 
15541         compiler can use it.
15542         
15543         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15544         which reference generic classes and methods.
15545
15546 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15547
15548         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15549
15550         * aot-compiler.c (compile_method): Fix a typo in a comment.
15551
15552         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15553
15554         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15555         everything generic.
15556
15557         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15558
15559 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15560
15561         * mini.h (MonoCompile): Add 'args' field.
15562
15563         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15564         into cfg->args.
15565
15566         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15567
15568 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15569
15570         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15571
15572         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15573
15574         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15575         opcodes for some opcodes.
15576
15577         * mini.h *.brg *.c: Use the new opcodes.
15578
15579 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15580
15581         * mini.h: Bumped aot revision.
15582
15583         * inssel.brg: modified code generation of type checks for interfaces
15584         to use the new "MonoClass.interface_bitmap" instead of the old
15585         "MonoClass.interface_offsets".
15586
15587 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15588
15589         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15590
15591 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15592
15593         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15594         64 bit platforms.
15595
15596 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15597
15598         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15599
15600 2007-04-27  Wade Berrier  <wberrier@novell.com>
15601
15602         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15603         mini.h) to fix build.
15604
15605 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15606
15607         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15608         
15609         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15610         causes the corlib unit tests to fail.
15611
15612 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15613
15614         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15615
15616         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15617
15618         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15619         opcodes to the comparison relations.
15620
15621         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15622         opcodes to their types.
15623         
15624         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15625
15626         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15627         it in cfg->arch.cinfo.
15628
15629         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15630
15631         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15632         cfg->cil_offset_to_bb.
15633
15634 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15635
15636         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15637         created becase of initlocals.
15638
15639 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15640
15641         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15642         Sergey Tikhonov <tsv@solvo.ru>.
15643
15644 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15645
15646         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15647
15648 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15649
15650         * cpu-s390.md (break): Correct the length of break instruction.
15651
15652 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15653
15654         * mini.c: fix a couple of soft-float issues and comments.
15655
15656 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15657
15658         * trace.c (is_filenamechar): - is also a filename char.
15659
15660 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15661
15662         * mini-s390.c: Correct checking for enum type in return value processing.
15663
15664 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15665
15666         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15667         (version.h): Makefile is in the build directory.
15668
15669 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15670
15671         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15672
15673 2007-04-11  Martin Baulig  <martin@ximian.com>
15674
15675         * mini.c (can_access_member): Fix handling of generic classes;
15676         fixes #81259.
15677
15678 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15679
15680         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15681
15682 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15683
15684         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15685
15686 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15687
15688         * mini-codegen.c: make sure the right spill amount is
15689         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15690
15691 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15692
15693         * mini-ppc.c: fixes for the fp_branch_nan test.
15694
15695 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15696
15697         * basic.cs: Comment out new test which still fails on ia64.
15698
15699 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15700
15701         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15702
15703 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15704
15705         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15706
15707 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15708
15709         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15710         on 64 bit machines. Fixes part of #80738.
15711
15712         * basic.cs: Add regression test.
15713
15714 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15715
15716         * inssel.brg basic.cs: Revert previous change to fix build.
15717
15718         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15719         platforms.
15720         
15721         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15722
15723         * basic.cs: Add new regression test.
15724
15725 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15726
15727         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15728         many arguments.
15729
15730 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15731
15732         * cpu-s390x.md: Correct length of break instruction.
15733
15734 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15735
15736         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15737         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15738
15739 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15740
15741         * *.c: Begin WIN64 port.
15742         * mini.c:  Use correct register in profiler.
15743         * mini-amd64.c: No inline assembly on Win64.
15744         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15745         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15746         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15747         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15748         mono_arch_ip_from_context for Win64.
15749         
15750         Contributed under MIT/X11 license.
15751
15752 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15753
15754         * exceptions-amd64.c (seh_handler): Ditto.
15755
15756         * exceptions-x86.c (seh_handler): Fix a memory leak.
15757
15758 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
15759
15760         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
15761         mini-s390x.c: fixed peephole optimizations to deal
15762         correctly with 1 and 2 byte reload avoidance.
15763
15764 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15765
15766         * cpu-s390.md, cpu-s390x.md: update localloc length.
15767
15768 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15769
15770         * cpu-g4.md: added missing descriptions.
15771
15772 2007-03-14  Miguel de Icaza  <miguel@novell.com>
15773
15774         *  Makefile.am: Add support so the tail tests are not executed on
15775         PowerPC as that is a known limitation of the PowerPC port.
15776
15777 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15778
15779         * runmdesc.bat:  Move to msvc directory.
15780         
15781 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15782
15783         * runmdesc.bat:  Run executable that was produced by the current
15784         target and sent via an argument.
15785         
15786 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
15787
15788         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
15789         #81102.
15790
15791         * generics.2.cs: Add regression test.
15792
15793 2007-03-09  Wade berrier  <wberrier@novell.com>
15794
15795         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
15796
15797 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
15798
15799         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
15800         AOT code depends on this.
15801
15802 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15803
15804         * mini.c: more precise tracking of types in the eval stack
15805         (part of fix for bug #81044).
15806
15807 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
15808
15809         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
15810
15811         * aot-compiler.c (encode_patch): Remove an obsolete comment.
15812
15813 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
15814
15815         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
15816
15817         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
15818
15819 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
15820
15821         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
15822         a pointer on 64 bit systems. Fixes #80190.
15823
15824         * iltests.il: Add new regression test.
15825
15826 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15827
15828         * mini.c: inline a constant for Environment.IsRunningOnWindows.
15829
15830 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
15831
15832         * trace.c: Remove an erroneous alignemnt check when tracing.
15833           Fixes --trace on OSX86.
15834
15835 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15836
15837         * mini-$(arch).h: initialize SP in context for all the archs.
15838
15839 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
15840
15841         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
15842         regressions in the thread tests.
15843
15844 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
15845
15846         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
15847         - fixed implementation of LOCALLOC opcode
15848         - implemented non-un compare for floats
15849         - code cleanup
15850         - implementation of FDIV and CKFINITE opcodes
15851         - fixes for latest mono updates
15852         - additional arch opcodes
15853
15854 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15855
15856         * Makefile.am: simplify and merge rules for cross-compilation.
15857
15858 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
15859
15860         * local-propagation.c: Actually *apply* the fix for bug 80591...
15861
15862 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15863
15864         * mini-exceptions.c: backuot part of the last change
15865         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
15866
15867 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
15868         * inssel.brg: Fix bug 59286.
15869
15870
15871 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
15872
15873         * mini-exceptions.c: patch from Zoltan to correctly check for
15874         stack boundaries (using the stack register, not the frame register),
15875         fixes bugs #80724, #79717.
15876
15877 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
15878
15879         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
15880         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
15881
15882         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
15883         presence of frame pointer elimination.
15884
15885 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
15886         
15887         * mini-x86.h: NetBSD UCONTEX_REG defines.
15888
15889 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
15890
15891         * inssel-amd64.brg: Fix amd64 build.
15892
15893 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
15894
15895         * mini.h: remove extern to workaround what looks likes gcc bug 26905
15896         on amd64.
15897
15898 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
15899
15900         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
15901         ends.
15902
15903         * mini-<ARCH>.c: Use mono_is_regsize_var ().
15904
15905 2007-01-30 Mark Mason <mason@broadcom.com>
15906
15907            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
15908            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
15909            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
15910            beginning support for CEE_JMP [not quite working yet]
15911            * tramp-mips.c: LMF handling now works
15912         
15913 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
15914
15915         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
15916
15917         * mini.h (NULLIFY_INS): New macro.
15918
15919 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15920
15921         * mini.c: statistical profiler fix for windows, patch
15922         from Tor Lillqvist (tml@novell.com).
15923
15924 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
15925         * local-propagation.c: Fix bug 80591.
15926
15927 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
15928
15929         * Makefile.am: put back the --export-dynamic option as with
15930         the previous gmodule flags (thanks to Robert Jordan).
15931
15932 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
15933
15934         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
15935
15936         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
15937         simplify and speed up the local register allocator. Also rename some fields
15938         like iassign->vassign.
15939         
15940         * regalloc.c: Remove some functions which are no longer used since their
15941         inlined version is in mini-codegen.c.
15942         
15943         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
15944
15945         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
15946
15947 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
15948
15949         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
15950         narrowing. Fixes #80622.
15951
15952         * iltests.il: Add new regresssion test. 
15953
15954 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15955
15956         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
15957         debug-debugger.c, debug-debugger.h: warning fixes.
15958         * driver.c: updated copyright year and made it fit in one line.
15959
15960 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
15961
15962         * aot-runtime.c: updated to use mono-dl instead of gmodule.
15963
15964 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
15965
15966         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
15967
15968         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
15969
15970         * iltests.il: Add new test for bug #80507.
15971
15972 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15973
15974         * mini-arm.h: use soft-float also on vfp for now.
15975
15976 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15977
15978         * mini.c: fix some more soft-float issues.
15979
15980 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
15981
15982         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
15983
15984 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
15985         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
15986         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
15987         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
15988
15989 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
15990
15991         * mini-arm.c: typo fix.
15992
15993 2007-01-23  Neale Ferguson <neale@sinenomine.net>
15994
15995         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
15996
15997 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
15998
15999         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
16000         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
16001
16002         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
16003
16004         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16005
16006         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16007         
16008         * inssel.brg: Fix a warning.
16009
16010         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16011
16012         * abcremoval.c ssa.c ssapre.c: Update after this change.
16013         
16014         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16015
16016         * dominators.c (df_set): Use mono_bitset_union_fast.    
16017
16018 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16019
16020         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16021         mini-codegen.c: reduce relocations and memory usage for the cpu
16022         description.
16023
16024 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16025
16026         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16027
16028         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16029         to reduce their size.
16030
16031 2007-01-19 Mark Mason <mason@broadcom.com>
16032
16033         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16034         * mini-mips.c: more configuration macros, support long conditional branches, additional
16035         asserts, fix epilog instrumentation.
16036         * mini-mips.h: use standard stack walk
16037         * cpu-mips.md: increase size of div, rem and conditional branches
16038         
16039 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16040
16041         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16042         to cpu spec data.
16043
16044 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16045
16046         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16047         (compile_method): Ditto.
16048
16049         * aot-runtime.c (decode_klass_info): Ditto.
16050
16051         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16052         needed by the code generated by inssel.brg. Also fix a warning.
16053
16054 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16055
16056         * mini.c: deal with enums that become genericinsts by
16057         being nested in a generic class (bug #79956).
16058
16059 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16060
16061         * mini.c: match the generic definition to check for
16062         private access with generic types (bug #78431).
16063
16064 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16065
16066         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16067         to make life easier for people cross-compiling that insist on not
16068         using scratchbox.
16069
16070 2007-01-17 Mark Mason <mason@broadcom.com>
16071
16072         * inssel-long.brg: patch to deal with mips missing flags
16073         * inssel-long32-mips.brg: implement overflow checks
16074         * insset-mips.brg: implement overflow checks
16075         * mini-mips.h: implement conditional exception handling
16076         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16077           Remove unused code, minor cleanups.
16078         * exceptions-mips.c: minor cleanups
16079         * mini-ops.h: add mips conditional exception ops
16080         * cpu-mips.md: add mips conditional exception ops
16081
16082         
16083 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16084
16085         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16086         to deal with mips missing of flags.
16087
16088 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16089
16090         * exceptions-ppc.c: execute fault handlers.
16091
16092 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16093
16094         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16095
16096 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16097
16098         * mini.c: handle also floating point values in initialize_array.
16099
16100 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16101
16102         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16103         array initialization and make it conditional on the intrins option.
16104
16105 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16106
16107         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16108         relocations and put the patch info names close to the enum definition.
16109
16110 2007-01-15 Mark Mason <mason@broadcom.com>
16111
16112         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16113
16114 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16115
16116         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16117
16118 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16119
16120         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16121
16122 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16123
16124         * Makefile.am: distribute the mips sources.
16125
16126 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16127
16128         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16129         directly.
16130
16131 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16132
16133         * cpu-x86.md: back out for now as this triggers other regressions.
16134
16135 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16136
16137         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16138         to eax:edx, so ecx can't get allocated to them (bug #80489).
16139
16140 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16141
16142         * mini.c, mini-exceptions.c: enabled running fault handlers
16143         (bug #80469).
16144
16145 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16146
16147         * driver.c: If nothing fail, do not use the string "failed",
16148         because it makes it very annoying to view test result logs on the
16149         web. 
16150
16151 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16152
16153         * debug-debugger.c (mono_debugger_main): Rename "main" to
16154         "main_method" to prevent a warning.
16155
16156         Remove a warning for unused field.
16157
16158 2006-12-28  Martin Baulig  <martin@ximian.com>
16159
16160         * debug-debugger.c
16161         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16162
16163 2006-12-22  Martin Baulig  <martin@ximian.com>
16164
16165         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16166         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16167         seperate `.mdb_debug_info' section, so we can access it from the
16168         debugger even if the binary is stripped.
16169
16170         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16171         from the `.mdb_debug_info' here to prevent the linker from
16172         removing that section.
16173
16174         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16175         mdb-debug-info64.s.
16176
16177 2006-12-19  Robert Jordan  <robertj@gmx.net>
16178
16179         * mini-x86: enable the code to return small structures in
16180         registers for FreeBSD as well. Fixes bug #80278.
16181         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16182
16183 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16184
16185         * mini-x86.c: align the stack when calling the profiler
16186         function instrumenting the prolog (on OSX).
16187
16188 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16189
16190         * mini.c: emit a break opcode where Debugger.Break () is called.
16191
16192 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16193
16194         * mini.c (mono_method_to_ir): Provide useful information on this
16195         assert, to prevent others from debugging like I did.
16196
16197 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16198
16199         * mini.c: enable code which was incorrectly commented
16200         (bug #80235).
16201
16202 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16203
16204         * mini-x86.c: enable on OSX, too, the code to return small
16205         structures in registers.
16206
16207 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16208
16209         * mini-x86.c: remove the use of the dynamic code manager here, too.
16210
16211 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16212
16213         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16214         mono_debugger_create_notification_function() to use
16215         mono_global_codeman_reserve () instead of a dynamic code manager.
16216
16217 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16218
16219         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16220         ves_array_element_address() jit icall and use a generated
16221         managed method instead (which is about 4 times faster for a rank 3
16222         array access).
16223
16224 2006-11-29  Mark Mason  <mason@broadcom.com>
16225
16226         * basic-calls.cs: additional tests for passing
16227         structures as function arguments.
16228
16229 2006-11-29  Mark Mason  <mason@broadcom.com>
16230
16231         * mini-mips.h: disable custom exception handling
16232         * mini-mips.c: throw/rethrow should use jalr to call
16233         exception stubs.  Fixed bug with passing structures
16234         by value. More support for tracing floating point
16235         functions.
16236
16237 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16238
16239         * mini.c: fixed typo in the soft-float ldind.r4 handling
16240         (bug #80086).
16241
16242 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16243
16244         * mini.c, mini.h, driver.c: added --runtime command line
16245         option to select a different runtime than the autodetected one.
16246         * jit.h: added API for embedders to initialize with a specific
16247         runtime version.
16248
16249 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16250
16251         * mini.c: handle also boxing of r4 values (bug #80024).
16252
16253 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16254
16255         * mini-ppc.c: force indirect calls until we reserve
16256         enough address space for all the generated code.
16257
16258 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16259
16260         * exceptions-arm.c: workaround bugs in the libc definition
16261         of struct ucontext.
16262
16263 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16264
16265         * inssel.brg: fixes from me and Mark Mason.
16266
16267 2006-11-23  Dick Porter  <dick@ximian.com>
16268
16269         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16270         semaphore display now we've fixed the initial value
16271
16272 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16273
16274         * inssel.brg: partially revert the last change to fix the build.
16275
16276 2006-11-21  Mark Mason  <mason@broadcom.com>
16277
16278         * inssel.brg: Add and use compare-and-branch macros to support
16279         architectures that do not have condition code registers (ie. MIPS).
16280         * *-mips.{c,brg,md}: Fix copyright statements
16281
16282 2006-11-20  Mark Mason  <mason@broadcom.com>
16283
16284         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16285         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16286         * mini.h: Added declaration for mono_print_ins()
16287         * mini-codegen.c: added ins_spec initializer for MIPS
16288         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16289         vreg to be virtual and hreg to be non-virtual.
16290         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16291         is not yet working/implemented correctly.
16292         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16293         non-static, fixup calls to print_ins() from other parts in the file.
16294
16295 2006-11-20  Mark Mason  <mason@broadcom.com>
16296
16297         * basic-calls.cs: added tests for passing structures as arguments
16298         to calls.
16299
16300 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16301
16302         * inssel-long32.brg: optimize signed division by power of two.
16303
16304 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16305
16306         * mini-arm.c: added support for interworking with thumb code
16307         (mono must be still be built using the ARM instruction encoding).
16308
16309 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16310
16311         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16312         verifier has different rules for it.   Fixes a few verifier issues
16313         in the test suite.
16314
16315         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16316         at the end, so people know what happened.
16317
16318 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16319
16320         * brach-opts.c: in optimize_exception_target() make sure we
16321         are in a catch clause (fixes bug #79871).
16322
16323 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16324
16325         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16326         more soft-float support fixes.
16327
16328 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16329
16330         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16331         that are passed half on the stack and half in registers.
16332
16333 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16334
16335         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16336         more mips integration work from Mark E Mason 
16337         <mark.e.mason@broadcom.com>.
16338
16339 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16340
16341         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16342         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16343         tramp-mips.c: added sources for the mips port, not
16344         integrated in the build yet. Contributed by
16345         Mark E Mason <mark.e.mason@broadcom.com>.
16346
16347 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16348
16349         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16350
16351 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16352
16353         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16354         put the soft-float rules in its own file since it seems to
16355         break s390 compilation.
16356
16357 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16358
16359         * mini-arm.c: fixed wrnings.
16360
16361 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16362
16363         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16364         inssel-arm.brg: ARM support for soft-float.
16365
16366 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16367
16368         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16369         loads and stores of 32 bit fp values.
16370
16371 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16372
16373         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16374
16375         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16376         works. Fixes #79852 and #79463.
16377
16378 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16379
16380         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16381         more soft-float support WIP and fixes.
16382
16383 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16384
16385         * mini-arm.c: some VFP updates.
16386
16387 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16388
16389         * mini-exceptions.c: 0 is a valid local var offset in some
16390         architectures, don't assert (bug #78508).
16391
16392 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16393
16394         * exceptions-arm.c: fixed off by one error in stack walk code.
16395
16396 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16397
16398         * mini.h, mini.c: more precise tracking of type load exceptions.
16399
16400 2006-11-03  Robert Jordan  <robertj@gmx.net>
16401
16402         * Makefile.am: [WIN32] Add monow.exe target.
16403         * driver.c: [WIN32] Don't detach the console when debugging.
16404         Fixes bug #79797.
16405         
16406 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16407
16408         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16409
16410 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16411
16412         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16413
16414         * driver.c (mini_regression): Fix --regression with AOT.
16415
16416         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16417
16418 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16419
16420         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16421
16422         * mini-sparc.h: Don't use sigaction on sparc/linux.
16423
16424         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16425
16426         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16427
16428         * mini-exceptions.c: Add proper include files for getpid ().
16429
16430 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16431
16432         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16433         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16434         method.
16435
16436         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16437         name cache to reduce its size.
16438
16439         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16440
16441 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16442
16443         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16444         the mono_lmf TLS variable.
16445
16446         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16447         trampoline lmf frames.  
16448
16449         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16450
16451 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16452
16453         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16454         the mono_lmf TLS variable.
16455
16456         * mini-exceptions.c: Access the LMF structure through accessors.
16457
16458         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16459         variable instead of in jit_tls->lmf.
16460
16461         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16462         
16463         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16464         trampoline lmf frames.
16465
16466         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16467
16468 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16469
16470        * mini.c trace.c mini-x86.c: Revert these too.
16471         
16472        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16473        signature change.
16474
16475 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16476
16477         * genmdesc.c: removed now dead code.
16478
16479 2006-10-09  Robert Jordan <robertj@gmx.net>
16480
16481         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16482
16483 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16484
16485         * mini.h: do not leave gaps in the opcode values.
16486
16487 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16488
16489         * jit-icalls.h: flag functions as internal here, too.
16490
16491 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16492
16493         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16494         functions with the internal attribute.
16495
16496 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16497
16498         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16499
16500 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16501
16502         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16503         for soft-float.
16504
16505 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16506
16507         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16508         tail calls as on other platforms.
16509
16510         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16511
16512         * iltests.il: Add a few tailcall tests.
16513
16514 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16515
16516         * driver.c: fix loop for old compilers (bug #79521).
16517
16518 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16519
16520         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16521
16522         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16523
16524         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16525         metadata without any code.
16526
16527         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16528         more precise debugging information using gdb.
16529
16530 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16531
16532         * inssel-ia64.brg: Make the helper methods static.
16533
16534 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16535
16536         * inssel-x86.brg: make the helper methods static.
16537
16538 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16539
16540         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16541
16542 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16543
16544         * mini.c: updates for monoburg changes.
16545         * inssel.brg: make a few helper functions static as they should.
16546
16547 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16548
16549         * Makefile.am: Move mini-codegen.c to common_sources.
16550
16551 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16552
16553         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16554         instructions.
16555         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16556         mini-ppc.h: port to use the common local register allocator.
16557
16558 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16559
16560         * mini.h: Remove the comment too then.
16561
16562 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16563
16564         * mini.h: put back backend.data which is to be used shortly and
16565         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16566         pointers on 4 byte boundaries it'd have much bigger issues running
16567         and you can ifdef it out anyway.
16568
16569 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16570
16571         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16572         MonoInst size by 4 bytes on 64 bit machines.
16573
16574 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16575
16576         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16577         replacement with more meaningful field names. Arch maintainers, please
16578         check the assigned names are good enough for your arch.
16579
16580 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16581
16582         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16583         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16584
16585 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16586
16587         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16588         relocations and memory requirements, put the optimization flags
16589         definitions in their own file.
16590
16591 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16592
16593         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16594
16595         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16596
16597 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16598
16599         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16600
16601 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16602
16603         * inssel.brg: use the correct function to get the size of an item
16604         in an array, given an element class.
16605         * aot-compiler.c: do not access class->class_size directly.
16606
16607 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16608
16609         * mini.h, debug-mini.c: added a debugging function to print
16610         info about local variables and arguments in a jitted method.
16611
16612 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16613
16614         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16615
16616         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16617
16618 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16619
16620         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16621         inner and outer loops when passing vtypes.
16622
16623 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16624
16625         * mini-ppc.c: take into account the cpu errata for cache flushing
16626         which caused some random errors (bug #79381).
16627
16628 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16629
16630         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16631         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16632
16633 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16634
16635         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16636         loaded.
16637
16638         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16639         freebsd ports tree.
16640
16641         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16642         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16643
16644         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16645         displacement.
16646
16647 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16648
16649         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16650
16651 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16652
16653         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16654         macro does not have to be changed during debugging.
16655
16656         * 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>.
16657
16658         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16659
16660         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16661         
16662         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16663         MONO_ARCH_NO_EMULATE_MUL is defined.
16664
16665         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16666
16667         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16668
16669         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16670
16671         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16672         
16673 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16674
16675         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16676         stuff to mini-exceptions.c where it is used.
16677
16678         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16679         setup code, the real one is in mini-exceptions.c.
16680
16681         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16682         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16683         some changes from the freebsd ports tree.
16684
16685         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16686         constants.
16687         
16688         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16689
16690 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16691
16692         * mini.c: on Linux, check for /proc to be mounted
16693         (bug# 79351, novell bug#201204).
16694
16695 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16696
16697         * mini.c: handle cases where pthread_attr_getstack() behaves
16698         incorrectly (bug #78096).
16699
16700 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16701
16702         * mini-arm.c: support larger stack frames (bug #79272).
16703
16704 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16705
16706         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16707
16708         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16709         tokens.
16710
16711         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16712         mono_class_from_name () to find a class from its name.
16713
16714         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16715
16716 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16717
16718         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16719
16720 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16721
16722         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16723
16724 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16725
16726         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16727         callinfo->trampoline.
16728
16729         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16730         fixes #79271.
16731         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16732         future.
16733
16734 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16735
16736         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16737
16738 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16739
16740         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16741         stats.method_trampolines, it is already done by the generic trampoline code.
16742
16743         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16744         
16745 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16746
16747         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16748
16749         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16750
16751         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16752
16753         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16754         
16755         * mini.c (print_jit_stats): Print new stats.
16756
16757         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16758
16759 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16760
16761         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
16762         Address on two dimensional arrays. Fixes #78729.
16763
16764         * mini.h (MonoCompile): Add a 'skip_visibility' field.
16765
16766         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
16767         a method.
16768
16769         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
16770
16771         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
16772         #79130.
16773         
16774         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
16775         a race condition.
16776         (mini_get_ldelema_ins): Ditto.
16777
16778 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
16779
16780         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
16781         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
16782         Fixes #79213.
16783
16784 2006-08-29 Neale Ferguson <neale@sinenomine.net>
16785
16786         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
16787         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
16788
16789         * exceptions-s390x.c: Cosmetic change.
16790
16791         * tramp-s390.c: Fix warning.
16792
16793         * cpu-s390.md: Correct length of mul_imm.
16794
16795 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
16796
16797         * aot-compiler.c: added binary writer with ELF backend
16798         implementation (only on Linux/x86 for now).
16799
16800 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16801
16802         * Makefile.am: Don't run net 2.0 AOT tests.
16803
16804         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
16805         (mono_compile_assembly): Skip net 2.0 assemblies as well.
16806
16807         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
16808
16809 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16810
16811         * aot-compiler.c: simplified and refactored the asm-writing code
16812         to allow different backends.
16813
16814 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16815
16816         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
16817
16818         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
16819         little. Share patches of type TYPE_FROM_HANDLE as well.
16820
16821         * mini.c (mono_patch_info_equal): New helper function.
16822         (mono_patch_info_hash): Ditto.
16823
16824         * aot-compiler.c (emit_method_code): Fix s390 build.
16825
16826         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
16827         is not handled because it is stored as a flag and not as a type ctor. Fixes
16828         #79016.
16829
16830 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
16831
16832         * aot-compiler.c: Fix computation of GOT slot statistics.
16833         
16834         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
16835         Also remove support for not PIC AOT.
16836
16837         * mini.h: Bump AOT file format version.
16838
16839         * objects.cs: Add a test for #78990.
16840
16841         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
16842         (peter.dettman@iinet.net.au). Fixes #79087.
16843
16844         * basic-long.cs: Add a test for the above.
16845
16846 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
16847
16848         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
16849         
16850         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
16851         code somewhat.
16852
16853 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
16854
16855         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
16856         exceptions.
16857
16858 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
16859
16860         * mini.c: Don't verify COM proxy invoke calls
16861         
16862
16863 2006-08-10  Dick Porter  <dick@ximian.com>
16864
16865         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
16866         which process is holding semaphores locked.
16867
16868 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
16869
16870         * mini-ia64.c mini-amd64.c: Fix #79027.
16871
16872         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
16873
16874         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
16875
16876         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
16877         implicit arguments in a vararg call. Fixes #79027.
16878
16879 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
16880
16881         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
16882         (mono_get_array_new_va_signature): Ditto.
16883
16884 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
16885
16886         * aot-runtime.c: Call init_plt lazily.
16887
16888         * inssel-long.brg: Fix unsigned long->int conversion.
16889
16890         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
16891
16892         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
16893         that most data is now in the .rss/.data section.
16894
16895 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
16896
16897         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
16898
16899         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
16900
16901         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
16902
16903         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
16904
16905         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
16906         virtual call. Fixes #79010.
16907
16908         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
16909         and use the result as the this argument in the real call.
16910
16911         * generics.2.cs: Add a new test for #79010.
16912         
16913 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
16914
16915         * mini-x86.c: Fix a warning.
16916
16917         * aot-compiler.c: Add a bunch of statistics.
16918
16919         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
16920
16921 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
16922
16923         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
16924
16925 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
16926
16927         * 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>.
16928
16929 2006-07-13  Miguel de Icaza  <miguel@novell.com>
16930
16931         * mini.c (mono_method_to_ir): Obtain the original method in the
16932         CIL stream and use this to perform validation.
16933
16934         Fixed: #78816
16935
16936 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
16937
16938         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
16939         (mono_arch_call_opcode): Ditto.
16940
16941         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
16942         #78826.
16943
16944         * mini.c (mono_patch_info_dup_mp): New helper function.
16945         
16946         * aot-compiler.c (compile_method): Fix some of the memory allocated during
16947         compilation. Fixes #78827.
16948
16949 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
16950
16951         * declsec.c: Use original security informations for
16952           MONO_WRAPPER_MANAGED_TO_MANAGED.
16953
16954 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
16955
16956         * mini.c: Allow Com Interop methods/classes and
16957         don't verify COM wrapper calls
16958         
16959
16960 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
16961
16962         * inssel-long32.brg: Fix long->i4 checked conversion.
16963
16964         * exceptions.cs: Add a test for the above.
16965
16966 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
16967
16968         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
16969
16970         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
16971         leaks.
16972
16973         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
16974         #78775.
16975
16976 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
16977
16978         * mini.c: Fix solaris/x86 exception handling.
16979
16980         * Makefile.am: Get rid of $(ICU_LIBS).
16981
16982 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
16983
16984         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
16985         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
16986         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
16987
16988         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
16989
16990         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
16991         this function causes a SIGSEGV.
16992
16993 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
16994
16995         * mini.c: Remove unused solaris/x86 includes.
16996
16997 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
16998
16999         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
17000
17001 2006-06-20  Jb Evain  <jbevain@gmail.com>
17002
17003         * cpu-g4.md: fix max length of start_handler instruction.
17004
17005 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17006         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17007
17008 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17009         * ssa.c: Fixed bug 78653 for SSA based deadce.
17010         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17011         MonoInst.flags, used in SSA based deadce.
17012         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17013         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17014
17015 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17016
17017         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17018         it can end up using non executable memory on ppc64 systems
17019         running ppc32 userspace (fix from Johannes Berg).
17020
17021 2006-06-14  Dick Porter  <dick@ximian.com>
17022
17023         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17024         4.1.1
17025
17026 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17027         * mini.c: Made so that inline is locally disabled if it would
17028         trigger a .cctor, because too many apps depend on this behavior
17029         (which seems to be also the one of the MS CLR).
17030
17031 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17032
17033         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17034         No idea why this worked before.
17035
17036         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17037         which branch to outer exception clauses since they could skip the
17038         inner finally clauses. Fixes #78633.
17039
17040         * exceptions.cs: Add a test for the above.
17041
17042         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17043         Fixes #78629.
17044
17045         * iltests.il: Add a test for the above.
17046
17047 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17048
17049         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17050         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17051
17052         * iltests.il: Add a test for the above.
17053
17054 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17055
17056         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17057         
17058         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17059         methods as instrinsics.
17060
17061 2006-06-09  Wade Berrier <wberrier@novell.com>
17062
17063         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17064         (simple-cee-ops.h ssapre-mini-ops.h)
17065
17066 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17067
17068         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17069         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17070         instruction).
17071         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17072         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17073
17074 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17075
17076         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17077
17078 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17079
17080         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17081         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17082         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17083         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17084         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17085         of opcodes, so that bug 78549 should not happen again.
17086         * ssapre.c: Updated to use the renamed files.
17087
17088 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17089
17090         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17091         in OP_ATOMIC_EXCHANGE_I4.
17092
17093 2006-06-07  Wade Berrier <wberrier@novell.com>
17094
17095         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17096         in mono_debugger_create_notification_function)
17097
17098 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17099
17100         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17101         
17102         * mini.c (type_from_stack_type): Disable some changes which do not
17103         seem to work.
17104
17105         * driver.c: Reenable opts.
17106
17107         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17108         of the evaluation stack.
17109         
17110         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17111         evaluation stack trace at entry to the bblock.
17112
17113         * mini.c (merge_stacks): New function to perform verification of stack merges.
17114         Turned off by default.
17115
17116         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17117         STACK_MP.
17118         
17119 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17120
17121         * local-propagation.c: Fixed bug 78549.
17122
17123 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17124
17125         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17126
17127 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17128
17129         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17130         tramp-arm.c, tramp-ia64.c
17131         (mono_debugger_create_notification_function): Update signature to
17132         new signature and use new protocol for creating the notification
17133         function.  
17134
17135         Should fix the build.
17136
17137 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17138
17139         * exceptions-ppc.c (mono_jit_walk_stack)
17140         (ves_icall_get_frame_info): Fix the build
17141
17142 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17143
17144         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17145
17146 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17147
17148         * il2tests.2.il: New file for generics CIL tests.  Add test for
17149         #78019.
17150         * Makefile.am: Update.
17151
17152         Fix #78019
17153         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17154         to nullable types.
17155
17156 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17157
17158         * aliasing.c: Fixed bug 78311.
17159
17160 2006-05-29  Martin Baulig  <martin@ximian.com>
17161
17162         * mini-exceptions.c (mono_find_jit_info): When computing the
17163         native offset, check whether we're actually inside the method's
17164         code; call mono_debug_print_stack_frame() to format the frame.
17165         (ves_icall_System_Exception_get_trace): Call
17166         mono_debug_print_stack_frame() to format the stack frame.
17167         (ves_icall_get_trace): Update to the new debugging API.
17168         (mono_jit_walk_stack_from_ctx): Likewise.
17169         (ves_icall_get_frame_info): Likewise.
17170
17171         * mini.c (get_method_from_ip): Use the new debugging API.
17172         (mono_print_method_from_ip): Likewise.
17173
17174         * exceptions-ppc.c
17175         (mono_jit_walk_stack): Use the new debugging API.
17176         (ves_icall_get_frame_info): Likewise.   
17177
17178 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17179
17180         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17181
17182 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17183
17184         * mini.c: Added "limitator" to inline for debugging.
17185
17186 2006-05-24  Martin Baulig  <martin@ximian.com>
17187
17188         * debug-debugger.c (mono_debugger_init): Create a private,
17189         malloc()-based code manager for the notification function and
17190         intentionally leak it on exit.  This fixes the crash-on-exit race
17191         condition.
17192
17193         * tramp-amd64.c
17194         (mono_debugger_create_notification_function): Added
17195         `MonoCodeManager *' argument.
17196
17197         * tramp-x86.c
17198         (mono_debugger_create_notification_function): Added
17199         `MonoCodeManager *' argument.
17200
17201 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17202
17203         * aliasing.c: Fixed 64 bit issue.
17204         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17205         default since all known bugs are fixed (one more time!).
17206
17207 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17208
17209         * mini.c: write barrier support.
17210
17211 2006-05-23  Martin Baulig  <martin@ximian.com>
17212
17213         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17214         check at the top of the file.
17215
17216 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17217
17218         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17219         reverting changes without reason and without changelog entries.
17220
17221 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17222
17223         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17224         to a few opcodes. Fixes #78439.
17225
17226         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17227         consistency with other archs.
17228
17229         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17230
17231 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17232
17233         * debug-debugger.c: fix the build.
17234
17235 2006-05-17  Martin Baulig  <martin@ximian.com>
17236
17237         * debug-debugger.c
17238         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17239         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17240         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17241         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17242
17243 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17244
17245         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17246
17247 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17248
17249         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17250         MONO_TYPE_GENERICINST.
17251         
17252         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17253         MONO_TYPE_GENERICINST.
17254
17255 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17256
17257         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17258         #78325.
17259
17260 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17261
17262         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17263         mempool.
17264         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17265
17266 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17267
17268         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17269         mono_trace_cleanup ().
17270
17271         * iltests.il: Fix problem with the newly added test.
17272
17273         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17274         due to register constraints, free up the previous hreg. Fixes #78314.
17275
17276         * iltests.il: Add new test for #78314.  
17277
17278         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17279         Interlocked.Add. Fixes #78312.
17280
17281         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17282         
17283 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17284
17285         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17286
17287 2006-05-05  Martin Baulig  <martin@ximian.com>
17288
17289         * debug-mini.c (mono_debug_open_block): New method.
17290
17291         * mini-amd64.c
17292         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17293         the beginning of each basic block.
17294
17295         * mini-x86.c
17296         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17297         the beginning of each basic block.
17298
17299 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17300
17301         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17302         default until I understand why they break the build on amd64.
17303
17304 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17305
17306         * mini.c (mini_cleanup): Call mono_cleanup ().
17307
17308         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17309         errors.
17310
17311 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17312
17313         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17314         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17315         default since all known bugs are fixed, and I cannot reproduce bug
17316         77944... I'm asking Matt Hargett to test again after this commit.
17317
17318 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17319
17320         * mini-codegen.c: Fixed typo that thrashed inline.
17321
17322 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17323
17324         * dominators.c (compute_dominators): Avoid using a worklist since
17325         it is not correct in some cases. Instead, iterate over all bblocks as
17326         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17327
17328 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17329
17330         * mini.c (mono_jit_compile_method_inner): Use
17331         mono_prepare_exception_from_error that resets the value
17332         internally.
17333
17334 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17335
17336         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17337         
17338 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17339
17340         * aliasing.c: Fixed bug 78210.
17341
17342 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17343
17344         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17345         default until all their problems (or the ones they trigger) are fixed.
17346
17347 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17348
17349         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17350         
17351         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17352         as loaded only after resolving patches since that could invoke the same method.
17353
17354         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17355
17356         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17357         functions.
17358
17359         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17360         AOT loader.
17361
17362         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17363         stack.
17364
17365         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17366         made from AOT code through the PLT table.
17367
17368         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17369         holding the plt offset when a call is made to the aot plt trampoline.
17370         
17371 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17372
17373         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17374         amd64 AOT support.
17375
17376         * Makefile.am (common_sources): Fix build breakage.
17377
17378         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17379         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17380         intra-assembly calls if possible.
17381         
17382         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17383
17384         * mini-trampolines.c: Handle PLT entries.
17385
17386         * mini.c: Avoid creating a GOT var for calls.
17387
17388         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17389         from mscorlib code.
17390
17391         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17392         from mscorlib code.
17393
17394         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17395         AOT code.       
17396
17397         * mini.h: Bump AOT file format version.
17398         
17399         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17400         covers more cases.
17401
17402 2006-04-25  Martin Baulig  <martin@ximian.com>
17403
17404         * driver.c: Disable copyprop, consprop and inline when running
17405         inside the debugger.
17406
17407 2006-04-25  Martin Baulig  <martin@ximian.com>
17408
17409         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17410         with `get_current_thread' and added `detach'.
17411         (MonoDebuggerMetadataInfo): Added `thread_size',
17412         `thread_tid_offset', `thread_stack_ptr_offset' and
17413         `thread_end_stack_offset'.
17414
17415 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17416
17417         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17418         aot-runtime.c.
17419
17420         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17421         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17422
17423         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17424
17425         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17426
17427         * aot.c: Add support for ADJUSTED_IID.  
17428
17429 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17430
17431         * aot.c (emit_method_order): Don't align method_order_end.
17432
17433         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17434         the interface ID changes.
17435
17436 2006-04-21  Dick Porter  <dick@ximian.com>
17437
17438         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17439         cleaning up a thread.  Fixes the new part of bug 77470.
17440
17441 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17442
17443         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17444         to managed wrapper.
17445                      
17446 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17447
17448         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17449         
17450         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17451         SIGSEGV. Fixes #78072.
17452
17453         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17454         unregister our SIGABRT handler.
17455
17456 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17457
17458         * mini.c: Disabled inline where it can alter the call stack in a
17459         way visible from managed code.
17460         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17461         default.
17462
17463 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17464
17465         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17466         on other platforms. Fixes #78089.
17467
17468 2006-04-13  Martin Baulig  <martin@ximian.com>
17469
17470         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17471         determine whether we're inside the debugger.
17472
17473         * debug-debugger.h
17474         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17475
17476 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17477
17478         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17479         handler clauses. Fixes #78024.
17480
17481         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17482         in the CALL_MEMBASE opcodes. Fixes #78088.
17483         (mono_arch_get_vcall_slot_addr): Ditto.
17484
17485 2006-04-10  Martin Baulig  <martin@ximian.com>
17486
17487         * debug-debugger.c: The thread handling code has now been moved
17488         into ../metadata/threads.c.
17489
17490 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17491
17492         * driver.c (mono_main): Fix --with-gc=none build.
17493
17494         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17495         (mono_spillvar_offset_float): Ditto.
17496         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17497         hreg, not when its !global, since on ia64, there is a third category: stacked
17498         registers.      
17499
17500 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17501
17502         * mini.c: set MonoInst->klass for load field address and a few other
17503         places.
17504
17505 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17506
17507         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17508
17509 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17510
17511         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17512         the branch opt changes.
17513
17514 2006-04-06  Dick Porter  <dick@ximian.com>
17515
17516         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17517         
17518         * wapihandles.c (mini_wapi_seminfo): 
17519         * driver.c (mono_main): Add semaphore info option
17520
17521 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17522
17523         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17524         branch optimization changes. Fixes #78009.
17525
17526 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17527
17528         * mini.c: ignore accessibility of methods in managed->native wrappers.
17529
17530 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17531
17532         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17533         
17534         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17535
17536 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17537
17538         * mini.c: Modify the branch optimizations to preserve the invariant that
17539         the entries inside the in_bb and out_bb arrays are unique.
17540         (mono_unlink_bblock): Avoid creation of new arrays.
17541
17542 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17543
17544         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17545         change (#77992).
17546
17547 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17548
17549         * mini.c (optimize_branches): Remove the "optimizations" in
17550         the cbranch1/cbranch2 -> branch cases which were causing several
17551         problems in the past. Fixes #77986.
17552
17553 2006-03-31  Chris Toshok  <toshok@ximian.com>
17554
17555         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17556         default optimizations :(
17557
17558 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17559
17560         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17561         branch.
17562
17563 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17564
17565         * local-propagation.c: Added comments to structs and removed
17566         "Mono" prefixes from local tree mover types.
17567
17568 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17569
17570         * Makefile.am (arch_sources): Define this for each architecture so 
17571         libmono_la_SOURCES is defined in one place.
17572
17573 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17574
17575         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17576         from handles/.
17577
17578 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17579
17580         * driver.c: print the GC name supplied by configure.
17581
17582 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17583
17584         * local-propagation.c: Added tree mover, and moved here all the
17585         local propagation code from mini.c
17586         * mini.c: Added support for treeprop, and moved all the local
17587         propagation code to local-propagation.c
17588         * mini.h: Added support for treeprop
17589         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17590         treeprop, inline and deadce by default
17591         * Makefile.am: Added local-propagation.c
17592
17593 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17594
17595         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17596
17597 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17598
17599         * debug-debugger.c: make it compile without the Boehm GC.
17600
17601 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17602
17603         * mini.c: fixed issue with mismatch when an icall is registered
17604         with multiple names but same address.
17605
17606 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17607
17608         * declsec.c, mini-exceptions.c: use write barrier to set reference
17609         fields of managed objects.
17610
17611 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17612
17613         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17614         (can_access_internals): Fix a warning.
17615
17616         * mini.c (print_method_from_ip): Rename this to 
17617         mono_print_method_from_ip so it gets exported.
17618
17619         * trace.c: Deal with strings inside StringBuilder's containing garbage
17620         and fix memory leaks. Fixes #77848.
17621
17622 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17623
17624         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17625         fixes #77787.
17626
17627 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17628         
17629         * mini-s390.c: Remove OP_X86_TEST_NULL.
17630
17631 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17632
17633         * mini.c: use the correct GetHashCode() for the moving collector.
17634
17635 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17636
17637         * liveness.c: Regalloc spill cost tuning.
17638
17639 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17640         
17641         * mini-s390x.h: Correct S390_LONG macro.
17642
17643         * mini-s390x.c: Cleanup unused code.
17644
17645 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17646
17647         * jit-icalls.h: New file.
17648
17649         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17650         icalls and include that instead of including jit-icalls.c.
17651
17652         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17653         OP_X86 opcodes.
17654
17655 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17656
17657         * mini.c: when checking for member accessibility, also check for
17658         friend assemblies and for explicit interface implementations.
17659
17660 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17661
17662         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17663
17664         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17665
17666         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17667         common cases are done first.    
17668
17669         * mini-ops.h: Only define platform specific opcodes on the given platform.
17670
17671         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17672         branch.
17673         
17674 2006-03-14  Martin Baulig  <martin@ximian.com>
17675
17676         Revert Paolo's change from r57348:
17677
17678         * mini.h: don't use gboolean for bitfields.
17679         * mini.c: verifier changes for fields and methods accessibility.
17680
17681 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17682
17683         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17684
17685         * mini-s390x.c: Fix conv_r_un.
17686
17687         * cpu-s390, cpu-s390x.md: Fix lengths.
17688
17689 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17690
17691         * mini.c: nested types have access to all the nesting
17692         levels, not just the enclosing types.
17693
17694 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17695
17696         * mini.c: added a few more verification checks.
17697
17698 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17699
17700         * liveness.c: Merge optimizations from the linear-il branch.
17701
17702 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17703
17704         * mini-ia64.c (emit_call): Add a comment.
17705
17706         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17707
17708         * tramp-ia64.c: Fix some warnings.
17709
17710 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17711
17712         * mini.h: don't use gboolean for bitfields.
17713         * mini.c: verifier changes for fields and methods accessibility.
17714
17715 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17716
17717         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17718         lazy icall wrapper changes.
17719
17720         * dominators.c: Replace all the dominator algorithms with faster
17721         ones from the linear-il branch.
17722
17723         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17724         the mempool.
17725
17726         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17727         common cases are done first.
17728
17729         * mini-amd64.c: Fix some warnings.
17730
17731         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17732         from the mempool.
17733
17734         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17735         added code.
17736
17737         * mini.h: Add a missing prototype.
17738
17739 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17740
17741         * mini.c: Compile icall wrappers lazily.
17742
17743         * mini-codegen.c: Use printf instead of g_print since its much faster.
17744
17745         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17746         function.
17747
17748         * mini.c (optimize_branches): Cache the negative result from 
17749         remove_block_if_useless ().
17750
17751         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17752         Also fix some bblock linking issues.
17753
17754         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17755         assembly files.
17756
17757         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
17758
17759         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
17760         accessed fields first, for better cache behavior.
17761         
17762 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
17763
17764         * mini.c: speedup IList<T> array accesses.
17765
17766 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17767
17768         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
17769         inline_costs counter. Fixes #77190.
17770
17771 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
17772
17773         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
17774         trace messages. Fixes #77706.
17775
17776 2006-03-04  Martin Baulig  <martin@ximian.com>
17777
17778         * tramp-amd64.c, tramp-x86.c
17779         (mono_debugger_create_notification_function): Use
17780         mono_global_codeman_reserve() to allocate a buffer at runtime and
17781         return it.
17782
17783         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
17784
17785         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
17786         notification function at runtime and then call `initialize' in the
17787         `MONO_DEBUGGER__debugger_info' vtable.
17788
17789 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
17790
17791         * iltests.il: Fix a visibility problem.
17792
17793 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17794
17795         * driver.c, mini.c: add hooks for the counters API.
17796
17797 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17798
17799         * driver.c: show disabled options.
17800
17801 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17802
17803         * linear-scan.c: always use cost-driven selection.
17804
17805 2006-02-28  Raja R Harinath  <rharinath@novell.com>
17806
17807         * jit-icalls.c (helper_compile_generic_method): Revert change from
17808         2006-02-24.
17809
17810 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
17811
17812         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
17813
17814 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
17815
17816         * inssel.brg: style fixes, mostly to force the updated monoburg
17817         to run for people using svn.
17818
17819 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
17820
17821         * mini.c: match monoburg changes.
17822
17823 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17824
17825         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
17826         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
17827         declaration in the header file.
17828
17829 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17830
17831         * helpers.c: reduce relocations and mem usage.
17832
17833 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17834
17835         * mini.h, mini-codegen.c: disable logging features if
17836         requested by configure.
17837
17838 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
17839
17840         * mini.c: tiny verifier changes.
17841
17842 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17843
17844         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
17845         cpu-pentium.md: stack alignment changes for osx/x86,
17846         partially from Geoff Norton <gnorton@customerdna.com>.
17847
17848 2006-02-24  Raja R Harinath  <harinath@gmail.com>
17849
17850         * jit-icalls.c (helper_compile_generic_method): Update to changes
17851         in metadata/class.c.
17852
17853 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
17854         
17855         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
17856         
17857         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
17858         interface calls with large offsets.
17859
17860 2006-02-23  Raja R Harinath  <rharinath@novell.com>
17861
17862         * jit-icalls.c (helper_compile_generic_method): Document the
17863         special-case we depend on so that we can inflate the method twice
17864         with the same context with no bad side-effects.
17865
17866 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
17867
17868         * mini-x86.c, mini-amd64.c: fix for case when xen support
17869         is disabled.
17870
17871 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17872
17873         * mini-x86.c, mini-amd64.c: generate code to access tls items
17874         in a faster way for Xen systems.
17875
17876 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17877
17878         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
17879         updates and compilation fixes for the OSX/x86 port, mostly from
17880         Geoff Norton <gnorton@customerdna.com>.
17881
17882 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
17883
17884         * inssel.brg: faster interface call implementation
17885         to sync with the interface_offsets MonoVTable changes.
17886
17887 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17888
17889         * mini.c: more verification checks.
17890
17891 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
17892
17893         * mini.c: added a few more verification checks.
17894
17895 2006-02-17      Neale Ferguson <neale@sinenomine.net>
17896
17897         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
17898         facility on the processor and use it if available.
17899
17900 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17901
17902         * driver.c, aot.c, mini.c: throw exception if the IL code is
17903         invalid or unverifiable.
17904
17905 2006-02-17  Raja R Harinath  <rharinath@novell.com>
17906
17907         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
17908         m.StructField.
17909
17910 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
17911
17912         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
17913
17914 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17915
17916         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
17917         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
17918         handling of instantiated generic valuetypes.
17919
17920 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
17921
17922         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
17923         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
17924         instead.
17925
17926         * generics.2.cs: Revert the nullable reftypes tests.
17927
17928 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
17929
17930         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
17931         using __builtin_frame_address (1) as it doesn't work in the presence
17932         of optimizations. Hopefully fixes #77273.
17933
17934         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
17935         -> generics.cs change as it doesn't work with some automake versions.
17936
17937 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17938
17939         * mini.c: handle systems that sue a different way to
17940         retrieve the stack address of the current thread.
17941
17942 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
17943
17944         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
17945         it specially in the makefile.
17946
17947         * generics.2.cs: Add tests for nullable reference types.
17948
17949 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17950
17951         * mini.c: always handle the case when mono_jit_init()
17952         is called in a thread different from the main thread,
17953         confusing libgc (bug #77309).
17954
17955 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
17956
17957         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
17958
17959 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
17960
17961         * mini.c: change optimize_branches () to use a single loop
17962         and introduce a new optimization to simplify some range checks.
17963
17964 2006-02-03  Martin Baulig  <martin@ximian.com>
17965
17966         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
17967         and merged with debugger_thread_manager_add_thread().
17968         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
17969         inform the debugger about the main thread.
17970
17971 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17972
17973         * basic.cs: Add test for div.un/rem.un constant folding.
17974
17975 2006-02-03  Neale Ferguson <neale@sinenomine.net>
17976
17977         * cpu-s390x.md: correct int_xor_imm length
17978
17979 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17980
17981         * generics.2.cs: New test for #77442.
17982
17983         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
17984         #77442.
17985
17986 2006-02-02  Martin Baulig  <martin@ximian.com>
17987
17988         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
17989         <mono/metadata/mono-debug-debugger.h>   
17990
17991         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
17992
17993 2006-02-02  Martin Baulig  <martin@ximian.com>
17994
17995         * debug-debugger.h: New header file for debug-debugger.c.
17996
17997         * debug-debugger.c: Big API cleanup; don't run the managed Main()
17998         function is a separate thread anymore; add support for attaching.
17999
18000 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18001
18002         * tramp-x86.c: Fix a warning.
18003
18004 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18005
18006         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18007         on very large methods.
18008
18009         * aot.c (load_patch_info): Fix a warning.
18010
18011 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18012
18013         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18014         mini-ops.h: alu membase optimizations.
18015
18016 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18017
18018         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18019         to speedup StringBuilder.
18020
18021 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18022
18023         * dominators.c (mono_compute_natural_loops): Fix detection of
18024         loop body start blocks.
18025
18026         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18027
18028 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18029
18030         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18031         #75145.
18032
18033 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18034
18035         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18036
18037 2006-01-25  Martin Baulig  <martin@ximian.com>
18038
18039         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18040         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18041         started to cleanup this file a little bit.
18042
18043 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18044
18045         * mini.c: optimize a codepath frequently happening in generics code.
18046
18047 2006-01-23  Martin Baulig  <martin@ximian.com>
18048
18049         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18050
18051         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18052         functions directly.
18053
18054         * driver.c: debug-debugger.c is only available if
18055         `MONO_DEBUGGER_SUPPORTED' is defined.   
18056
18057 2006-01-23  Martin Baulig  <martin@ximian.com>
18058
18059         * debug-debugger.c: Only enable this on platforms where the Mono
18060         Debugger is working (x86 and x86_64).
18061
18062 2006-01-21  Martin Baulig  <martin@ximian.com>
18063
18064         The Mono Debugger is now using the normal `mono' instead of the
18065         `mono-debugger-mini-wrapper' when executing managed code.
18066
18067         * debug-debugger.c: New file; previously known as
18068         debugger/wrapper/wrapper.c.
18069
18070         * debug-mini.c (mono_init_debugger): Removed.
18071
18072         * driver.c (mono_main): Added new `--inside-mdb' command line
18073         argument which is used when running inside the debugger.
18074
18075 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18076
18077         * liveness.c (mono_analyze_liveness): Remove some unused data
18078         structures.
18079
18080 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18081
18082         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18083
18084 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18085
18086         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18087         depends on implementation details of monobitset.
18088
18089         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18090         Fixes #77271.
18091
18092 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18093
18094         * liveness.c: Update after monobitset changes.
18095
18096 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18097
18098         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18099
18100 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18101
18102         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18103
18104         * mini-s390x.c: Remove warning messages.
18105
18106 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18107
18108         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18109
18110 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18111
18112         * generics.2.cs: Add ldelem/stelem_any test.
18113
18114 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18115
18116         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18117
18118 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18119
18120         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18121         
18122 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18123
18124         * generics.2.cs: Reenable vtype tests.
18125
18126         * inssel-x86.brg: Remove an icorrect valuetype rule.
18127
18128 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18129
18130         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18131         initial support for OP_ABS.
18132
18133 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18134
18135         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18136
18137 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18138
18139         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18140         conversion and implement LADD/LSUB.
18141
18142         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18143         architectures.
18144
18145 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18146
18147         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18148
18149         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18150         architectures.
18151
18152 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18153
18154         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18155         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18156         (stack walk problem).
18157
18158 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18159
18160         * aot.c (mono_aot_load_method): Fix a warning.
18161
18162 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18163
18164         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18165
18166 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18167
18168         * iltests.il: Add test for #77148.
18169
18170         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18171         #77148.
18172
18173 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18174
18175         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18176
18177 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18178
18179         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18180         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18181
18182         * basic-long.cs: Add lconv-to-r4/r8 tests.
18183
18184 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18185
18186         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18187
18188         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18189         here as on other archs.
18190
18191 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18192
18193         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18194
18195 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18196
18197         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18198         
18199         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18200
18201         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18202         instrument_prolog; Add memory_barrier instruction.
18203
18204 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18205
18206         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18207
18208 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18209
18210         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18211
18212         * aliasing.c inssel.brg: Fix warnings.
18213
18214         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18215         could skip initialization of some parts of memory.
18216
18217         * mini.c mini-ia64.c: Fix warnings.
18218
18219         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18220
18221 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18222
18223         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18224         a crash seen on sparc.
18225
18226         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18227         
18228         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18229
18230 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18231
18232         * mini-ops.h: Add s390_backchain instruction
18233
18234         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18235
18236         * cpu-s390.md: Add s390_backchain instruction
18237
18238         * mini-s390.c: Significant ABI changes
18239
18240         * mini-s390.h: Cater for zero length structures
18241
18242 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18243
18244         * mini-s390.c: ABI fixes
18245
18246         * inssel-s390.brg: Remove debug statements
18247
18248         * cpu-s390.md: Fix length of ATOMIC_xx operations
18249
18250 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18251
18252         * basic-float.cs: Add float<->long conversion tests.
18253
18254 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18255
18256         * mini-s390.c: Fix LOCALLOC processing.
18257
18258         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18259
18260 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18261
18262         * iltests.il: Add tests for some opcodes not covered by the other
18263         tests.
18264
18265 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18266
18267         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18268         register loading for Tail processing; Correct trace output.
18269
18270         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18271
18272         * cpu-s390.md: Correct size of jmp instruction. 
18273
18274 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18275
18276         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18277
18278 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18279
18280         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18281           Bring s390 up to current level.
18282
18283 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18284
18285         * generics.2.cs: Disable the newly added tests as they do not work yet.
18286         
18287         * generics.2.cs: Add valuetype tests.
18288
18289 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18290
18291         * basic-long.cs: Add i4->u8 test.
18292
18293         * objects.cs: Add tests for JIT intrinsic.
18294
18295         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18296         optimizations lost by a mistake.
18297
18298 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18299
18300         * basic-long.cs: Remove a test moved to objects.cs.
18301
18302         * arrays.cs: Add more array tests.
18303
18304 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18305
18306         * arrays.cs: Add new tests for multi-dimensional arrays.
18307
18308 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18309
18310         * Makefile.am (test_sources2): Add generics.2.cs.
18311         (EXTRA_DIST): Add test_sources2.
18312
18313 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18314
18315         Support for boxing and unboxing nullable types as well as the
18316         isinst operation on nullables, per the CLI ammendment.
18317
18318         * inssel.brg (CEE_ISINST): Special case for nullable
18319
18320         * mini.c (handle_unbox_nullable): new method
18321         (handle_box): Special case for nullable types
18322         (mono_method_to_ir): Call handle_unbox_nullable in correct
18323         places.
18324
18325         * generics.2.cs: New test suite
18326
18327         * Makefile.am: Support for regression tests with generics.
18328
18329 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18330
18331         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18332         allocated to registers. Fixes #76800.
18333
18334 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18335
18336         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18337
18338 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18339
18340         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18341         of platforms.
18342
18343 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18344
18345         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18346         objects.cs.
18347
18348         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18349         
18350         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18351 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18352
18353         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18354         single precision before storing to a single precision location.
18355
18356 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18357
18358         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18359
18360 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18361
18362         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18363         correct files.
18364
18365         * basic.cs: Remove test_0_byte_compares test which was moved to
18366         objects.cs a long time ago.
18367
18368 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18369
18370         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18371
18372 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18373
18374         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18375         handlers are called.
18376
18377         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18378         throwing code.
18379
18380          * mini-ia64.c: Add support for the throw->branch exception 
18381         optimization.   
18382
18383         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18384
18385 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18386
18387         * mini.c: Enabled "fastpath" deadce :-)
18388         
18389 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18390
18391         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18392         alias analysis pass to support it.
18393         * mini.h: Likewise.
18394         * ssa.c: Likewise.
18395         * liveness.c: Likewise (liveness computation can use aliasing
18396         information to be more accurate).
18397         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18398         moreover made so that "--compile-all" uses the given optimization
18399         flags and not the default ones.
18400         * aliasing.c: Alias analysis (new file).
18401         * aliasing.h: Likewise.
18402         * Makefile.am: added "aliasing.c" and "aliasing.h".
18403         
18404 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18405
18406         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18407         OP_L opcodes.
18408
18409 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18410
18411         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18412         fp >= end_of_stack exit condition, as it is not needed, and it might
18413         become true for fp eliminated frames.
18414
18415 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18416
18417         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18418         coded offsets.
18419
18420 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18421
18422         * mini-arm.c: fixed alignment of doubles/longs to match
18423         the C ABI (bug #76635).
18424
18425 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18426
18427         * aot.c: fix compilation with --enable-minimal=aot.
18428
18429 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18430
18431         * mini-arm.c: fixed compatibility with the new
18432         floating point emulator package for compares.
18433
18434 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18435
18436         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18437
18438 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18439
18440         * mini-exceptions.c (print_stack_frame): Output to stderr.
18441         (mono_handle_native_sigsegv): Ditto.
18442
18443 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18444
18445         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18446         OP_LCONV_TO_OVF_I implementation.
18447
18448         * mini-amd64.c: Add support for the throw->branch exception 
18449         optimization.
18450
18451         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18452         when the catch clause catches a more general exception, i.e. Object.
18453
18454 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18455
18456         * cpu-ia64.md: Remove unused opcodes.
18457
18458         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18459         specific defines for architectures defining USE_SIGACTION.
18460
18461         * mini-ia64.c: Fix some warnings.
18462
18463         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18464         version seemed to skip a frame.
18465
18466 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18467
18468         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18469         only calls which are made to native code use this flag.
18470
18471 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18472
18473         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18474         varargs methods as well.
18475         
18476         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18477         which have save_lmf set. Reorganize methods prologs a bit.
18478
18479         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18480         debugger to the proper place.
18481
18482 2005-10-29  Martin Baulig  <martin@ximian.com>
18483
18484         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18485         when running inside the debugger until the debugger has support
18486         for it.
18487
18488 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18489
18490         * mini.h: Fix a warning.
18491
18492 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18493
18494         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18495         we expose publicly, this returns the string.
18496
18497 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18498
18499         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18500         with fp elimination.
18501
18502 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18503
18504         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18505         native stacktrace using the glibc 'backtrace' function if available.
18506
18507 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18508
18509         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18510
18511         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18512         handle SIGSEGVs received while in native code.
18513
18514         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18515         code, call mono_handle_native_sigsegv which will abort the runtime
18516         after printing some diagnostics, instead of converting it into a
18517         confusing NullReferenceException.
18518
18519 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18520
18521         * cpu-pentium.md: Remove unused opcodes.
18522
18523 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18524
18525         * mini-amd64.h (MonoLMF): Add rsp field.
18526
18527         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18528         the lmf too.
18529
18530 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18531
18532         * mini-codegen.c (get_register_spilling): Fix some warnings.
18533
18534 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18535
18536         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18537         elimination during exception handling. Enable fp elimination by
18538         default.
18539
18540         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18541         elimination.
18542
18543 2005-10-16  Martin Baulig  <martin@ximian.com>
18544
18545         * mini-exceptions.c
18546         (mono_debugger_run_finally): New public method for the debugger.
18547
18548 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18549
18550         * debug-mini.c (mono_debug_init_method): Fix warning.
18551
18552         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18553         the 'exname' parameter const to fix some warnings.
18554
18555 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18556
18557         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18558         introduced by the previous patch.
18559
18560 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18561
18562         * basic-float.cs: Add test for precision of float arithmetic.
18563
18564         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18565         when loading/storing single values from/to memory.
18566
18567         * mini.c (mono_jit_compile_method_with_opt): Create the function
18568         pointers in the correct domain.
18569
18570 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18571
18572         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18573         introduced by previous patch.
18574         
18575         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18576         when out_filter_idx is NULL.
18577
18578         * mini-exceptions.c: Don't run filter clauses twice during exception
18579         handling. Fixes #75755.
18580
18581 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18582
18583         * aot.c: Add support for ldflda wrappers.
18584
18585         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18586         #75902.
18587
18588 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18589
18590         * mini.c, mini.h: do not consider exception handlers blocks when
18591         setting up interface variables.
18592
18593 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18594
18595         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18596
18597 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18598
18599         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18600         causes a regression.
18601
18602         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18603
18604 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18605
18606         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18607         of the OP_P definitions.
18608
18609         * TODO: Add a proposal for dealing with the CEE/OP mess.
18610
18611         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18612         optimizations from the x86 port.
18613
18614         * cpu-amd64.md: Ditto.
18615
18616         * basic.cs basic-long.cs: Add tests.
18617
18618 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18619
18620         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18621         Patrik Torstensson's implementation of my exception-handling
18622         optimization idea, when the exception object is not used
18623         (bug #62150).
18624
18625 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18626
18627         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18628         of the mul_imm optimizations from the old jit.
18629
18630 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18631
18632         * mini.c, liveness.c: patch by Patrik Torstensson and
18633         Zoltan Varga to improve performance in methods with
18634         exception clauses.
18635
18636 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18637
18638         * driver.c: Remove 'Globalization' entry from --version.
18639
18640 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18641
18642         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18643         there is a profiler interested in JIT events.
18644
18645         * aot.c: Load profile files produced by the AOT profiling module, and
18646         reorder methods based on the profiling info. Add a 'method_order' table
18647         to the AOT file to make mono_aot_find_jit_info work with the reordered
18648         methods.
18649
18650         * mini.h: Bump AOT file version info.
18651
18652 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18653
18654         * mini-arm.h: work around what looks like a gcc bug when optimizations
18655         are enabled.
18656
18657 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18658
18659         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18660         conditionals.  Use ...
18661         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18662
18663 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18664
18665         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18666         to determine the amount of memory to copy when passing valuetypes.
18667
18668         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18669         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18670
18671 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18672
18673         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18674         information about aot.
18675
18676 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18677
18678         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18679         macros. This will allow a deadlock debugger to easily be plugged
18680         in.
18681
18682 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18683
18684         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18685
18686 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18687
18688         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18689         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18690         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18691         ($(arch_built)) [CROSS_COMPILING]: Error out.
18692
18693 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18694
18695         * aot.c: Add support for the no_special_static flag for classes.
18696
18697 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18698
18699         * Reapply reverted patches.
18700
18701         * *: Revert r50174 as well.
18702
18703         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18704
18705 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18706
18707         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18708
18709 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18710
18711         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18712         part of the SIG_HANDLER_SIGNATURE.  
18713
18714 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18715
18716         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18717         statistics.
18718
18719         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18720         introduced by previous patch.
18721
18722 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18723
18724         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18725         saved registers too.
18726
18727         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18728         upon the information returned by get_call_info ().
18729         
18730         * mini-x86.c (add_float): Fix stack size calculation.
18731         (mono_arch_call_opcode): Rewrite this so it works based up the
18732         information returned by get_call_info ().
18733         (mono_arch_get_this_vret_args): Ditto.
18734
18735 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18736
18737         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18738         in cinfo to determine the registers which need to be used.
18739
18740 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18741
18742         * driver.c (mono_main): Add --server and --desktop flags. 
18743
18744 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18745
18746         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18747         registers as global registers.
18748
18749         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18750         longer needed with the new register allocator.
18751
18752         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18753
18754         * cpu-ia64.md: Remove unused opcodes.
18755         
18756         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
18757         
18758 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
18759
18760         * cpu-amd64.md: Remove unused opcodes.
18761
18762         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
18763         needed with the new register allocator.
18764
18765         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
18766         reg-reg moves.
18767
18768 2005-09-16  Raja R Harinath  <rharinath@novell.com>
18769
18770         * Makefile.am (check-local): Don't invoke semdel-wrapper.
18771
18772 2005-09-16  Martin Baulig  <martin@ximian.com>
18773
18774         * exceptions-amd64.c
18775         (throw_exception): Don't call mono_debugger_throw_exception() if
18776         we're a rethrow - see the FIXME in the code.
18777
18778 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
18779
18780         * mini.c (mono_init_exceptions): This only works on some architectures.
18781         
18782 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18783
18784         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
18785         on ia64.
18786
18787         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
18788
18789         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
18790         now in mini-exceptions.c.
18791
18792 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
18793
18794         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
18795         now in mini-exceptions.c.
18796
18797 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18798
18799         * exceptions-x86.c: Applied patch from Patrik Torstensson 
18800         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
18801
18802         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
18803         code into mini-exceptions.c. Add some assertions to it.
18804
18805 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
18806
18807         * aot.c (emit_section_change): Applied patch from "The Software Team" 
18808         (<software@solmersa.com>). Fix as errors on windows.
18809
18810 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18811
18812         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
18813         method info into the LMF.
18814
18815 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18816         
18817         * mini-ia64.c: Add proper unwind info for method epilogs.
18818
18819         * exceptions-ia64.c: Add some code to help debugging.
18820         
18821         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
18822
18823         * mini-exceptions.c: Fix warning.
18824
18825 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18826
18827         * mini.c: Really fix build.
18828
18829         * mini-x86.c mini-amd64.c: Fix build.
18830
18831 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18832
18833         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
18834
18835         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
18836         some Interlocked methods as intrinsics.
18837
18838         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
18839         for Thread methods as well.
18840
18841         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
18842
18843         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
18844
18845         * mini-ia64.c mini-x86.c mini-amd64.c 
18846         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
18847         OP_MEMORY_BARRIER.
18848         
18849         * mini.c (mono_init_exceptions): Fix build breakage.
18850
18851 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
18852
18853         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
18854         of instructions. Use the new ia64_unw_op macros for emitting unwind
18855         info.
18856
18857         * mini.c (mono_init_exceptions): Initialize exception handling
18858         related trampolines at startup.
18859
18860 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
18861
18862         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
18863
18864 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
18865
18866         * mini.c: Handle type loading errors gracefully during compilation and
18867         throw the appropriate exception.
18868
18869 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
18870
18871         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
18872         for the mono binary.
18873
18874 2005-09-09  Martin Baulig  <martin@ximian.com>
18875
18876         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
18877         the release.
18878
18879 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18880
18881         * mini-arm.h: use emulation for conv.r.un for the release.
18882
18883 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18884
18885         * mini-arm.c, objects.cs: more fixes and tests for them.
18886
18887 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18888
18889         * mini-arm.c: align structures to at least 4 bytes to be able
18890         to keep our current optimized memcpy.
18891
18892 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
18893
18894         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
18895
18896 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18897
18898         * mini.c: ignore SIGPIPE.
18899
18900 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
18901
18902         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
18903
18904         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
18905
18906 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
18907
18908         * mini.h: Add prototype for mono_allocate_stack_slots_full.
18909
18910 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18911
18912         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
18913         exception handling support.
18914         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
18915         patch by Brian Koropoff <briank@marakicorp.com>).
18916
18917 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
18918
18919         * mini.c: revert another 'optimization' which breaks when
18920         items on the eval stack need to be saved at a basic block end
18921         (bug #75940).
18922
18923 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
18924
18925         * jit-icalls.c: for arrays, ensure we always provide
18926         lower bounds.
18927
18928 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
18929
18930         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
18931         
18932         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
18933
18934 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
18935
18936         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
18937         arguments in their original register.
18938
18939 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
18940
18941         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
18942         memset/memcpy.
18943
18944         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
18945         when ssapre is enabled.
18946
18947         * inssel-long.brg: Fix bug in previous patch.
18948
18949         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
18950         multiplication by a constant.
18951
18952 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
18953
18954         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
18955         icc.
18956
18957         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
18958         saving registers.
18959
18960 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
18961
18962         * inssel-arm.brg: apply changes tested by Brian Koropoff
18963         <briank@marakicorp.com>.
18964
18965 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
18966
18967         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
18968         
18969 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
18970
18971         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
18972         to the same register if dreg is just a base register.
18973         (print_ins): Improve printing of membase opcodes.
18974
18975         * inssel-x86.brg: Add optimized ldind(reg) rules.
18976
18977         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
18978
18979 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
18980
18981         * mini.c: when running under valgrind, set the stack bottom for
18982         the GC at the actual approximate stack for the app (fixes running
18983         mono with valgrind).
18984
18985 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
18986
18987         * mini.c: do no break at the first valuetype to init found
18988         (fixes bug #75791).
18989
18990 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
18991
18992         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
18993
18994 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
18995
18996         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
18997
18998 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
18999
19000         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
19001
19002 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19003
19004         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19005
19006         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19007         code.
19008
19009         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19010         code.
19011
19012         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19013         methods.
19014
19015 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19016
19017         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19018
19019 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19020
19021         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19022         in the tail recursion optimization.
19023
19024         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19025         debug info into the assembly file.
19026
19027         * iltests.il: Add test for filter regions.
19028
19029         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19030         initial stack of filter regions. Fixes #75755.
19031
19032 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19033
19034         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19035         stack requirements.
19036
19037 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19038
19039         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19040         the check for an already compiled method on non-ia64 platforms.
19041         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19042         proper domain.
19043
19044         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19045
19046         * inssel-x86.brg: Add some optimized call rules.
19047
19048 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19049
19050         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19051         method here.
19052
19053         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19054         mono_arch_patch_delegate_trampoline.
19055
19056         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19057
19058         * mini-trampolines.c: Fix build.
19059
19060         * mini-amd64.h: Add delegate trampolines.
19061
19062         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19063
19064         * inssel-amd64.brg: Add optimized call rules.
19065         
19066         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19067
19068         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19069
19070 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19071
19072         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19073         change.
19074
19075         * mini-ia64.c: Remove LMF fixmes.
19076
19077         * mini-ia64.h: Remove most fields from LMF.
19078
19079         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19080
19081         * mini-trampolines.c: Add support for IA64 function descriptors.
19082
19083         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19084         for IA64 function descriptors.
19085
19086 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19087
19088         * tramp-arm.c: patch the vtable for virtual calls. Added
19089         support code to register/unregister the LMF.
19090         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19091         more LMF work.
19092
19093 2005-08-19  Dick Porter  <dick@ximian.com>
19094
19095         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19096         bit value if needed.
19097
19098 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19099
19100         * mini.c (mini_get_method): Move handling of wrapper data here.
19101
19102         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19103
19104         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19105         virtual.
19106
19107         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19108         bblock->code does not remain empty.
19109
19110 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19111
19112         * arrays.cs: Add regression test for #75832.
19113
19114         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19115         rules. Fixes #75832.
19116
19117         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19118         instruction scheduling.
19119
19120 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19121
19122         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19123
19124 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19125
19126         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19127
19128         * mini-codegen.c: Fix VC build.
19129
19130         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19131
19132 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19133
19134         * mini.h: fix signature for mono_register_opcode_emulation.
19135
19136 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19137
19138         * mini.c: Get rid of most of the helper_sig_... constants using
19139         mono_create_icall_signature ().
19140
19141 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19142
19143         * jit-icalls.c (helper_ldstr): New helper function.
19144
19145         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19146
19147         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19148         throw, load the string using a helper call instead of creating a string object.
19149
19150         * aot.c: Update after LDSTR changes.
19151
19152         * mini.h: Bump AOT file version.
19153         
19154         * aot.c: Save class size info into the AOT file. Print more statistics during
19155         compilation.
19156
19157         * mini.h: Bump AOT file version.
19158
19159         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19160         ordering of disasm cases. Fixes #74957.
19161
19162 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19163
19164         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19165         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19166         the generic code needed for the ARM port.
19167
19168 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19169
19170         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19171         inssel-arm.brg: more ARM features and fixes.
19172
19173 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19174
19175         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19176         ARM port work in progress.
19177
19178 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19179
19180         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19181
19182         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19183
19184         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19185
19186         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19187
19188         * *-ia64.*: Ongoing IA64 work.
19189         
19190         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19191
19192 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19193
19194         * TODO: Remove out-of-data todo stuff.
19195
19196         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19197         dead code.
19198
19199         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19200
19201         * mini.h: Bump corlib version.
19202
19203 2005-07-27  Martin Baulig  <martin@ximian.com>
19204
19205         * mini-codegen.c
19206         (create_copy_ins): Added `const unsigned char *ip' argument; set
19207         `copy->cil_code' from it.
19208
19209 2005-07-27  Martin Baulig  <martin@ximian.com>
19210
19211         * mini-exceptions.c (mono_handle_exception): Don't call
19212         mono_debugger_handle_exception() for filters.
19213
19214 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19215
19216         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19217         as well.
19218
19219 2005-07-26  Martin Baulig  <martin@ximian.com>
19220
19221         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19222
19223         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19224         helper_compile_generic_method() if the method is actually virtual
19225         and non-final.
19226
19227 2005-07-26  Martin Baulig  <martin@ximian.com>
19228
19229         * mini.c
19230         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19231         public; this is now accessed directly by the debugger.
19232         (mono_generic_trampoline_code): Removed.
19233
19234         * debug-mini.c
19235         (mono_debug_init_method): Also add interncalls and wrappers.
19236
19237 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19238
19239         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19240
19241 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19242
19243         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19244
19245 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19246
19247         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19248
19249 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19250
19251         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19252         getting TLS offsets on AMD64 too.
19253
19254 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19255
19256         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19257
19258 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19259
19260         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19261         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19262
19263 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19264
19265         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19266
19267         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19268         to mini.c.
19269
19270         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19271         mono_sparc_is_virtual_call ().
19272         
19273         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19274
19275         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19276         trampoline parameters.
19277
19278         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19279         
19280         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19281         to mono_arch_get_vcall_slot_addr.
19282
19283         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19284         trampoline code.
19285
19286         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19287
19288 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19289
19290         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19291
19292 2005-07-19  Martin Baulig  <martin@ximian.com>
19293
19294         * exceptions-amd64.c (throw_exception): Call
19295         mono_debugger_throw_exception() here like we're doing it on i386.
19296
19297 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19298
19299         * mini-ia64.c: Add optimized TLS access support.
19300
19301 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19302
19303         * mini-exceptions.c: Ongoing IA64 work.
19304
19305         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19306
19307         * mini.c: Use the default optimization set when embedding. Fixes
19308         #75194.
19309
19310 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19311
19312         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19313         of trampolines to a separate file.
19314
19315         * mini-trampolines.c: New file.
19316
19317         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19318         separate file.
19319         
19320         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19321         amd64/ia64 code.
19322
19323         * mini-codegen.c: Fix cygwin build.
19324
19325 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19326
19327         * mini.c: Add some minor changes needed by the IA64 port.
19328
19329         * *-ia64.*: Ongoing IA64 work.
19330
19331 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19332
19333         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19334         trampolines into arch-independent and arch-dependent parts.
19335
19336         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19337
19338 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19339
19340         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19341
19342         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19343         the xp-regalloc-branch for amd64.
19344
19345         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19346         xp-regalloc-branch for x86.
19347
19348 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19349
19350         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19351
19352 2005-07-06  Martin Baulig  <martin@ximian.com>
19353
19354         * mini.c
19355         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19356         (mono_jit_runtime_invoke): Likewise.
19357
19358 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19359
19360         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19361         on x86 too.
19362         
19363         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19364         without loading their metadata. Reorganize the file format so exception handling+
19365         debug info is kept separate from normal method info. Create MonoJitInfo 
19366         structures for methods lazily.
19367
19368         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19369         loading metadata.
19370         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19371
19372         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19373
19374         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19375         in AOT code.
19376
19377         * mini.h: Bump AOT file version.
19378
19379 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19380
19381         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19382
19383 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19384
19385         * Makefile.am (check-local): Call semdel-wrapper.
19386
19387 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19388
19389         * mini-x86.c: Revert the last change as it seems to break the build..
19390
19391 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19392
19393         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19394         
19395         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19396
19397 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19398
19399         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19400         outside of the macro, so strange stuff doesn't happen with gcc4
19401         (NEW_AOTCONST_TOKEN): Likewise.
19402
19403 2005-06-28  Martin Baulig  <martin@ximian.com>
19404
19405         * mini.c (mini_class_is_system_array): New static method; use this
19406         instead of `klass->parent == mono_defaults.array_class' everywhere
19407         since this also works for the new generic array class.
19408
19409 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19410
19411         * inssel.brg: Remove warnings.
19412
19413 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19414
19415         * mini-ia64.c: Ongoing IA64 work.
19416
19417         * basic-float.cs: Add float->i1 conversion test.
19418
19419         * iltests.il: Add conv.u4 test.
19420
19421 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19422
19423         * inssel-long.brg: Fix bug caused by last change.
19424
19425 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19426
19427         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19428         BSDs.  Allows the x86 JIT to work on OSX86
19429
19430 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19431
19432         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19433         u4->i8 conversion.
19434
19435         * mini-ia64.c: Ongoing IA64 work.
19436
19437 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19438
19439         * mini-ia64.c: Ongoing IA64 work.
19440
19441         * driver.c: Clean up jit_code_hash as well when using --regression.
19442
19443         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19444
19445         * basic-long.cs: Add tests for long->u4 conversion.
19446
19447 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19448
19449         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19450         that we do not depend on undefined C behavior: the order stuff
19451         gets evaluated within an expression. Fixes mono when compiled on
19452         GCC 4.
19453
19454 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19455
19456         * *-ia64.*: Ongoing IA64 work.
19457
19458         * aot.c: Lower memory usage while loading AOT methods.
19459
19460         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19461
19462         * mini.h: Bump AOT file format version.
19463
19464 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19465
19466         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19467
19468 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19469
19470         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19471         not on callee assembly). Fixed some comments.
19472
19473 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19474
19475         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19476         it gets proper disassembly.
19477         (emit_method_info): Remove some dead code.
19478
19479         * mini.c (mini_method_compile): Allways allocate the GOT var in
19480         mono_method_to_ir for emulating opcodes.
19481
19482 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19483
19484         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19485         before freeing the code memory. Fixes #74990.
19486
19487         * objects.cs: Add regression test for #74992.
19488
19489         * liveness.c: Extend live ranges of arguments to the beginning of the
19490         method. Fixes #74992.
19491
19492         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19493         so it points into the faulting instruction.
19494
19495 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19496
19497         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19498
19499         * *-ia64.*: Ongoing IA64 work.
19500
19501         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19502
19503 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19504
19505         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19506
19507         * *-ia64.*: Ongoing IA64 work.
19508
19509 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19510
19511         * basic-long.cs: Add tests for add/sub.ovf.
19512
19513         * basic.cs: Add tests for sub.ovf.
19514
19515         * *-ia64.*: Ongoing IA64 work.
19516
19517 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19518
19519         * *-ia64.*: Ongoing IA64 work.
19520
19521         * basic.cs: Add conv.ovf.i4.un test.
19522
19523 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19524
19525         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19526         
19527 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19528
19529         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19530
19531 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19532
19533         * *-ia64.*: Ongoing IA64 work.
19534
19535 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19536
19537         * trace.[ch]:
19538         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19539
19540 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19541
19542         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19543
19544 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19545
19546         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19547
19548         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19549         of a call is callable by a near call.
19550
19551 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19552
19553         * mini-ia64.c: Ongoing IA64 work.
19554
19555 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19556
19557         * genmdesc.c: Make the generated array non-static.
19558
19559         * inssel-long.brg: Fix LSHR_IMM rule.
19560
19561         * *-ia64.*: Ongoing IA64 work.
19562
19563         * *-ia64.*: Ongoing IA64 work.
19564
19565 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19566
19567         * *-ia64.*: Ongoing IA64 work.
19568
19569         * *-ia64.*: Ongoing IA64 work.
19570         
19571         * mini-ia64.c: Ongoing IA64 work.
19572
19573         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19574
19575 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19576
19577         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19578         
19579         * objects.cs basic-long.cs: Move some tests to objects.cs.
19580
19581 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19582
19583         * *-ia64.*: Ongoing IA64 work.
19584
19585         * iltests.il: Add a new test.
19586
19587         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19588         newobj. Fixes #75042.
19589
19590 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19591
19592         * *-ia64.*: Ongoing IA64 work.
19593         
19594         * *-ia64.*: Ongoing IA64 work.
19595         
19596         * *-ia64.*: Ongoing IA64 work.
19597
19598         * basic.cs objects.cs: Move tests accessing static variables as well.
19599
19600         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19601
19602 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19603
19604         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19605
19606         * driver.c: Always print failed tests.
19607
19608         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19609         frame pointer.
19610
19611         * *ia64*: Ongoing IA64 work.
19612
19613 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19614
19615         * basic.cs: Add tests for add.ovf. Fix warnings.
19616
19617 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19618
19619         * driver.c (mono_main): Avoid crash if no argument is passed to
19620         --break;  Do not use g_error, but f_printf.   And fix all other
19621         ocurrences of the same crash.
19622
19623 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19624
19625         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19626         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19627         Fixes #74742.
19628
19629 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19630
19631         * *-ia64.*: Add beginnings of IA64 backend.
19632
19633         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19634
19635 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19636
19637         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19638         Fixes #74925.
19639
19640         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19641
19642         * mini-amd64.c: Fix a warning.
19643
19644 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19645
19646         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19647         in float_neg. Fixes #74897.
19648
19649         * mini-amd64.c (emit_call): Fix another near call bug.
19650
19651 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19652
19653         * declsec.c: Keep the appdomain information in the structure. Added a 
19654         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19655         value gets overwritten).
19656         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19657         an MonoAppDomain member to MonoSecurityFrame.
19658         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19659         used in the stack walk. Now use a MonoArray which grow (double) when
19660         it gets full.
19661
19662 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19663
19664         * mini.c: Re-enabled runtime cleanup, since running threads should
19665         now properly stop when exiting.
19666
19667 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19668
19669         * mini-codegen.c: New file contaning the arch-independent local
19670         register allocator. Not used by any architectures yet.
19671
19672         * mini.h linear-scan.c: Merge some changes from the 
19673         mini-xp-local-regalloc branch.
19674
19675 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19676
19677         * mini-amd64.c (emit_call): Fix calls to native functions when the
19678         runtime is compiled as a shared library. Fixes #74756.
19679
19680         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19681         on a literal field. Fixes #74751.
19682
19683 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19684
19685         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19686
19687 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19688
19689         * objects.cs: Add missing null casting test.
19690
19691 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19692
19693         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19694         in wrapper methods. Also rename 'address' variable to 'offset'.
19695
19696 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19697
19698         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19699         warnings.
19700         
19701         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19702
19703         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19704         work on windows.
19705
19706 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19707
19708         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19709
19710 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19711
19712         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19713         just the last bytes.
19714
19715 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19716
19717         * aot.c (mono_compile_assembly): Fix warning.
19718
19719         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19720         by the _MSC_VER stuff.
19721
19722 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19723
19724         * inssel-long.brg: Fix #74588.
19725
19726         * cpu-amd64.md: Fix #74591.
19727
19728         * iltests.il: Add new regression tests.
19729
19730 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19731
19732         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19733         valuetype.
19734
19735 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19736
19737         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19738
19739         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19740         from Bill Middleton <flashdict@gmail.com>.
19741
19742 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19743
19744         * arrays.cs: Add new regression test. Fix warnings.
19745
19746 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19747
19748         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19749         and leakage in CKFINITE.
19750
19751         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19752         this to a null op since it is called on amd64 too.
19753
19754         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19755
19756         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
19757         body since this is not used on amd64.
19758         
19759         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
19760
19761         * mini-amd64.c: Remove obsolete fixmes.
19762
19763         * mini.c (print_method_from_ip): Fix debugging support.
19764
19765 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19766
19767         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
19768         so that expressions that don't give much gain are not reduced.
19769         * ssapre.h: Likewise.
19770
19771 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19772
19773         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
19774
19775         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
19776
19777         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
19778
19779 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
19780
19781         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
19782
19783         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
19784
19785 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
19786
19787         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
19788         stack touching.
19789
19790         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
19791
19792         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
19793
19794         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
19795
19796         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
19797         MONO_ARCH_USE_SIGACTION. Fixes #74252.
19798
19799         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
19800
19801         * mini-x86.c: Fix up stack overflow handling.   
19802
19803         * exceptions.cs: Add new regression test.
19804
19805 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
19806
19807         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
19808         mono_jit_thread_attach.
19809
19810         * mini.c (mono_method_to_ir): Verify called method is not abstract.
19811
19812 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19813
19814         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
19815         avoid calling constructors using callvirt.
19816
19817         * inssel.brg: Fix #74073.
19818
19819 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
19820
19821         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
19822         compilation with non-GCC compilers.
19823         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
19824         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
19825
19826 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
19827
19828         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
19829         klass->interface_offsets (will likely fix bug#74073).
19830
19831 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19832
19833         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
19834
19835 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
19836
19837         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
19838         to amd64_div_reg_size ().
19839         
19840         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
19841
19842 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
19843
19844         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
19845
19846 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19847
19848         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
19849
19850 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19851
19852         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
19853         
19854         * mini.c (mono_precompile_assembly): Load and precompile referenced
19855         assemblies as well. Fixes #74015.
19856
19857 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
19858
19859         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
19860
19861 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
19862
19863         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
19864         a lot of checks and (anyway) permissions cannot work until corlib is 
19865         loaded.
19866
19867 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
19868
19869         * mini-ppc.c: fixed ABI issue on sysv/ppc.
19870
19871 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
19872
19873         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
19874         calls (fixes bug#72824).
19875
19876 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19877
19878         * mini.c: fix tail recursion elimination (see test in bug#73936).
19879
19880 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
19881
19882         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
19883         some fp functions in sse2 mode.
19884
19885 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
19886
19887         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
19888
19889 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
19890
19891         * mini.h mini.c: Add mono_get_jit_tls_key ().
19892
19893         * mini-x86.c: Enable fast TLS support on windows.
19894
19895 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
19896
19897         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
19898         * mini.c: Check for p/invoke method when generating code. If a
19899         p/invoke method, or it's class, isn't decorated with [Suppress
19900         UnmanagedCodeSecurity] then generate code to call System.Security.
19901         UnmanagedDemand (only if the security manager is active).
19902
19903 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19904
19905         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
19906         last change as it seems to cause strange crashes.
19907         
19908 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19909
19910         * *.c: handle unsafe function pointers where needed.
19911
19912 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19913
19914         * mini.c (mono_jit_free_method): Remove the fixme too.
19915
19916 2005-03-15  Miguel de Icaza  <miguel@novell.com>
19917
19918         * mini.c: As discussed, make the code actually free the delegate
19919         thunk now, to enable the debugging of delegate problems, use
19920         MONO_DEBUG=1 when running Mono. 
19921
19922         This takes also care of parts of the leaks as seen by Joe.
19923
19924 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
19925
19926         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
19927         thread_tls_offset calculation.
19928
19929 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
19930
19931         * declsec.c: Reworked linkdemand checks for icall. The previous code
19932         was using the declaration code (untrusted) and didn't work as expected
19933         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
19934         specific case.
19935
19936 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
19937
19938         * iltests.il: Add new localloc test.
19939
19940         * mini-amd64.c: Handle large stack allocations the same way as on
19941         windows if stack overflow handling is working.
19942         
19943         * mini-amd64.c: Allocate the signal stack using mmap.
19944
19945         * mini.c (sigsegv_signal_handler): Fix reading of context.
19946
19947         * mini-exceptions.c: Fix up stack overflow handling.
19948
19949         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
19950
19951         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
19952
19953         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
19954
19955         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
19956
19957         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
19958         tramp_init functions as they are no longer needed.
19959
19960 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
19961
19962         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
19963         
19964         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
19965
19966         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
19967         
19968         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
19969         support that now.
19970
19971         * mini-ops.h: Add OP_LMUL_IMM.
19972
19973         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
19974         long mul/div opcodes as intrinsic.
19975
19976         * mini-amd64.c (emit_call): Handle the case when the callee might be
19977         an AOT method.
19978
19979 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
19980
19981         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
19982         extra safe.
19983         
19984         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
19985
19986         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
19987
19988 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
19989
19990         * mini.c (mono_codegen): Don't leak here, to help people running
19991         monogrind.
19992
19993 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
19994
19995         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
19996         conversions in sse2 mode.
19997
19998         * basic-float.cs: Add regression test.
19999         
20000         * mini-amd64.c: Reenable sse2.
20001
20002 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20003
20004         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20005
20006 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20007
20008         * driver.c: Copyright text should include 2005.
20009         
20010 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20011
20012         * cpu-amd64.md (load_membase): Fix more max lengths.
20013
20014 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20015
20016         * cpu-amd64.md (load_membase): Fix max length.
20017
20018         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20019
20020         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20021
20022         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20023         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20024
20025         * basic-float.cs: Add rounding regression test.
20026
20027         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20028
20029 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20030
20031         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20032         structures in registers for pinvoke wrappers.
20033
20034 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20035
20036         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20037
20038 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20039
20040         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20041         wrapper to mono_jit_thread_attach.
20042
20043         * mini.c (mini_jit_thread_attach): New jit icall.
20044
20045         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20046         native->managed wrappers.
20047
20048         * exceptions.cs: Add new regression test.
20049
20050         * mini.c (optimize_branches): Check regions in the cbranch to throw
20051         block case as well. Fixes #73242.
20052
20053 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20054
20055         * mini.c: thread safety fixes.
20056
20057 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20058
20059         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20060         patching stuff, since delegates use jump trampolines so there is
20061         no caller.
20062
20063         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20064         jump trampolines.
20065         
20066         * tramp-amd64.c: Fix build.
20067
20068         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20069         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20070
20071         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20072         Rename this to mono_arch....
20073         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20074
20075         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20076
20077         * mini-amd64.c (emit_call): If both the caller and the callee is
20078         guaranteed to have 32 bit addresses, emit a normal call.
20079
20080         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20081
20082         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20083         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20084         method_ptr inside delegates.
20085
20086 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20087
20088         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20089         invalidated. Fixes #73001.
20090
20091         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20092
20093         * mini-x86.c: Only use stdcall for pinvokes on windows.
20094
20095 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20096
20097         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20098         * mini-x86.c: remove unreliable __thread var offset detection,
20099         use the correct accessors and enable by default.
20100
20101 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20102
20103         * mini.c (mono_jit_free_method): Fix memory leak.
20104
20105 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20106
20107         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20108
20109 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20110
20111         * cpu-amd64.md: Fix lengths of atomic opcodes.
20112
20113 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20114
20115         * driver.c: try to not imply using ICU is any good.
20116
20117 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20118
20119         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20120         functions as inline ops.
20121
20122         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20123         some Interlocked functions as inline ops.
20124
20125         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20126
20127         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20128
20129         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20130
20131         * mini.c: Add support for OP_NOT_TAKEN.
20132
20133         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20134         structures in registers for pinvoke wrappers.
20135
20136         * mini-amd64.c: Fix warnings.
20137
20138 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20139
20140         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20141
20142         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20143
20144         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20145         address instead of loading the address from it.
20146
20147         * mini-x86.c: Add support for returning small structs in registers
20148         on Win32. Fixes part of #70864.
20149         
20150 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20151
20152         * trace.c (get_token): Improve error checking.
20153
20154 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20155
20156         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20157
20158 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20159  
20160         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20161         it can be reused for MonoClass.
20162         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20163         _LINKDEMAND.
20164
20165 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20166
20167         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20168         instead of a MonoReflectionMethod. The method information wasn't used
20169         when displaying SecurityException details (but will be now).
20170
20171 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20172
20173         * Makefile.am : windows build fix.
20174
20175 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20176
20177         * iltests.il: Add new regression test.
20178
20179         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20180         #72522.
20181
20182 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20183  
20184         * mini.c: Moved linkdemand check into helper function check_linkdemand
20185         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20186         LDFTN, LDVIRTFTN).
20187
20188 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20189
20190         * declsec.c: Added statistics counter for different kinds of 
20191         LinkDemands.
20192         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20193         (and commented) declaration.
20194         * mini.c: Added statistics counter for security Demand code 
20195         generation. Added display of security statistics.
20196
20197 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20198
20199         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20200         Fix compilation errors under gcc-2.95.
20201
20202 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20203
20204         * mini.c, driver.c: Use the new jit trampoline hashtable
20205
20206 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20207
20208         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20209
20210 2005-02-11  Martin Baulig  <martin@ximian.com>
20211
20212         * debug-mini.c (mono_debug_close_method): Free the line number array.
20213
20214 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20215
20216         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20217         icalls.
20218
20219         * mini.h: Bump AOT file format version. 
20220
20221 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20222
20223         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20224         APTC and P/Invoke.
20225         * declsec.h: Added macros to get/set lazyly initialized security 
20226         informations about assemblies. Added new enum for different type of
20227         possible LinkDemand violation. Added function to check LinkDemands.
20228         * mini.h: Added a field to MonoCompile to hold any security violation
20229         detected when JITting a method (so it can be thrown later).
20230         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20231         and CEE_CALLVIRT. Added code to throw exception at the end of
20232         mini_method_compile (note: the exception is unhandled right now).
20233
20234 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20235
20236         * mini.c, jit-icalls.c: use the managed implementation of
20237         memset for initobj and memset, to avoid managed <-> unmanaged
20238         transitions.
20239
20240 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20241
20242         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20243         optimization if it would need a GOT var.
20244
20245         * basic.cs: Add tests for constant propagation and switch statements.
20246
20247         * ssa.c: Fix out-of-range constant propagation and switch statements.
20248
20249 2005-02-09    <vargaz@freemail.hu>
20250
20251         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20252
20253 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20254
20255         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20256
20257 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20258
20259         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20260
20261 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20262
20263         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20264         arithmetic operations.
20265
20266 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20267
20268         * mini-ppc.c: add a workaround for broken user code that
20269         DllImports vararg functions with non-vararg signatures.
20270
20271 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20272
20273         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20274         meaningfull error message for assemblies written in Managed C++.
20275
20276         * tramp-amd64.c mini-amd64.h: Add support for 
20277         create_trampoline_from_token ().
20278
20279         * aot.c mini-x86.c abcremoval.c: Applied patch from
20280         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20281
20282 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20283
20284         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20285         which takes a MonoImage/token as parameter instead of a MonoMethod.
20286
20287         * aot.c: Use the new trampoline for initializing vtables.
20288
20289         * aot.c: Add support for ldfld/stfld_remote wrappers.
20290
20291         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20292         rules for compare <MEM>, IMM.
20293
20294         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20295
20296         * aot.c: Handle inherited finalizers correctly.
20297
20298 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20299
20300         * inssel.brg (stmt): Add a missing _setup_... ().
20301
20302         * aot.c: Save some parts of the class state to the AOT file and use it
20303         to recompute that state when a class is initialized.
20304
20305         * mini.c: Install AOT hooks into the runtime.
20306
20307         * mini.h: Bump AOT file format version.
20308         
20309         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20310         Fixes #72148.
20311
20312         * iltests.il: Add new test.
20313
20314 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20315
20316         * mini.c: fix typo.
20317
20318 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20319
20320         * mini.c: setup the statistical profiler in the thread attach
20321         callback to cope with the new single thread code.
20322
20323 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20324
20325         * mini-ppc.c: ensure we have enough room for the profiler
20326         calls (fixed bug#72084).
20327
20328 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20329
20330         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20331         it.
20332
20333 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20334
20335         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20336
20337 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20338
20339         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20340         to succesfully execute parrotbench).
20341         * ssapre.h: Likewise.
20342
20343 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20344
20345         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20346         variable for stores to method arguments (fixes a SSAPRE issue).
20347
20348 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20349
20350         * mini.c: handle value types in dup, fixes gen-112.cs.
20351
20352 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20353
20354         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20355         sequence for calls in dynamic methods to avoid thunks.
20356
20357 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20358
20359         * mini.c: correctly remove dynamic methods from the hashtable.
20360
20361 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20362
20363         * driver.c: Disabled SSAPRE until fix the bug that appears
20364         in IronPython's parrotbench.
20365
20366 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20367
20368         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20369
20370         * mini.c (mono_method_to_ir): Revert the previous change.
20371         
20372         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20373         when AOT compiling.
20374
20375         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20376         mono_jit_info_table_find () etc. when running under valgrind.
20377
20378         * inssel.brg: Fix warnings.
20379
20380         * mini-exceptions.c: Fix warnings.
20381
20382 2005-01-31  Martin Baulig  <martin@ximian.com>
20383
20384         * driver.c (compile_all_methods_thread_main): Don't try to compile
20385         generic methods or anything which has type parameters.
20386
20387 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20388
20389         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20390
20391         * TestDriver.cs: Add --verbose flags.
20392
20393         * graph.c ssa.c: Fix 64 bit warnings.
20394         
20395         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20396         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20397         Fix 64 bit warnings.
20398
20399         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20400         variable not spotted by gcc.
20401         
20402         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20403         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20404         X86_COMPARE_MEMBASE opcodes.
20405
20406         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20407
20408 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20409
20410         * *: MonoMethod->signature might be NULL now. You *MUST* use
20411         mono_method_signature.
20412
20413 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20414
20415         * driver.c (compile_all_methods_thread_main): Compile the methods
20416         without invoking cctors.
20417
20418 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20419
20420         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20421         * basic-calls.cs: test for the above.
20422
20423 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20424
20425         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20426         MonoJitInfo changes.
20427
20428 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20429
20430         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20431         eagerly if it contains dynamic methods.
20432         
20433         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20434
20435         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20436         trace, it is now computed by an icall from trace_ips.
20437         
20438         * mini-exceptions.c: Fix a warning.
20439
20440 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20441
20442         * mini-exceptions.c: don't bother getting stack trace info if
20443         it's not going to be used.
20444
20445 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20446
20447         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20448         ssapre-mini-ops.h.
20449
20450 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20451
20452         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20453
20454         * aot.c: Avoid calling mono_method_get_header () if not needed.
20455
20456         * mini.h: Bump AOT file format version.
20457         
20458         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20459
20460         * mini.c (mono_print_tree): Print more info for calls.
20461
20462 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20463
20464         * declsec.h: Remove warning by adding missing include for marshal.h
20465
20466 2005-01-26  Martin Baulig  <martin@ximian.com>
20467
20468         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20469         `ip' twice.
20470
20471 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20472
20473         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20474         flags.
20475
20476         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20477
20478         * aot.c (mono_compile_assembly): Fix a warning.
20479
20480 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20481
20482         * declsec.c: Look for security attributes on the original MonoMethod 
20483         (and not the wrapped one). This fix permissions on icalls.
20484
20485 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20486
20487         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20488
20489         * mini.c (mono_allocate_stack_slots): Add a fixme.
20490
20491         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20492
20493 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20494
20495         * inssel.brg: optimize casts of sealed types (more
20496         optimizations waiting for fixes in remoting).
20497
20498 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20499
20500         * inssel.brg (stmt): Add another dummy rule.
20501
20502         * driver.c: Fix warnings.
20503
20504         * driver.c (mono_main): If running under valgrind, instruct glib to use
20505         the system allocation functions so valgrind can track the memory
20506         allocated by the g_... functions.
20507
20508         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20509
20510         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20511
20512         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20513
20514         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20515         variables in try regions.
20516
20517         * mini.c (mini_method_compile): Don't disable optimizations on large
20518         methods when AOT compiling.
20519
20520         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20521         allocate stack slots. Not yet used.
20522
20523 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20524
20525         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20526
20527 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20528
20529         * mini-ppc.c: make the branch info relative as the code
20530         buffer can be reallocated.
20531
20532 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20533
20534         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20535         * driver.c: Removed the AOT/security restriction. Now initialize the
20536         security manager (in metadata) if --security is used.
20537         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20538         rather than the pointer to declarative security, when AOT is used.
20539
20540 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20541
20542         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20543         basic blocks, reduced intrinsic exception throwing code size.
20544
20545 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20546
20547         * driver.c (mini_usage): Reorder the usage screen.
20548
20549 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20550
20551         * mini.c (mono_resolve_patch_target): Fix warning.
20552
20553 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20554
20555         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20556         previous patch.
20557
20558         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20559
20560         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20561         breaks the amd64 build.
20562
20563         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20564         register allocation. Fixes #71454.
20565
20566         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20567
20568         * arrays.cs: Add new regression test.   
20569
20570 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20571
20572         * ssapre.c: Turned usage of snprintf to GString.
20573         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20574         (I left it on by mistake in my previous commit).
20575
20576 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20577
20578         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20579         on cond branch optimization (fixes bug# 71515).
20580
20581 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20582
20583         * abcremoval.c: Fixed bug 71062.
20584         * abcremoval.h: Likewise.
20585
20586 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20587
20588         * mini.c: Added a new functionality to optimize_branches, the removal
20589         of useless basic blocks, and fixed some problem in the removal of
20590         critical edges; some utility functions added for both purposes.
20591         * ssapre.c: Added complex expression support, and fixed bug 70637.
20592         * ssapre.h: Likewise.
20593         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20594         enabled in SSAPRE.
20595         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20596         * driver.c: Re-enabled SSAPRE.
20597
20598 2005-01-19  Martin Baulig  <martin@ximian.com>
20599
20600         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20601         the result of mono_get_method_constrained().
20602
20603 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20604
20605         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20606         manager.
20607
20608 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20609
20610         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20611         be detected.  Fixes #59296.
20612
20613 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20614
20615         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20616         which can happen. Fixes #71361.
20617
20618 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20619
20620         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20621         manager.
20622
20623 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20624
20625         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20626         appdomain-unload.exe to fail.
20627         
20628         * mini.c: Fix some memory leaks.
20629
20630 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20631
20632         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20633         Fixed bug and sped up some codepaths.
20634
20635 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20636
20637         * mini.c: Fix some memory leaks.
20638
20639         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20640         conversion.
20641
20642         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20643
20644         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20645         #71320.
20646
20647         * iltests.il: Add regression test for #71320.
20648
20649 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20650
20651         * mini.c (mono_codegen): Fix installation of profiler hooks.
20652
20653         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20654
20655 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20656
20657         * mini.h, mini.c, cfold.c: optimize access to enum
20658         readonly fields, too. Eval conditional branches if possible
20659         to perform unreachable code removal in more cases.
20660
20661 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20662
20663         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20664
20665         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20666         code manager.
20667
20668         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20669         WinXP DEP. Fixes #71244.
20670
20671 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20672
20673         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20674
20675 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20676
20677         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20678
20679 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20680
20681         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20682         changes.
20683
20684         * mini.h: Bump AOT version.
20685
20686         * mini.h (MonoCompile): Change exvar to a hash table.
20687
20688         * mini.c: Allocate a separate exvar for each handler block.
20689
20690         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20691
20692         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20693         ex var with the pending exception and only throw if the two are equal.
20694         Fixes #68552.
20695         
20696         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20697
20698         * mini-x86.c: Fix warnings.
20699
20700         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20701         used by all the ports now.
20702
20703         * aot.c: Add write-symbols and save-temps options.
20704
20705 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20706
20707         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20708
20709 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20710
20711         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20712         operations.
20713
20714         * tramp-s390.c: Check vtable slot belongs to the domain.
20715
20716         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20717         as per other platforms.
20718
20719         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20720
20721 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20722
20723         * driver.c: we don't run the Main() code in a subthread anymore.
20724
20725 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20726
20727         * mini.c: added experimental rtc support in the statistical
20728         profiler: if the user has the permission, more accurate statistics
20729         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20730         The MONO_RTC value must be restricted to what the linux rtc allows:
20731         power of two from 64 to 8192 Hz.
20732
20733 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20734
20735         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20736
20737 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20738
20739         * mini-ppc.c: better icache flush for smp.
20740
20741 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20742
20743         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20744
20745         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20746         amd64 port, not yet used.
20747
20748 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20749
20750         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20751         a struct type.
20752
20753 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20754
20755         * driver.c: Added --security option to activate the security manager.
20756         Right now this will allow code generation for declarative demands and
20757         is disabled when AOT is specified.
20758         * mini.c: Add code generation for declarative security demands.
20759         * mini.h: Add mono_use_security_manager as an extern gboolean.
20760
20761 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20762
20763         * aot.c (mono_compile_assembly): Speed up compilation a bit by
20764         emitting more dense assembly code.
20765
20766         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
20767         exception throwing stuff.
20768
20769 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20770
20771         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
20772         dead code.
20773
20774         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
20775         left in by mistake.
20776
20777         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
20778         fixed.
20779
20780         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
20781
20782         * tramp-*.c: Only patch vtable slots if the object is in the current
20783         domain. Fixes appdomain-unload.exe.
20784
20785         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
20786         
20787         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
20788         x86 branch.
20789
20790 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20791
20792         * mini.c (reverse_branch_op): New helper function.
20793
20794         * mini.c (optimize_branches): Run the new optimization only on 
20795         platforms which support it. Also reverse all kinds of branches.
20796
20797         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
20798
20799         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
20800         a throw statement.
20801
20802         * mini.c (optimize_branches): Reverse not-equals branches if the false
20803         bblock is a throw. This happens a lot of time with argument checking in
20804         corlib.
20805
20806         * mini.c (mono_codegen): Add support for placing basic blocks after
20807         the function epilogue.
20808
20809         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
20810         function epilogue.
20811         
20812 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
20813
20814         * mini.c (setup_stat_profiler): Only set this up if the platform
20815         supports ITIMER_PROF.
20816
20817 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20818
20819         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
20820         previous patch.
20821
20822         * inssel.brg: Fix a warning.
20823
20824 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
20825
20826         * mini.c: added support for statistical profiler 
20827         (run with: --profile=default:stat).
20828
20829 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
20830
20831         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
20832
20833         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
20834
20835         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
20836         related to global registers from the amd64 port.
20837
20838 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
20839
20840         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
20841
20842         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
20843         with global registers.
20844         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
20845
20846         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
20847
20848 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
20849
20850         * debug-mini.c (encode_value): Fix off-by-one.
20851
20852         * aot.c (encode_value): Likewise.
20853
20854         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
20855
20856 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
20857
20858         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
20859         AOT.
20860
20861         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
20862         
20863         * aot.c (emit_method_info): Increase size of temp buffer.
20864
20865         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
20866         the AOT case.
20867
20868 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
20869
20870         * aot.c (emit_method_info): Fix build.
20871         
20872         * aot.c: Further rework of the AOT file format to reduce the size of
20873         the method info data.
20874
20875         * mini.h: Bump AOT file format version.
20876
20877 2004-12-27  Martin Baulig  <martin@ximian.com>
20878
20879         * mini.c (mini_get_method): New static method; call
20880         mono_get_method_full() and mono_get_inflated_method().
20881         (mono_method_to_ir): Use mini_get_method() instead of
20882         mono_get_method_full(). 
20883
20884 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
20885
20886         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
20887
20888 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
20889
20890         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
20891
20892         * inssel-amd64.brg: Add some optimization rules.
20893
20894 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
20895
20896         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
20897         standard not GC'd stuff is fine.
20898
20899 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
20900
20901         * aot.c: Rework the AOT file format to get rid of most of the global
20902         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
20903
20904         * mini.h: Bump AOT file format version.
20905         
20906 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
20907
20908         * mini.h: Bump AOT file format version.
20909
20910         * aot.c (mono_aot_is_got_entry): New function to determine if an 
20911         address is inside a GOT.
20912
20913         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
20914
20915         * cpu-pentium.md: Increase the maximum size of some instructions which
20916         might involve a got access.
20917         
20918         * mini.c (get_method_from_ip): Another debug helper function.
20919
20920         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
20921         when got var accesses are created during the decompose phase.
20922
20923         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
20924
20925         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
20926         argument mini_compile_method and to MonoCompile, and use this to
20927         determine whenever a given method is compiled for AOT. This allows the
20928         other methods compiled during AOT compilation to be free of AOT stuff,
20929         so the backends does not need to add special support for them by
20930         creating a fake GOT etc.
20931
20932         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
20933         longer needed.
20934
20935 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20936
20937         * mini.c (mono_method_to_ir): It turns out that some of the
20938         x-appdomain wrappers are lax with types, so just ignore this for
20939         all wrappers.
20940
20941         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
20942         at the vtable->klass. If it is non-shared code we can just use the
20943         vtable.
20944
20945 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
20946
20947         * mini-ppc.c: access MonoDomain from tls, too.
20948
20949 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
20950
20951         * declsec.c: Removed unused variable (and related warning ;-)
20952
20953 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20954
20955         * iltests.il: New test for LDELEMA on an array of ref types.
20956
20957         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
20958         all ldelema's on reftypes.
20959         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
20960         it was the wrong place to put it.
20961
20962         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
20963         register to pop to make this cleaner, at the request of Paolo.
20964
20965 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20966
20967         * mini-ops.h (OP_GETHASHCODE): New op.
20968
20969         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
20970
20971         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
20972         operation.
20973
20974         For a microbenchmark, this reduces the cost of Hashtable.get_Item
20975         by 25%.
20976         
20977         * mini-x86.c (mono_arch_output_basic_block): Rather than
20978
20979         add ebp, 4
20980
20981         Emit
20982
20983         pop edx
20984
20985         The first is 3 bytes while the second is 1. This saves 36 kb on
20986         mscorlib, quite a big saving. When bootstraping mcs, I was able to
20987         see a small boost because of icache locality.
20988
20989         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
20990
20991 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
20992
20993         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
20994         started code sharing with the generic code.
20995
20996 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
20997
20998         * mini-ppc.c, cpu-g4.md: added code for direct access to
20999         tls data slots.
21000
21001 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
21002
21003         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21004          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21005         to OP_TLS_GET.
21006
21007 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21008
21009         * declsec.c|h: Added functions to cache the declarative stack modifiers
21010         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21011         structure.
21012         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21013         created. Register internal calls for System.Security.SecurityFrame::
21014         _GetSecurityFrame and _GetSecurityStack.
21015         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21016         the definitions for the new stack walk/callback mechanism.
21017         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21018         first security frame for LinkDemands and InheritanceDemands) and
21019         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21020         from lupus.
21021         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21022         walk initialization (lupus).
21023
21024 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21025
21026         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21027         idiom.
21028         (handle_loaded_temps): Do not create a temporary variable for
21029         things that we know are temps. They will never be modified.
21030         (mono_spill_call): Set MONO_INST_IS_TEMP
21031         (mono_emulate_opcode): ditto
21032         (emit_tree): ditto
21033         (mono_method_to_ir.CEE_DUP): ditto
21034
21035 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21036
21037         * mini.c (type_to_eval_stack_type): Make this handle the void type
21038         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21039         (emit_tree): use ip_in_bb to special case some common idioms
21040         Update all callers to pass in the IP.
21041         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21042
21043         This gives us a nice 2% speedup in mcs bootstrap.
21044
21045         * mini-x86.c (peephole_pass): Peephole pass to make
21046         mov  [foo], eax
21047         push [foo]
21048
21049         into
21050
21051         mov [foo], eax
21052         push eax
21053
21054         * mini.c (ip_in_bb): new method.
21055         (mono_method_to_ir): use this method rather than doing the hash
21056         lookup ourselves.
21057
21058         * linear-scan.c (mono_linear_scan): When expiring actives, you
21059         don't need to keep around variables that expire on this
21060         instruction. This makes it so that:
21061              a = b + 1
21062         will turn into:
21063              store (ebx add (ebx, 1))
21064         which will become
21065              add ebx, 1
21066
21067 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21068
21069         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21070         combination to avoid doing two copies. Fix up problems with previous
21071         patch.
21072
21073         * mini.c: Fix 64 bit warnings.
21074
21075         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21076
21077 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21078
21079         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21080         changes from the x86 code.
21081
21082         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21083
21084 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21085
21086         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21087         throwing code to reduce its size, unify the AOT and non-aot code and 
21088         get rid of relocations in the AOT case.
21089
21090         * mini-x86.h mini.c exceptions-x86.c 
21091         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21092         raise corlib exceptions which doesn't require relocations in the 
21093         caller.
21094
21095         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21096
21097 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21098
21099         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21100         needed.
21101
21102         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21103         in the AOT case.
21104
21105 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21106
21107         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21108         with add function when used from Inc/dec atomic 
21109         functions. Re-enabled optimization on x86.
21110         * mini-ops.h: renamed atomic_add functions to
21111         allow _add to match the Interlocked::Add and
21112         _add_next to match Interlocked::Inc/Dec.
21113
21114 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21115
21116         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21117         linking of BBs to the end BB, and enabled SSAPRE also with
21118         consprop and copyprop (which was prevented by that bug).
21119
21120 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21121
21122         * mini-x86.c: disabling the Interlocked optimizing code. 
21123
21124 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21125
21126         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21127         file version check.
21128         
21129 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21130
21131         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21132         interlocked optimization due lack of support on x86, rewrote 
21133         exchange to take into account that base may be in eax.
21134         
21135         xsp works again; activated Interlocked optimizing code.
21136         
21137 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21138
21139         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21140
21141 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21142
21143         * mini-ops.h: Add new opcodes.
21144
21145         * mini.h: Add new patch types. Add got_var to MonoCompile.
21146
21147         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21148         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21149         make it work with all kinds of patchable code.
21150
21151         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21152         address of the GOT, and referencing entries in the GOT.
21153
21154         * mini.c: Add code to load the GOT address if needed by an opcode.
21155
21156         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21157         independent AOT code on the x86 using an elf-style Global Offset Table.
21158
21159 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21160
21161         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21162
21163 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21164
21165         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21166         when running xsp.
21167
21168 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21169
21170         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21171         of Interlocked:Increment/Decrement/Add as inline ops.
21172         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21173
21174 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21175
21176         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21177         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21178
21179 2004-12-12  Duncan Mak  <duncan@ximian.com>
21180
21181         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21182         again. `patch_info->table_size' is no longer valid after Zoltan's
21183         commit #37636.
21184
21185 2004-12-12  Martin Baulig  <martin@ximian.com>
21186
21187         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21188         if we are the "real" method, ie. not an inlined method inside it.
21189
21190 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21191
21192         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21193         before we look in the special fields table. This fixes
21194         ../tests/thread-static-init.cs.
21195
21196 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21197
21198         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21199         for Array get_Rank and get_Length. Fixes bug #70465.
21200
21201 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21202
21203         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21204         separate structure to reduce the size of MonoJumpInfo.
21205
21206 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21207
21208         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21209
21210 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21211
21212         * mini.c (mini_get_inst_for_method): Changed to allow ports
21213         to return a MonoInst instead of opcode 
21214         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21215         
21216         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21217         Allow ports to return a created MonoInst instead of op-code, will enable
21218         new optimizations.
21219         (renamed mini_get_opcode_for_method to better reflected the functionality)
21220
21221 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21222
21223         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21224
21225 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21226
21227         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21228         Fixes #69985.
21229
21230 2004-12-08  Martin Baulig  <martin@ximian.com>
21231
21232         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21233         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21234
21235 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21236
21237         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21238         correctly.
21239
21240         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21241         arithmetic.
21242
21243 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21244
21245         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21246
21247 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21248
21249         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21250         bug introduced by the previous patch.
21251
21252 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21253
21254         * mini-ppc.c, objectc.cs: handle large structs passed by value
21255         (fixes bug #69972).
21256
21257 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21258
21259         * mini-ppc.c: OP_ARGLIST implementation from
21260         Geoff Norton  <gnorton@customerdna.com>.
21261
21262 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21263
21264         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21265         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21266
21267 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21268
21269         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21270
21271 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21272
21273         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21274         support.
21275
21276 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21277
21278         * mini-sparc.c: Zero out localled-ed memory.
21279
21280         * iltests.il: Add tests for zeroing out localloc-ed memory.
21281
21282 2004-12-04  Martin Baulig  <martin@ximian.com>
21283
21284         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21285         mono_method_get_signature_full().       
21286
21287 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21288
21289         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21290         and some utility functions (always for SSAPRE), integrated SSAPRE.
21291         * mini.h: Likewise.
21292         * driver.c: Added ssapre option.
21293         * ssa.c: Small fix on OP_ARG handling.
21294         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21295         * Makefile.am: Likewise.
21296
21297 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21298
21299         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21300         now in the xp code.
21301
21302         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21303         icall.
21304
21305 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21306
21307         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21308         
21309         * cpu-s390.md : Increase instruction length of oparglist.
21310
21311         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21312
21313 2004-11-30  Martin Baulig  <martin@ximian.com>
21314
21315         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21316         virtual generic methods.  We call a special helper_compile_generic_method()
21317         icall to retrieve the method from the vtable, inflate and compile
21318         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21319
21320         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21321
21322 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21323
21324         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21325
21326 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21327
21328         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21329         Fixes #69929.
21330
21331 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21332
21333         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21334         platforms with PIC aot.
21335
21336 2004-11-28  Martin Baulig  <martin@ximian.com>
21337
21338         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21339         Fixes gen-112.cs.
21340
21341 2004-11-28  Martin Baulig  <martin@ximian.com>
21342
21343         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21344         the result of mono_type_get_underlying_type() to check whether
21345         we're byref.
21346
21347 2004-11-26  Martin Baulig  <martin@ximian.com>
21348
21349         * mini.c
21350         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21351         in the g_assert().
21352
21353 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21354
21355         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21356         the same way as the other arguments so they won't get clobbered.
21357
21358         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21359         calls through R11 since it is clobbered by the trampoline code.
21360
21361 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21362
21363         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21364         pick up in-tree mscorlib.dll.
21365
21366 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21367
21368         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21369
21370         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21371         runtime data/code are now stored in a table similar to the GOT in ELF. 
21372         This allows the code itself to be position independent.
21373
21374         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21375         loading changes.
21376
21377         * aot.c: Attach ELF type (object/function) directives to all global
21378         symbols.
21379
21380         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21381
21382         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21383
21384         * mini-amd64.h: Turn on PIC AOT code.
21385
21386         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21387         returning the offset within an OP_AOTCONST instruction where the GOT
21388         offset needs to be added.
21389
21390         * mini.h: Bump AOT file format version.
21391
21392 2004-11-25  Martin Baulig  <martin@ximian.com>
21393
21394         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21395         uninflated generic methods.
21396
21397 2004-11-25  Martin Baulig  <martin@ximian.com>
21398
21399         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21400
21401 2004-11-24  Martin Baulig  <martin@ximian.com>
21402
21403         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21404         original klass (this only applies for generic instances).
21405
21406 2004-11-24  Martin Baulig  <martin@ximian.com>
21407
21408         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21409         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21410         that array).
21411
21412 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21413
21414         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21415         localloc. Fixes #69678.
21416
21417         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21418         
21419 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21420
21421         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21422         used SSE registers on pinvoke calls. Fixes #69774.
21423
21424 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21425
21426         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21427         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21428
21429 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21430
21431         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21432         Refer directly to the mcs/ tree.
21433
21434 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21435
21436         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21437         Check if a trampoline for a synchronized method is required. 
21438
21439 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21440
21441         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21442         with localloc if needed. Throe arithmetric exception in
21443         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21444         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21445
21446 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21447
21448         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21449         types before switching on type.  Fixes #69622.
21450
21451 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21452
21453         * Makefile.am (check-local): New.  Integrate into 'make check'.
21454         (MCS,RUNTIME): Define using in-tree mono and mcs.
21455         (ILASM): New.
21456         (%.exe): Use $(ILASM).
21457
21458 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21459
21460         * mini-ppc.c: adjust initial prolog size (bug #69691).
21461
21462 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21463
21464         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21465         #69664.
21466
21467 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21468
21469         * Makefile.am (clean-local): Rename from 'clean'.
21470
21471 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21472
21473         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21474         to mono_arch_is_int_overflow. 
21475         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21476         SIGFPE events.
21477
21478 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21479
21480         * declsec.c|h: New files to support declarative security attributes.
21481         Added function to check if a method has (applicable) security.
21482         * mini.c|h: Add check for declarative security attributes in
21483         mono_method_check_inlining.
21484         * Makefile.am: Added declsec.c and declsec.h to the build.
21485
21486 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21487
21488         * mini.c, mini.h: update to keep dynamic code info per-domain.
21489
21490 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21491
21492         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21493         (mini_init): Get rid of it from here too.
21494
21495 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21496
21497         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21498         implemented OP_RETHROW (patch by Geoff Norton
21499         <gnorton@customerdna.com>).
21500
21501 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21502
21503         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21504         between appdomains.  Fixes appdomain-unload on PPC.
21505
21506 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21507
21508         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21509         mini-exceptions.c: handle the new wrapper types.
21510         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21511         token value as a MonoClass* when compiling a wrapper.
21512         mono_jit_create_remoting_trampoline now takes an additional
21513         MonoRemotingTarget parameter.
21514         
21515 2004-11-10  Martin Baulig  <martin@localhost>
21516
21517         * mini.c (mono_method_to_ir): Use `generic_container->context'
21518         rather than creating a new one.
21519
21520 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21521
21522         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21523
21524         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21525
21526 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21527
21528         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21529         the experimental aot cache stuff.
21530
21531 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21532
21533         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21534         mini-exceptions.c: update to exception clause structure changes.
21535
21536 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21537
21538         * exceptions-x86.c (throw_exception): Fix warnings.
21539
21540         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21541         for OP_RETHROW.
21542
21543 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21544
21545         * exceptions-sparc.c (get_throw_exception): Really fix this.
21546
21547 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21548
21549         * tramp-*.c: we no longer support icalls without wrappers, so
21550         a bit of code can be removed here
21551
21552 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21553
21554         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21555         patch.
21556
21557         * cpu-sparc.md: Add op_rethrow.
21558
21559         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21560
21561         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21562
21563         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21564         * mini-ops.h: Add OP_RETHROW.
21565
21566         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21567
21568         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21569
21570 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21571         
21572         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21573         Makes the output much easier to read
21574
21575 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21576
21577         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21578         prevents another huge leak when compiling with ssa. Secondly, the
21579         performance of doing this rather than freeing the lists is much
21580         better. GList does a lock every time you allocate a list link,
21581         so that it can use a memory pool. So, it is better to just use
21582         a memory pool of our own.
21583         
21584         * ssa.c, linear-scan.c: replace g_list_remove_link with
21585         g_list_delete.  The remove one does not free the GList, so we were
21586         leaking memory. On -O=all --compile-all with corlib, this cut down
21587         3 MB of allocations.
21588
21589 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21590
21591         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21592
21593         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21594
21595         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21596         into a new function mono_create_jit_trampoline ().
21597
21598 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21599
21600         * trace.c (get_spec): Allow tracing of classes without a namespace.
21601
21602 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21603
21604         * mini.c: Fix pointer overwrite in mini_method_compile.
21605
21606 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21607
21608         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21609         The darwin ABI needs some special handling for 1 and 2 byte structs
21610         Lets use lbz/lhz instead of lwz everywhere.
21611         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21612         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21613         Use stb/sth for the former, and put the latter always on stack instead of in
21614         argument registers.
21615
21616 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21617
21618         * trace.c (is_filenamechar): Add '_'.
21619
21620 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21621
21622         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21623
21624         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21625
21626 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21627
21628         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21629         depends on libmonogc. Fixes #68805.
21630
21631 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21632
21633         * mini.c (mono_jit_free_method): Provide extra information for
21634         this error.  Currently this leaks, but will be turned into a
21635         developer option in the future.
21636
21637 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21638
21639         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21640
21641 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21642
21643         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21644         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21645         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21646
21647 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21648
21649         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21650         trampolines for AOT code.
21651
21652 2004-10-22    <vargaz@freemail.hu>
21653
21654         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21655         constructed types. Fixes #68136.
21656
21657 2004-10-21  Martin Baulig  <martin@ximian.com>
21658
21659         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21660         if it returns true, unwind the stack to the call instruction.
21661
21662 2004-10-21    <vargaz@freemail.hu>
21663
21664         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21665
21666         * mini.h: Bump AOT version number.
21667
21668         * objects.cs: Add another test for unbox trampolines.
21669
21670         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21671         valuetype methods.
21672
21673 2004-10-20    <vargaz@freemail.hu>
21674
21675         * driver.c: Add SHARED to the set of optimizations tested.
21676
21677         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21678
21679         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21680         used by CEE_NEWARR.
21681
21682         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21683
21684 2004-10-20  Martin Baulig  <martin@ximian.com>
21685
21686         * mini-exceptions.c (mono_handle_exception): Call
21687         mono_debugger_handle_exception() to tell the debugger about
21688         catch/finally clauses.
21689
21690 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21691
21692         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21693
21694         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21695         #68447.
21696
21697 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21698
21699         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21700         methods as their native size, fixed bug #57543, #57545.
21701         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21702         This saves a temporary register and mullw call down into 1 (minor perf
21703         increase for cases like sum = sum * 5;  This use to translate into:
21704             li r11,5
21705             mullw r28,r28,r11
21706         It now translates to
21707             mulli r28,r28,5
21708
21709 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21710
21711         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21712         #68388.
21713
21714 2004-10-11  Martin Baulig  <martin@ximian.com>
21715
21716         * mini.c (mono_method_to_ir): If we're a generic method, get the
21717         MonoGenericContainer from our MonoMethodNormal and create a
21718         MonoGenericContext from it.
21719
21720 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21721
21722         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21723
21724         * basic-long.cs: Add test for checked i8->i2 cast.
21725
21726 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21727
21728         * inssel-ppc.brg: added a couple of speedup rules.
21729
21730 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21731
21732         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21733         to speed up rebuilds.
21734
21735 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21736
21737         * mini-s390.c: Minor fix to OP_OR_IMM.
21738
21739 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21740
21741         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21742         better. Fixes appdomain-unload.exe on sparc.
21743
21744 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21745
21746         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21747         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21748         see bug 67324.
21749
21750 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21751
21752         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21753
21754 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21755
21756         * mini.c: Always generate a field read/write wrapper for members
21757         of the class MarshalByRefObject since the actual instance could
21758         be a CBO.
21759
21760 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21761
21762         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
21763
21764 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21765
21766         * driver.c mini.h trace.c: Move the setting of the main assembly into
21767         a separate function called mono_trace_set_assembly () and call it after
21768         actually loading the main assembly. Fixes #66872.
21769
21770 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21771
21772         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
21773         using the code manager.
21774
21775 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21776
21777         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
21778
21779 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21780
21781         * cpu-amd64.md: Fix bug in previous patch.
21782         
21783         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
21784         #66650.
21785
21786 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
21787
21788         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21789         mini-exceptions.c: updates for changed stack walk interface.
21790
21791 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21792
21793         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
21794
21795 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
21796
21797         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
21798
21799 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
21800
21801         * driver.c (mini_regression_list): Do not call mono_assembly_close 
21802         since assemblies can't be unloaded.
21803         
21804 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21805
21806         * cpu-amd64.md: Fix more instruction lengths.
21807
21808         * cpu-amd64.md: Fix lengths of some instructions.
21809
21810 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
21811
21812         * inssel.brg: Make the array ldelema check aot friendly.
21813
21814 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21815
21816         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
21817
21818         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
21819
21820 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
21821
21822         * mini-x86.c: Fix build.
21823
21824         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
21825         mono_type_get_underlying_type () helper function to simplify code.
21826         
21827 2004-09-09  Martin Baulig  <martin@ximian.com>
21828
21829         * mini-amd64.c: Don't access `type->data.klass' directly, call
21830         mono_class_from_mono_type() instead since the type may be a
21831         generic instance.
21832
21833 2004-09-09  Martin Baulig  <martin@ximian.com>
21834
21835         * mini-amd64.c (get_call_info): Fix support for generic instances.
21836         (add_valuetype): Use mono_class_from_mono_type() to get the class
21837         since we can be a generic instance.
21838
21839 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
21840
21841         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
21842
21843 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21844
21845         * liveness.c: reset spill costs on each scan: bug 62107
21846
21847 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
21848
21849         * exceptions-sparc.c (mono_arch_find_jit_info): remove
21850         unnecessary line that doesn't compile
21851
21852 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
21853
21854         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
21855         trampolines, make them call an error function so people can fix their
21856         code.
21857
21858 2004-09-06  Martin Baulig  <martin@ximian.com>
21859
21860         * mini.c (mono_method_to_ir): When initializing locals, handle a
21861         generic instances like a valuetype if it's a valuetype and like a
21862         class if it's a class.
21863
21864 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21865
21866         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
21867         stack. Fixes #64674.
21868
21869         * exceptions.cs: Add test for unwinding of call arguments.
21870
21871 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
21872
21873         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
21874         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
21875         set the carry/borrow flag). The sparc and s390 implementations
21876         can now use optimized versions (and simplify the code). ppc bugfixes.
21877
21878 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21879
21880         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
21881
21882 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
21883
21884         * inssel-amd64.brg: Remove leftover 32 bit rule.
21885
21886         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
21887
21888 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
21889
21890         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
21891         mono_arch_find_jit_info functions into a new function. Fix a memory
21892         leak.
21893
21894         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
21895         refactored code.
21896         
21897 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21898
21899         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
21900         as well.
21901         
21902         * exceptions.cs: Add array size tests.
21903
21904         * mini.c: Allocate a separate icall wrapper for each arity of 
21905         mono_array_new_va. Fixes #59509.
21906
21907         * exceptions.cs: Add testcase for 64578.
21908
21909         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
21910
21911         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
21912         
21913 2004-09-02  Martin Baulig  <martin@ximian.com>
21914
21915         * mini.c (mono_method_to_ir): When initializing the locals, call
21916         handle_initobj() on the generic instance itself, not its
21917         underlying type.
21918
21919 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21920
21921         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
21922         MonoJitInfo for dynamic methods.
21923
21924         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
21925
21926         * mini.c: Add support for freeing JIT data for dynamic methods.
21927         
21928 2004-09-01  Martin Baulig  <martin@ximian.com>
21929
21930         * mini-x86.c (is_regsize_var): Added support for generic
21931         instances.
21932         (mono_arch_emit_prolog): Make this compile again, use
21933         `x86_push_imm_template (code)'.
21934
21935 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
21936
21937         * mini-x86.c: make all push_imm instructions that get
21938         patched always emit the long form
21939
21940 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
21941
21942         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
21943         in a per-domain hash.
21944
21945         * mini-amd64.c (merge_argument_class_from_type): Handle generic
21946         types.
21947
21948 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
21949
21950         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
21951         work.
21952         
21953         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
21954         work.
21955
21956         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
21957         Beginnings of SSE2 support.
21958
21959         * exceptions.cs: Add more tests for checked int<->uint casts.
21960
21961 2004-08-28  Martin Baulig  <martin@ximian.com>
21962
21963         * mini-x86.c (mono_arch_instrument_epilog): Added support for
21964         generic instances.
21965
21966         * mini.c
21967         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
21968         Handle generic instances recursively.
21969
21970 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21971
21972         * iltests.il: test for conv.u8 on a constant
21973
21974 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21975
21976         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
21977         LCONV_x4 (shrun_32 (membase)).
21978
21979 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21980
21981         * inssel-x86.brg: c&p rules for push/setret of long
21982
21983 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21984
21985         * inssel-x86.brg: c&p rules for compare (base, regvar) and
21986         compare (regvar, base)
21987
21988         * inssel-x86.brg: more burg love
21989
21990         * inssel.brg: more cleanup
21991
21992         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
21993
21994 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21995
21996         * basic-long.cs, basic-calls.cs: new tests for optimization.
21997
21998 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
21999
22000         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
22001         patch.
22002
22003 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22004
22005         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22006         
22007 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22008
22009         * inssel.brg (mini_emit_memcpy): use 
22010         NO_UNALIGNED_ACCESS to disable memcpy optimization
22011
22012 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22013
22014         * mini-amd64.c: Handle generic types in various places.
22015
22016         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22017
22018 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22019
22020         * mini.c (handle_box): Fix warning.
22021
22022         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22023
22024         * mini-amd64.h: Enable the emit_state optimization.
22025
22026         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22027
22028         * mini-amd64.c: Add some new 64 bit peephole opts.
22029
22030         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22031
22032         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22033
22034         * mini-amd64.c: Register allocator fixes.
22035
22036         * mini.c: Add an optimization to emit_state to avoid allocation of new
22037         registers on some platforms.
22038
22039 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22040
22041         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22042
22043         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22044         allocation. Fixes #63085.
22045
22046         * basic-long.cs: Add new regression test.
22047
22048         * mini-amd64.c: Register allocator improvements.
22049
22050 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22051
22052         * mini-amd64.c (read_tls_offset_from_method): Add another code
22053         sequence.
22054
22055         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22056         instruction sequence for nullifying class init trampolines.
22057
22058         * objects.cs: Add new regalloc test.
22059
22060         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22061
22062 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22063
22064         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22065         
22066         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22067         arguments.
22068
22069         * driver.c: Fix profiling after TLS changes.
22070         
22071         * driver.c (mono_main): Set mono_stats.enabled if needed.
22072
22073         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22074         CEE_BOX.
22075
22076 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22077
22078         * mini-x86.c: use a 1 op rather than a 2 op tls access
22079         instruction -> faster.
22080
22081 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22082
22083         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22084         x86 backend.
22085
22086 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22087
22088         * exceptions-sparc.c (throw_exception): fix typo
22089
22090 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22091
22092         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22093         set tree->dreg correctly with tls. Allow any
22094         register to be used.
22095
22096         * mini-x86.c (read_tls_offset_from_method): add new code
22097         generation pattern seen with GCC.
22098
22099
22100 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22101
22102         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22103         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22104         exceptions-sparc.c: fix some performance issues in exception
22105         handling and setting of the stack trace for exceptions that were
22106         already thrown.
22107
22108 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22109
22110         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22111         x86 backend.
22112         
22113         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22114         registers.
22115
22116 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22117
22118         This patch inlines tls access, when possible.
22119         
22120         * mini.h: new arch functions for TLS intrinsics.
22121         All platforms updated with a stub.
22122
22123         * mini.c: use the new intrinsics
22124
22125         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22126         arch specific intrinsic for tls variables
22127
22128 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22129
22130         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22131         under windows.
22132
22133 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22134
22135         * mini.c: thread local allocation
22136
22137 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22138
22139         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22140
22141         * Makefile.am: Link against the static version of libmonogc.
22142         
22143         * Makefile.am: Link the static versions of the convenience libraries
22144         into the mono executable.
22145
22146         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22147
22148 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22149
22150         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22151         on integer overflow.
22152
22153         * mini-amd64.c: Reorganize function call code.
22154
22155         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22156
22157 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22158
22159         * inssel-x86.brg: use xor eax,eax.
22160         
22161         * basic.cs: new tests
22162
22163 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22164
22165         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22166         in exception throwing code.
22167         
22168 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22169
22170         * inssel-x86.brg: use xor esi,esi.
22171
22172 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22173
22174         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22175         can trace methods compiled during mini_init () too.
22176
22177         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22178         CEE_CONV_U4.
22179
22180 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22181
22182         * Makefile.am: static link on x86 (r=zoltan)
22183
22184 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22185
22186         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22187         code since it causes some programs to fail.
22188
22189 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22190
22191         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22192
22193 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22194
22195         * mini.c: ovfops_op_map - add STACK_OBJ case for
22196         CONV_I 
22197         * basic.cs: add test_0_pin_string as test
22198         case for above.
22199
22200 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22201
22202         * Makefile.am: build C# if srcdir != builddir
22203
22204 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22205
22206         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22207         fall-through blocks.
22208
22209 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22210
22211         * driver.c: enable loop by default again and include abcrem in -O=all.
22212
22213 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22214
22215         * iltests.il: Add some localloc tests.
22216
22217         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22218
22219         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22220         Fixes #62574.
22221
22222         * inssel-amd64.brg: Add some optimizations.
22223
22224         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22225         for gcc-3.4.
22226
22227         * Makefile.am: Statically link mono against libmono on AMD64.
22228         
22229         * mini-amd64.c inssel-amd64.brg: Optimizations.
22230
22231 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22232
22233         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22234
22235         * tramp-amd64.c: Patch calling code in trampolines.
22236
22237 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22238
22239         * mini-amd64.c: pinvoke struct passing fixes.
22240
22241 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22242
22243         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22244         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22245
22246 2004-08-05  Duncan Mak  <duncan@ximian.com>
22247
22248         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22249         CEE_LDELEM_ANY.
22250
22251 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22252
22253         * mini-amd64.c (emit_move_return_value): Move return value for normal
22254         calls too.
22255
22256 2004-08-05  Martin Baulig  <martin@ximian.com>
22257
22258         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22259         `type->type'; just modify `type' itself when dealing with enums
22260         and generic instances.
22261         (check_call_signature): Make `simple_type' a `MonoType *'.
22262
22263 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22264
22265         * mini.c: Use OP_PADD to add offsets to addresses.
22266
22267         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22268
22269 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22270
22271         * mini-sparc.c (mono_arch_emit_epilog): fix check
22272         for folding last op into restore instruction
22273
22274 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22275
22276         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22277         helper methods using the code manager.
22278         
22279         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22280
22281         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22282
22283 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22284         
22285         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22286           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22287
22288         * mini-s390.c: fix tail processing
22289
22290 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22291
22292         * mini-ppc.c: mul.ovf.un exception name fix.
22293
22294 2004-08-03  Martin Baulig  <martin@ximian.com>
22295
22296         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22297         instances; before jumping to `handle_enum', also modify `ptype'.
22298
22299 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22300
22301         * cpu-sparc.md: fcall maximal length too small.
22302
22303 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22304
22305         * mini-amd64.c mini.h: Add initial support for passing/returning 
22306         structures to/from pinvoked methods.
22307
22308 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22309
22310         * mini-ppc.c: reg allocator fix.
22311
22312 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22313
22314         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22315
22316         * inssel.brg: Optimize memset on 64 bit machines.
22317
22318         * mini-amd64.c: Fix some vararg cases.
22319
22320 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22321
22322         * mini-s390.c: Corrected macro in emit_float_to_int
22323
22324         * s390-abi.cs: Tests to exercise the s390 ABI
22325
22326 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22327
22328         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22329         caller saved regs.
22330
22331         * basic.cs: Add a test for add.ovf.un.
22332
22333 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22334
22335         * mini-sparc.c: add case for OP_IDIV_UN
22336
22337 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22338
22339         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22340         
22341         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22342
22343 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22344
22345         * basic.cs: regression tests.
22346
22347         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22348         regressions.
22349
22350 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22351
22352         * basic.cs: Add a new test.
22353
22354         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22355         and AOT. Various fixes and optimizations.
22356
22357         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22358
22359 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22360
22361         * mini-ppc.c: make sure temp regs are not used for global reg
22362         allocation.
22363
22364 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22365
22366         * cpu-sparc.md: conv_i8 fix for 64bits
22367
22368         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22369
22370 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22371         
22372         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22373         add opcode for cmp BYTE PTR [eax], imm.
22374
22375         * inssel.brg: Make memcpy and memset takes bases.
22376
22377 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22378
22379         * *-amd64.*: More AMD64 work.
22380         
22381 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22382
22383         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22384         add a compare-not-equal opcode.
22385         
22386 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22387
22388         * mini.c: Use mono_init_from_assembly instead of mono_init.
22389         
22390 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22391
22392         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22393
22394         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22395
22396         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22397
22398         * inssel.brg: 64 bit fixes.
22399
22400         * mini.h (MonoCallInst): Add some AMD64 specific data.
22401
22402         * mini.h: Add some OP_P opcodes.
22403
22404 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22405
22406         * basic.cs: tests for 61797 and 61740
22407
22408 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22409
22410         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22411         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22412
22413 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22414
22415         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22416
22417         * *-amd64*.*: Ongoing AMD64 work.
22418
22419 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22420
22421         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22422
22423         * *-amd64*: Ongoing AMD64 work.
22424
22425         * mini-arch.h: Add AMD64 support.
22426
22427         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22428
22429         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22430
22431         * mini-ops.h: Add new opcodes.
22432
22433         * Makefile.am: Add AMD64 support.
22434
22435         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22436         rules into the inssel-long*.brg files.
22437
22438         * *-amd64.*: Add beginnings of AMD64 backend.
22439
22440 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22441
22442         * mini.c (print_dfn): commenting out the code that prints
22443         the cil. With -O=deadce, this makes -v -v crash.
22444         
22445         * cpu-pentium.md: make checkthis have a length of 2
22446
22447 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22448
22449         * mini-sparc.h: fix implementations of __builtin
22450         functions for Sun compiler for V9.
22451
22452 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22453
22454         * mini.c: use the new stelem.ref wrapper
22455         * exceptions.cs, arrays.cs: new stelem.ref tests
22456
22457 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22458
22459         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22460         new XSP should work with these changes).
22461
22462 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22463         
22464         * inssel-{long32,x86,}.brg: trivial optimizations.
22465         
22466 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22467
22468         * mini.c: load value when emitting box operation in
22469         constrained calls.
22470
22471 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22472
22473         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22474         is one byte shorter than cmp DWORD PTR [eax], 0.
22475
22476 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22477
22478         * inssel-ppc.brg: arguments on the stack are always
22479         relative to the stack pointer (spotted by Neale Ferguson).
22480
22481 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22482
22483         * exceptions-x86.c: delay appending the method name to the trace until
22484         after mono_jit_info_table_find is called, as this gets the real
22485         MonoMethod.
22486
22487 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22488
22489         * aot.c: register roots
22490
22491 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22492
22493         * aot.c : I could just use PLATFORM_WIN32 flag.
22494
22495 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22496
22497         * aot.c : Reverting the previous fix. This time it broke linux build.
22498
22499 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22500
22501         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22502
22503 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22504
22505         * mini.c (handle_stack_args): Remove some more debugging code.
22506         
22507         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22508
22509         * driver.c mini.h aot.c: Allow additional options to be specified with
22510         --aot and pass them to mono_compile_assembly.
22511
22512         * aot.c: Add experimental code to AOT compile all loaded assemblies
22513         on demand and save the code into a cache in the filesystem.
22514
22515         * aot.c: Add support for more wrapper methods.
22516         
22517         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22518         58863.
22519
22520         * cpu-*.md: Remove removed opcodes.
22521
22522         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22523         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22524         related icalls to marshal.c.
22525
22526 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22527
22528         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22529
22530         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22531
22532         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22533
22534 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22535         * liveness.c: If liveness is recomputated we need to reset the information
22536         for each variable. This way, if the liveness range has been narrowed
22537         by optimizations that happened after the last computation, we can return
22538         a smaller range.
22539         
22540         For example, if you have
22541         
22542         {
22543                 int i = 0;
22544                 
22545                 // Tons of code that does not affect i
22546                 
22547                 i = foo ();
22548                 ...
22549         }
22550         
22551         i = 0 is dead code and will be removed by SSA. However, when
22552         linear scan gets to the code, i will still appear to be live
22553         throughout the entire block. This prevents good register allocation.
22554
22555 2004-07-06  Martin Baulig  <martin@ximian.com>
22556
22557         * debug-mini.c (mono_debug_init_method): Allow
22558         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22559         (mono_debug_add_icall_wrapper): New method.
22560
22561         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22562
22563 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22564
22565         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22566         optimization.
22567
22568 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22569
22570         * aot.c (mono_aot_load_method): Fix loading of debug info.
22571
22572 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22573
22574         * aot.c: Add logging support.
22575
22576 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22577
22578         * mini.h: Add prototype for mono_print_method_from_ip.
22579
22580         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22581
22582         * inssel.brg: 64 bit fixes.
22583
22584         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22585         inssel-long32.brg.
22586
22587         * Makefile.am: Add SPARC64 support.
22588
22589 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22590
22591         * aot.c: Fix alignment problems on 32 bit platforms.
22592
22593 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22594
22595         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22596         SPARC64.
22597
22598         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22599         problems.
22600
22601         * mini.h: Bump AOT file version. Some 64 bit fixes.
22602
22603 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22604
22605         * inssel-sparc.brg: Add new rule to avoid register moves.
22606
22607         * inssel.brg: Add ldind_to_load_membase helper function.
22608
22609 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22610
22611         * mini.c: OffsetToStringData intrinsic.
22612         
22613 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22614
22615         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22616
22617         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22618         regression tests.
22619
22620         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22621 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22622
22623         * mini.c: reinstated mono_compile_get_interface_var()
22624         on x86, too, since the change breaks the Gtk# build there as well.
22625
22626 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22627
22628         * driver.c: remove loop from the default optimizations: it seems to
22629         interact badly with some of the other options (see bug #60613).
22630
22631 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22632
22633         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22634         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22635
22636 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22637
22638         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22639         vararg-using methods.
22640
22641 2004-06-21  Martin Baulig  <martin@ximian.com>
22642
22643         * mini/mini-exceptions.c
22644         (mono_handle_exception): Added `gpointer original_ip' argument.
22645         After calling mono_unhandled_exception(), call
22646         mono_debugger_unhandled_exception() and if that returns true,
22647         restore the context and return.
22648
22649 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22650
22651         * mini-ppc.c: prefer the use of relative branches so
22652         they won't need to be patched in aot code (patch from Patrick Beard).
22653
22654 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22655
22656         * aot.c: patch from Patrick Beard to make the output assembly
22657         more correct for the MacOSX assembler. Small tweak to
22658         generate sane images on Linux/PPC, too.
22659
22660 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22661
22662         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22663         case until bug #59509 is fixed (shows up in #60332).
22664
22665 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22666
22667         * mini.c: make sure the needed wrappers are compiled, too, with
22668         precomp.
22669
22670 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22671
22672         * driver.c: remove NPTL reference in --version output.
22673
22674 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22675
22676         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22677         generate valid assembly for the Mach-O assembler.
22678
22679 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22680
22681         * driver.c: don't include abcrem in the all optimization specifier
22682         since it slows down jit compilation too much for now.
22683
22684 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22685
22686         * mini.c: use BIGMUL only if both operands have the same signage.
22687         * iltests.il: Test for bug 60056. (errors related to signage in
22688         BIGMUL).
22689
22690         r=lupus.
22691
22692 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22693
22694         * mini.c, aot.c: memory leak fixes.
22695
22696 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22697
22698         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22699
22700 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22701
22702         * Makefile.am: remove the -static hack completely, it links in
22703         statically glib as well.
22704
22705 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22706
22707         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22708         * exceptions.cs: make it compile with new mcs/csc.
22709
22710 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22711         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22712         and added relevant test case.
22713
22714 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22715
22716         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22717         regressions in gtk-sharp.
22718
22719 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22720
22721         * exceptions.cs: New regression tests.
22722
22723         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22724
22725 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22726
22727         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22728
22729 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22730
22731         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22732
22733         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22734
22735 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22736
22737         * mini.c (mono_jit_runtime_invoke): Init class in this
22738         method instead of trusting mono_jit_compile_method to
22739         do the work (because wrappers can be in object class)
22740
22741 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22742
22743         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22744
22745         * basic-long.cs: New regression test.
22746
22747 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22748
22749         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22750         and div/rem checks.
22751
22752 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22753
22754         * Makefile.am: fix miguel's change to build mono statically against
22755         libmono (track build dependencies).
22756
22757 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22758
22759         * cfold.c: Some glib versions do not have G_MININT32.
22760
22761 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
22762
22763         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
22764         with precision of tan, atan, sin and cos, and implemented related
22765         regressions tests (fixes bug 54467, but one new problem appeared and
22766         is not fixed yet).
22767
22768 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22769
22770         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
22771
22772         * exceptions.cs: Add test for constant folding && division by zero.
22773
22774         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
22775         since driver.c is in libmono too, so the optimization was useless.
22776
22777         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
22778         variable to driver.c so the compiler can emit more efficient code to
22779         access them.
22780
22781 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22782
22783         * Makefile.am: don't distribute generated inssel.[ch] files.
22784
22785 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22786
22787         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
22788         into the default appdomain. Fixes #58707.
22789
22790         * jit-icalls.c: Remove the broken approximation for truncl, doing
22791         no conversion is better.
22792
22793         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
22794         Fixes #58863.
22795
22796 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22797
22798         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
22799         of the mcrxr instruction which is not available on some processors
22800         even if it's documented to be. Implement add and sub overflow correctly
22801         (still not complete for long unsigned). Speed up icalls a bit.
22802
22803 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
22804
22805         * mini.c (mono_jit_compile_method_with_opt): Make sure that
22806         we run .cctor in the current domain instead of target_domain.
22807         
22808         Fixes bug #58558, .cctor not being called in -O=shared.
22809
22810 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22811
22812         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
22813
22814 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
22815
22816         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
22817         which can be done with an imm8, do it that way.
22818         (mono_arch_output_basic_block): ditto for a jmp
22819         (mono_arch_emit_prolog): Computate maximum offset of a label.
22820
22821 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
22822
22823         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
22824         now tries to allocate prefered physical reg's for virtual
22825         regs. This reduces the number of emited spills/loads with
22826         20-30% on our core assemblies.
22827
22828 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22829
22830         * jit-icalls.c: truncl() is not needed and trunc() is
22831         the correct thing to do anyway (bug #58287).
22832
22833 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
22834
22835         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
22836         if available.
22837
22838 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
22839
22840         * driver.c: enable loop optimizations by default.
22841
22842 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22843
22844         * mini-x86.c: fix calc of max loop size when aligning loops start.
22845
22846 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
22847
22848         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
22849         the stack.
22850
22851 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
22852
22853         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
22854         should set carry.
22855
22856         * basic-long.cs: Add tests for add/subtract of immediates with carry.
22857
22858         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
22859         
22860         * mini.c (inline_method): Allways inline some wrappers even if the cost
22861         is too large. Fixes #58785.
22862
22863         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
22864         
22865 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
22866
22867         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
22868         (crichton@gimp.org). Beginning of support for sparc/linux.
22869
22870         * mini-sparc.c: Optimize retrieval of LMF address.
22871
22872 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
22873
22874         * exceptions-ppc.c:  handle alloca in methods with clauses.
22875
22876 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
22877
22878         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
22879
22880 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
22881
22882         * mini.c: Delegate most of the abort signal work to 
22883           mono_thread_request_interruption, which also handles Stop and Suspend
22884           states.
22885
22886 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
22887
22888         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
22889         supports the save/restore lmf opcodes.
22890
22891 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
22892
22893         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
22894         by gcc-3.4 as well.
22895
22896         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
22897
22898 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22899
22900         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
22901         methods which contain array accesses.
22902
22903         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
22904         boundaries. Fixes #58537.
22905
22906         * iltests.il: Add regression test for #58537.
22907
22908 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22909
22910         * mini-x86.c (mono_arch_local_regalloc): Last part of
22911         fix for bug #58633 (releasing register to early).
22912
22913 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
22914
22915         * basic-long.cs: Add new regression test.
22916
22917 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22918
22919         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
22920         register too early on the chain.
22921
22922 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22923
22924         * mini.c (create_helper_signature): Use a helper function to reduce
22925         the code which needs to be written. Also set the calling convention of
22926         icalls on windows. Fixes #57840.
22927
22928 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22929
22930         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
22931         exceptions-ppc.c: added helper function to get the instruction address
22932         from a signal handler context.
22933
22934 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22935
22936         * helpers.c: use g_get_tmp_dir. Invokes happyness 
22937         from gonzalo.
22938
22939 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22940
22941         * helpers.c: Add new env variable to pass args to objdump.
22942         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
22943
22944 2004-05-17  Radek Doulik  <rodo@ximian.com>
22945
22946         * Makefile.am (common_sources): added abcremoval.h so it get
22947         disted and daily mono packages on go-mono.com will build again
22948
22949 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
22950
22951         * abcremoval.c: Fixed coding style, added copyright header.
22952
22953         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
22954
22955         * mini.h: Added prototype for abc removal main function.
22956
22957         * build_relations_propagation_table.pl: Added copyright header.
22958
22959 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22960
22961         * basic-long.cs: reg test for complex ceq_long bug.
22962
22963 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22964
22965         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
22966         reg in long and clob case (bug #58343). Fixed/added comments.
22967
22968 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
22969
22970         * mini.c (mono_jit_runtime_invoke): Follow new convention
22971         of calling the invoke method with an function pointer.
22972
22973 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
22974
22975         * ChangeLog: Fix author of memory leak patch.
22976
22977 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
22978
22979         * Makefile.am: fix make dist as well...
22980
22981
22982 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
22983
22984         * cfold.c: Made so that conversions from pointer to int4 are no-ops
22985         on archs where pointers are 4 bytes long.
22986
22987         * Makefile.am: Added abcremoval.c source file.
22988
22989         * abcremoval.c: Added abcremoval.c.
22990
22991         * abcremoval.h: Added abcremoval.h.
22992
22993         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
22994
22995         * inssel.brg: Enabled bounds check removal.
22996
22997         * mini.c: Added support for abcrem optimization.
22998
22999         * mini.h: Added abcrem optimization label.
23000
23001         * driver.c: Added support for abcrem optimization.
23002
23003         * propagated_relations_table.def: Added propagated_relations_table.def.
23004
23005 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23006
23007         * mini.c, cfold.c: fix style.
23008
23009 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23010
23011         * mini.c: handle issue with the low-level implementation of
23012         some long opcodes (bug #54209).
23013
23014 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23015
23016         * basic.cs: test for my new cmov stuff.
23017
23018 2004-05-13      Patrik Torstensson
23019
23020         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23021         opt and added peephole documentation.
23022
23023 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23024
23025         * tramp-ppc.c: rewrote the generic trampoline code.
23026
23027 2004-05-11      Patrik Torstensson
23028
23029         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23030
23031 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23032
23033         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23034
23035         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23036         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23037
23038         * mini.c: Add new icalls for AsAny marshalling.
23039
23040 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23041
23042         * tramp-ppc.c, mini-ppc.c: more cleanups.
23043
23044 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23045
23046         * mini.c: no warnings.
23047
23048 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23049
23050         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23051
23052 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23053
23054         * mini.c: In the thread abort signal handler, if the thread is in the
23055         process of being stoped, don't throw the Abort exception, just stop the
23056         thread.
23057
23058 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23059
23060         * tramp-ppc.c: removed old code.
23061
23062 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23063
23064         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23065         do some simple speed optimizations on ppc.
23066
23067 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23068
23069         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23070         and large offsets in load/store.
23071
23072 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23073
23074         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23075         it causes regressions.
23076
23077 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23078
23079         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23080         support.
23081
23082 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23083
23084         * jit-icalls.c: remove warnings.
23085         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23086         speedups for unsafe code.
23087
23088 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23089
23090         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23091
23092 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23093
23094         * basic-calls.cs: Add new regression test.
23095
23096         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23097         more portable.
23098
23099         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23100
23101         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23102         is no longer used.
23103
23104 2004-05-06      Patrik Torstensson
23105
23106         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23107         long reg allocation in any reg (not only eax:edx) and implemented 
23108         long shl/shr ops in asm instead of helpers.
23109
23110 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23111
23112         * mini-sparc.h: Fix warnings.
23113
23114         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23115         stack.
23116
23117         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23118         separate statement for clarity.
23119
23120         * mini-sparc.c: Update status.
23121
23122 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23123
23124         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23125         here.
23126
23127 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23128
23129         * inssel-ppc.brg: another small pre-release workaround:
23130         we don't do overflow detection for long_sub_un.
23131
23132 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23133
23134         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23135         (also works around a weird ppc bug: 57957).
23136
23137 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23138
23139         * tramp-ppc.c: trampoline fixes.
23140
23141 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23142
23143         * mini-ppc.c: fixed typos.
23144
23145 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23146
23147         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23148         at the top of the stack. Fixed typos. Use a frame registers
23149         for all the methods with exception clauses.
23150
23151 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23152
23153         * exceptions-ppc.c: restore fp registers.
23154
23155 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23156
23157         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23158         order from the stack top (moved the stack room to save the
23159         return value for trace after the param area). Fixed corruption
23160         in restoring registers on unwind.
23161
23162 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23163
23164         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23165
23166 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23167
23168         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23169         and prolog/epilog for methods that use it. Allow
23170         enough param area room for varargs methods. Fix miguel's
23171         breakage in exception handling.
23172
23173 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23174
23175         * Makefile.am: run genmdesc only on current arch.
23176
23177 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23178
23179         * exceptions-x86.c:
23180         * mini-x86.h: fix the build on windows.
23181
23182 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23183
23184         * 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.
23185
23186         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23187
23188         * mini-exceptions.c: New file.
23189         
23190         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23191         Move some parts of the x86 exception handling code to an 
23192         arch-independent file so it can be shared with other ports.
23193
23194 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23195
23196         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23197
23198 2004-04-26  David Waite  <mass@akuma.org>
23199
23200         * driver.c: remove comma from end of enumeration declaration
23201
23202 2004-04-26  Jackson Harper  <jackson@ximian.com>
23203
23204         * driver.c: parse config file before loading first assembly. This
23205         allows the user gac to be enabled/disabled. 
23206         
23207 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23208
23209         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23210         simpler mechanism: we do not care what is encoded initially
23211         (branch absolute or relative), we care about the code and its
23212         target.  I kept the old code for reference for now.
23213
23214         The new code tries first to determine if the jump is anywhere in
23215         the -/+32 absolute meg range, if it succeeds, it encodes using the
23216         absolute branch;  If not, it tried to find something in the
23217         relative range, if not, it uses the handle_thunk code. 
23218
23219 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23220
23221         * exceptions-ppc.c: use the correct ip register on macosx.
23222
23223 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23224
23225         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23226
23227 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23228
23229         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23230         Raise exception on integer divide by zero by hand since the hw
23231         doesn't support it. Handle NaNs in FP compares.
23232
23233 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23234
23235         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23236         code reducing duplication between the platforms and enabled
23237         signal exception handling (on linux for now).
23238
23239 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23240
23241         * exceptions-ppc.c: more macosx support.
23242
23243 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23244
23245         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23246
23247 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23248
23249         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23250
23251 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23252
23253         * iltests.il: more tests.
23254
23255 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23256
23257         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23258         vars as well.
23259
23260 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23261
23262         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23263
23264 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23265
23266         * liveness.c: Mark variables as volatile in all basic blocks reachable
23267         from exception clauses.
23268
23269 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23270
23271         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23272         inlining.
23273
23274 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23275
23276         * iltests.il, basic.cs: more tests for regalloc.
23277
23278 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23279
23280         * iltests.il: Some tests for register allocation modifications
23281         I have locally.
23282
23283 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23284
23285         * exceptions.cs: Add regression test for bug #56782.
23286
23287         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23288         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23289         the beauty of fixing the same thing in 5 different files...
23290
23291 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23292
23293         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23294         methods.
23295
23296 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23297
23298         * mini.c: Add support for STRWLPARRAY marshalling convention.
23299
23300 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23301
23302         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23303         to init the context to setup the regs pointer).
23304
23305 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23306
23307         * exceptions-ppc.c: more exceptions work.
23308
23309 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23310
23311         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23312         not allowed.
23313
23314 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23315
23316         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23317         can use the memory directly.
23318
23319         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23320
23321         add x86_add_membase, x86_sub_membase, x86_mul_membase
23322
23323 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23324
23325         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23326         GENERAL_REGS they were also hardcoded for all PPC ports.
23327
23328         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23329
23330         Remove hard-coded limit for floating point registers, use
23331         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23332
23333         Notice that in MacOS X calling conventions you can fit a lot more
23334         floating point values in registers, so I should update the PInvoke
23335         test to excercise the passing of floating point values on the
23336         stack (currently broken).
23337         
23338 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23339
23340         * tramp-ppc.c (create_trampoline_code): Added
23341         JUMP_TRAMPOLINE_SIZE. 
23342         (ppc_magic_trampoline): Follow the pattern from
23343         x86_magic_trampoline: if code is set to zero, return. 
23344         (create_trampoline_code): Always pass MonoMethod to the jump
23345         trampoline, before it was passing a null.
23346         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23347         share the code with mono_arch_create_jit_trampoline. 
23348
23349         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23350         implemented.
23351         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23352         implemented.  
23353
23354         * cpu-g4.md: Added length for jmp instruction, the worst case
23355         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23356         for save_lmf).
23357
23358 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23359
23360         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23361
23362 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23363
23364         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23365         before each IL instruction.
23366
23367         * mini.c (CEE_BOX): Fix warnings.
23368
23369 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23370
23371         * mini.c: removed a few unused vars and extra whitespace.
23372
23373 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23374
23375         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23376         checks.
23377         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23378         index.
23379         (OP_GETCHR): use the above
23380         (CEE_LDELEMA): use the above.
23381
23382         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23383         version of the generic impl.
23384         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23385         (CEE_LDELEMA): use the above.
23386
23387 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23388
23389         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23390         Fixes #56317.
23391
23392         * iltests.il: Added new regression test for #56317.
23393
23394 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23395
23396         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23397         under NetBSD. Fixes #56450.
23398
23399         * liveness.c (update_gen_kill_set): Fix previous patch.
23400
23401 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23402
23403         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23404
23405 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23406
23407         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23408         ldsfld and ldsflda.
23409
23410         * inssel-sparc.brg: Add more optimizations.
23411
23412         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23413
23414 2004-04-01  Martin Baulig  <martin@ximian.com>
23415
23416         * mini.c (handle_box): New static function; moved the
23417         implementation of CEE_BOX here.
23418         (mono_method_to_ir): Added `constrained_call' variable.
23419         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23420         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23421         mono_method_get_constrained() to get the method.
23422
23423 2004-04-01  Martin Baulig  <martin@ximian.com>
23424
23425         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23426         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23427         (mono_method_to_ir): We don't need these macros anymore since
23428         mono_class_get_full() already takes care of it. 
23429
23430 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23431
23432         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23433         use @function (as doesn't accept #function here) and check the return
23434         value of system and stop if fails.
23435
23436 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23437
23438         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23439
23440 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23441
23442         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23443
23444         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23445
23446         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23447         #56223.
23448
23449         * basic-long.cs: Add test for negation of Int64.MinValue.
23450
23451 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23452
23453         * mini-sparc.c: Update status.
23454
23455         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23456
23457         * exceptions-sparc.c: Fix return value in filters.
23458
23459         * inssel-sparc.brg: Fix register allocation in some rules.
23460
23461 2004-03-28  Martin Baulig  <martin@ximian.com>
23462
23463         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23464         if neccessary.  
23465
23466 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23467
23468         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23469         
23470         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23471         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23472         remove unused conv_u4 opcode.
23473
23474         * mini-x86.c: Remove valgrind workaround since it slows down things
23475         even when mono is not run under valgrind.
23476
23477 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23478
23479         * mini-sparc.c: Update status.
23480
23481         * inssel-sparc.brg: Add some optimizations.
23482
23483         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23484         future delay slot filling. Add support for varargs, tail calls and JMP.
23485
23486         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23487         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23488
23489         * inssel.brg: Fix register allocation in OP_ARGLIST.
23490
23491         * inssel.brg: Fix warnings.
23492
23493 2004-03-25  Martin Baulig  <martin@ximian.com>
23494
23495         * mini.c (inflate_generic_field): Removed.
23496         (mini_get_method): Removed, use mono_get_method_full(),
23497         (mini_get_class): Removed, use mono_class_get_full().
23498         (mono_method_to_ir): Pass our generic context to
23499         mono_field_from_token().        
23500
23501 2004-03-25  Martin Baulig  <martin@ximian.com>
23502
23503         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23504         of a `MonoMethod *'.
23505         (mini_get_method): Take a `MonoGenericContext *' instead
23506         of a `MonoMethod *'.
23507         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23508         a new local variable called `generic_context' which holds the
23509         current `MonoGenericContext *'; use it to lookup things.
23510
23511 2004-03-24  Martin Baulig  <martin@ximian.com>
23512
23513         * mini.c (mini_get_class): New static method; if we're inside a
23514         generic instance, inflate the class if neccessary.
23515         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23516
23517 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23518
23519         * iltests.il: New regression test for #55976.
23520
23521         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23522         #55976.
23523
23524 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23525
23526         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23527         output.
23528
23529 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23530
23531         * liveness.c: Consider SSA stores as well as loads when making vars
23532         volatile.
23533
23534         * exceptions.cs: New regression tests for register allocation.
23535         
23536 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23537
23538         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23539         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23540           domain lock only to protect puntual access to data structures.
23541           Added access lock for sighash, jit_icall_hash_name, 
23542           jit_icall_hash_addr and domain->code_mp.
23543
23544 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23545
23546         * driver.c: Print SIGSEGV handling method.
23547
23548         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23549
23550         * mini.c (setup_jit_tls_data): Handle case when this is called
23551         multiple times for a thread.
23552
23553         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23554         is different from fbxx_un. Fixes #54303. Also use constants instead of
23555         magic numbers in a lot of places.
23556
23557 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23558
23559         * exceptions.cs: Fix cctor test when --regression is used.
23560
23561 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23562
23563         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23564         for Linux/ppc.
23565
23566 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23567
23568         * inssel-ppc.brg: fixed register assignments for some rules.
23569
23570 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23571
23572         * exceptions.cs: Add test for exceptions in static constructors.
23573
23574         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23575         static constructors outside the domain lock. Fixes #55720.
23576
23577 2004-03-17  Martin Baulig  <martin@ximian.com>
23578
23579         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23580         (inflate_generic_field): Take the `MonoMethod *' instead of the
23581         `MonoClass *' and added support for generic method.
23582         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23583         have a `field->parent->gen_params', only inflate the field if it's
23584         an open constructed type.
23585
23586 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23587
23588         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23589         exception object instead of the preconstructed ones.
23590
23591 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23592
23593         * mini.c: reverted changed to sigsegv_signal_handler commited
23594         accidentally in the previous patch.
23595
23596 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23597
23598         * mini.c:
23599         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23600         running --aot with an old assembly.
23601
23602 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23603
23604         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23605         point values.
23606
23607         * mini-sparc.c: Add support for v9 branches with prediction.
23608
23609 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23610
23611         * mini.c (mini_init): #warning is GNUC only
23612
23613         * mini-sparc.h: implement __builtin_frame_address
23614         and __builtin_return_address for Sun C compiler
23615
23616 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23617
23618         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23619
23620 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23621
23622         * basic-calls.cs: Add test for unaligned byref long argument passing.
23623
23624         * mini-ops.h: Add sparcv9 compare and branch instructions.
23625
23626         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23627         v9 instructions if we have a v9 cpu.
23628
23629         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23630         registers for global allocation.
23631
23632         * exceptions-sparc.c: Fixes.
23633         
23634 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23635
23636         * liveness.c (mono_analyze_liveness): Optimized version.
23637
23638         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23639
23640         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23641         sparc work.
23642
23643         * basic-float.cs basic-calls.cs: New regression tests.
23644
23645 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23646
23647         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23648         sigaltstack implementation.
23649
23650         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23651         
23652         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23653         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23654
23655 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23656
23657         * mini.c: Fix warnings.
23658         
23659         * mini.c (mono_resolve_patch_target): New function which contains the
23660         arch independent part of the patching process.
23661
23662         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23663         patching code to a separate function.
23664
23665 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23666
23667         * mini.c (add_signal_handler): ifdef out on Windows
23668
23669 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23670
23671         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23672         cpu-sparc.md: Add exception handling support + other fixes.
23673
23674         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23675         typed GC detection in --version.
23676
23677         * basic.cs exceptions.cs: New regression tests.
23678
23679         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23680         the arch specific code can store data during a compilation.
23681
23682         * mini-ops.h: Add OP_SETFRET.
23683
23684         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23685         function, register a separate icall for each arity, so the icalls can
23686         get a wrapper.
23687         
23688         * mini.c (mono_print_tree): Print negative offsets in a more readable
23689         form.
23690         
23691         * mini.c: Make signal handling work on sparc.
23692         
23693         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23694
23695         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23696
23697         * jit-icalls.c: Emulate truncl by aintl on solaris.
23698
23699         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23700
23701 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23702
23703         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23704
23705 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23706
23707         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23708         a MarshalByRef type, inline a method that performs the check, taking into
23709         account that the object can be a proxy. Also implemented tow new opcodes:
23710         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23711         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23712         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23713
23714 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23715
23716         * mini-ppc.c: if a relative branch displacement is too big
23717         but it points to and area reachable with an absolute branch, 
23718         avoid the thunks.
23719
23720 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23721
23722         * mini.c: optimize small copies in cpblk.
23723
23724 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23725
23726         * basic-calls.cs basic-float.cs: New regression tests.
23727
23728         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23729         negative offsets from %fp. Implement localloc. Fix local register 
23730         allocation. Fix the case when the this argument needs to be saved to
23731         the stack. Implement some missing opcodes.
23732
23733 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23734
23735         * mini.c (mini_method_compile): Reenable global regalloc in methods
23736         with exception handlers.
23737
23738         * linear-scan.c (mono_varlist_sort): Fix warning.
23739
23740         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23741
23742         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23743         regalloc costs.
23744
23745         * liveness.c: Make all variables uses in exception clauses volatile, to
23746         prevent them from being allocated to registers. Fixes #42136.
23747
23748 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23749
23750         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23751         causes regressions.
23752
23753         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23754         argument to mono_arch_regalloc_cost.
23755
23756         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
23757         precisely.
23758
23759 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
23760
23761         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
23762         Make the cost of allocating a variable to a register arch dependent.
23763
23764         * basic-calls.cs: Fix compilation of tests.
23765         
23766         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
23767         helper function to cut back on the number of #ifdefs needed.
23768
23769         * mini-ppc.c: Fix compilation.
23770
23771         * basic-calls.cs: New regression tests.
23772
23773         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
23774
23775         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
23776         of l0 since that is callee saved.
23777
23778         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
23779         to virtual calls.
23780
23781         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
23782         of delay instruction.
23783
23784         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
23785
23786         * mini.h (MonoCallInst): Add 'virtual' flag.
23787
23788         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
23789
23790 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23791
23792         * *.cs: New regression tests.
23793
23794         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
23795         work.
23796
23797         * mini.c (mono_runtime_install_handlers): Fix build.
23798
23799         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
23800         'signal_stack_size' members.
23801
23802         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
23803         alternate signal stack.
23804
23805         * exceptions-x86.c: Add stack overflow handling.
23806
23807         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
23808         functions to arch independent code.
23809
23810         * mini.c (mono_print_tree): Print more detailed info for load_membase
23811         opcodes.
23812         
23813 2004-02-23  Martin Baulig  <martin@ximian.com>
23814
23815         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
23816
23817 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23818
23819         * mini-x86.c: fixed reg allocation for div/rem.
23820
23821 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
23822
23823         * driver.c (mono_main): Report some configuratio options on --version.
23824
23825 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
23826
23827         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
23828         low in the address space. Correctly flush memory in thunks where we
23829         output native code.
23830
23831 2004-02-20  Martin Baulig  <martin@ximian.com>
23832
23833         * mini.c (mini_get_method): New static method; inflate all generic
23834         methods and methods in open generic instances.
23835         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
23836         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
23837
23838 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23839
23840         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
23841
23842         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
23843
23844 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
23845
23846         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
23847
23848         * mini-sparc.c (flushi mono_arch_output_basic_block): make
23849         it compile using Sun's compiler.
23850
23851 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23852
23853         * 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.
23854
23855         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
23856
23857 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
23858
23859         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
23860         code.
23861         * mini-ppc.c: handle calls outside of the allowed range with thunks
23862         allocated using the code manager.
23863         * tramp-ppc.c: use the code manager to hold generated native code.
23864         Fixed the magic trampoline to just patch vtable entries.
23865
23866 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
23867
23868         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
23869         independent file.
23870
23871 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
23872
23873         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
23874         PPC.
23875
23876         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
23877         if we have a working __thread implementation.
23878
23879         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
23880         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
23881
23882 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
23883
23884         * mini-x86.c: Fix compilation under gcc 2.
23885         
23886 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
23887
23888         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
23889         contains a call to the wrapped function.
23890
23891         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
23892         OP_<CALL>_IMM opcodes, and use them under X86.
23893         
23894         * mini.c (mono_jit_find_compiled_method): Fix warning.
23895
23896         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
23897
23898         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
23899
23900         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
23901         functionality to mini.c.
23902
23903         * mini.c (mono_create_jump_trampoline): New function to create a jump
23904         trampoline. Return a compiled method instead of a trampoline if it
23905         exists. Add a cache for jump trampolines.
23906
23907         * mini.c (mono_jit_find_compiled_method): New function to return a
23908         compiled method if it exists.
23909
23910         * mini-x86.c: Call mono_create_jump_trampoline instead of 
23911         mono_arch_create_jit_trampoline.
23912
23913         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
23914         a jump trampoline. Fixes #52092.
23915         
23916 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
23917
23918         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
23919         which is not up-to-date. Add check_corlib_version () instead.
23920
23921         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
23922         have to call it.
23923         
23924         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
23925         since newer valgrind versions do not need it.
23926
23927         * mini.c (mono_jit_compile_method_with_opt): New helper function to
23928         compile a method with a given set of optimizations.
23929
23930         * mini.c: Compile icall wrappers on-demand instead of at startup.
23931
23932         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
23933         wrapper for an icall.
23934
23935 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
23936
23937         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
23938         #54063.
23939
23940         * iltests.il: Add test for non-empty stack before switch instruction.
23941
23942 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
23943
23944         * mini.c: Add support for new stringbuilder marshalling conventions.
23945
23946         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
23947
23948 2004-02-01  Martin Baulig  <martin@ximian.com>
23949
23950         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
23951         in `ginst->mtype_argv'.
23952
23953 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
23954
23955         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
23956         facilitate grepping.
23957
23958 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
23959
23960         * mini.c: fixed buglet in initobj generic implementation for references.
23961
23962 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
23963
23964         * Makefile.am: make the version script conditional.
23965         * jit-icalls.c: handle missing truncl().
23966
23967 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
23968
23969         * exceptions.cs: Add more tests for double->int conversion.
23970
23971         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
23972         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
23973
23974 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
23975
23976         * driver.c: make --verbose --version emit an error
23977         if the loaded corlib doesn't match the runtime version.
23978
23979 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
23980
23981         * mini-ppc.h: export ppc_patch().
23982         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
23983         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
23984         on par or better than on MacOSX.
23985
23986 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
23987
23988         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
23989         mono_lookup_pinvoke_call.
23990
23991         * mini-x86.c: Under windows, the default pinvoke calling convention is
23992         stdcall. Fixes #52834.
23993
23994         * mini.c (optimize_branches): Add an upper bound to the number of
23995         iterations to prevent infinite loops on strange loops. Fixes #53003.
23996
23997 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23998
23999         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
24000         and ISINST. Fixes #52093.
24001
24002         * objects.cs (test_0_vector_array_cast): New tests.
24003         
24004 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24005
24006         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24007         checking in Array.Set ().
24008
24009         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24010         #52590.
24011
24012         * object.cs (test_0_multi_array_cast): New regression test.
24013
24014 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24015
24016         * exceptions-ppc.c: fix build on Linux/PPC.
24017
24018 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24019
24020         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24021         running under valgrind.
24022         (x86_magic_trampoline): Fix build bustage.
24023
24024         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24025         negative values as well. This is needed for the encoding of the line number
24026         info, since sometimes the line numbers are not in increasing order.
24027
24028 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24029
24030         * cpu-pentium.md (localloc): Increase the size of the localloc 
24031         instruction since it is a loop under Win32.
24032
24033         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24034         allocation.
24035
24036 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24037
24038         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24039         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24040         Max Horn (max@quendi.de). Fix file names in comments.
24041
24042 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24043
24044         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24045         avoid stack overflow.
24046         (replace_usage): Avoid uninitialized variable warnings.
24047
24048         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24049         and taking the address of valuetype variables.
24050
24051 2004-01-03  Patrik Torstensson
24052
24053         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24054         for other purposes than FP later on.
24055
24056 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24057
24058         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24059         of tail calls.
24060
24061 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24062
24063         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24064
24065 2003-12-30  Patrik Torstensson <p@rxc.se>
24066
24067         * mini-x86.h: Decreased number of availiable fp regs.
24068         Solves corner cases with FP spilling.
24069
24070 2003-12-23  Patrik Torstensson <p@rxc.se>
24071
24072         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24073         for floating point stack tracking / spilling on x86. 
24074         Fixes bug #49012.
24075         
24076         * basic-float.cs: added float mul overflow test.
24077
24078 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24079
24080         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24081
24082 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24083
24084         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24085         supports for cond branches that overflow the immediate
24086         overflow offset. mcs can compile simple programs.
24087
24088 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24089
24090         * exceptions-ppc.c: exception handling support wip:
24091         finally handlers get run on exception.
24092
24093 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24094
24095         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24096         profiling.
24097
24098 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24099
24100         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24101         initial support for stack walking and unwinding.
24102
24103 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24104
24105         * driver.c (mono_main): Make corlib-out-of-sync message more 
24106         descriptive. Also remove verify_corlib call.
24107
24108 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24109
24110         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24111         not overlap with other call's arguments, too.
24112
24113 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24114
24115         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24116         move to arch-specific code the choice of arch-specific
24117         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24118         * mini.c: ensure emulation calls will not interleave
24119         with other calls.
24120
24121 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24122
24123         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24124         the magic trampoline stack frame is dropped before executing
24125         the new method.
24126
24127 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24128
24129         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24130         and integer to fp conversions. Added support for overflowing
24131         arguments on the stack. Reserve a couple more registers as temps.
24132         Added support for aot compilation (as output still needs to be
24133         tweaked, though).
24134
24135 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24136
24137         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24138         Don't overwrite return register in some corner cases.
24139
24140 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24141
24142         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24143         static constructors when AOT compiling.
24144
24145         * driver.c (mono_main): Call mono_check_corlib_version.
24146
24147 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24148
24149         * cpu-g4.md, basic.cs: fixed div target register.
24150
24151 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24152
24153         * mini-ppc.c, basic.cs: shl_imm fix with test.
24154
24155 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24156
24157         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24158         structures by value. Misc fixes.
24159         * objects.cs: more tests.
24160
24161 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24162
24163         * mini-ppc.c: lconv.ovf.i implemented.
24164
24165 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24166
24167         * mini.c:
24168         (mini_init): don't error out if someone already called g_thread_init.
24169
24170 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24171
24172         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24173         to be any type per the spec. Fix abnormal memory usage when
24174         the same object is repeatedly thrown.
24175
24176 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24177
24178         * mini.c: check for overruns in IL code.
24179
24180 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24181
24182         * TODO: Add/remove some todo entries.
24183
24184 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24185
24186         * driver.c (mono_main): Call mono_verify_corlib.
24187
24188 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24189
24190         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24191         This has been moved to mini.c
24192         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24193         type being casted is marshalbyref it could be a proxy, so instead of
24194         emitting the type check code, emit a call to a runtime method that will
24195         perform the check by calling CanCastTo if needed.
24196
24197 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24198
24199         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24200         methods with large stack frames under Win32.
24201
24202 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24203
24204         * Makefile.am: Distribute regression tests.
24205
24206         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24207         at the end instead of inserting each variable into the sorted list.
24208
24209         * linear-scan.c (mono_varlist_sort): New helper function.
24210         
24211 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24212
24213         * mini.c: ensure arguments and locals are within bounds.
24214
24215 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24216
24217         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24218         related fixes.
24219
24220 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24221
24222         * mini.c (mono_cprop_copy_values): Fix crash.
24223
24224         * aot.c: Set verbosity back to 0.
24225         
24226 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24227
24228         * regalloc.c: complete memory leak fix by Laurent Morichetti
24229         (l_m@pacbell.net).
24230
24231 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24232
24233         * driver.c (main_thread_handler): Revert the previous patch.
24234
24235         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24236         under valgrind.
24237
24238         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24239         memory from the memory pool.
24240
24241         * driver.c (main_thread_handler): Turn on all optimizations when
24242         --aot is used.
24243
24244         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24245         an array for better performance.
24246
24247         * regalloc.c (mono_regstate_assign): Fix memory leak.
24248
24249         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24250         serialize the debug info.
24251
24252         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24253         debug info from the serialized representation.
24254
24255         * aot.c: Save debug info into the generated file and load it when 
24256         loading a method.
24257
24258         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24259
24260 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24261
24262         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24263         More FP-related fixes.
24264
24265 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24266
24267         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24268         and register allocation buglet. Hello world now runs.
24269
24270 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24271
24272         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24273         * tramp-ppc.c: fixed class init trampoline.
24274         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24275
24276 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24277
24278         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24279         mini.c: more ppc changes/fixes.
24280
24281 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24282
24283         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24284         Also optimize the case when the arguments are the same in the caller 
24285         and in the callee.
24286
24287         * iltests.il: Add tests for tail calls with valuetype arguments.
24288
24289 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24290
24291         * mini-ppc.c: fixes for struct return type.
24292
24293 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24294
24295         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24296         mono_spillvar_offset() to arch-specific code.
24297
24298 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24299
24300         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24301
24302 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24303
24304         * exceptions-x86.c: Fix stack space leaks.
24305         
24306         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24307         registers from the lmf if the method has save_lmf set.
24308
24309 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24310
24311         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24312         of icall wrappers into InvokeInDomain, since these are now per-domain.
24313
24314 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24315
24316         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24317         make some opcode emulation and intrinsic ops enabled/disabled 
24318         according to the architecture. More fixes.
24319
24320 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24321
24322         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24323
24324 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24325
24326         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24327         arch-specific handling for 'this' and struct return type to
24328         arch-specific code.
24329
24330 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24331
24332         * aot.c: prevent divide by zero error when reporting (it happened with
24333         Accessibility.dll).
24334
24335 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24336
24337         * mini.h (inst_switch): Remove unused macro.
24338
24339 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24340
24341         * aot.c:
24342         (load_aot_module): free 'info->methods' and 'info' properly. No more
24343         "free(): invalid pointer blah" messages when you have an old aot
24344         compiled assembly.
24345
24346 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24347
24348         * jit-icalls.c, mini.c: Added support for context static fields.
24349
24350 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24351
24352         * mini.c (mono_method_blittable): Methods which set LastError are not 
24353         blittable either. Fixes #51108.
24354         
24355 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24356
24357         * mini.c: flush icache.
24358         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24359
24360 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24361
24362         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24363
24364 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24365
24366         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24367         safe on IA32.
24368
24369         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24370         vararg calls.
24371
24372         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24373
24374 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24375
24376         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24377         instruction when the result is discarded.
24378
24379         * iltests.il (test_0_div_regalloc): New regression test.
24380
24381         * arrays.cs: Fix compilation error.
24382
24383 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24384
24385         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24386         float rules to inssel-x86.brg: sane architectures with FP registers
24387         don't need to implement these rules.
24388
24389 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24390
24391         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24392
24393 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24394
24395         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24396         implementation of 32 bit systems.
24397
24398 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24399
24400         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24401         (Jeroen Zwartepoorte).
24402
24403 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24404
24405         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24406         the caller and the callee matches.
24407         
24408         * mini.c (mono_method_to_ir): Add comment.
24409
24410         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24411         signbit is missing on some platforms.
24412
24413 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24414
24415         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24416
24417         * mini.c (setup_jit_tls_data): Call the new function.
24418         
24419         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24420
24421         * mini-x86.c: Add experimental support for fast access to the lmf
24422         structure under NPTL/Linux 2.6.x.
24423
24424 2003-11-06  Martin Baulig  <martin@ximian.com>
24425
24426         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24427         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24428         the debugger.
24429
24430 2003-11-02  Martin Baulig  <martin@ximian.com>
24431
24432         * mini.c (inflate_generic_field): New static method.
24433         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24434         generic instance and the field is declared in a generic type, call
24435         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24436
24437 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24438
24439         * mini.h mini.c (mono_method_same_domain): New function to return
24440         whenever the caller and the callee are in the same domain.
24441
24442         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24443
24444 2003-10-30  Martin Baulig  <martin@ximian.com>
24445
24446         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24447         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24448         method parameters.
24449         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24450         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24451
24452 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24453
24454         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24455         propagation.
24456
24457         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24458         object here, so it is in the correct appdomain etc.
24459
24460 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24461
24462         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24463         already done.
24464         (mono_method_to_ir): Avoid freeing the type created returned from
24465         mono_type_create_from_typespec, since it is put into an internal cache
24466         by the function. Fixes pointer.exe.
24467
24468         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24469         trampolines for icalls and pinvokes as well. Fixes #33569.
24470
24471 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24472
24473         * mini.c: Update after appdomain changes.
24474
24475         * mini.c (mono_jit_compile_method_inner): Allways compile native
24476         method wrappers in the root domain, since there can only be one
24477         instance of them, whose address is stored in method->info.
24478
24479 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24480
24481         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24482         environment variable. Instead detect automatically whenever running
24483         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24484         valgrind.h.
24485
24486 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24487
24488         * trace.c, trace.h: New files that implement the new trace option
24489         parsing. 
24490
24491         * driver.c: Document new --trace options.
24492
24493         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24494         mini-x86.c: Apply:
24495
24496         -       if (mono_jit_trace_calls)
24497         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24498
24499         * mini.h: prototypes.
24500         
24501 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24502
24503         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24504
24505         * mini.c inssel.brg: Implement typedefbyref opcodes.
24506
24507         * mini.c (mono_jit_compile_method): Remove unused local variable.
24508
24509         * mini.c (mono_jit_compile_method_inner): Ditto.
24510         
24511 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24512
24513         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24514         
24515         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24516
24517 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24518
24519         * mini.c (mono_no_aot): Remove unused global variable.
24520
24521         * mini.c: Thread safety fixes.
24522
24523 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24524
24525         * mini.c (mono_create_class_init_trampoline): Add a lock around
24526         class_init_hash_addr.
24527
24528         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24529         #30073.
24530
24531         * mini.c: Decompose the NEWARR instruction before decomposing its
24532         arguments. Fixes #30073.
24533
24534 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24535
24536         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24537         convention.
24538
24539 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24540
24541         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24542
24543         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24544
24545         * driver.c: Add support for compiling icall wrappers to --compile.
24546
24547 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24548
24549         * inssel.brg: The empty value in class->interface_offsets is -1, not
24550         0. Fixes #49287.
24551
24552 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24553
24554         * objects.cs: New test for 'is' operator on an array of interfaces.
24555
24556 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24557
24558         * tramp-ppc.c: update trampoline code to support jumps
24559         and class initialization.
24560
24561 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24562
24563         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24564
24565         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24566
24567         * inssel.brg (OP_UNBOX): Remove unused rule.
24568
24569         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24570         region instead of one for each method. Fixes #47813.
24571
24572 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24573
24574         * exceptions.cs (test_0_nested_finally): New regression test for
24575         nested exception handlers.
24576
24577         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24578
24579         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24580
24581         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24582         inlining.
24583
24584         * mini.c (mono_method_check_inlining): Make the inlining limit 
24585         configurable by an environment variable.
24586         
24587         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24588
24589         * mini.h: Bump AOT file version.
24590
24591         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24592         token, store the image along with the token, since the token might not 
24593         refer to the same image as the method containing the relocation, 
24594         because of inlining.
24595
24596 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24597
24598         * mini.c (mono_precompile_assemblies): New function to compile
24599         all methods in all loaded assemblies.
24600
24601         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24602
24603         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24604         iassign and fassign to int*, since they can contain large negative
24605         values if the register is spilled. Also added some comments. Fixes
24606         #45817.
24607
24608         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24609         under Win32. Fixes #42964.
24610
24611 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24612
24613         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24614
24615         * aot.c: Added support for AOT compiling methods which contain calls
24616         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24617         handled.
24618         
24619         * driver.c (compile_all_methods): Run the compilation in a thread
24620         managed by mono. Fixes #44023.
24621
24622         * mini.c (mono_codegen): Print full method name in verbose output.
24623
24624         * mini-x86.c (mono_arch_patch_code): Fix warning.
24625         
24626         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24627         jumps, since the method we are jumping to might be domain-specific.
24628
24629         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24630
24631 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24632
24633         * inssel.brg: string chars are unsigned.
24634
24635 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24636
24637         * TODO: New todo item.
24638
24639         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24640         which calls mono_runtime_class_init and patches the call site to
24641         avoid further calls.
24642         (mono_arch_create_class_init_trampoline): New arch specific function 
24643         to create a class init trampoline.
24644         (create_trampoline_code): Generalized so it can create
24645         class init trampolines as well.
24646
24647         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24648         (mono_create_class_init_trampoline): New function to create and cache
24649         class init trampolines.
24650         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24651         vtable given the address of a class init trampoline. Used by the
24652         patching process.
24653         (mono_codegen): Generate a call to a trampoline instead of
24654         mono_runtime_class_init in LDSFLD[A].
24655         (mono_codegen): Add relocations for the new trampoline.
24656         
24657         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24658         MONO_PATCH_INFO_CLASS_INIT.
24659
24660         * mini.h: Bump AOT version number.
24661
24662         * aot.c: Create a copy of the loaded code instead of using the original
24663         so methods which call each other will be close in memory, improving
24664         cache behaviour.
24665         
24666         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24667         patch since it breaks the regression tests.
24668         
24669         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24670         for the register saving instruction sequence since the 
24671         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24672
24673 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24674
24675         * TODO: Fix todo item && remove another.
24676
24677 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24678
24679         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24680         previous checkin.
24681
24682         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24683         function of the module.
24684
24685         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24686         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24687         --no-aot command line option.
24688
24689 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24690
24691         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24692         by Bernie Solomon (bernard@ugsolutions.com).
24693
24694         * inssel.brg: Refactor the interface offset table related code into
24695         its separate functions and add support for the AOT case.
24696
24697 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24698
24699         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24700         
24701         * aot.c: Added mono_aot_verbose variable and made all debugging
24702         output depend on the value of this variable.
24703
24704         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24705         method_label and info_label.
24706
24707         * mini.h mini-x86.c aot.c: Added a new relocation type 
24708         MONO_PATCH_INFO_IID for klass->interface_id.
24709
24710         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24711         the MonoJitInfo structure.
24712
24713         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24714         a non-root appdomain in shared mode.
24715
24716 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24717
24718         * aot.c: make aot loader less verbose. Remove free of unused variable.
24719
24720 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24721
24722         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24723
24724         * .cvsignore: Added *.dll.
24725
24726         * mini.c (mono_print_tree_nl): New function callable while debugging.
24727
24728         * mini.c (mono_print_code): Export this.
24729
24730         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24731         patched code.
24732
24733 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24734
24735         * mini.h (MonoCompile): Added 'jit_info' field.
24736
24737         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24738         the cfg structure, since it is needed by the AOT compiler.
24739
24740         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24741
24742         * aot.c: A major rewrite. Changes include:
24743         - save exception tables for methods which have them.
24744         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24745         to g_module_symbol.
24746         - reworked the file format so it is now much smaller and needs
24747         fewer relocation entries.
24748         
24749 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24750
24751         * aot.c (load_aot_module): Fix build bustage on platforms without
24752         Boehm GC.
24753
24754 2003-09-04  Martin Baulig  <martin@ximian.com>
24755
24756         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
24757
24758 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24759
24760         * TODO: Some new optimization ideas.
24761
24762         * aot.c: Move AOT module loading logic here from mono_assembly_open.
24763
24764         * aot.c: Save the optimization flags used to compile the code into
24765         the AOT module.
24766
24767         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
24768         support emitting domain specific code.
24769         
24770         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
24771         no longer domain neutral. It can be made domain neutral by compiling 
24772         with --optimize=shared.
24773
24774         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
24775         between appdomains.
24776
24777         * driver.c mini.h mini.c: New --no-aot debugging option which disables
24778         loading of AOT code.
24779
24780         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
24781         
24782         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
24783         if there is no domain neutrality information.
24784
24785 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
24786
24787         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
24788         format version into the generated library.
24789
24790         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
24791         callee method into the caller since one of them could be shared.
24792
24793         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
24794         system exceptions from AOT code now works.
24795
24796         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
24797         method if it is domain neutral and the callee is not.
24798
24799         * graph.c (cfg_emit_one_loop_level): Fix warning.
24800
24801 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
24802
24803         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
24804         last checkin.
24805
24806 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
24807
24808         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
24809         is needed  by code which is executed before mono_runtime_init ().
24810         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
24811         
24812         * mini.c (mono_thread_abort): Fix warning.
24813         (mono_jit_compile_method): Call static constructor in the AOT case too.
24814
24815         * aot.c (mono_compile_assembly): Fix warning.
24816
24817 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24818
24819         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
24820
24821 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
24822
24823         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
24824
24825         * cpu-pentium.md: Fix the length of call opcodes so they include the
24826         ESP restoring instruction. Fixes #47968.
24827
24828 2003-08-28  Martin Baulig  <martin@ximian.com>
24829
24830         * mini-x86.c (mono_arch_call_opcode): Added support for
24831         MONO_TYPE_GENERICINST.
24832
24833         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
24834
24835 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
24836
24837         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
24838         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
24839
24840         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
24841         metadata_section.
24842
24843 2003-08-26  Martin Baulig  <martin@ximian.com>
24844
24845         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
24846         when reporting an error, set this to the actual error location.
24847         (mono_method_to_ir): Report the correct error location if
24848         get_basic_blocks() returned an error.
24849
24850 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
24851
24852         * mini.c (mono_type_blittable): OBJECT is not blittable.
24853         (mono_method_blittable): Methods which have marshalling descriptors
24854         are not blittable either. Fixes #47842.
24855
24856 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
24857
24858         * driver.c mini.c: Use an environment variable instead of a global 
24859         variable. Also fix the build.
24860
24861         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
24862         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
24863         reporting this. 
24864
24865         * driver.c mini.c: Added --with-valgrind option to turn off some
24866         code which prevents mono from running under valgrind.
24867
24868         * mini.c (mono_emit_call_args): Fixed warning.
24869
24870         * mini.c (mono_emulate_opcode): Fixed warning.
24871
24872 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24873
24874         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
24875         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
24876         regalloc.c, regalloc.h: specify available registers in arch-specific
24877         code and support floats in the regallocator (patch by Laurent Morichetti 
24878         <l_m@pacbell.net>)
24879
24880 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24881
24882         * mini.c: mono_thread_current() can be called only after
24883         mono_runtime_init(): rearrange code to not call it early on.
24884
24885 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24886
24887         * mini.c: allocate jump tables in the code mempools.
24888
24889 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24890
24891         * mini.c, mini.h: make sure per-thread data allocated by the jit is
24892         freed.
24893
24894 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
24895
24896         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
24897         12 to 16.  This fixes bug #47453.
24898
24899
24900 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
24901
24902         * mini-ppc.c: fixed indexed load and unsigned compares.
24903
24904 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
24905
24906         * mini.c: reenabled installation of handler for
24907           thread abort signal.
24908
24909 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24910
24911         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
24912         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
24913         until it's fixed and actually useful.
24914
24915 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24916
24917         * inssel-long32.brg: couple more opcodes implemented.
24918
24919 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24920         
24921         * mini-sparc.c: Even more opcodes implemeted.
24922
24923 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
24924
24925         * mini-sparc.c: More opcodes implemented.
24926
24927 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
24928
24929         * mini-sparc.c: More opcodes implemented.
24930
24931 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24932
24933         * inssel-sparc.brg: Add some needed rules.  Direct
24934         copy from PPC.
24935         * Makefile.am: Use inssel-sparc.brg
24936         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
24937         an assert happy for now.
24938
24939 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
24940
24941         * mini-sparc.c: Fixed compile errors.
24942         * exceptions-sparc.c: Same.  We now produce a mono binary 
24943         on sparc-linux.  Yea.
24944
24945 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
24946
24947         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
24948         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
24949         They compile, but do not work.
24950
24951 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24952
24953         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
24954         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
24955         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
24956         (ct@gentoo.org).
24957
24958 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24959
24960         * mini.c: more opcodes implemented and better support for generics.
24961
24962 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
24963
24964         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
24965         * mini.c, mini.h: first cut at generics support: some new instructions 
24966         added and changed the behaviour of some of the existing ones.
24967
24968 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
24969
24970         * mini.c: Removed definition of metadata_shared mutex here.
24971
24972 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
24973
24974         * mini-x86.c: make vararg calls work for instance methods.
24975
24976 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
24977
24978         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
24979         returns the arguments in a separte list, now.
24980
24981 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24982
24983         * aot.c, mini.c: updates for array type representation changes.
24984
24985 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
24986
24987         * mini.c: register function to perform jit shutdown.
24988
24989 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24990
24991         * mini.c: use a faster allocator if possible.
24992
24993 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
24994
24995         * aot.c: some cleanups and portability changes.
24996
24997 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24998
24999         * mini.c: use faster allocation for CEE_BOX if possible.
25000
25001 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25002
25003         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25004         Moved inlined mempcy code to its own function so that is can be
25005         reused. Added an inline memset function as well (optimized initobj).
25006         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25007
25008 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25009
25010         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25011
25012 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25013
25014         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25015         arch code can setup the cpu for CLR execution, if needed.
25016         We use it on x86 to set the precision of FP operations.
25017
25018 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25019
25020         * mini.c: disable some optimizations if we can guess they'll cost too
25021         much for a given method.
25022
25023 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25024
25025         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25026         
25027 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25028         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25029         info collection support.
25030
25031 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25032
25033         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25034         is now implemented in the profiling API. Get rid of a couple of
25035         unnecessary global variables.
25036
25037 2003-06-15  Nick Drochak <ndrochak@gol.com>
25038
25039         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25040         * cpu-g4.md: add op_bigmul and op_bigmul_un
25041         * cpu_pentium.md: add op_bigmul_un
25042         * inssel-long32.brg: add rule for unsigned bigmul
25043         * mini-ops.h: define OP_BIGMUL_UN
25044         * mini-x86.c: THE BUG: handle (un)signed properly
25045         * mini.c: choose unsigned opcode if needed.
25046         This set of patches fixes bug #44291
25047
25048 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25049
25050         * mini.c (optimize_branches): improved to handle all kinds of
25051         conditional branches.
25052
25053 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25054
25055         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25056         don't raise exceptions.
25057
25058 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25059
25060         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25061         to arch-specific files.
25062
25063 2003-06-09  Martin Baulig  <martin@ximian.com>
25064
25065         * Makefile.am (libs): Added $(LIBGC_LIBS).
25066
25067 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25068
25069         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25070         and OP_ATAN (fixes bug#44293).
25071
25072 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25073
25074         * Makefile.am, mini-x86.c: rename cpu description array to
25075         pentium_desc, since some compilers define the 'pentium' preprocessor
25076         symbol.
25077
25078 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25079
25080         * mini.c (mini_select_instructions): add explicit branch if the
25081         following block is not the false target of a conditional branch -
25082         we need this with any optimization that reorder or remove bblocks
25083
25084         * mini.c (optimize_branches): bug fixes
25085
25086 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25087
25088         * mini.c (mono_method_to_ir): inline static readonly fields
25089
25090         * ssa.c (fold_tree): start cfold support for long (very simple
25091         cases only)
25092
25093         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25094
25095 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25096
25097         * inssel.brg: fixed memcpy (bug #44219).
25098
25099 2003-06-05  Dick Porter  <dick@ximian.com>
25100
25101         * driver.c: Set the glib log levels to not abort if g_message
25102         recurses.
25103
25104         g_set_prgname() has to happen before mini_init() so that the
25105         process handle gets the info.
25106         
25107 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25108
25109         * driver.c: add intrins to the default optimizations to get wider
25110         exposure.
25111
25112 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25113
25114         * mini.h: some large basic blocks will overflow a 16-bit
25115         integers for symbolic registers.
25116
25117 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25118
25119         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25120         (mono_arch_output_basic_block): fix bug 43499 
25121
25122 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25123
25124         * mini.c: kill duplicated definition of mono_debug_format.
25125
25126 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25127
25128         * mini-x86.c, arrays.cs: fixed register allocation bug.
25129
25130 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25131
25132         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25133
25134         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25135
25136 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25137
25138         * mini.c:
25139         (print_method_from_ip): also print source location information if
25140         available.
25141
25142 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25143
25144         * mini.c (mono_find_block_region): bug fix in region code
25145         (mini_method_compile): enable removing unreachable code again, but
25146         only in methods without exception clauses.
25147
25148 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25149
25150         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25151         Implemented arglist opcode and handling of TypedReference type.
25152         Fixed x86 call convention when a structure is returned.
25153         Minimal support for calling static vararg methods.
25154
25155 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25156
25157         * mini.c (mini_method_compile):  always remove unreachable code,
25158         because the code in them may be inconsistent  (access to dead
25159         variables for example).
25160
25161 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25162
25163         * driver.c, debug-mini.c: warning fixes.
25164
25165 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25166
25167         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25168
25169 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25170
25171         * mini.c: thread-static fields are registered in mono_class_vtable(),
25172         so ensure the function is called before checking for them.
25173
25174 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25175
25176         * mini.c (optimize_branches): fix for bug 43586
25177
25178         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25179         overflow (fixes Bug #43639)
25180
25181 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25182
25183         * mini.c, objects.cs: allow the use of stobj for primitive types.
25184
25185 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25186
25187         * mini.c: be less strict about argument checking until we support
25188         running the verifier.
25189
25190 2003-05-27  Nick Drochak <ndrochak@gol.com>
25191
25192         * basic-long.cs: tests for (ulong)int * (ulong)int also
25193         * mini.c: use the same trick for (ulong)int * (ulong)int
25194
25195 2003-05-27  Nick Drochak <ndrochak@gol.com>
25196
25197         * basic-long.cs: add regression test for (long)int * (long)int
25198         * cpu-pentium.md: add op_bigmul specification
25199         * inssel-long32.brg: add OP_BIGMUL rule
25200         * mini-ops.h: add OP_BIGMUL
25201         * mini-x86.c: register allocator: handle case where src1 needs to be
25202         in EAX.
25203         * mini.c: substitute special BIGMUL opcode in the tree for 
25204         (long)int * (long)int
25205
25206 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25207
25208         * jit-icalls.c: call the type ctor on field access if needed.
25209
25210 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25211
25212         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25213         to a method (including results of ldelema, bug#43207).
25214
25215 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25216
25217         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25218         colors to show exception handler blocks.
25219
25220         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25221         (fix for pinvoke7.cs).
25222
25223 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25224
25225         * mini.h, mini.c: ensure correct initialization order for types that
25226         require it. Prepare for lazy compilation of jit icall wrappers.
25227         Provide a name for opcode emulation to reduce unneeded mallocing.
25228
25229 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25230
25231         * mini-x86.c: better register restoring code and profiling
25232         support for tail calls.
25233
25234 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25235
25236         * mini.h, driver.c: prepare for leaf methods optimization.
25237
25238 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25239
25240         * mini.c: get targets of branches before converting a method.
25241
25242 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25243
25244         * mini.c (optimize_branches): added some experimental code (disbaled) 
25245
25246 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25247
25248         * mini.c (optimize_branches): fix branch to branch optimization 
25249
25250         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25251
25252         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25253
25254         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25255
25256         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25257         if needed.
25258
25259 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25260
25261         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25262         enable use of interface variables again.
25263
25264         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25265         I1 to registers because there is no simply way to sign extend 8bit
25266         quantities in caller saved registers on x86.
25267
25268         * inssel-float.brg: set costs of some rules to 2 so
25269         that monobure always select the arch. specific ones if supplied,
25270         regardless of the order we pass the files to monoburg.
25271
25272 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25273
25274         * mini.c, mini-x86.c: since the magic trampoline for jumps
25275         can't patch the code directly, we do it as soon as the
25276         method gets compiled.
25277
25278 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25279
25280         * mini-x86.c, mini.h: introduce a new patching method
25281         to support CEE_JMP and tail calls.
25282         * mini.c: obey tail.call. Don't precompile methods target
25283         of CEE_JMP.
25284         * tramp-x86.c: new trampoline code to handle methods
25285         reached through a jump.
25286
25287 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25288
25289         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25290         bit values to registers
25291
25292 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25293
25294         * mini.c (mono_compile_get_interface_var): share interface
25295         variables if possible.
25296
25297 2003-05-16  Martin Baulig  <martin@ximian.com>
25298
25299         * debug-mini.c (mono_init_debugger): New function to initialize
25300         the debugger.  This is not in the debugger since it needs to
25301         access some of mini's internals.
25302
25303 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25304
25305         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25306
25307 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25308
25309         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25310         for value type handling.
25311
25312 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25313
25314         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25315         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25316
25317 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25318
25319         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25320           the constructor through a proxy.
25321
25322 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25323
25324         * jit-icalls.c, inssel.brg: fixes to array element address
25325         calculations.
25326
25327 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25328
25329         * mini-x86.c (is_regsize_var): allocate pointer to registers
25330
25331 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25332
25333         * driver.c: fixed typo, added intrins to the set of optimizations
25334         tested with regressions.
25335
25336 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25337
25338         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25339         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25340         test case.
25341
25342 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25343
25344         * inssel.brg: remove some common pop instructions without side effects
25345
25346 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25347
25348         * inssel-x86.brg: fixed thinko in int to double conversions.
25349
25350 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25351
25352         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25353
25354 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25355
25356         * inssel-long32.brg: two more missing instructions.
25357
25358 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25359
25360         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25361         if not already set.
25362
25363 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25364
25365         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25366         correctly.
25367
25368         * basic-float.cs: Added tests for negative zero.
25369
25370 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25371
25372         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25373         a couple of missing operations for long casts, with test cases.
25374
25375 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25376
25377         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25378
25379 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25380
25381         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25382         code size estimation.
25383
25384 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25385
25386         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25387         abstract methods (fix bug 42542)
25388
25389         * aot.c: add ability to handle array types
25390         
25391 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25392
25393         * mini.c: Call the _specific versions of the object allocation
25394         functions if possible.
25395
25396 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25397
25398         * driver.c: call setlocale ().
25399
25400 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25401
25402         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25403         windows build.
25404
25405 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25406
25407         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25408
25409         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25410         wrappers (fix bug 42122)
25411
25412 2003-05-04  Martin Baulig  <martin@ximian.com>
25413
25414         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25415
25416         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25417         s/mini_set_defaults/mono_set_defaults/g.
25418
25419 2003-05-04  Martin Baulig  <martin@ximian.com>
25420
25421         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25422
25423 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25424
25425         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25426         (reported by Don Roberts).
25427
25428 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25429
25430         * mini.c: temporarily work around two bugs for this release.
25431
25432 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25433
25434         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25435         that contains -export-dynamic and it makes using the ld script
25436         useless.
25437         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25438
25439 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25440
25441         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25442         specific cpu.
25443
25444 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25445
25446         * mini.c: make sure leave calls all the needed finally blocks,
25447         even when the target jumps out of multiple exception clauses.
25448
25449 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25450
25451         * ldscript, Makefile.am: add linker script to reduce the number of
25452         exported symbols (should also fix the issues with libwine defining
25453         some of the same symbols in io-layer).
25454
25455 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25456
25457         * driver.c (mini_main): Avoid assertion when no file name is given on 
25458         the command line.
25459
25460 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25461
25462         * driver.c: added --version/-V command line option.
25463         Added the inline optimization in the regression tests.
25464
25465 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25466
25467         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25468         to the type in the method signature (fixes bug#42134).
25469
25470 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25471
25472         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25473
25474 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25475
25476         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25477
25478 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25479
25480         * driver.c: fixed bug #42100.
25481
25482 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25483
25484         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25485
25486 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25487
25488         * mini.c: moved most of the code required to do inlining to its own
25489         function so it can be reused. Inline also ctors if appropriate.
25490
25491 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25492
25493         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25494         the runtime can call mono API functions.
25495
25496 2003-04-27  Martin Baulig  <martin@ximian.com>
25497
25498         * debug-mini.c (mono_debug_init_method): Added
25499         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25500         send a notification to the debugger.
25501
25502         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25503         running in the Mono Debugger, just pass the breakpoint number to
25504         mono_debug_init_method().
25505
25506         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25507
25508 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25509
25510         * mini.c: allow some more unsafe compares.
25511
25512 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25513
25514         * mini-x86.c, Makefile.am: make distcheck works (partially from
25515         a patch by Richard Lee <r.h.lee@attbi.com>).
25516         * regset.c, regset.h: removed, they are unused.
25517
25518 2003-04-25  Dick Porter  <dick@ximian.com>
25519
25520         * driver.c: Usage reports the name as 'mono' not 'mini'
25521         * exceptions-x86.c: Build and run on freebsd
25522
25523 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25524
25525         * Makefile.am: install the program with the 'mono' name and
25526         the library as libmono instead of mini and libmini.
25527
25528 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25529
25530         * driver.c: provide the APIs for the embedding interface of the old jit.
25531
25532 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25533
25534         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25535
25536 2003-04-23  Martin Baulig  <martin@ximian.com>
25537
25538         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25539
25540         * driver.c: Added `--debug' command line argument to enable
25541         debugging support.
25542
25543 2003-04-23  Martin Baulig  <martin@ximian.com>
25544
25545         * debug.[ch]: Removed.  The code is now in
25546         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25547
25548         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25549         last six months.
25550
25551 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25552
25553         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25554
25555 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25556
25557         * mini.c:
25558         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25559         mono_domain_finalize.
25560         (mini_method_compile): use mono_method_profile* if the the option is
25561         enabled.
25562
25563 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25564
25565         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25566         methods with their wrapper.
25567
25568         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25569         methods with their wrapper.
25570
25571         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25572         their wrapper.
25573
25574         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25575         wrapper.
25576
25577         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25578         methods.
25579
25580 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25581
25582         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25583
25584 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25585
25586         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25587         of the mempool. This is slightly faster and uses less memory
25588
25589 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25590
25591         * mini.c: avoid O(n) allocation for variables.
25592
25593 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25594
25595         * mini.c: handle items on the stack after inlining methods.
25596
25597 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25598
25599         * mini.c: make the method->opcode optimization dependent
25600         on MONO_OPT_INSTRINS and do it lazily.
25601
25602 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25603
25604         * driver.c: print overall results at the end of regression run.
25605
25606 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25607
25608         * inssel.brg: don't overwrite symbolic registers.
25609
25610 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25611
25612         * inssel-x86.brg: fix conversion from long to float.
25613
25614 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25615
25616         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25617
25618 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25619
25620         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25621
25622         * driver.c: Added --print-vtable option as in the old JIT.
25623
25624 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25625
25626         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25627
25628 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25629
25630         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25631
25632 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25633
25634         * mini.c regalloc.c regalloc.h: Fix memory leak.
25635
25636 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25637
25638         * aot.c (mono_aot_get_method): register all used strings
25639
25640 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25641
25642         * mini.c: always intern strings references with ldstr at compile time.
25643
25644 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25645
25646         * Makefile.am: add BUILT_SOURCES.
25647
25648 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25649
25650         * driver.c: give a better error message when the assembly to execute
25651         doesn't have an entry point.
25652
25653 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25654
25655         * Makefile.am: added hack for automake
25656
25657         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25658         correct sematics.
25659
25660         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25661
25662 22003-04-07  Martin Baulig  <martin@ximian.com>
25663
25664         * Makefile.am: Added Makefile.am.
25665
25666         * debugger-main.c: Removed, this is now in the debugger where it
25667         belongs.
25668
25669         * mini.pc.in: Call this package `mini' for the moment.
25670
25671
25672
25673
25674
25675
25676
25677
25678
25679
25680
25681
25682
25683
25684