2010-06-24 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
4         passes by calling createStandardFunctionPasses ().
5
6 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
7
8         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
9
10 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
11
12         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
13         MONO_INST_FAULT.
14
15         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
16         allow better optimization if the OP_LDADDR which caused the flag to be set was
17         optimized away.
18
19         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
20
21         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
22         the type token.
23
24         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
25
26         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
27
28 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
29
30         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
31         to handle the code sequence generated for non-near calls. Fixes #616056.
32
33 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
34
35         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
36
37         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
38
39         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
40         nesting clause too.
41         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
42         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
43         trampoline which saves the context, so changes made to callee saved registers in
44         finally clauses are visible to a nesting catch clause.
45
46         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
47
48         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
49         in LLVM compiled code.
50         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
51         the finally handler has ran.
52
53         * mini.h (ResumeState): New structure containing information required to resume
54         exception handling after executing LLVM compiled finally clauses.
55
56         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
57         bit, by passing all the registers as one argument.
58
59 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
60
61         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
62         to avoid an assert.
63
64 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
65
66         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
67
68         * aot-compiler.c aot-runtime.c: Fix LLVM support.
69
70         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
71         pad, branch to a new bblock instead.
72
73         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
74         orig_method.
75
76         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
77
78         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
79
80 2010-06-17  Geoff Norton  <gnorton@novell.com>
81
82         * mini-arm.h:
83         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
84         can be used by sgen.
85
86 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
87
88         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
89
90         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
91         fails.
92
93         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
94         the ip done by throw_exception (), it is not needed for corlib exceptions.
95
96 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
97
98         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
99         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
100         of size > 5 words. This support fast barriers for value types up to
101         256/512 bytes which     beyond that the copying itself is the major issue.
102
103         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
104         for gsharing, so use it.
105
106         This eliminate all calls to mono_value_copy from managed code in
107         gmcs, fsharp and ipy.
108
109         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
110
111         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
112         performance kept
113
114         * mini.c (mini_init): Register new icall.
115
116 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
117
118         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
119         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
120
121 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
122
123         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
124         value types as the overhead is huge. Manually expand it up to 5 words to
125         avoid code bloat.
126
127         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
128         is an exception that performance is dominated by mono_value_copy.
129
130         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
131
132 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
133
134         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
135         trampolines on x86, since those have their own cconv.
136
137         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
138         exception trampolines.
139
140         * tramp-x86.c: Add xdebug info for a few trampolines.
141
142         * mini-llvm.c: Set the name of the arguments.
143
144         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
145         using a block address if using the LLVM mono branch.
146
147         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
148         trampolines.
149
150 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
151
152         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
153
154         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
155
156         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
157
158         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
159
160         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
161         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
162         to identify the vtable slot address plus the method which needs to be compiled.
163
164         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
165         using llvm.
166
167         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
168         'this' is always passed as the first argument, before the vtype ret arg. This
169         simplifies get_this_arg_reg () and LLVM integration.
170
171         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
172         the latest changes.
173
174         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
175         these trampolines.
176
177         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
178
179         * mini-llvm.c: Fix compilation with llvm 2.6.
180
181         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
182
183         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
184         defined.
185
186         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
187         is always passed as the first argument, before the vtype ret arg. This simplifies
188         get_this_arg_reg () and LLVM integration.
189
190 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
191
192         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
193
194         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
195         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
196         translate into much nicer code.
197
198 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
199
200         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
201         parameter index information. Use this to simplify a lot of code.
202
203         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
204
205 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
206
207         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
208         to fix infinite generic recursion. Fixes #612702.
209
210 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
211
212         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
213         imt trampoline per imt slot when using LLVM.
214
215 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
216
217         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
218
219 2010-06-09  Levi Bard  <levi@unity3d.com>
220
221         * debugger-agent.c: Clear unloaded types on appdomain unload.
222
223 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
224
225         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
226         Fixes #612206.
227
228         * exceptions.cs: Add a test.
229
230 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
231
232         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
233
234         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
235
236         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
237         so it doesn't have to do it.
238
239         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
240         process does not mix with ours.
241
242         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
243         ones.
244
245         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
246         loads/stores which can throw exceptions inside clauses.
247
248 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
249
250         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
251         one ENDFINALLY.
252
253         * mini.c (mini_init): Register mono_resume_unwind as an icall.
254
255 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
256
257         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
258
259         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
260         locals.
261
262 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
263
264         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
265         appdomain.
266
267 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
268
269         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
270         Use a separate generic class init trampoline for llvm, since it needs a different
271         signature.
272
273         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
274         includes the location of this/rgctx.
275
276         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
277         branch.
278
279 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
280
281         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
282
283         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
284         clause.
285
286 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
287
288         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
289         says so.
290
291         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
292
293         * aot-compiler.c (patch_to_string): New debugging helper function.
294
295 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
296
297         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
298         trampoline.
299
300         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
301
302         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
303
304         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
305
306         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
307         clauses.
308
309         * mini.c (create_jit_info): Print EH clause info for LLVM too.
310
311 2010-05-28  Mark Probst  <mark.probst@gmail.com>
312
313         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
314         cpobj with reference types.
315
316 2010-05-28  Mark Probst  <mark.probst@gmail.com>
317
318         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
319         write barrier for reference types.
320
321 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
322
323         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
324         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
325
326 2010-05-31  Martin Baulig  <martin@ximian.com>
327
328         Fix #608271.
329
330         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
331         clear_breakpoint() on all breakpoint events and remove them from the list.
332
333 2010-05-27  Martin Baulig  <martin@ximian.com>
334
335         Fix #605698.
336
337         * debugger-agent.c (method_commands, type_commands): Temporarily
338         set the appdomain while executing this method; do all metadata
339         calls in the debuggee's appdomain where user assemblies are loaded.
340
341 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
342
343         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
344
345 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
346
347         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
348
349 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
350
351         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
352         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
353         be referenced even after the header is freed.
354
355         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
356         section.
357
358 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
359
360 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
361
362         * genmdesc.c (main): Fixing the detection of the nacl switch.
363
364         Code is contributed under MIT/X11 license.
365
366 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
367
368         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
369
370         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
371
372         * mini.h (LLVM_CHECK_VERSION): New helper macro.
373
374 2010-05-25  Miguel de Icaza  <miguel@novell.com>
375
376         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
377         the Perl program
378
379         * genmdesc.c: Added support for nacl: key on the machine
380         description files to support the extra space required by Google
381         Native Client.
382
383 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
384
385         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
386
387 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
388
389         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
390         mono_runtime_class_init_full ().
391         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
392
393 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
394
395         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
396
397 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
398
399         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
400         two are not the same on ilp32.
401
402 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
403
404         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
405         added by mistake.
406
407         * mini-ppc.c: Fix the DISABLE_JIT build.
408
409 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
410
411         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
412         (make_writable): Remove this unused function.
413
414 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
415
416         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
417         structure. Make the labels to plt entries local symbols instead of assembler local
418         labels, since tha latter causes problems for the iphone linker.
419
420 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
421
422         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
423
424 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
425
426         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
427         (ppc_patch_full): Ditto.
428
429         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
430
431         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
432         if gshared is enabled, to avoid asserts in the trampoline code.
433
434         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
435         on ia64.
436
437 2010-05-15  Geoff Norton  <gnorton@novell.com>
438
439         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
440         xdebug mode.
441
442 2010-05-14  Geoff Norton  <gnorton@novell.com>
443
444         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
445         misaligned stack on darwin.
446
447 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
448
449         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
450         arm.
451
452 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
453
454         * xdebug.c: Fix ARM support.
455
456 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
457
458         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
459         and do most of the work on the normal stack.
460         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
461
462 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
463
464         * aot-compiler.c: Put non-code data into the .rodata section on linux.
465
466 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
467
468         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
469
470 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
471
472         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
473         and do most of the work on the normal stack.
474
475 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
476
477         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
478         and do most of the work on the normal stack even if sigaltstack is disabled.
479
480 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
481
482         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
483         UCONTEXT_REG_ constants are available on linux as well.
484         (mono_arch_monoctx_to_sigctx): Ditto.
485         (mono_arch_ip_from_context): Ditto.
486
487 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
488
489         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
490         other domains.
491
492 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
493
494         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
495         no longer needed.
496
497 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
498
499         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
500         if a breakpoint cannot be inserted.
501
502 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
503
504         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
505
506 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
507
508         * debugger-agent.c (frame_commands): Return an error instead of asserting if
509         no JIT info is found for the method.
510
511 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
512
513         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
514         in debug printf.
515
516 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
517
518         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
519         a list of arch specific trampolines.
520
521         * aot-compiler.c (emit_trampolines): Use it.
522
523 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
524
525         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
526         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
527         get rid of the _full from their name.
528
529 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
530
531         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
532         get_nullified_class_init_trampoline to remove some code duplication.
533
534 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
535
536         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
537         attach.
538
539 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
540
541         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
542
543         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
544
545         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
546         there is no need to jump through the first plt entry.
547
548         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
549
550         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
551         arch-specific function.
552         (mono_aot_get_plt_info_offset): Ditto.
553
554         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
555         mono_arch_init () to register jit icalls called from full-aot trampolines.
556         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
557         to mini-<ARCH>.c.
558
559         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
560         the specialized throw corlib exception trampoline, use a variant of the normal
561         trampoline along with a new C function which does the call to
562         mono_exception_from_token (), just like on x86.
563
564 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
565
566         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
567         Reorganize the full aot trampoline creation functions, instead of taking a bunch
568         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
569         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
570         creation functions on architectures which have the full-aot ones.
571
572 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
573
574         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
575
576 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
577
578         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
579         explicitly, this seems to be required by some gcc versions at -O2.
580
581         * mini-arm.c: Ditto.
582
583 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
584
585         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
586         has_target delegate invokes.
587
588 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
589
590         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
591         info fields.
592
593         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
594         add patches/unwind info arguments, move to mini.c.
595
596         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
597
598 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
599
600         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
601         command which returns full path names.
602
603 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
604
605         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
606         code_size output variable.
607
608         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
609         mono_get_lmf_addr.
610         
611 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
612
613         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
614         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
615         (mono_arch_cpu_enumerate_simd_versions): Ditto.
616
617 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
618
619         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
620         apple assembler.
621
622 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
623
624         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
625
626 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
627
628         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
629
630 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
631
632         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
633
634 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
635
636         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
637         line number support works with eglib.
638
639 2010-04-27  Miguel de Icaza  <miguel@novell.com>
640
641         * driver.c, mini.c: Since linking with LLVM makes the default Mono
642         dirty an extra 70kb pages on startup we are now going to choose a
643         different strategy: ship mono and mono-llvm binaries, with the
644         second being the one that links with LLVM and defaults to LLVM
645         being enabled.
646
647 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
648
649         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
650         Implement full-aot support on x86.
651
652         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
653         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
654         the first register returned by get_global_int_regs ().
655
656         * cpu-x86.md: Fix the length of insertx_u1_slow.
657
658         * iltests.il.in: Disable tail call tests when running with full-aot.
659
660 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
661
662         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
663
664 2010-04-24  Mark Probst  <mark.probst@gmail.com>
665
666         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
667         in the initializer, because it's non-constant.
668
669 2010-04-23  Miguel de Icaza  <miguel@novell.com>
670
671         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
672         of LLVM on by default.   Used for buildbots and other setups.
673
674 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
675
676         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
677
678 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
679
680         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
681         initonly static fields when using moving GC.
682
683         Contributed under MIT/X11 license.
684
685 2010-04-23  Geoff Norton  <gnorton@novell.com>
686
687         * mini-amd64.h: Darwin x86_64 support.
688
689 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
690
691         * exceptions-arm.c: Remove platform checks in favor of configure checks.
692
693 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
694
695         * exceptions-arm.c: Add Android support for sigcontext structure.
696
697 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
698
699         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
700         wrappers correctly now that their wrapper info is NULL.
701
702 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
703
704         * mini.c (mono_jit_compile_method_inner): Avoid calling
705         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
706
707 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
708
709         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
710         so the latter can be #ifndef DISABLE_JIT-ed.
711
712         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
713
714 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
715
716         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
717
718 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
719
720         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
721         stack.
722
723 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
724
725         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
726         calling mono_class_num_methods (). Fixes #592244.
727
728 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
729
730         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
731
732         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
733
734 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
735
736         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
737         version.
738         * (handle_alloc): Ditto.
739         (mono_method_to_ir): Remove the constrained call restriction added by a previous
740         change, its not needed anymore.
741
742 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
743
744         * mini-posix.c (sigusr1_signal_handler): Fix build on
745         non x86/amd64 systems.
746
747 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
748
749         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
750         calls where the constrained class needs a context. Fixes #595863.
751
752         * iltests.il.in: Add a test.
753
754 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
755
756         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
757         2.6/SVN seems to have broken support for them.
758
759 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
760
761         * mini-llvm.c: Fix support for LLVM 2.6.
762
763 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
764
765         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
766         MonoInternalThread belonging to the thread.
767
768 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
769
770         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
771         unsafe optimization that will remove bound checks.
772
773 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
774
775         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
776         CompareExchange not to be inlined for I8.
777
778         Contributed under MIT/X11 license.
779
780 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
781
782         * array.cs: Add tests for cast between primitive array types.
783
784 2010-04-07 Andreia Gaita  <avidigal@novell.com>
785
786         * Makefile.am: create a convenience library for moon to link with
787
788 2010-04-07 Paolo Molaro <lupus@ximian.com>
789
790         * method-to-ir.c: optimize array accesses from generic interfaces.
791
792 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
793
794         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
795
796 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
797
798         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
799         of marshalbyref classes.
800
801         Fixes #515884.
802
803 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
804
805         * aot-compiler.c (emit_exception_debug_info): Encode try holes
806         information.
807
808         * aot-runtime.c (decode_exception_debug_info): Decode try holes
809         information.
810
811         * mini.h: Increase AOT version.
812
813 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
814
815         * mini-x86.h: Only enable soft debugger when using sigaction or on
816         Windows. Fixes build on Haiku (lacks siginfo_t).
817
818         Code is contributed under MIT/X11 license.
819
820 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
821
822         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
823         BeOS-style signal handlers.
824
825         Code is contributed under MIT/X11 license.
826         
827 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
828
829         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
830
831 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
832
833         * mini-exceptions.c: Fix win32 build.
834
835 2010-04-01  Mark Probst  <mark.probst@gmail.com>
836
837         * mini.c, driver.c: Call mono_gc_base_init() before
838         mono_debug_init().
839
840 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
841
842         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
843         call_method]): Delegate the actual work in security-core-clr.c
844         to ease code sharing.
845
846 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
847
848         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
849         float conv.ovf.un opcodes are encountered, instead of asserting later.
850         Fixes #566296.
851
852 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
853
854         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
855
856         * iltests.il.in: Add a test.
857
858 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
859
860         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
861         large. Fixes #567040.
862
863         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
864
865 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
866
867         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
868         #592711.
869
870 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
871
872         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
873         mono_create_handler_block_trampoline with the proper #ifdef so that it
874         compiles on amd64.
875
876 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
877
878         * mini-exceptions.c: Introduce mono_walk_stack_full, which
879         allows to select if it's new or old context that is passed to 
880         the callback.
881
882         * mini-exceptions.c (mono_handle_exception_internal): Handle the
883         case when executing a guarded handler from the EH machinery.
884
885         * mini-exceptions.c (mono_install_handler_block_guard): New function
886         responsible for checking for handler blocks, installing the guard and
887         clearing abort state.
888
889         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
890         to check for handler blocks and skip interruption logic if one was found.
891
892         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
893         by the handler block guard trampoline. Resumes interruption by raising the
894         pending ThreadAbortException.
895
896         * mini.c (create_jit_info): Calculate the end address of a finally block.
897
898         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
899         of a finally block to a specified address and return the old one.
900
901         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
902         trampoline patches the original return address and calls the trampoline function.
903
904 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
905
906         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
907
908         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
909         does the patching if the callee is in the same domain.
910
911         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
912         of mono_arch_patch_plt_entry ().
913
914 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
915
916         * mini.c (create_jit_info): Fix try block hole length encoding.
917
918 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
919
920         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
921         duplicate information and print offsets instead of absolute addresses.
922
923 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
924
925         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
926         event is sent. Fixes #591733.
927
928 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
929
930         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
931         OpenBSD.
932
933 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
934
935         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
936         thread_to_tls hash table.
937
938         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
939         section. Fixes #591000.
940
941 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
942
943         * Makefile.am (version.h): Check for pure .git directory only,
944         fixes SVN revision when using git without git-svn.
945
946         Contributed under MIT/X11 license.
947
948 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
949
950         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
951
952 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
953
954         * basic-simd.cs: Test for vector x scalar binary operators.
955
956 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
957
958         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
959         intrinsics with expanded scalar arguments.
960
961 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
962
963         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
964         don't have an exception class, so don't decode it. This would crash
965         with filter clauses.
966
967 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
968
969         Make sure that trunk builds with DISABLE_JIT, an update to the
970         PlayStation 3 port.
971         
972         * mini.c (mini_get_shared_method): this code seems to be necessary
973         regardless of whether DISABLE_JIT has been defined.
974
975         (mono_jit_compile_method_inner): it seems that this method is
976         required even in full AOT mode, so ifdef out only the pieces that
977         try to genrate code (the body of code that applies patches to the
978         code).  
979
980         (mini_method_compile): do not compile when using DISABLE_JIT.
981
982         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
983         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
984         compile when DISABLE_JIT is set.
985
986 2010-03-24  Mark Probst  <mark.probst@gmail.com>
987
988         * mini.c (mono_create_tls_get): Only create a TLS operation if the
989         arch really supports it.
990
991 2010-03-24  Mark Probst  <mark.probst@gmail.com>
992
993         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
994
995 2010-03-23  Neale Ferguson <neale@sinenomine.net>
996
997         * exceptions-s390x.c: Add support for
998         mono_arch_get_throw_corlib_exception and fix throw by name.
999
1000         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1001         logic (especially for varargs); Correct localloc sizing; Add
1002         mono_arch_get_this_arg_from_call and
1003         mono_arch_get_this_arg_from_call.
1004
1005         * mini-s390x.h: Add support for facility list extraction;
1006         Correct/update MONO_ARCH_xxx settings.
1007
1008         * mini-s390.c: Minor corrections to instruction output for
1009         varargs. No IMT implementation - I think it's time to deprecate
1010         s390 and just leave s390x.
1011
1012         * tramp-s390x.c: Correct creation of trampoline instruction
1013
1014
1015         * cpu-s390x.md: Update some instruction lengths
1016
1017 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1018
1019         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1020         can be hit with partial sharing.
1021
1022         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1023         in non-shared classes correctly.
1024         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1025         Turn on partial sharing.
1026
1027 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1028
1029         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1030         by mistake.
1031
1032 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1033
1034         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1035         mono_method_signature ().
1036
1037         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1038
1039         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1040         error checking, so later calls do not need error checking.
1041
1042 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1043
1044         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1045
1046         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1047
1048 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1049
1050         * mini-exceptions.c (mono_handle_exception_internal): Don't
1051         check try_end for archs different than s390. 
1052
1053         * mini.c (create_jit_info): Don't crash if the finallt block is the
1054         last one.
1055
1056 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1057
1058         * driver.c (mono_main): Don't free global codeman under linux since
1059         glic now peeks at code on stack for more archs than just amd64.
1060
1061 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1062
1063         * mini.c, method-to-ir.c: changes to support compressed interface
1064         bitmaps.
1065
1066 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1067
1068         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1069         Use sigaction on OpenBSD too.
1070
1071 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1072
1073         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1074
1075 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1076
1077         * debugger-agent.c: #include sys/select.h for fd_set.
1078
1079         Code is contributed under MIT/X11 license.
1080
1081 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1082
1083         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1084         (openbsd+amd64 ?).
1085
1086 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1087
1088         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1089         some large methods with lots of exception handlers. Fixes #440924.
1090
1091 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1092
1093         * method-to-ir.c: remove code duplication for interface checks.
1094
1095 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1096
1097         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1098         (assembly_unload): Clear all event requests referencing the to-be unloaded
1099         assembly.
1100
1101
1102 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1103
1104         * mini.h, mini-exceptions.c: restore the state of the stack
1105         guard page permissions.
1106
1107 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1108
1109         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1110         call site patching code, it doesn't appear to be needed.
1111
1112 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1113
1114         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1115         sharing generic methods whose type arguments are a mix of reference and
1116         non-reference types. Not yet turned on.
1117
1118         * mini.c (mini_get_shared_method): New helper function to return
1119         the method which will be compiled/registered in the JIT tables when doing
1120         generic sharing.
1121         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1122         use mini_get_shared_method ().
1123
1124         * mini.c (mini_method_compile): Register the same method which is compiled when
1125         doing generic sharing.
1126
1127         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1128
1129         * generics.cs: Add partial sharing tests.
1130
1131 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1132
1133         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1134                    Add an enum value that or's all possable values together. Add an enum value
1135                    that marks the end of the used bit indexes.
1136
1137         * mini-amd64.c : Make changes to match the changes in mini.h 
1138
1139         * mini-x86.c : Make changes to match the changes in mini.h
1140
1141         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1142                    simd_version to support more simd versions. Changed the name of
1143                    simd_version to simd_version_flags to make it more intuitive that
1144                    it now contains bit flags. Reordered the *_intrinsics arrays to
1145                    match the changes above. Changed emit_intrinsics() to use the new
1146                    setup mentioned above.
1147
1148         Code is contributed under MIT/X11 license.
1149
1150 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1151
1152         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1153         remaining archs. Alpha and hppa maintainers, please stand up.
1154
1155 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1156
1157         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1158         is needed even when fail_tramp!=NULL.
1159
1160 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1161
1162         * debugger-agent.c (insert_breakpoint): Write a log message.
1163
1164 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1165
1166         * iltests.il.in: Add a few tests for LEAVE going over multiple
1167         finally clauses.
1168
1169 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1170
1171          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1172
1173 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1174
1175         * mini.h (MonoBasicBlock): Add native_length field.
1176         * mini.h (MonoCompile): Add try_block_holes field.
1177         * mini.h (MonoInst): Add exception_clause pointer to
1178         the data union.
1179
1180         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1181         * mini.c (mono_cfg_add_try_hole): New function to register possible
1182         holes in try blocks.
1183         * mini.c (create_jit_info): Fill in the holes information.
1184
1185         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1186         by a try block.
1187
1188         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1189
1190 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1191
1192         * jit-icalls.c: adjusted for the array API changes.
1193
1194 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1195
1196         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1197
1198 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1199
1200         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1201         the 'pending' flag. This fixes support for appdomains too.
1202
1203
1204 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1205
1206         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1207
1208 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1209
1210         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1211         when using LLVM, LLVM generates it itself when needed.
1212
1213         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1214
1215         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1216         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1217         OP_ANDNPS/OP_ANDNPD.
1218
1219 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1220
1221         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1222         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1223         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1224
1225 2010-03-11  Martin Baulig  <martin@ximian.com>
1226
1227         * debugger-agent.c (type_commands): Add NULL check to
1228         `CMD_TYPE_GET_SOURCE_FILES'.
1229
1230 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1231
1232         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1233
1234 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1235
1236         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1237         #586664.
1238
1239         * iltests.il.in: Add a test.
1240
1241 2010-03-05  Martin Baulig  <martin@ximian.com>
1242
1243         Add support for aborting invocations.
1244
1245         * debugger-agent.c
1246         (InvokeData): Added `InvokeData *last_invoke'.
1247         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1248         added a new `invoke' field to keep the `InvokeData *' throughout
1249         the invocation.
1250         (ErrorCode): Added `ERR_NO_INVOCATION'.
1251         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1252         (mono_debugger_agent_handle_exception): Don't report any exception
1253         if an abort was requested.
1254         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1255         a thread abort if necessary.
1256         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1257
1258 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1259
1260         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1261         so we can release the whole list and not just the first one. Free
1262         it in more places as well.
1263
1264 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1265
1266         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1267
1268 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1269
1270         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1271
1272 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1273
1274         * driver.c: report also other misc build options.
1275
1276 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1277
1278         * method-to-ir.c: Generate better code for the NewObject
1279         intrinsic.
1280         
1281 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1282
1283         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1284         is disabled. Fixes #582322.
1285
1286         * iltests.il.in: Add a test.
1287
1288 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1289
1290         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1291         the handling of obj->synchronization == null and owner != current thread to
1292         mono_monitor_exit ().
1293
1294         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1295
1296
1297 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1298
1299         * mini.c: change the way emulated opcode info is stored and save about
1300         4 KB of runtime memory.
1301
1302 2010-03-04  David S. Miller  <davem@davemloft.net>
1303
1304        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1305        that don't provide the siginfo in the second signal handler argument
1306        are buggy, and this has been fixed for years.
1307        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1308        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1309
1310 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1311
1312         * aot-runtime.c (find_symbol): Fix a leak.
1313         (decode_patch): Ditto.
1314
1315 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1316
1317         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1318
1319 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1320
1321         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1322
1323 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1324
1325         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1326
1327 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1328
1329         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1330         to check for errors, it's enough to create the metadata open.
1331
1332         Fixes #562150
1333
1334 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1335
1336         * trace.c|h:
1337         * mini-exceptions.c: Add support for printing stack traces when handling
1338         exceptions, and when printing exceptions thrown while tracing also print
1339         the exception message.
1340
1341 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1342
1343         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1344         since the exclude token is a valid string character.
1345
1346 2010-03-02  Levi Bard  <levi@unity3d.com>
1347
1348         * debugger-agent.c: Invalidate thread stacks on domain unload.
1349
1350 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1351
1352         * method-to-ir.c: Emit dummy_use for stored reference after write
1353         barriers to make sure the object is pinned if the GC interrupts
1354         before the write barrier is done.
1355
1356 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1357
1358         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1359
1360 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1361
1362         * debugger-agent.c: Add a log message printing the protocol version.
1363
1364 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1365
1366         * debugger-agent.c: Add a new command to communicate the protocol version used
1367         by the client. This could be used to allow newer runtimes to communicate with
1368         older clients.
1369
1370 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1371
1372         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1373
1374 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1375
1376         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1377         type.
1378
1379 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1380
1381         * mini-arm.c: make the arm cpu arch configurable with the
1382         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1383         Bug #584198.
1384
1385 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1386
1387         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1388         support for the perf tool on Linux.
1389
1390 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1391
1392         * method-to-ir.c: make string.InsertenalSetChar() specialization
1393         effective.
1394
1395 2010-03-01  Robert Jordan  <robertj@gmx.net>
1396
1397         * Makefile.am: fix the non-static build.
1398
1399 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1400
1401         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1402         here.
1403
1404 2010-02-26  Robert Jordan  <robertj@gmx.net>
1405
1406         * tasklets.c (continuation_store): Return from an error condition
1407         immediately.
1408
1409 2010-02-26  Martin Baulig  <martin@ximian.com>
1410
1411         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1412
1413         * debug-mini.c
1414         (MonoDebuggerThreadInfo): Added `internal_flags'.
1415         (MonoDebuggerInternalThreadFlags): New enum.
1416         (_mono_debugger_throw_exception): Don't signal the debugger if a
1417         type abort was requested.
1418         (_mono_debugger_unhandled_exception): Likewise.
1419         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1420         (mono_debugger_runtime_invoke): If the debugger requested a thread
1421         abort during the invocation, reset it here.
1422
1423 2010-02-26  Martin Baulig  <martin@ximian.com>
1424
1425         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1426         instead of `MonoThread *'.
1427
1428 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1429
1430         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1431         code offsets table, as it is mostly sorted.
1432
1433 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1434
1435         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1436         Fixes #582991.
1437
1438 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1439
1440         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1441
1442 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1443
1444         * Makefile.am: build the new ABI version of the libmono library.
1445         * debugger-agent.c, mini.c: fix warnings with the new API.
1446         * jit.h: don't depend on glib.h being included.
1447
1448 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1449
1450         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1451
1452 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1453
1454         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1455         ThreadStatic variables.
1456
1457 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1458
1459         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1460         data is not freed yet. Fixes #582460.
1461
1462 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1463
1464         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1465         event requests. Bump protocol minor version.
1466
1467 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1468
1469         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1470
1471 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1472
1473         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1474         #581950.
1475
1476         * iltests.il.in: Add a test.
1477
1478 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1479
1480         * mini.c (inline_method): Check for loader errors.
1481
1482 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1483
1484         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1485         instead of mono_method_get_header as it doesn't decode locals
1486         so the called method can have unresolved dependencies that will only
1487         be satisfied after the current method is JIT'd.
1488
1489         Fixes #550968.
1490
1491 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1492
1493         * basic.cs (test_0_div_opt): Speed this up a bit.
1494
1495 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1496
1497         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1498
1499         * mini.c (mono_jit_create_remoting_trampoline): Call
1500         mono_create_specific_trampoline () instead of
1501         mono_arch_create_specific_trampoline ().
1502
1503         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1504
1505 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1506
1507         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1508         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1509
1510         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1511
1512         * mini-amd64.c: Fix DISABLE_JIT support.
1513
1514 2010-02-20  Geoff Norton  <gnorton@novell.com>
1515
1516         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1517
1518 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1519
1520         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1521         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1522         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1523         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1524         handle_exception.
1525
1526 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1527
1528         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1529         edx/ecx too. This is needed to support OP_SEQ_POINT.
1530
1531 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1532
1533         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1534
1535         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1536
1537 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1538
1539         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1540         LLVM+AOT+exceptions, not enabled yet.
1541
1542 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1543
1544         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1545
1546 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1547
1548         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1549         xdebug info for these.
1550
1551         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1552         in a few places.
1553
1554         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1555         not used yet.
1556
1557 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1558
1559         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1560
1561 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1562
1563         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1564         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1565
1566         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1567         for mtouch.
1568
1569 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1570
1571         * debugger-agent.c: handle incomplete reads and EINTR in
1572         recv()/send(). This could have been causing random
1573         disconnections.
1574
1575 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1576
1577         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1578         points.
1579
1580         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1581         so they have small offsets. Fixes #566311.
1582
1583 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1584
1585         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1586
1587 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1588
1589         * mini-amd64.c: Remove the special casing of byref in a few places now that
1590         mini_type_get_underlying_type () handles it.
1591
1592         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1593         by returning native int. Fixes #577984.
1594
1595 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1596
1597         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1598         a macro.
1599
1600         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1601         of putting the clause itself.
1602
1603         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1604
1605 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1606
1607         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1608         might be unaligned.
1609
1610 2010-02-10  Geoff Norton  <gnorton@novell.com>
1611
1612         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1613
1614 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1615
1616         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1617         llvm methods too.
1618
1619         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1620         it is not an LLVM generated symbol.
1621
1622         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1623
1624         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1625         implementation in gshared mode because it causes regressions.
1626
1627         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1628
1629         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1630         should be done by the caller.
1631
1632         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1633
1634         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1635
1636         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1637         since mono_jit_info_table_find () doesn't do it anymore.
1638
1639         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1640         instead of mono_jit_info_table_find ().
1641
1642 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1643
1644         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1645
1646         * aot-compiler.c (encode_method_ref): Update after the removal of
1647         mono_gc_get_managed_allocator_type ().
1648
1649         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1650         Fixes #564538.
1651
1652 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1653
1654         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1655         generic params as well.
1656         (handle_isinst): Ditto.
1657
1658         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1659         instead of always calling an icall.
1660
1661         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1662         computing the size of the got.
1663
1664         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1665         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1666         the assembly directive '.set' so it points to the first LLVM emitted method.
1667
1668 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1669
1670         * mini.c (mini_method_verify): Report the method which failed to verify.
1671
1672 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1673
1674         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1675         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1676         runtime MS verifier.
1677
1678 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1679
1680         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1681         #561962.
1682
1683 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1684
1685         * mini-llvm.c: Init the jit module only when first JITting.
1686
1687         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1688
1689         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1690
1691         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1692         replaced with the real got.
1693
1694         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1695
1696         * image-writer.c: Reduce the amount of #ifdefs a bit.
1697
1698         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1699         llvm on darwin/arm.
1700
1701         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1702
1703         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1704         global.
1705
1706 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1707
1708         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
1709         (mono_llvm_emit_method): Fix unaligned stores too.
1710
1711         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
1712         so async stack walks don't crash.
1713
1714 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1715
1716         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
1717         was not patched if the callee needed an rgctx trampoline.
1718
1719 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1720
1721         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
1722         vtable address in AOT code.
1723
1724 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1725
1726         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
1727         MonoInst's.
1728
1729 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
1730
1731         * genmdesc.pl: remove dependency on external cpp.
1732
1733 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1734
1735         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
1736         using LLVM, its not needed, and abcrem can't handle it.
1737
1738 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1739
1740         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
1741         it easier to group instructions and reduce duplication.
1742
1743 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1744
1745         * decompose.c: Move the array/soft float decompose routines here from
1746         method-to-ir.c.
1747
1748         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
1749
1750 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
1751
1752         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
1753         to tell LLVM that the got is constant, not used yet.
1754
1755         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
1756
1757 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1758
1759         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
1760         managed wrappers.
1761
1762 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1763
1764         * aot-compiler.c (add_wrappers): Commit the hack which generates
1765         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
1766         custom attribute.
1767
1768 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1769
1770         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
1771         a fault, only used by the LLVM backend.
1772
1773         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
1774         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
1775
1776         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
1777         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
1778
1779         * mini-llvm.c: Only generate volatile loads from load instructions which have
1780         the MONO_INST_FAULT flag set.
1781
1782 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1783
1784         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
1785         64 bit platforms.
1786
1787 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1788
1789         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
1790         sequence points. Fixes #571236.
1791
1792 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1793
1794         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
1795         end of the appdomain unload process, after assemblies have been unloaded.
1796         Fixes #574842.
1797
1798 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
1799
1800         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
1801         works.
1802
1803         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
1804         Fixes #573988.
1805
1806 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
1807
1808         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
1809
1810 2010-01-26  Geoff Norton  <gnorton@novell.com>
1811
1812         * aot-compiler.c: Fix a logic error introduced when guarding against enums
1813         with struct marshalability.
1814
1815 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1816
1817         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
1818         it supports class names as well.
1819
1820         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
1821         needed by the GC map code.
1822
1823         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
1824         flags if needed.
1825
1826         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
1827         if cfg->init_ref_vars is set.
1828
1829         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
1830         cfg->disable_initlocals_op_refs is set.
1831
1832         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
1833         using liveness info if cfg->compute_precise_live_ranges is set.
1834
1835         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
1836         volatile variables correctly. Add comments about the live ranges. Not enabled
1837         yet.
1838
1839 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1840
1841         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
1842         0x2a into them in method prologs.
1843
1844         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
1845
1846 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
1847
1848         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
1849         classes, since llvm is compiled with -fno-rtti.
1850
1851         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
1852
1853         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
1854         llvm does not require it.
1855
1856         * aot-runtime.c (load_method): Print the full name of the last aot method.
1857
1858 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1859
1860         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
1861         thread has not fully started yet.
1862
1863 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1864
1865         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
1866
1867 2010-01-21  Miguel de Icaza  <miguel@novell.com>
1868
1869         * driver.c: Do not abort if LLVM is not supported, print a
1870         warning and add the information to the Mono JIT information.
1871
1872 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1873
1874         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
1875         using explicit null checks.
1876
1877 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
1878
1879         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
1880         related code.
1881
1882         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
1883         () in one place.
1884         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
1885         its no longer needed.
1886
1887         * method-to-ir.c (mono_method_to_ir): Fix a warning.
1888
1889         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
1890         define for platforms still using it (s390). Get rid of the
1891         mono_arch_get_throw_exception_by_name () routines on all other platforms.
1892
1893         * exceptions-x86.c: Rework the throw trampolines so there is only one function
1894         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
1895
1896         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
1897         the caller pushed the arguments.
1898
1899         * mini-llvm.c: Enable throwing exceptions on x86.
1900
1901         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
1902         "Thread (nil) may have been prematurely finalized" messages if this is called
1903         on a thread not registered with the runtime.
1904
1905         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
1906
1907 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1908
1909         * jit-icalls.c (mono_array_new_3): New jit icall.
1910
1911         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
1912
1913         * arrays.cs: Add a test for 3 dimensional arrays.
1914
1915 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1916
1917         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
1918         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
1919         used.
1920
1921         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
1922         thrown on x86.
1923
1924         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
1925
1926         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
1927
1928         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
1929
1930 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
1931
1932         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
1933           HOST_WIN32.  Also including winsock2. to define struct in_addr.
1934
1935         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1936
1937         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1938
1939         Code is contributed under MIT/X11 license.
1940
1941 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1942
1943         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
1944
1945         * branch-opts.c (mono_optimize_branches): Honor the new flag.
1946
1947         * mini.c (mini_method_compile): Set the new flag when running under the
1948         debugger.
1949
1950 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1951
1952         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
1953         a ref/noref value + a global pin flag, so parts of stack frames can still be
1954         precisely marked even if they include stuff which needs pinning. Improve logging.
1955         Fix many bugs. Not enabled yet.
1956
1957         * gc-test.cs: Add a few tests.
1958
1959         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
1960         the normal -v options. Avoid propagating liveness information through bblocks
1961         which end with a NOT_REACHED opcode.
1962
1963         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
1964         after cfg has been freed.
1965
1966 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
1967
1968         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
1969         if a clause is skipped because it uses the exception object, since it could
1970         have caught the exception.
1971
1972         * exceptions.cs: Add a test.
1973
1974 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1975
1976        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
1977
1978         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
1979         ICollection<T> wrappers.
1980
1981 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1982
1983         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
1984
1985 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1986
1987         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
1988         NOMAP32BIT or optimize_for_xen is set.
1989
1990 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1991
1992         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
1993         mono_metadata_str_hash () instead.
1994
1995 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1996
1997         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
1998         sizeof (void*).
1999
2000         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2001
2002 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2003
2004         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2005         flag is set.
2006
2007         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2008         throwing code correctly.
2009
2010         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2011
2012 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2013
2014         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2015         ftnptrs created by us, handle RGCTX_FETCH correctly.
2016         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2017
2018         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2019         ftnptr added by mono_aot_get_named_code ().
2020
2021 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2022
2023         * mini-arm.c: Fix a few LLVM problems.
2024
2025         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2026
2027 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2028
2029         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2030         AOT compiling.
2031
2032 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2033
2034         * jit.h, method-to-ir.c: added ability to set the policy for
2035         inserting breakpoints from the break IL instruction or the
2036         Debugger.Break () API call.
2037
2038 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2039
2040         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2041         assemblies need to be eagerly loaded.
2042
2043 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2044
2045         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2046
2047 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2048
2049         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2050         an argument which matches any exception.
2051
2052 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2053
2054         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2055         optimization if the called method is gshared and marshalbyref, since gshared
2056         methods can' have wrappers. Fixes #569390.
2057
2058         * generics.cs: Add a test.
2059
2060 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2061
2062         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2063         callable from gdb.
2064
2065 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2066
2067         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2068
2069 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2070
2071         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2072         since it is not supported in win2000.
2073
2074 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2075
2076         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2077         error if loading an assembly fails.
2078         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2079
2080         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2081         if exists.
2082
2083         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2084         compiled methods.
2085
2086         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2087
2088         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2089         is not supported yet.
2090
2091         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2092
2093 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2094
2095         * method-to-ir.c: All types with variant arguments must fallback to the
2096         slow path. This makes cast of variant delegates work.
2097
2098         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2099         argument that is set to TRUE is the returned vtable slot is for a variant
2100         interface. Changed a g_print + g_assert_not_reached to a g_error.
2101
2102         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2103         a similar fashion of generic virtual methods.
2104
2105 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2106
2107         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2108         when cfg is null.
2109
2110         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2111         method using a variance aware function.
2112
2113         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2114
2115 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2116
2117         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2118         do an icall for now.
2119
2120 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2121
2122         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2123         If LLVM decides to set the code model to Large, reset it to Default.
2124
2125 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2126
2127         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2128         stripped binaries as well.
2129
2130 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2131
2132         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2133         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2134
2135         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2136         reg.
2137
2138 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2139
2140         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2141         separate function.
2142
2143         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2144         as the type info to llvm.eh.selector.
2145         (exception_cb): Use the type info for filling out some fields of
2146         MonoJitExceptionInfo like the flags and the exception class. This is needed
2147         because the LLVM produced exception handling clauses might not match the original
2148         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2149
2150         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2151         separate function. Add an extra argument which returns the type infos
2152         corresponding to the exception clauses.
2153
2154         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2155         exception handling clauses.
2156
2157 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2158
2159         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2160         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2161         to fix an AOT case.
2162
2163 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2164
2165         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2166         internal assembly.
2167
2168 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2169
2170         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2171         llvm code.
2172
2173 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2174
2175         * mini.c (mini_method_compile): Verify the method before calling
2176         mono_compile_create_vars as this might crash since it uses method
2177         information.
2178
2179         Fixes #560196.
2180
2181 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2182
2183         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2184         one case if AOTing, since the class might not be a concrete class.
2185
2186 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2187
2188         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2189         functions which are now defined in mempool-internals.h.
2190
2191         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2192
2193         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2194
2195 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2196
2197         * mini.c:
2198         * method-to.ir.c:
2199         * mini-*.c: Properly handle generic enums.
2200
2201         Fixes #566294
2202
2203 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2204
2205         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2206         in a few more places.
2207
2208 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2209
2210         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2211         nullable parameters. Fixes #567351.
2212
2213 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2214
2215         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2216
2217 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2218
2219         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2220         mono_get_generic_context_from_code () call.
2221
2222         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2223
2224 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2225
2226         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2227         needed.
2228
2229 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2230
2231         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2232         mono_method_get_signature returns NULL. Fix #567084
2233
2234 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2235
2236         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2237         instead of once for each module.
2238
2239 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2240
2241         * debugger-agent.c (ss_start): Implement step over for the last sequence
2242         point in methods.
2243
2244         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2245         have the STEP_LOC flag set.
2246
2247         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2248         fails. Fixes #566689.
2249
2250 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2251
2252         * mini.c (mono_add_seq_point): New helper function.
2253         (mono_save_seq_point_info): New function to save sequence point info, extracted
2254         from mini_method_compile ().
2255
2256         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2257
2258         * mini.h (MonoSeqPointInfo): New structure containing information about
2259         the sequence points of a JITted method.
2260         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2261         'bucket' field.
2262
2263         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2264         point information is stored, use a MonoSeqPointInfo structure instead of a
2265         GPtrArray. For each seq point, compute a list of successor seq points.
2266
2267         * debugger-agent.c: Use the successor list to implement step-over more
2268         efficiently: instead of single stepping until a different line/IL offset is
2269         reached, place breakpoints into all successor seq points.
2270
2271         * mini.h: Bump AOT file format version.
2272
2273 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2274
2275         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2276
2277         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2278
2279 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2280
2281         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2282         build.
2283
2284 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2285
2286         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2287         alloca as g_malloc is not signal safe.
2288
2289 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2290
2291         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2292         VALGRIND_DISCARD_TRANSLATIONS.
2293
2294         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2295         checks, they are no longer needed.
2296
2297         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2298         a function into a sigctx which can handle function pointers.
2299
2300         * mini-ppc.c: Implement soft debugger support on ppc64.
2301
2302         * mini-ppc.c: Implement soft debugger support.
2303
2304 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2305
2306         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2307
2308 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2309
2310         * mini.c (mono_get_runtime_build_info): include Mono version in
2311         the returned value.
2312
2313         * driver.c (mono_main): VERSION is now included in the string
2314         returned from mono_get_runtime_build_info()
2315
2316 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2317
2318         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2319         signatures. Fixes #565143.
2320
2321         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2322
2323 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2324
2325         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2326
2327 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2328
2329         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2330         making max stack 10x smaller.
2331
2332 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2333
2334         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2335
2336 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2337
2338         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2339
2340 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2341
2342         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2343         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2344
2345         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2346
2347         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2348
2349         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2350
2351         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2352         the compilation.
2353
2354 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2355
2356         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2357         raise an invalid program exception.   
2358
2359         For other opcodes that we might not handle use a g_warning and
2360         raise the exception.   Beats termination.
2361
2362         Fixes #561724
2363
2364 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2365
2366         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2367
2368         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2369         by merging the LLVM and !MAP_32BIT cases.
2370
2371 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2372
2373         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2374         sigctx being passed in, as we have no CONTEXT available in the APC.
2375
2376         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2377         for now.
2378
2379         Code contributed under MIT/X11 license.
2380
2381 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2382
2383         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2384         in the LLVM backend on AMD64.
2385
2386         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2387         FDE.
2388
2389         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2390
2391         * mini-llvm.c: Export mono_personality for AOT.
2392
2393         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2394
2395         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2396         implicit exception can occur.
2397
2398         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2399         OP_IMPLICIT_EXCEPTION instruction.
2400
2401         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2402
2403         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2404
2405         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2406         inside a protected block.
2407
2408         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2409         trampolines doesn't include the argument.
2410
2411         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2412         trampolines on amd64.
2413
2414         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2415         of RDI.
2416
2417         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2418         disabled for methods with clauses.
2419
2420         * mini-llvm.c: Enable support for catch clauses.
2421
2422         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2423         end of an LLVM compiled finally clause.
2424         (mono_handle_exception_internal): Save the exception handling state in TLS
2425         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2426         resume unwinding from that point.
2427
2428         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2429         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2430         to obtain the addresses of the exception handling regions.
2431
2432         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2433         finally clauses are supported.
2434
2435         * mini.c (mini_method_compile): Add support for LLVM code with exception
2436         handlers.
2437
2438 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2439
2440         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2441         proper size.
2442
2443 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2444
2445         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2446         as a primitive type.
2447
2448 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2449
2450         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2451         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2452         #564000.
2453
2454 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2455
2456         * method-to-ir.c (mini_redirect_call): do not redirect the
2457         InternalAllocateStr internal call if string profiling is enabled.
2458
2459 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2460
2461         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2462         generic methods.
2463
2464         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2465         unwind.h header file.
2466
2467         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2468         newer valgrind versions seems to handle this fine.
2469
2470 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2471
2472         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2473         on the debugger thread.
2474
2475 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2476
2477         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2478
2479         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2480
2481         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2482
2483         * cpu-<ARCH>.md: Make call_handler clob:c.
2484
2485         * mini.c: Reenable SSA for methods with clauses.
2486
2487         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2488         as it causes failures on x86.
2489
2490 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2491
2492         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2493         returns NULL (e.g. a bad assembly).
2494
2495 2009-12-08  Geoff Norton  <gnorton@novell.com>
2496
2497         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2498         stepping out into native code.  There were issues with nested invokes
2499         like .cctors.
2500
2501 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2502
2503         * mini.c (mini_method_compile): Do the disable_llvm checks early
2504         and avoid the LLVM compile pass if the checks fail.
2505
2506         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2507
2508         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2509         LLVM optimizations don't try to remove them.
2510
2511         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2512         different file so the original remains.
2513
2514 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2515
2516         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2517
2518         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2519
2520         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2521         support for non-inline unwind descriptors.
2522
2523 2009-12-07  Geoff Norton  <gnorton@novell.com>
2524
2525         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2526         the interrupt_count slightly differently.  Native threads were never
2527         marked as resumed.
2528
2529 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2530
2531         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2532         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2533         yet generate this info.
2534
2535         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2536
2537         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2538         client can distinguish between intptrs and longs.
2539
2540 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2541
2542         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2543         blob.
2544
2545         * aot-runtime.c (load_function): Update after the change above.
2546
2547         * mini.h: Bump AOT file format version.
2548
2549         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2550         if the delegate class is dynamic.
2551
2552         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2553         in gshared code too using the new rgctx info type
2554         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2555
2556 2009-12-04  Geoff Norton  <gnorton@novell.com>
2557
2558         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2559         we need to track the original suspend count so the thread properly
2560         wakes up in resume_thread.
2561
2562 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2563
2564         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2565         code.
2566
2567         * generics.cs: Add a test.
2568
2569         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2570         is 0. Simplify a lot of code using this.
2571
2572         * mini-trampolines.c (mono_delegate_trampoline): Call
2573         mono_create_static_rgctx_trampoline () before saving the final address in
2574         delegate->method_code, to avoid calling it each time a delegate is first called.
2575
2576         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2577         which need static rgctx trampolines.
2578
2579         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2580         keyed on the method+addr pair, since addr could be either the method addr or
2581         an unbox trampoline in the AOT case. Fixes #560246.
2582
2583 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2584
2585         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2586         place it was called before too.
2587
2588 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2589
2590         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2591         if no security manager is present, to speed up the AOT case. Call
2592         mono_class_vtable () full with raise_on_error == TRUE instead.
2593
2594 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2595
2596         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2597         the local optimization passes can take its result into account. Fixes
2598         #559876.
2599
2600         * exceptions.cs: Add a test.
2601
2602 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2603
2604         This patch is contributed under the terms of the MIT/X11 license
2605
2606         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2607
2608 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2609
2610         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2611
2612         * debugger-agent.c: Rework the handling of stack traces of running threads to
2613         avoid crashes if compute_frames () tries to walk the stack of running thread.
2614
2615         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2616
2617         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2618
2619         * mini.h (StackFrameInfo): Add an 'lmf' field.
2620
2621 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2622
2623         * debugger-agent.c (suspend_current): Always set really_suspended.
2624
2625         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2626
2627         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2628
2629 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2630
2631         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2632         really suspended.
2633
2634 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2635
2636         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2637
2638 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2639
2640         * mini-trampolines.c: Fix MSVC build.
2641
2642 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2643
2644         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2645
2646 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2647
2648         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2649         the instruction following an OP_FCOMPARE is optimized away.
2650
2651 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2652
2653         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2654         emit_autoreg () into this arch-specific function.
2655
2656         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2657         code, it is no longer needed.
2658
2659         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2660
2661         * mini.h: Bump AOT file format version.
2662
2663         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2664         using the sorted_code_offsets array, instead of reading it from the
2665         exception debug info.
2666         (load_method): Call mono_aot_find_jit_info instead of
2667         decode_exception_debug_info ().
2668
2669         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2670         LLVM compiled as a flag.
2671
2672 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2673
2674         * debugger-agent.c (resume_thread): Fix a warning.
2675
2676         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2677         generated.
2678
2679 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2680
2681         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2682         contents to MonoAotFileInfo.
2683
2684 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2685
2686         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2687         Put all binary data into a giant blob, similarly to the way .net assemblies
2688         store binary data. Emit offset tables in a compact form to reduce their size.
2689
2690         * mini.h: Bump AOT file format version.
2691
2692         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2693         places.
2694
2695         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2696         avoid linear searches at runtime.
2697
2698         * aot-runtime.c (find_symbol): Update this to use the hash.
2699
2700         * mini.h: Bump AOT file format version.
2701
2702 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2703
2704         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
2705         container.
2706
2707         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
2708         too.
2709
2710         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
2711         the distribution of got slot types.
2712
2713         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
2714
2715         * method-to-ir.c: Add support for generating explicit null checks.
2716
2717 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2718
2719         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
2720         on a random thread if possible.
2721
2722         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
2723         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
2724         correctly.
2725
2726         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
2727         regs. Pass the real size of the regs array to mono_unwind_frame ().
2728
2729         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
2730         ones instead.
2731
2732 2009-11-24  Geoff Norton  <gnorton@novell.com>
2733
2734         * mini-darwin.c: Work around apple bug rdar://7209349  See
2735         http://openradar.appspot.com/7209349 for details.  Synopsis,
2736         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
2737         never been initialized before.
2738
2739 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2740
2741         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
2742
2743         * mini-arm.c (mono_arm_thumb_supported): New helper function.
2744
2745 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2746
2747         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
2748         OP_SHL_IMM is not 32 bit.
2749
2750 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2751
2752         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
2753
2754 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2755
2756         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
2757         encountered.
2758
2759         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
2760         > 0 since some threads can resume if their resume_count is > 0.
2761         (invoke_method): Avoid reading freed memory.
2762
2763         * debugger-agent.c (process_suspend): Extract the suspend code from
2764         process_single_step_inner () to a separate function. Rework the code to prevent
2765         races between this function and thread interrupts.
2766
2767         * debugger-agent.c (suspend_current): Check the resume_count field instead
2768         of resume_one so suspends+resumes during single threaded invokes work
2769         correctly.
2770
2771 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
2772
2773         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
2774         to make the generated code smaller.
2775
2776         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
2777         sequence generated by recent LLVM versions.
2778
2779         * mini-llvm.c: Add support for a few simple cases which weren't supported
2780         before.
2781
2782         * mini-trampolines.c (mono_magic_trampoline): Don't call
2783         mono_arch_get_vcall_slot () when llvm is enabled.
2784
2785         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
2786
2787         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
2788         into a new function called common_call_trampoline () which is used by the
2789         llvm vcall trampoline as well.
2790
2791         * debugger-agent.c: Implement single threaded invokes.
2792
2793         * debugger-agent.c: Revert change which broke the agent on linux.
2794
2795         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
2796         #557606.
2797
2798         * generics.cs: Add a test.
2799
2800 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
2801
2802         * debugger-agent.c: Fix the cygwin build.
2803
2804 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2805
2806         * cprop.c: Remove this unused file.
2807
2808 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2809
2810         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
2811         #557262.
2812
2813         * basic.cs: Add a test.
2814
2815 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2816
2817         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
2818         in one more place.
2819
2820 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
2821
2822         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
2823         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
2824         it. Use this flag to control llvm related code paths instead of #ifdef
2825         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
2826         AOT code.
2827
2828         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
2829
2830         * mini.h: Bump AOT file format version.
2831
2832         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
2833         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
2834
2835         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
2836         was used as an assembly filter.
2837
2838 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2839
2840         * unwind.c: Fix support for ppc.
2841
2842         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
2843         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
2844
2845 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2846
2847         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
2848         port.
2849         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
2850         added by the ps3 changes.
2851
2852 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2853
2854         * mini-gc.c: Resurrect this, so at least it compiles.
2855
2856         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
2857
2858 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
2859
2860         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
2861         create_event_list () so assembly filters can be used.
2862
2863         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
2864         from the LMF.
2865
2866 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
2867
2868         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
2869         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
2870         is disabled.
2871
2872         * aot-compiler.c (add_generic_instances): Emit instances of common generic
2873         classes for char/bool too.
2874
2875         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
2876
2877         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
2878         used.
2879
2880         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
2881         Fix warnings.
2882
2883 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
2884
2885         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
2886         
2887         Code contributed under MIT/X11 license.
2888
2889 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
2890
2891         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
2892         threads in native code work.
2893
2894         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
2895         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
2896         version.
2897
2898 2009-11-13 Jonathan Chambers <joncham@gmail.com>
2899
2900         * debugger-agent.c: Implementation for Windows platform.
2901
2902         * mini-x86.c: Add support for Windows. Use mono-* synchronization
2903         primitives. Use SEH to implement breakpoints and single stepping.
2904
2905         * mini-x86.h: Enable soft debugger on Windows.
2906
2907         Code contributed under MIT/X11 license.
2908
2909 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2910
2911         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
2912         under XEN. Fixes #522894.
2913
2914         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
2915
2916         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
2917         interface calls in LLVM AOT code.
2918
2919         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
2920         is found.
2921
2922         * mini-llvm.c: Add support for OP_VPHI.
2923
2924         * objects.cs: Add a test.
2925
2926 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2927
2928         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
2929         this is called on the debugger thread.
2930
2931 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
2932
2933         * mini-llvm.c: Add soft-float support.
2934
2935         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
2936         FCALL which returns an R4.
2937
2938         * driver.c (mono_main): Add a missing '\n'.
2939
2940         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
2941         platforms which doesn't support the LLVM IMT trampoline.
2942
2943 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
2944
2945         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
2946
2947         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
2948
2949         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
2950         virtual calls.
2951
2952         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
2953
2954 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
2955
2956         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
2957         Instead of emitting a method_order table, sort the contents of the code_offsets
2958         table and do a binary search in the sorted table. The previous approach doesn't
2959         work with LLVM which emits methods in a arbitrary order.
2960
2961         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
2962         in the .eh_frame section in ELF files.
2963
2964         * mini.h: Bump corlib file format version.
2965
2966         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
2967
2968         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
2969         LDMIA->LDM macro name change.
2970
2971 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
2972
2973         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
2974         x86.
2975
2976         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
2977         SVN.
2978
2979         * aot-compiler.c: Ditto.
2980
2981         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
2982         &align to mini_type_stack_size_full ().
2983
2984         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
2985
2986         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
2987
2988 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
2989
2990         * mini-arm.c: Compute the stack space used by arguments using
2991         mini_type_stack_size_full ().
2992
2993 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
2994
2995         * optflags-def.h: Remove dead TREEPROP optimization.
2996
2997 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
2998
2999         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3000
3001         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3002
3003 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3004
3005         * driver.c (mono_jit_parse_options): New public API function to parse options
3006         as done by the runtime executable.
3007
3008         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3009         when handling named arguments.
3010
3011 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3012
3013         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3014         for passing small vtypes in registers, make the CallInfo structures more
3015         similar to the code on the other platforms.
3016
3017         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3018         the code in the prolog requires it.
3019
3020 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3021
3022         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3023         (koush@koushikdutta.com).
3024
3025         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3026         where the thunk memory should be allocated from. Fixes appdomain unloading
3027         on arm.
3028
3029 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3030
3031         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3032         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3033
3034 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3035
3036         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3037         AOT, as it is not implemented yet.
3038
3039         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3040
3041 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3042
3043         * debugger-agent.c: Fix windows build.
3044
3045 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3046
3047         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3048         after the client connects/disconnects.
3049
3050         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3051         when an exception of a given type is thrown.
3052
3053         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3054         only on an uncaught exception.
3055
3056         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3057
3058         * debugger-agent.c: Add a 'launch' option.
3059
3060 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3061
3062         * debugger-agent.c: Add a 'timeout' option.
3063
3064 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3065
3066         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3067         the JDWP agent.
3068
3069 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3070
3071         * debugger-agent.c (set_breakpoint): Emit a log message.
3072
3073 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3074
3075         * mini-arm.c: Fix the arm build.
3076
3077 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3078
3079         * aot-compiler.c: don't leak the value returned from
3080         mono_type_full_name().
3081
3082 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3083
3084         * debugger-agent.c: defer including mono-mutex.h until we know the
3085         agent is supported.
3086
3087 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3088
3089         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3090         of pthreads directly.
3091
3092         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3093         exception handlers. Pass info argument.
3094
3095         * mini.h: Adjust signatures of soft debugger functions to pass void*
3096         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3097
3098         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3099         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3100         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3101         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3102
3103         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3104
3105         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3106         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3107         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3108         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3109
3110         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3111
3112         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3113
3114         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3115
3116         * mono-semaphore.h: Skeleton implementation for Windows.
3117
3118         Code contributed under MIT/X11 license.
3119
3120 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3121
3122         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3123
3124         Code contributed under MIT/X11 license.
3125
3126 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3127
3128         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3129
3130         Code contributed under MIT/X11 license.
3131
3132 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3133
3134         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3135         debug info to 100 because 10 still slows down gdb too much.
3136
3137         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3138         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3139         them in the wrappers.
3140
3141 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3142
3143         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3144
3145         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3146
3147         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3148         function mono_aot_get_array_helper_from_wrapper ().
3149
3150         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3151         array helper methods.
3152
3153 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3154
3155         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3156         the value was loaded from memory.
3157
3158         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3159         the value was loader from there.
3160
3161         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3162         without constant swizzle.
3163
3164 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3165
3166         * mini-amd64.c: Put soft debugger functions behind a
3167         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3168
3169         * mini-amd64.h: disable the soft debugger in windows.
3170
3171         Code contributed under MIT/X11 license.
3172
3173 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3174
3175         * mini-x86.c: Put soft debugger functions behind a
3176         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3177
3178         Code contributed under MIT/X11 license.
3179
3180 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3181
3182         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3183         to mono_arch_find_jit_info_ext.
3184
3185         Code contributed under MIT/X11 license.
3186
3187 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3188
3189         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3190
3191         * debugger-agent.c: Add support for filtering events by assemblies.
3192
3193         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3194         the agent is not enabled.
3195
3196 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3197
3198         * exceptions-x86.c: hopefully last change to fix the windows build.
3199         This one courtesy of Jonathan Chambers.
3200
3201 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3202
3203         * debugger-agent.c: remove unused function.
3204
3205 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3206
3207         * debugger-agent.c: add #ifdefs for a few header files.
3208         * mini-x86.h: disable the soft debugger in windows.
3209         Step 1 of 2 to make this compile on windows with gcc.
3210
3211 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3212
3213         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3214         as it breaks the build.
3215
3216 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3217
3218         Merge the soft debugger branch.
3219
3220         * debugger-agent.h debugger-agent.c: New files containing the soft
3221         mode debugger module.
3222
3223         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3224         at the appropriate locations.
3225
3226         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3227         opcode.
3228
3229         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3230         enable/disable single stepping.
3231
3232         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3233         which returns all information in a StackFrameInfo structure, and can handle the
3234         LMF frames added by the debugger.
3235
3236         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3237         about an LMF frame.
3238
3239         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3240         walker function which works on a specific thread and passes a StackFrameInfo
3241         structure to its callback.
3242
3243         * mini.c (mini_init): Initialize the debugger agent.
3244
3245         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3246
3247         * mini-ops.h: Add OP_SEQ_POINT opcode.
3248
3249         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3250         arguments to the debugger agent.
3251
3252 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3253
3254         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3255         speed things up.
3256
3257         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3258
3259         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3260
3261         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3262
3263         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3264         if needed.
3265         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3266         sets the IMT argument and makes a virtual call.
3267
3268         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3269
3270 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3271
3272         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3273         the windows build.
3274
3275 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3276
3277         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3278         runtime. Fixes #551228.
3279
3280 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3281
3282         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3283
3284         * basic.cs: Add a test.
3285
3286         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3287         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3288         CONSTRAINED. Fixes #550964.
3289
3290         * generics.cs: Add a test.
3291
3292 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3293
3294         * mini-posix.c (add_signal_handler): Use
3295         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3296
3297 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3298
3299         Contributed under the terms of the MIT/X11 license by
3300         Jerry Maine <crashfourit@gail.com>.
3301
3302         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3303         sse4a for simd intrinsics.
3304
3305         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3306         sse4a for simd intrinsics.
3307
3308 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3309
3310         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3311         instead of inst_p1 which is not the same on ILP32 platforms.
3312
3313 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3314
3315         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3316         not the mscorlib one before calling mono_get_lmf_addr.
3317
3318         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3319         of the ip to the LMF.
3320
3321         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3322         immediate in the op->op_imm optimization.
3323
3324         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3325         understand. VTypes now work, but are not abi compliant, as they are
3326         split into 4 byte parts instead of 8.
3327         (emit_memcpy): Fix the unrolled case to work on the PS3.
3328
3329         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3330
3331         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3332         the default when static linking.
3333
3334         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3335
3336         * aot-compiler.c: Add an autoreg option to automatically register
3337         statically linked aot modules using ELF .ctors.
3338
3339         * genmdesc.pl: Add __ppc64__ to allowed defines.
3340
3341 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3342
3343         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3344         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3345
3346 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3347
3348         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3349
3350 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3351
3352         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3353         which will contain the domain where the method was found.
3354
3355         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3356         mini_jit_info_table_find ().
3357
3358         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3359
3360         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3361
3362 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3363
3364         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3365         set, its not supported yet.
3366
3367 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3368
3369         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3370         iface wrapper is not found.
3371         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3372
3373 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3374
3375         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3376         which have a different name.
3377
3378         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3379         wrappers and Array.GetGenericValueImpl ().
3380
3381         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3382         because of the change above.
3383
3384         * generics.cs: Add a test for full aot + generic array ifaces.
3385
3386 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3387
3388         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3389         that hides the previous one.
3390
3391 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3392
3393         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3394         marshalled. Fixes #541623.
3395
3396 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3397
3398         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3399
3400 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3401
3402         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3403
3404 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3405
3406         * mini-posix.c (sigprof_signal_handler):
3407         Implemented support for building stat call chans in different ways.
3408
3409 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3410
3411         * mini-exceptions.c (mono_find_jit_info):
3412         Also check that a jit info has been found (fixes a profiler crash).
3413
3414 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3415
3416         * mini.c (mono_codegen):
3417         Call mono_profiler_code_buffer_new with correct code address.
3418
3419 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3420
3421         * driver.c (mono_main): Change the date in the copyright.
3422
3423 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3424
3425         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3426         allocator in shared generic code for open classes, because we
3427         can't get those classes' vtables.  We need to make managed
3428         allocators not depend on the vtable at compile-time to solve this.
3429
3430 2009-10-13  Martin Baulig  <martin@ximian.com>
3431
3432         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3433         `const guint8 *trampoline' argument; send both the old and the new
3434         notification.
3435
3436 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3437
3438         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3439         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3440         (can_marshal_struct): Skip structures with auto layout.
3441
3442         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3443
3444 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3445
3446         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3447         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3448         a variable to hold the stack slot used by the int<->float conversion opcodes.
3449
3450         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3451
3452 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3453
3454         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3455         when using full-aot.
3456
3457 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3458
3459         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3460         each instance of Comparer<T>.
3461
3462         * generics.cs: Add a new test.
3463
3464 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3465
3466         * driver.c (parse_debug_options): Add a 'gdb' option.
3467
3468         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3469
3470         * image-writer.c: Add support for emitting the image into a memory buffer.
3471
3472         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3473
3474         * aot-compiler.c: Add support for registering debug info with GDB using the
3475         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3476         MONO_XDEBUG to 'gdb'.
3477
3478 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3479
3480         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3481         gdb mode.
3482
3483 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3484
3485         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3486         can be used to set breakpoints in gdb.
3487
3488         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3489         segment to an absolute address.
3490
3491 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3492
3493         * method-to-ir.c: Use the managed array allocator method if
3494         available.
3495
3496 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3497
3498         * aot-compiler.c : Fix the MSVC builds
3499
3500         Code is contributed under MIT/X11 license.
3501
3502 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3503
3504         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3505         avoid registering 1 symbol file per method with gdb.
3506
3507 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3508
3509         * mini-sparc.c: Fix the handling of enums with base type long.
3510
3511         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3512
3513         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3514         instead of using type->data.klass as the later doesn't work with generics.
3515
3516 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3517
3518         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3519         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3520         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3521         works differently now and we don't handle it in the JIT anymore.
3522
3523         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3524         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3525         the Thread class split.
3526
3527 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3528
3529         * driver.c: Don't run tests with the obsolete treeprop optimization.
3530
3531         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3532         variable volatile. Fixes #541577.
3533
3534         * basic-calls.cs: Add a new test.
3535
3536         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3537
3538 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3539
3540         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3541         work/required with recent iphone sdk versions.
3542
3543         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3544         structures.
3545
3546         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3547         in the VCALL decomposition code.
3548
3549 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3550
3551         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3552
3553         * basic.cs: Add a test.
3554
3555         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3556         generic invokes.
3557
3558         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3559         searches all the domains of the current thread.
3560
3561         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3562
3563 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3564
3565         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3566         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3567
3568         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3569         for non-jit trampolines.
3570
3571         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3572
3573         * aot-compiler.c (add_wrappers): Ditto.
3574
3575         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3576         the size of the param area used by dyn_call to 6 which covers the majority of
3577         methods.
3578
3579         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3580
3581         * mini-arm.c: Implement support for passing/receiving
3582         longs and receiving floats in the dyn_call code.
3583
3584         * mini-amd64.c: Implement support for receiving vtypes in registers in
3585         the dyn_call code.
3586
3587         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3588         the dyn_call code.
3589
3590 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3591
3592         * mini-arm.c (get_call_info): Return more precise information in
3593         ArgInfo->regtype.
3594         (dyn_call_supported): Use the information in CallInfo.
3595
3596         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3597
3598         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3599         code.
3600
3601         * mini-arm.c: Update after the dyn_call api changes.
3602
3603         * mini.c (mini_create_jit_domain_info): Register a destructor function
3604         for the runtime_invoke_hash.
3605
3606         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3607         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3608         this function.
3609         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3610         (dyn_call_supported): Simplify this by using get_call_info ().
3611         (mono_arch_dyn_call_free): New destructor function.
3612
3613         * generics.cs: Remove a printf.
3614
3615         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3616
3617         * mini-arm.c: Add support for enum return values and passing a few arguments
3618         on the stack.
3619         
3620         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3621         dyn invoke.
3622
3623         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3624
3625         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3626         the dynamic invoke wrappers.
3627
3628         * mini-arm.c: Implement OP_DYN_CALL for arm.
3629
3630         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3631         supported by the dynamic runtime invoke wrapper.
3632
3633         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3634         runtime invoke wrapper.
3635
3636         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3637         if possible when running with full-aot.
3638
3639         * mini-ops.h: Add OP_DYN_CALL opcode.
3640
3641         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3642         with dynamic arguments lists similar to libffi.
3643
3644 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3645
3646         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3647         
3648         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3649         to NEWARR.
3650
3651         * iltests.il.in: Add a new test.
3652         
3653 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3654
3655         * aot-compiler.c (add_generic_instances): Add more instances of
3656         GenericEqualityComparer.
3657
3658 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3659
3660         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3661
3662 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3663
3664         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3665         comments on some functions that now can fail.
3666
3667 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3668
3669         * Makefile.am: Add Info.plist to EXTRA_DIST
3670
3671 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3672
3673         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3674         static synchronized wrappers. Fixes #539500.
3675
3676 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3677
3678         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3679         properly.
3680
3681 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3682
3683         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3684         lmf before calling filter clauses as well. Fixes #539550.
3685
3686         * exceptions.cs: Add a test.
3687         
3688 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3689
3690         * aot-compiler.c (add_generic_class): Add instances of
3691         Array.GetGenericValueImpl as well.
3692
3693         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3694         can be tested too.
3695
3696         * generics.cs: Add a fullaot linq test.
3697
3698 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3699
3700         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3701         reg r1 on arm.
3702
3703 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3704
3705         * mini-trampolines.c (mono_delegate_trampoline) : Call
3706           mono_cominterop_get_invoke if the delegate target object
3707           is a COM object.
3708
3709         Code is contributed under MIT/X11 license.
3710
3711 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
3712
3713         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
3714         internal call is defined outside platform code. Reduce code 
3715         duplication with existing [Method|Field]AccessException
3716
3717 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3718
3719         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
3720         if the return value is a small struct passed on regs.
3721
3722 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
3723
3724         * cpu-arm.md mini-arm.c: Remove unused opcodes.
3725
3726         * mini-codegen.c: Enable the cpu description validation for arm.
3727
3728 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
3729
3730         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
3731         test which depends on structs to objects.cs.
3732         
3733         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
3734         require object model related stuff working.
3735
3736         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
3737
3738         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
3739
3740         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
3741         against the instruction metadata in mini-ops.h. amd64 only for now.
3742
3743         * mini-ops.h: Fix some instruction descriptions.
3744
3745         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
3746         unused instructions.
3747
3748 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3749
3750         * exceptions.cs: Add a new test.
3751
3752 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
3753
3754         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
3755
3756 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3757
3758         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
3759         skip empty phi opcodes.
3760         
3761         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
3762         correctly by zero extending after loads. Skip methods containing calls
3763         to the monitor enter/exit trampolines.
3764
3765         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
3766         when calling mono_thread_force_interruption_checkpoint ().
3767
3768         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
3769
3770         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
3771         64 bit thunks.
3772         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
3773
3774         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
3775         bootstrap could run.
3776
3777 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
3778
3779         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
3780
3781 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3782
3783         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
3784         of the method to
3785         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3786         LLVM might be very short.
3787
3788         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
3789         in OP_THROW/RETHROW.
3790
3791         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
3792         alignment on osx.
3793
3794 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3795
3796         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
3797         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3798         LLVM might be very short.
3799
3800 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
3801
3802         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
3803         the alignment for the value of sp.
3804
3805 2009-09-01  Geoff Norton  <gnorton@novell.com>
3806
3807         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
3808         managed wrappers in full aot.
3809
3810 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
3811
3812         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
3813
3814 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
3815
3816         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
3817
3818 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3819
3820         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
3821
3822         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
3823         saved info.
3824
3825         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3826
3827         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
3828         depend on the info MonoMethodHeader which could be missing in IL stripped
3829         assemblies.
3830
3831 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3832
3833         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
3834         they are only 4 byte aligned.
3835
3836 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
3837
3838         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
3839         was done previously, since using SP causes too many problems.
3840
3841         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
3842         frames without a frame pointer works.
3843
3844         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
3845         global register in methods with calls, since the calls can go through
3846         a static rgctx trampoline which doesn't save it.
3847
3848 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
3849
3850         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
3851
3852 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3853
3854         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
3855
3856 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3857
3858         * method-to-ir.c: Fix warnings for uninitialized variables.
3859
3860 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3861
3862         * mini-exceptions.c:
3863         * aot-compiler.c: Fix printf warnings.
3864
3865 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3866
3867         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
3868         Add GetGenericValueImpl<string>.
3869         
3870         * aot-compiler.c (add_generic_instances): Add instances of
3871         GenericEqualityComparer<T> for primitive types. Only emit the array
3872         wrappers into the mscorlib image.
3873
3874 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
3875
3876         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
3877         the methods_loaded array using amodule->info->nmethods.
3878
3879         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
3880         (MONO_AOT_FILE_VERSION): Bump this.
3881
3882         * aot-compiler.c: Emit more generic instances allowing some parts of linq
3883         to work.
3884
3885         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
3886         MonoJitInfo doesn't belong to its methods aot image.
3887
3888 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
3889
3890         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
3891
3892         * mini-arm.c: Fix warnings.
3893         
3894         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
3895
3896         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
3897         supports it.
3898
3899 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
3900
3901         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
3902         avoid clobbering IP.
3903
3904         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
3905         hold the trampoline argument, so its initial value is available during
3906         debugging.
3907
3908 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
3909
3910         * exceptions-arm.c:
3911         * exceptions-hppa.c:
3912         * mini.c:
3913         * exceptions-s390x.c:
3914         * exceptions-mips.c:
3915         * exceptions-ppc.c:
3916         * exceptions-sparc.c:
3917         * exceptions-alpha.c:
3918         * aot-runtime.c:
3919         * mini-trampolines.c:
3920         * exceptions-x86.c:
3921         * exceptions-s390.c: add and use #define's instead of sizeof()
3922         for MonoJitInfo and MonoJitInfoTable.
3923
3924 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3925
3926         * tramp-arm.c:
3927         * tramp-amd64.c:
3928         * tramp-ppc.c:
3929         * tramp-x86.c: use a #define instead of sizeof() for a few
3930         structures that use a zero-length array.
3931
3932 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
3933
3934         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
3935         case when the method is dynamic. Fixes #529238.
3936
3937 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
3938
3939         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
3940         of asserting when a method is JIT compiled in full-aot mode.
3941
3942 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
3943         
3944         Contributed under the terms of the MIT/X11 license by
3945         Jerry Maine <crashfourit@gail.com>.
3946         
3947         * fixed wrong dates in changelog.
3948
3949 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
3950         
3951         Contributed under the terms of the MIT/X11 license by
3952         Jerry Maine <crashfourit@gail.com>.
3953
3954         * basic-simd.cs: added test for packed double square root.
3955         * cpu-amd64.md: added opcode info for packed double square root.
3956         * cpu-x86.md: added opcode info for packed double square root.
3957         * mini-ops.h: added IR opcode for packed double square root.
3958         * mini-x86.c: added IR to native translation code for packed double square root.
3959         * mini-amd64.c: removed todo for packed double square root.
3960         * simd-intrinsics.c: added method to IR opcode converstion for
3961         packed double square root.
3962
3963 2009-08-03 Jerry Maine <crashfourit@gmail.com>
3964
3965         Contributed under the terms of the MIT/X11 license by
3966         Jerry Maine <crashfourit@gail.com>.
3967
3968         * mini-amd64.c: Added a change to help tell the difference as 
3969         to what perpose the xmm register is being used--mainly to help
3970         with debuging.
3971         * mini-amd64.h: Changed callee regs to use 15 out of 16 
3972         (one used for special cases) xmm registers for both fp
3973         and simd ops. Added define to turn on new feature in the regalloc
3974         that allows fp and simd ops to share the xmm regs happily.
3975         * codegen.c: Added code to detect for which perpose an xmm reg is
3976         being used (fp or simd) and to translate back and forth to the
3977         correct logical reg bank (fp or simd) for 'spill load's.
3978
3979 2009-08-03 Jerry Maine <crashfourit@gmail.com>
3980
3981         Contributed under the terms of the MIT/X11 license by
3982         Jerry Maine <crashfourit@gail.com>.
3983
3984         * basic-simd.cs: Added tests for stressing the regalloc when running with
3985         16 simd regs and when simd and fp ops share the same reg bank.
3986
3987 2009-08-01  Mark Probst  <mark.probst@gmail.com>
3988
3989         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
3990         in shared generic code, we might have to look up the class in the
3991         RGCTX.  If we use the class directly, compute its GC descriptor.
3992
3993 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
3994
3995         * mini.c (mono_jit_runtime_invoke): Fix a warning.
3996
3997 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
3998
3999         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4000         check for errors. Fixed the case when the class with the Main
4001         method is broken.
4002
4003 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4004
4005         Contributed under the terms of the MIT/X11 license by
4006         Jerry Maine <crashfourit@gail.com>.
4007
4008         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4009
4010 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4011
4012         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4013
4014 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4015
4016         * method-to-ir.c: Fix naming of stelem and ldelem.
4017
4018 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4019
4020         * driver.c (main_thread_handler): Check that the assembly loaded
4021         matches the filename when doing AOT.
4022
4023 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4024
4025         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4026         call it anymore.
4027
4028         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4029         utils/mono-sigcontext.h).
4030
4031         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4032         #ifdef.
4033
4034 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4035
4036         * mini.c (mono_codegen):
4037         Call profiler hook to keep track of method code buffers.
4038
4039 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4040
4041         * method-to-ir.c: Invoke write barriers for the
4042         Interlocked.(Compare)Exchange JIT intrinsics.
4043
4044 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4045
4046         * Makefile.am (version.h): Fix issues when built out of tree.
4047         Remove some redundant 'grep's piped through 'sed's.
4048
4049 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4050
4051         This patch is contributed under the terms of the MIT/X11 license
4052
4053         * mini-ppc.c (mono_arch_output_basic_block):
4054         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4055         for bits 32-47 with signed load/store diplacements for bits
4056         48-63.  Use prefered base/offset order for indexed form.
4057         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4058         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4059         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4060         OP_LOADI2_MEMBASE): Same.
4061         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4062         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4063         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4064         indexed form.
4065         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4066         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4067         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4068         OP_LOADI1_MEMINDEX): Same
4069         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4070         OP_STORER8_MEMINDEX): Same
4071         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4072         computations.
4073         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4074         for bits 32-47 with signed load/store diplacements for bits
4075         48-63.  Use prefered base/offset order for indexed form.
4076
4077 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4078
4079 This patch is contributed under the terms of the MIT/X11 license
4080
4081         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4082         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4083         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4084         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4085         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4086         cfg->stack_usage to avoid size warnings.
4087         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4088         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4089         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4090         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4091         to convert.
4092         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4093         after code varible is initialized.
4094         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4095         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4096         (mono_arch_emit_epilog): 
4097         Move Use ppc_load32 for cfg->stack_usage to avoid size
4098         warnings.
4099
4100 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4101
4102         * method-to-ir.c: The write barrier doesn't do the store anymore,
4103         so we have always to emit it.  Also, emit the wbarrier after the
4104         store.
4105
4106 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4107
4108         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4109         for argument count 3 too.
4110
4111 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4112
4113         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4114         the caller handle the exceptions.
4115         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4116         method. Fixes #524498.
4117
4118 2009-07-22  Geoff Norton  <gnorton@novell.com>
4119
4120         * mini-exceptions.c: Fix build on ia64.
4121
4122 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4123
4124         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4125         barriers.
4126
4127 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4128
4129         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4130         code.
4131
4132 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4133
4134         * basic-simd.cs (Main): Pass args to the test driver.
4135
4136 2009-07-20  Geoff Norton  <gnorton@novell.com>
4137
4138         * mini-x86.h: Fix the x86 version guards to use Apple's
4139         properly defined macros.
4140
4141 2009-07-20  Geoff Norton  <gnorton@novell.com>
4142
4143         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4144         aligned access.
4145
4146 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4147
4148         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4149         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4150         the information which is needed for invokes, so only one locking+hash table
4151         lookup is needed.
4152
4153         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4154         
4155         * aot-compiler.c (add_generic_instances): Emit instances of 
4156         GenericComparer<T> for primitive types.
4157
4158 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4159
4160         * mini-posix.c: Fix linux build.
4161
4162 2009-07-19  Geoff Norton  <gnorton@novell.com>
4163
4164         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4165         mono_gdb_render_native_backtraces
4166         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4167         so we implement the sane semantics to the runtime here
4168         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4169         so we need to call it differently (mono_gdb_render_native_backtraces)
4170         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4171         here for default implementations.
4172         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4173         support Apple's weird syscall (SYS_fork) implementation and not busy
4174         loop in abort() on native crashes on OSX anymore.
4175
4176 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4177
4178         * aot-runtime.c (load_method): Change the handling of the
4179         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4180         are used.
4181
4182         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4183
4184 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4185
4186         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4187         seems to break the aot tests.
4188         
4189         * mini.c (mono_patch_info_equal): Fix the handling of 
4190         MONO_PATCH_INFO_RGCTX_FETCH.
4191
4192 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4193
4194         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4195
4196         * mini.c (mono_patch_info_hash): Fix the handling of 
4197         MONO_PATCH_INFO_INTERNAL_METHOD.
4198         (mono_patch_info_equal): Ditto.
4199
4200 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4201
4202         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4203         in a few places.
4204         
4205         * mini-llvm.c: Add some infrastructure for AOT support.
4206
4207 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4208
4209         * mini-llvm-cpp.c: Update to the latest llvm api.
4210         
4211         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4212         option to false to prevent llvm from installing signal handlers which
4213         trip up the gc.
4214         
4215 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4216
4217         * cpu-x86.md:
4218         * cpu-amd64.md: Revert previous change as those instructions
4219         take 2 separate arguments. Remember to read the arch docs more
4220         carefully next time.
4221
4222 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4223
4224         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4225
4226 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4227
4228         * mini-ppc.c: exploit multiple load/store units if available (rest of
4229         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4230         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4231
4232 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4233
4234         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4235         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4236
4237 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4238
4239         * cpu-x86.md: Fix missing clobbering from trancendental simd
4240         ops.
4241
4242         * cpu-amd64.md: Same.
4243
4244 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4245
4246         Contributed under the terms of the MIT/X11 license by
4247         Jerry Maine <crashfourit@gail.com>.
4248
4249         * basic-simd.cs: Added tests for single and doulble indexers.
4250
4251         * cpu-amd64.md: Added simd opcode information.
4252
4253         * mini-amd64.c: Added IR to native simd generation code.
4254         Added simd register names and function that returns them.
4255
4256         * mini-amd64.h: Added marcos to turn on simd code compilation in
4257         amd64. Added max simd register count marco. Added caller/callee
4258         register mask marcos. Added marcos to use simd register bank.
4259
4260         * mini.h: Added helper marco for shufling dwords and simple
4261         floats.
4262
4263 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4264
4265         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4266
4267         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4268
4269         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4270         the length of the native code as well.
4271
4272         * basic-simd.cs: Add a test for #521662.
4273
4274 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4275
4276         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4277
4278 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4279
4280         * mini.c: Register function for getting the IP from a signal
4281         context with metadata.
4282
4283 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4284
4285         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4286         call a generic class init trampoline if needed. Fixes #519336.
4287
4288         * generics.cs: Add a test.
4289         
4290 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4291
4292         * method-to-ir.c: When doing a call which might be remote from
4293         shared generic code to other shared code with open type arguments,
4294         get the remoting invoke wrapper from the RGCTX and do an indirect
4295         call to it.
4296
4297 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4298
4299         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4300         after the unbox trampoline in the full-aot case.
4301
4302 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4303         
4304         * mini.c: Move initialization of jit_mutex before debugger initialization
4305         
4306         to avoid crashes.
4307         
4308         
4309         * Info.plist: added Info.plist and link flag to enable the mono executable
4310         to access other processes. Requires codesigning of the executable to work.
4311         
4312         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4313         
4314         compile on OS X.
4315         
4316
4317 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4318
4319         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4320
4321 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4322
4323         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4324         when the generic instance is an instantiation of a subclass of the
4325         methods class. Fixes #517166.
4326
4327 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4328
4329         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4330         code.
4331
4332         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4333         AOTed code.
4334
4335         * CMakeLists.txt: Add minimal support for installation.
4336
4337 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4338
4339         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4340         determine whenever a method is directly callable to a separate function.
4341
4342         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4343         needed ones as a result of the previous change.
4344
4345         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4346         type of register arrays.
4347
4348         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4349         type of register arrays.
4350
4351 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4352         
4353         Contributed under the terms of the MIT/X11 license by
4354         Jerry Maine <crashfourit@gail.com>.
4355
4356         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4357
4358 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4359
4360         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4361
4362 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4363
4364         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4365         dump of structure return value. Fix some formatting.
4366         * cpu-s390x.md: Fix lengths of instruction sequences.
4367         * mini-s390.c: Minor formatting changes.
4368
4369 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4370
4371         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4372         Use sigaction on freebsd as well.
4373
4374 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4375
4376         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4377         uses #ifdef on it.
4378         
4379         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4380
4381 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4382
4383         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4384
4385 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4386
4387         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4388
4389 2009-06-20  Martin Baulig  <martin@ximian.com>
4390
4391         * debug-mini.c
4392         (MonoDebuggerThreadFlags): New enum typedef.
4393         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4394         (mono_debugger_thread_created): Added `gpointer func' argument;
4395         initialize the new `thread_flags' field.
4396
4397 2009-06-18  Martin Baulig  <martin@ximian.com>
4398
4399         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4400         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4401
4402         * debug-debugger.c
4403         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4404         flag in `MONO_DEBUGGER__info.runtime_info'.
4405
4406         * driver.c
4407         (mono_main): Call mini_debugger_set_attach_ok() if generics
4408         sharing is disabled.
4409
4410 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4411
4412         * aot-compiler.c (add_wrappers): Fix a warning.
4413
4414         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4415         the ppc load/store macro changes.
4416
4417 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4418
4419         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4420
4421         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4422         not just the got symbol.
4423
4424         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4425         on ppc.
4426
4427         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4428         ppc.
4429         
4430         * aot-compiler.c: Remove some fixmes.
4431
4432         * driver.c (mono_main): Print a helpful message when cross-compiling.
4433
4434         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4435
4436         * method-to-ir.c (initialize_array_data): Do the optimization if the
4437         target byte order is little endian, instead of the host byte order.
4438
4439         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4440         wrappers into the mscorlib image, Emit a unique plt symbol for each
4441         image, emit symbols for plt entries.
4442
4443         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4444         a .size directive.
4445         
4446 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4447
4448         * aot-compiler.c (add_wrappers): Avoid calling 
4449         mono_marshal_get_type_info () since it can assert for some types.
4450
4451         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4452         ldtoken are used inside wrappers.
4453
4454         * helpers.c: Add support for prefixing tools with the arch name.
4455
4456         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4457         quantities when using ilp32.
4458
4459         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4460         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4461
4462         * image-writer.c: Use .long on ilp32.
4463
4464         * aot-compiler.c: Use 32 bit loads on ilp32.
4465         
4466 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4467
4468         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4469
4470         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4471
4472         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4473
4474         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4475         second got slot of every aot image.
4476         
4477         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4478         aot on platforms with function pointers.
4479
4480         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4481         support for aot/full aot on ppc/ppc64.
4482         
4483         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4484         arguments which are needed on ppc.
4485
4486         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4487         argument.
4488
4489         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4490         
4491         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4492
4493         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4494
4495         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4496
4497         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4498
4499 2009-06-17  Geoff Norton  <gnorton@novell.com>
4500
4501         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4502
4503 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4504
4505         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4506         to control whenever the dwarf writer is in xdebug or aot mode.
4507         (emit_class_dwarf_info): Use a separate abbrev for structures without
4508         children.
4509
4510         * aot-compiler.c: Pass the appending parameter to 
4511         mono_dwarf_writer_create ().
4512
4513         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4514         falls through to its next bblock. Fixes #513931.
4515
4516         * iltests.il: Add a test.
4517
4518         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4519         infor even if emit_line is FALSE, as the apple linker seems to require it.
4520
4521         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4522
4523         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4524         gcc does.
4525         (emit_fde): Ditto.
4526
4527 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4528
4529         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4530         mips build.
4531
4532 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4533
4534         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4535         'has_call_handler' fields.
4536
4537         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4538
4539         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4540         first bblock if not needed. Fixes #512790.
4541         
4542 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4543
4544         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4545         
4546         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4547         wrappers.
4548
4549         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4550         remoting-invoke-with-check wrappers, which are not needed when running with
4551         full-aot, since it doesn't support remoting.
4552         
4553 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4554
4555         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4556
4557         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4558         method info, it is not used anymore.
4559
4560         * mini.h: Bump AOT file format version.
4561         
4562         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4563         word smaller.
4564
4565         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4566         change above.
4567         
4568         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4569
4570         * mini.h: Bump AOT file format version.
4571         
4572 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4573
4574         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4575         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4576         iphone.
4577
4578         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4579         of CKFINITE and FBGE for VFP.
4580
4581 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4582
4583         * aot-compiler.c: Don't align code to 16 bytes on arm.
4584         
4585         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4586         before the methods they belong to.
4587
4588         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4589         the full-aot case if possible, since the trampoline will be called right 
4590         away.
4591
4592         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4593         trampolines to 1024 after the change above.
4594
4595         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4596         trampoline to save 8 bytes per trampoline.
4597
4598         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4599         change above.
4600
4601 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4602
4603         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4604
4605 2009-06-08  Martin Baulig  <martin@ximian.com>
4606
4607         * debug-mini.c
4608         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4609         (_mono_debugger_throw_exception): Don't make this static.
4610         (_mono_debugger_unhandled_exception): Likewise.
4611         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4612
4613         * debug-mini.c
4614         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4615         (_mono_debugger_throw_exception): Add function prototype.
4616         (_mono_debugger_unhandled_exception): Likewise.
4617
4618         * mini-exceptions.c
4619         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4620         arg; return the first exception handler if the exception is caught
4621         and we're running inside the debugger.
4622         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4623         improve exception handle inside runtime-invoke, check whether the
4624         exception is actually caught in the method being invoked and not
4625         by the runtime-invoke-wrapper.
4626
4627 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4628
4629         * image-writer.c: Improve support for the osx assembler.
4630
4631         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4632         support them.
4633
4634 2009-06-08  Martin Baulig  <martin@ximian.com>
4635
4636         * debug-mini.c
4637         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4638         (_mono_debugger_throw_exception): Don't make this static.
4639         (_mono_debugger_unhandled_exception): Likewise.
4640         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4641
4642         * debug-mini.c
4643         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4644         (_mono_debugger_throw_exception): Add function prototype.
4645         (_mono_debugger_unhandled_exception): Likewise.
4646
4647         * mini-exceptions.c
4648         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4649         arg; return the first exception handler if the exception is caught
4650         and we're running inside the debugger.
4651         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4652         improve exception handle inside runtime-invoke, check whether the
4653         exception is actually caught in the method being invoked and not
4654         by the runtime-invoke-wrapper.
4655
4656 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4657
4658         * image-writer.c (append_subsection): Don't align subsections of the
4659         debug_line section as a workaround.
4660
4661         * dwarfwriter.c: Emit line number info in the AOT case as well.
4662
4663 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4664
4665         This patch is contributed under the terms of the MIT/X11 license
4666
4667        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4668        code_len <= code_size
4669
4670 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4671
4672         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4673
4674 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4675
4676         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4677         invoke wrappers, we now use trampolines instead.
4678
4679 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4680
4681         * mini-darwin.c: The exception thread must not be registered with
4682         the GC.
4683
4684 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4685
4686         * mini-gc.c: Disable the code because it makes SGen crash.
4687
4688 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4689
4690         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4691         instead of asserting.
4692
4693 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4694
4695         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4696         output file after the code has been compiled.
4697
4698 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4699
4700         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4701
4702 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4703
4704         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
4705         entries distinction to simplify the code.
4706
4707         * mini.h: Bump AOT file format version.
4708         
4709 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
4710
4711         * objects.cs: Fix the signature of one of the tests.
4712
4713         * mini.c (mini_create_ftnptr): New helper function, moved here from
4714         object.c.
4715         (mini_get_addr_from_ftnptr): Ditto.
4716         (mini_init): Install the new helpers.
4717
4718 2009-05-28  Martin Baulig  <martin@ximian.com>
4719
4720         Correctly initialize the debugger when embedding Mono.
4721
4722         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
4723         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
4724         see documentation in mini_debug_running_inside_mdb().
4725
4726         * debug-debugger.c
4727         (mini_debug_running_inside_mdb): New function to check whether
4728         we're running inside mdb.
4729
4730         * mini.c (mini_init): Call mini_debugger_init() if we're running
4731         inside the debugger.
4732
4733         * driver.c (mono_main): Moved the call to mini_debugger_init()
4734         into mini_init() to make this work when embedding Mono.
4735
4736         * debug-debugger.c (mini_debugger_init): Warn about duplicate
4737         calls to mini_debugger_init().
4738
4739         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
4740         mono_debugger_main() -> mini_debugger_main() and put them inside a
4741         `MONO_DEBUGGER_SUPPORTED' conditional.
4742
4743 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
4744
4745         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
4746         this is no longer in use.
4747         * mini.h: Same.
4748
4749 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
4750
4751         * mini-sparc.c (add_outarg_load): Fix the sparc build.
4752
4753         * aot-compiler.c (emit_method_code): Always write out C style symbols for
4754         methods.
4755
4756 2009-05-27  Martin Baulig  <martin@ximian.com>
4757
4758 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4759
4760         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
4761         long_conv_to_r_un to 64 bits.
4762
4763         * cpu-x86.md: Increase the instruction size due to the changes.
4764
4765         * iltests.il.in: Add regression test.
4766
4767         Fixes #467201.
4768
4769 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4770
4771         * objects.cs: Move the previous test from basic.cs to here.
4772
4773 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4774
4775         * basic.cs: Add regression test for #506915.
4776
4777 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4778
4779         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
4780         optimization we must check the bb of the first byte of stobj as
4781         it's the only one set in cil_offset_to_bb.
4782
4783         Fixes #506915.  
4784
4785 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
4786
4787         * image-writer.c: Fix pointer directive on ppc64.
4788
4789 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
4790
4791         * image-writer.c (asm_writer_emit_section_change): Avoid using
4792         .bss subsections on ppc too.
4793
4794 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
4795
4796         * image-writer.c: Fix the definition of TARGET_ASM_....
4797         
4798         * image-writer.c: Fix the emission of assembler directives in the last
4799         change.
4800
4801         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
4802         exception throwing code to accomodate ppc64.
4803
4804         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
4805         size to work on ppc64 too.
4806
4807         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
4808         too.
4809
4810         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
4811         the assembler dialect instead of using platform specific defines.
4812
4813 2009-05-22  Geoff Norton  <gnorton@novell.com>
4814
4815         * mini-arm.c (get_call_info): If a structure is split between the stack
4816         and argument registers, we should not advance the stack pointer by the entire
4817         native size, but just by the amount that spilled.
4818
4819 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
4820
4821         * mini-arm.c (get_call_info): Handle structures with alignment requirements
4822         correctly.
4823
4824 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4825
4826         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
4827         wrappers normally.
4828         
4829         * aot-compiler.c (add_extra_method): Fix up the collection of extra
4830         methods so wrapper don't get added twice.
4831         (add_generic_instances): Don't add methods of arrays.
4832
4833         * generics.cs: Mark one test as !FULLAOT.
4834
4835 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4836
4837         * mini-x86.c (emit_move_return_value): Remove unused vars.
4838
4839 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4840
4841         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
4842         decomposing 8 bytes structs into a LCALL.
4843
4844         * mini-x86.c (emit_move_return_value): We no longer push the vtype
4845         pointer for where to store the returned regs.
4846
4847         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
4848         state the concern.
4849
4850         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
4851
4852 2009-05-20  Miguel de Icaza  <miguel@novell.com>
4853
4854         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
4855         without getenv.
4856
4857 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4858
4859         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
4860
4861         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
4862         generics.
4863
4864 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
4865
4866         * local-propagation.c (mono_local_cprop): Avoid local propagation
4867         across paired add/sub if the first instruction dest reg is it's
4868         source reg. For example:
4869
4870         int_add_imm R12 <- R12 [1] clobbers: 1
4871         int_sub_imm R42 <- R12 [1] clobbers: 1
4872
4873         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
4874         maintain the math identify.
4875
4876         Fixes #505375.
4877
4878 2009-05-20  Andreia Gaita  <avidigal@novell.com>
4879
4880         * Makefile.am: avoid going on the network just to get the revision,
4881         use git log instead
4882
4883 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
4884
4885         Fixed estimate for short branches on amd64 (they were off mark, and
4886         enabling call prolog-epilog instrumentations caused assertions).
4887         * mini.h (struct MonoBasicBlock): added max_length field to hold the
4888         estimate for the maximum length of this basic block.
4889         * mini-amd64.c:
4890         - mono_arch_emit_prolog: compute max_length for each basic block
4891           (instead of max_offset), and inflate size estimate also for entry bb
4892           in case of code instrumentation.
4893         - mono_arch_output_basic_block: get rid of "cpos" (the current
4894           estimated "position" in the code), and always use "offset" instead,
4895           which is accurate; at the beginning of the function quickly recompute
4896           max_offset for all the remaining blocks, starting from the current
4897           cfg->code_len (which is correct, and not estimated) and using the
4898           estimated block lengths computed previously.
4899
4900 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
4901
4902         * exceptions-ppc.c: Remove the caching from the trampoline creation 
4903         functions, it is already done in the caller.
4904
4905         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
4906
4907         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
4908         MONO_ARCH_GSHARED_SUPPORTED define.
4909
4910         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
4911
4912         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
4913         function.
4914
4915 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
4916
4917         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
4918         call to mono_marshal_get_rgctx_invoke ().
4919
4920         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
4921         mono_marshal_get_static_rgctx_invoke (), all platforms which support
4922         gshared use the static rgctx trampolines now.
4923         
4924         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
4925         platform supports it.
4926
4927 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4928
4929         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
4930
4931         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
4932
4933 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4934
4935         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
4936
4937         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
4938         for ppc.
4939
4940 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
4941
4942         Made it possible for mono_arch_instrument_epilog to preserve
4943         argument registers, otherwise instrumenting the "epilogue" before
4944         a tail call would clobber them.
4945         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
4946         if like mono_arch_instrument_epilog but with an additional parameter
4947         that states if argument registers must be preserved.
4948         * mini.c: implemented mono_arch_instrument_epilog as a call to
4949         mono_arch_instrument_epilog_full without asking to preserve argument
4950         registers (this makes the existing code work as usual).
4951         * mini-amd64.c:
4952         - mono_arch_instrument_epilog: add parameter to transform it into
4953         mono_arch_instrument_epilog_full, and preserve argument registers
4954         when required.
4955         - mono_arch_output_basic_block, OP_TAILCALL case: call
4956         mono_arch_instrument_epilog_full.
4957         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
4958         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
4959         only transformed mono_arch_instrument_epilog into
4960         mono_arch_instrument_epilog_full.
4961
4962 2009-05-15  Geoff Norton  <gnorton@novell.com>
4963
4964         * mini-darwin.c: This works on arm now.
4965
4966 2009-05-14  Geoff Norton  <gnorton@novell.com>
4967
4968         * jit.h, driver.c: Allow full-aot to be decided programatically by the
4969         embedding api.
4970
4971 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4972
4973         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
4974         label names.
4975
4976         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
4977         wrappers during full aot mode correctly.
4978
4979         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
4980         methods correctly.
4981
4982         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
4983         mono_metadata_type_hash ().
4984
4985 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
4986
4987         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
4988         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
4989         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
4990         Removed MONO_INST_BRLABEL from the instruction flags, and the
4991         remaining code that used it, because we do not support branches inside
4992         basic blocks (and branch target labels) anymore.
4993         * Makefile.am: As part of the above cleanup, remove reference to
4994         BURG files which don't exist anymore.
4995
4996 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
4997
4998         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
4999         osx.
5000
5001         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5002         to use mono_arch_throw_corlib_exception.
5003
5004         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5005         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5006
5007         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5008         domain mempool.
5009
5010         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5011
5012         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5013         for the got to make debugging easier and to avoid confusing it with the
5014         system got.
5015         
5016         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5017         method so a breakpoint can be set when using gdb.
5018
5019 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5020
5021         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5022         on mono_method_get_imt_slot ().
5023
5024         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5025         num_decodes variables.
5026
5027         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5028         change as it doesn't seem to work.
5029         
5030         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5031         wrappers.
5032
5033 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5034
5035         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5036         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5037
5038         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5039         builder when using full aot.
5040
5041         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5042         here, it is already handled.
5043         
5044         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5045         correctly for IMT.
5046
5047         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5048
5049         * mini-arm.h: Enable IMT for full aot.
5050         
5051         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5052         arch doesn't support it.
5053
5054         * mini.c (mini_init): Don't disable IMT for full aot if the
5055         architecture supports it.
5056
5057         * mini.h (MonoAotTrampoline): New enum containing the different types
5058         of 'numerous' trampolines.
5059         (MONO_AOT_FILE_VERSION): Bump this.
5060
5061         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5062         static rgctx trampolines. Add support for full-aot IMT thunks.
5063
5064         * mini-amd64.h: Enable IMT for full aot.
5065
5066         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5067         to exclude tests belonging to a category.
5068
5069         * generics.cs: Mark some tests with a !FULLAOT category.
5070
5071         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5072         generics tests.
5073
5074 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5075
5076         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5077         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5078         (emit_plt): Fix a warning.
5079
5080 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5081
5082         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5083         back into aot-compiler.c to a place where the other functions shared by
5084         the runtime and aot compiler are.
5085         
5086         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5087         as done previously, instead of in MonoAotFileInfo, since pointers might have
5088         alignment requirements.
5089
5090         * mini.h: Bump AOT file format version.
5091
5092 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5093
5094         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5095         that is used at runtime from the aot-compiler.c, this makes it
5096         work on setups that remove the AOT compiler from the output
5097         image. 
5098
5099 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5100
5101         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5102         PPC.
5103
5104         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5105
5106         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5107
5108         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5109         stuff to mono_arch_decompose_long_opts ().
5110         (mono_decompose_opcode): Remove some dead code.
5111
5112 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5113
5114         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5115         cmethod can be null for quite a some reasons.
5116
5117 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5118
5119         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5120
5121 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5122
5123         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5124
5125 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5126
5127         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5128         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5129         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5130         calls returning structures by addr on amd64.
5131
5132         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5133
5134         * iltests.il.in: Restructure the tail call tests a bit.
5135         
5136 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5137
5138         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5139         for virtual methods too.
5140
5141 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5142
5143         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5144         due to regression in verifying System.dll.
5145
5146 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5147
5148         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5149         in dynamic methods.
5150
5151         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5152         instances.
5153
5154         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5155         g_str_hash () which can change.
5156
5157         * driver.c (mini_regression): Disable optimizations not supported by
5158         the cpu. Fixes #500019.
5159
5160         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5161         build.
5162
5163 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5164
5165         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5166         to the latest LLVM code.
5167
5168 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5169
5170         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5171
5172 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5173
5174         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5175         x86/amd64.
5176
5177         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5178         no longer saving offsets, so just save the patch types along with the other
5179         info.
5180         * aot-runtime.c (load_patch_info): Update after the changes to 
5181         encode_patch_list ().
5182         (decode_got_entry): Removed, merged into load_patch_info ().
5183         (is_shared_got_patch): Removed, call the same function from
5184         aot-compiler.c.
5185
5186         * mini.h: Bump aot file format version.
5187         
5188         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5189         half-finished no-dlsym code.
5190
5191         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5192         option.
5193
5194         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5195         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5196
5197 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5198
5199         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5200         buffer length to work with AOT code.
5201
5202         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5203         ldfld/stfld opcodes.
5204
5205         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5206         as it is not used.
5207
5208         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5209
5210         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5211
5212         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5213         LLVM API.
5214
5215         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5216         if needed. Don't decompose long operations when using llvm.
5217
5218 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5219
5220         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5221         PAGESIZE constant.
5222
5223         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5224
5225 2009-05-03  Martin Baulig  <martin@ximian.com>
5226
5227         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5228         mono_debugger_insert_method_breakpoint() since the class init
5229         handler we're inserting at the top of the method already gives us
5230         a notification.
5231
5232 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5233
5234         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5235         to mono_arch_decompose_long_opts () for x86 and arm.
5236
5237 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5238
5239         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5240         TARGET_AMD64 here.
5241
5242 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5243
5244         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5245         JIT code.
5246
5247 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5248
5249         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5250         number of trampolines used in full-aot mode.
5251
5252         * aot-compiler.c: Add an ntrampolines option to set the number of 
5253         trampolines emitted in full-aot mode.
5254
5255 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5256
5257         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5258         a volatile load. Get rid of get_tempname (), llvm assigns names
5259         automatically.
5260
5261         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5262         builder function.
5263
5264         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5265         a value.
5266
5267         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5268         level 1.
5269
5270         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5271         to the same register as a fixed sreg2. Fixes #497271.
5272
5273         * iltests.il.in: Add a new test.
5274
5275 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5276
5277         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5278         stack, since pushes complicate exception handling.
5279
5280         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5281         the stack if they are passed using moves.
5282
5283         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5284
5285         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5286         when using llvm.
5287
5288         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5289         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5290         of FMOVE if it is an R4.
5291
5292 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5293
5294         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5295
5296         * mini.h (LLVMCallInfo): New structure to store calling convention 
5297         information for the LLVM back end similar to the CallInfo structures in 
5298         the back-ends.
5299
5300         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5301         call information in a format usable by LLVM.
5302         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5303
5304         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5305         mono_llvm_emit_call () when compiling using LLVM.
5306
5307         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5308         comments to all functions. Fix memory leaks. Add a public init/cleanup
5309         function.
5310
5311         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5312
5313         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5314         mono_array_new_va () jit icall.
5315         
5316 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5317
5318         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5319         multiple machine description files to be specified.
5320         * mini-ops.h: fixes for cross-compilation.
5321
5322 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5323
5324         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5325         some porting work.
5326
5327 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5328
5329         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5330         to prevent asserts in various passes. Fixes #497220.
5331
5332 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5333
5334         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5335         a racy assert.
5336
5337         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5338         table to avoid duplicates.
5339
5340         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5341         
5342         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5343         option is used.
5344
5345 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5346
5347         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5348         is for method or field access.
5349
5350 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5351
5352         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5353         a Value to stdout.
5354
5355         * mini-llvm.c (mono_llvm_emit_method): Use it.
5356         
5357         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5358         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5359         on volatile values.
5360
5361         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5362         synchronized methods.
5363
5364         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5365
5366         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5367
5368         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5369         OP_LOADI8_MEM.
5370
5371         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5372         allowing some options to be set dynamically.
5373
5374 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5375
5376         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5377         unconditional branch.
5378
5379         * mini.h (MonoTrampolineType): Add new trampoline type 
5380         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5381         compiled code.
5382
5383         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5384         function.
5385
5386         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5387         creation function.
5388
5389         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5390         is enabled. Instead, use the llvm vcall trampoline.
5391         
5392         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5393
5394         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5395         
5396         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5397         functions.
5398
5399         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5400         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5401
5402         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5403         OP_IA64_CSET opcode.
5404
5405         * mini.c: Fix a warning.
5406
5407         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5408         THROW to the appropriate llvm type.
5409
5410 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5411
5412         * mini.c (mini_method_compile): Add statistics for methods JITted
5413         with/without LLVM.
5414
5415 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5416
5417         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5418         OP_IA64_CMP_<cond>_IMM opcodes.
5419
5420 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5421
5422         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5423         corlib exceptions.
5424
5425         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5426         correctly.
5427
5428         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5429         GENERICINST.
5430
5431 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5432
5433         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5434
5435 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5436
5437         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5438         support.
5439
5440         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5441         rgctx invoke trampolines for x86.
5442
5443         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5444         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5445         (mono_arch_get_vcall_slot): Simplify this.
5446
5447 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5448
5449         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5450         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5451
5452 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5453
5454         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5455         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5456
5457         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5458
5459         * liveness.c (visit_bb): Remove a needless assert.
5460
5461 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5462
5463         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5464         full aot support to the arch specific code.
5465
5466         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5467
5468         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5469
5470         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5471         
5472         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5473         collect information about the delegate invoke impl trampolines.
5474
5475         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5476         to save trampolines during full-aot mode.
5477
5478         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5479         creation function which returns a trampoline which sets the rgctx
5480         argument.
5481         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5482         wrapper if possible.
5483         (mono_delegate_trampoline): Ditto.
5484
5485         * mini.c (mono_jit_runtime_invoke): Ditto.
5486
5487         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5488         
5489         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5490
5491         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5492         
5493 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5494
5495         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5496         just setting the opcode to OP_NOP.
5497
5498 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5499
5500         * mini.c (mini_method_compile): Put the last change inside an 
5501         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5502         
5503         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5504         and extend live ranges to cover the whole method when using xdb.
5505
5506         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5507         do it in the trampolines.
5508
5509         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5510         needed.
5511
5512         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5513         
5514         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5515         call code in full-aot mode since IMT is disabled there.
5516         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5517         new JIT no longer has that restriction.
5518
5519         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5520
5521         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5522         a more compact format.
5523         (mono_aot_wrapper_name): New function to return a unique name for a
5524         wrapper method, also used by the AOT runtime.
5525
5526         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5527         aot-compiler.c.
5528
5529         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5530         when a ICollection<T> etc is encountered.
5531         (add_generic_instances): Process method arguments/locals too.
5532         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5533         trampoline names.
5534
5535         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5536         
5537 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5538
5539         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5540
5541         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5542
5543         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5544         representing the result of the decomposition. Nullify instructions
5545         instead of setting them to OP_NOP since nops can't have registers
5546         set.
5547
5548 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5549
5550         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5551         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5552         info. Strip 'mapping symbols' on ARM.
5553
5554         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5555         
5556         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5557         this with the native genmdesc.
5558
5559 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5560
5561         * aot-runtime.c:  Fixing the MSVC build.
5562
5563         Code is contributed under MIT/X11 license.
5564
5565 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5566
5567         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5568         JITted code depends on it.
5569
5570 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5571
5572         * aot-compiler.c: Use new MonoGenericParam accessors.
5573
5574 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5575
5576         Reduce memory usage and improve correctness wrt MonoGenericParam
5577         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5578         handing.  Avoid allocating MonoGenericParams, but use the ones in
5579         the container itself.
5580
5581 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5582
5583         * tasklets.c: Return exceptions in the out argument.
5584
5585 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5586
5587         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5588         opcode. Use pointer types in more places instead of casting them to 
5589         integers.
5590
5591         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5592         optimizations.
5593         (mono_llvm_optimize_method): New helper function to optimize a method.
5594
5595         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5596         widening code so it could be called from more places.
5597         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5598         code paths in the call opcodes.
5599
5600 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5601
5602         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5603
5604 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5605
5606         * dwarfwriter.c: Use _ to separate class name 
5607         components as gdb can't handle '.'. Represent reference variables
5608         as 'class <NAME>&'.
5609         
5610         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5611
5612         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5613         
5614         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5615
5616         * gc-test.cs: New file with GC stack marking tests.
5617         
5618         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5619         negative numbers for vfp.
5620
5621         * basic-float.cs: Add a test.
5622         
5623 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5624
5625         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5626
5627 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5628
5629         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5630         part of tasklet/continuation support.
5631
5632 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5633
5634         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5635         amd64 opcodes inside an ifdef.
5636
5637         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5638         of complex types.
5639         
5640         * dwarfwriter.c (emit_type): Emit the class info for classes.
5641
5642 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5643
5644         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5645
5646         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5647
5648         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5649
5650         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5651
5652 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5653
5654         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5655
5656         * mini-llvm.c: Update comments.
5657
5658         * mini.h (COMPILE_LLVM): New macro.
5659
5660         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5661
5662         * ssa.c (mono_ssa_compute): Ditto.
5663         
5664         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5665         the unwind ops from a DWARF FDE.
5666
5667         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5668         methods by extracting the dwarf unwind ops from the unwind info generated
5669         by LLVM.
5670         
5671         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5672         calls.
5673
5674         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5675         addressing modes.
5676
5677 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5678
5679         * Makefile.am (llvm_sources): Enable this.
5680
5681         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5682         failing back to the JIT if something cannot be handled.
5683
5684         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5685         compiling with LLVM.
5686
5687         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5688         compiling with LLVM.
5689
5690         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5691         compiling with LLVM.
5692
5693         * mini-ops.h: Add a few opcodes needed by LLVM.
5694
5695         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5696         has no unwind info.
5697
5698         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5699         backend.
5700
5701         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5702
5703         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5704
5705 2009-04-01  Mark Probst  <mark.probst@gmail.com>
5706
5707         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
5708         ridiculously large methods.
5709
5710 2009-03-31  Martin Baulig  <martin@ximian.com>
5711
5712         * debug-debugger.c (debugger_remove_breakpoint): Call
5713         mono_debugger_remove_class_init_callback ().
5714
5715 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
5716
5717         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
5718         right before emitting code, not at the start.
5719
5720         * mini.c (mono_postprocess_patches): Extract this into a separate function
5721         from mono_codegen ().
5722
5723         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
5724         byref types correctly.
5725
5726 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
5727
5728         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
5729         by the last change.
5730
5731 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
5732
5733         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
5734         indirect calls, this avoids problems where get_vcall_slot () would get
5735         confused by the native code for the instruction preceeding the call.
5736         (mono_arch_get_vcall_slot): Simplify this.
5737         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
5738
5739         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
5740         register allocator now seems to depend on them instead of the data in
5741         cpu-<ARCH>.md.
5742
5743         * mini.c (mini_method_compile): Throw the correct type of exception if
5744         mono_method_get_header () fails because of a loading error.
5745
5746 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
5747
5748         * mini.c (mini_method_compile): Clear the loader error if the method
5749         header cannot be decoded.
5750
5751         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
5752         interface methods on proxies correctly.
5753
5754         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
5755         this argument for vtype methods. Add precise liveness info for arguments.
5756
5757         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
5758         LIVERANGE_START/END opcodes.
5759
5760         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
5761         for arguments and values in registers.
5762
5763 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
5764
5765         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
5766         return a valuetype. Fixes #487518.
5767
5768         * iltests.il: Add a test.
5769         
5770         * aot-compiler.c: Use mono_thread_create () to create helper threads.
5771
5772         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
5773         closed over a null reference correctly.
5774
5775 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
5776
5777         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
5778
5779 2009-03-25  Mark Probst  <mark.probst@gmail.com>
5780
5781         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
5782         allocated to the same registers as fixed sregs.
5783
5784 2009-03-24  Mark Probst  <mark.probst@gmail.com>
5785
5786         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
5787         ATOMIC_CAS_IMM ops.
5788
5789         * method-to-ir.c: Handle more cases for
5790         Interlocked.CompareExchange.
5791
5792         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
5793         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
5794         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
5795
5796 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
5797
5798         * aot-runtime.c (decode_method_ref): Fix a warning.
5799
5800         * unwind.c (mono_unwind_frame): Ditto.  
5801
5802 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5803
5804         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
5805         (mono_compile_assembly): Enable the binary writer for full-aot as well.
5806
5807         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
5808         fix the handling of large values in the ALU_PC_G0_NC relocation.
5809
5810 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5811
5812         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
5813
5814 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5815
5816         * method-to-ir.c (mono_spill_global_vars): Support for ternary
5817         ops.
5818
5819 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5820
5821         * method-to-ir.c: MINI_OP3 needs a comma.
5822
5823         * method-to-ir.c, mini.h, mini.c: Remove
5824         mono_init_op_sreg_counts ().
5825
5826 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5827
5828         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
5829         OP_JMP.
5830         
5831         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
5832         assertion.
5833
5834         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
5835
5836         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
5837         code somewhat.
5838
5839 2009-03-21  Mark Probst  <mark.probst@gmail.com>
5840
5841         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
5842         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
5843         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
5844         operations.
5845
5846 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
5847
5848         * driver.c: Change location of gc_wrapper.h.
5849
5850         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
5851         inside finally clauses correctly. Fixes #485721.
5852
5853         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
5854         after the change above.
5855
5856         * exceptions.cs: Add a test.
5857         
5858 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5859
5860         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
5861
5862         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
5863         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
5864         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
5865
5866         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
5867         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
5868
5869 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
5870
5871         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
5872         Simplify logic for ensure_method_is_allowed_to_call_method. 
5873         Handle wrappers on callers.
5874
5875 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5876
5877         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
5878         them don't run yet.
5879
5880         * basic-simd.cs: Fix the names of some test methods.
5881
5882 2009-03-18  Geoff Norton  <gnorton@novell.com>
5883
5884         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
5885
5886 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
5887
5888         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
5889
5890 2009-03-17  Jb Evain  <jbevain@novell.com>
5891
5892         * driver.c: remove now uneeded call to mono_gc_base_init before
5893         mono_profiler_load.
5894
5895 2009-03-17  Jb Evain  <jbevain@novell.com>
5896
5897         * dwarfwriter.c (token_handler): handle more cases.
5898
5899 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
5900
5901         * method-to-ir.c: Remove more dead code (that was required only
5902         because of method_is_safe). Fix compiler warnings.
5903
5904 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
5905
5906         * method-to-ir.c: Remove unneeded/useless method_is_safe
5907         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
5908
5909 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
5910
5911         * mini.c (mini_method_compile): Print the method been compiled with
5912         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
5913         for people not familiar with the runtime.
5914
5915 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
5916
5917         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
5918         a managed object which is later put into a GList. Return its class instead.
5919
5920         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
5921         stack slots when using sgen.
5922
5923 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
5924
5925         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
5926
5927 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
5928
5929         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
5930         > so it works on the first vreg as well.
5931
5932 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
5933
5934         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
5935         trigger randomly.
5936
5937         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
5938         
5939         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
5940         implement GArray.
5941
5942 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
5943
5944         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
5945         native->IL offset mapping.
5946
5947 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
5948
5949         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
5950
5951         * basic.cs: Add a test.
5952
5953 2009-03-11  Mark Probst  <mark.probst@gmail.com>
5954
5955         * mini-x86.c (mono_arch_output_basic_block): Use different
5956         registers in case the ones we want to overwrite are used by the
5957         other operand.  Fixes regression in #480807.
5958
5959 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
5960
5961         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
5962
5963         * dwarfwriter.c (emit_line_number_info): The line number info for
5964         IL code was off by one. Fix that.
5965
5966         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
5967         stack.
5968
5969 2009-03-09  Mark Probst  <mark.probst@gmail.com>
5970
5971         Contributed under the terms of the MIT/X11 license by Steven
5972         Munroe <munroesj@us.ibm.com>.
5973
5974         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
5975         Fixes #483462.
5976
5977 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
5978
5979         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
5980         as well.
5981
5982 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
5983
5984         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
5985         the delegate ctor handling code. Fixes #482638.
5986         
5987         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
5988         #481458.
5989
5990         * iltests.il.in: Add a test.
5991         
5992         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
5993         mini-posix.c.
5994
5995 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5996
5997         * mini-trampolines.c (mono_create_jump_trampoline): If the method
5998         is shared generic code, return the trampoline, even if the method
5999         has already been compiled.  Fixes #479763.
6000
6001         * mini.c, mini.h: New function
6002         mono_jit_find_compiled_method_with_jit_info() which is the same as
6003         mono_jit_find_compiled_method() but also returns the jit info.
6004
6005 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6006
6007         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6008         for methods which actually have one.  For all other methods, make
6009         sure the this argument var is live the whole method.
6010
6011         * mini.c (mini_method_compile): Every shared method has a
6012         this/vtable/mrgctx info.  Fixes #480807.
6013
6014 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6015
6016         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6017         generic/imt thunks where some entries branch through the vtable,
6018         while other entries branch directly.
6019
6020 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6021
6022         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6023
6024         * mini-windows.c: Ditto.
6025         
6026         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6027         ctors.
6028
6029 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6030
6031         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6032         down an assert.
6033
6034 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6035
6036         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6037         #481403.
6038
6039 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6040
6041         * exceptions-x86.c: Include debug-mini.h - fixes build.
6042
6043 2009-03-04  Martin Baulig  <martin@ximian.com>
6044
6045         * debug-mini.c: Clean up the exception API and add documentation.
6046         (mono_debugger_handle_exception): New public method; this is
6047         called when throwing an exception or encountering an unhandled one.
6048         (mono_debugger_call_exception_handler): Formerly known as
6049         mono_debugger_handle_exception(); this is used to tell the
6050         debugger that we're about to invoke an exception handler.
6051
6052 2009-03-04  Martin Baulig  <martin@ximian.com>
6053
6054         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6055         ../metadata/mono-debug-debugger.c; save and reset exception state.
6056
6057 2009-03-02  Martin Baulig  <martin@ximian.com>
6058
6059         * debug-mini.c: Moved the debugger exception handling here from
6060         ../metadata/mono-debug-debugger.c.
6061
6062         * debug-mini.h
6063         (MonoDebuggerExceptionAction): New exception typedef.
6064
6065         * debug-mini.c
6066         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6067
6068         * exceptions-amd64.c
6069         (mono_amd64_throw_exception): Use the new debugger exception
6070         handling code.
6071
6072         * mini-exceptions.c
6073         (mono_handle_exception_internal): Don't call
6074         mono_debugger_unhandled_exception() here.
6075
6076 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6077
6078         * mini.c aot-compiler.c: Update after the changes to 
6079         mono_marshal_get_runtime_invoke ().
6080
6081         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6082         Virtual generic methods might not have method->slot set, work around
6083         that.
6084
6085         * generics.cs: Add a test.
6086
6087 2009-03-02  Geoff Norton  <gnorton@novell.com>
6088
6089         * mini.c:
6090         * driver.c: Allow signal chaining of SIGFPE as well.
6091
6092 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6093
6094         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6095         this since it now receives the method not its generic context in the
6096         IMT reg.
6097
6098         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6099         generic/imt thunks where some entries branch through the vtable, while
6100         other entries branch directly.
6101
6102         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6103
6104         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6105         support for interface methods as well.
6106
6107         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6108         using the normal IMT thunks.
6109
6110         generics.cs: Add new tests.
6111         
6112         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6113         the generic inst to the generic imt thunks. This fixes AOT support, 
6114         improves consistency with the normal IMT thunks, and makes it easier to
6115         add support for interface generic virtual methods later.
6116
6117         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6118         
6119 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6120
6121         * driver.c (mono_set_signal_chaining): New public API function to enable
6122         signal chaining on POSIX platforms.
6123
6124         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6125         (si@lindenlab.com) to implement signal chaining. The original patch was
6126         contributed under the MIT X/11 license:
6127         https://bugzilla.novell.com/show_bug.cgi?id=318894
6128
6129 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6130
6131         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6132         too until it can be made to run on amd64.
6133
6134 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6135
6136         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6137         to  get_generic_context_from_code () + get_call_info () if possible.
6138
6139 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6140
6141         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6142         suspend-on-sigsegv functionality.
6143
6144         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6145         to suspend when a native SIGSEGV is received. This is useful for debugging
6146         crashes which don't happen under gdb, since a live process contains more
6147         information than a core file.
6148
6149         * mini-exceptions.c (mono_print_thread_dump): Use 
6150         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6151
6152         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6153
6154         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6155         
6156         * basic-float.cs: Disable the tests which currently fail on amd64.
6157
6158         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6159         value to mono_arch_patch_callsite () to fix crashes.
6160         
6161         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6162
6163 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6164
6165         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6166         nop code by patching the call address to point to the nullified class init
6167         trampoline, as the former does not seem to be safe on SMP machines.
6168
6169 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6170
6171         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6172         they were wrong.
6173
6174 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6175
6176         * basic-float.cs basic-calls.cs: Fix warnings.
6177
6178 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6179
6180         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6181         correct frame pointer in the LMF.  Should fix #478394.
6182
6183 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6184
6185         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6186
6187         * image-writer.c: Make the binary writer less verbose.
6188
6189 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6190
6191         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6192         are called from runtime invoke wrappers.
6193
6194 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6195
6196         * cpu-ppc.md (store_memindex): Increase the size of this.
6197
6198 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6199
6200         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6201
6202         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6203
6204         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6205         OP_LCONV_TO_R_UN.
6206
6207         Last fix for of #467201.
6208
6209
6210 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6211
6212         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6213
6214         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6215         and long_conv_to_r8_2:
6216
6217         Fixed part of #467201.
6218
6219 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6220
6221         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6222
6223         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6224         conversion to 32 bits.
6225
6226         * cpu-x86.md: Increase the size of int_conv_to_r4.
6227
6228         * basic-float.cs: Add a test for this.
6229
6230         Fixed part of #467201.
6231
6232 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6233
6234         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6235
6236         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6237         conversion to 64 bits.
6238
6239         * basic-float.cs: Add a test for this.
6240
6241         Fixed part of #467201.
6242
6243 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6244
6245         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6246
6247         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6248         This behavior is compatible with MS.
6249
6250         * iltest.il.in: Add a test for this.
6251
6252         Fixed part of #467201.
6253
6254 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6255
6256         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6257
6258         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6259         change the precision of the value.
6260
6261         * cpu-x86.md: Define len for float_conv_to_r4.
6262
6263         * basic-float.cs: Add a test for this.
6264
6265         Fixed part of #467201.
6266
6267 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6268
6269         * mini.c: Adjust locking order to the new semantics where the loader lock
6270         comes first.
6271
6272 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6273
6274         * aot-runtime.c:
6275         * mini-amd64.c:
6276         * mini-arm.c:
6277         * mini-ia64.c:
6278         * mini-mips.c:
6279         * mini-ppc.c:
6280         * mini-sparc.c:
6281         * mini-trampolines.c:
6282         * mini-x86.c:
6283         * mini.c:
6284         * tramp-alpha.c:
6285         * tramp-amd64.c:
6286         * tramp-arm.c:
6287         * tramp-hppa.c:
6288         * tramp-ia64.c:
6289         * tramp-mips.c:
6290         * tramp-ppc.c:
6291         * tramp-s390.c:
6292         * tramp-s390x.c:
6293         * tramp-sparc.c:
6294         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6295
6296 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6297
6298         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6299         as it is incorrect.
6300
6301 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6302
6303         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6304         for cctors if needed.
6305
6306 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6307
6308         * mini-ppc.c: Fix build on Darwin.
6309
6310 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6311
6312         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6313         version instead of 3 as valgrind doesn't like version 3.
6314
6315         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6316
6317         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6318         usable for hashing methods.
6319         (emit_extra_methods): Use the new hash to avoid putting every method in the
6320         same hash bucket.
6321
6322         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6323
6324         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6325         whenever a method ref could match a method.
6326         
6327         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6328         test to fail.
6329         
6330         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6331         methods refs.
6332
6333         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6334
6335         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6336         the encoding buffer.
6337
6338         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6339         mono_method_get_header () on inflated methods as an optimization.
6340
6341 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6342
6343         * ssa.c (fold_ins): Fix another crash if the instruction following the
6344         switch was optimized away.
6345
6346 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6347
6348         Contributed under the terms of the MIT/X11 license by Steven
6349         Munroe <munroesj@us.ibm.com>.
6350
6351         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6352
6353 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6354
6355         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6356         around the mono_domain_alloc calls, it is now done by the functions
6357         themselves.
6358
6359         * aot-compiler.c (compile_method): Only add wrappers referenced by
6360         the method if compiling with full AOT.
6361         (mono_compile_assembly): Error out if --aot=full is specified on
6362         a platform where it is not supported.
6363
6364         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6365         on ARM too.
6366
6367         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6368         AOT support.
6369
6370         * aot-runtime.c (load_named_code): Handle 
6371         mono_arm_throw_exception_by_token.
6372
6373         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6374
6375         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6376         unaligned.
6377
6378         * Makefile.am (fullaotcheck): Exit if a test fails.
6379
6380         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6381         on ARM.
6382         (mono_compile_assembly): Handle the assembler failing.
6383
6384         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6385         accepting subsections of .bss.
6386
6387         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6388         was optimized away.
6389
6390         * aot-compiler.c: Remove some unused includes.
6391         
6392         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6393         now in MonoImageWriter.
6394
6395         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6396         code sequence which matches a non-virtual call. Fixes #472654.
6397
6398 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6399
6400         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6401         xdebug code.
6402         
6403         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6404         use the image/dwarf writers directly.
6405
6406         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6407         field.
6408
6409         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6410         MonoDwarfWriter.
6411
6412         * image-writer.h: Fix some typos.
6413
6414         * dwarfwriter.h dwarfwriter.c: New files.
6415         
6416         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6417         separate module.
6418
6419         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6420         argument to return unwind info.
6421
6422         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6423
6424         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6425         
6426         * aot-runtime.c (decode_method_ref): Add a case for 
6427         MONO_AOT_METHODREF_WRAPPER_NAME.
6428
6429         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6430         for AOT.
6431
6432         * aot-compiler.c (encode_method_ref): Use the new constants.
6433
6434         * aot-runtime.c (decode_method_ref): Ditto.
6435
6436         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6437         be compiled, not the icall itself.
6438
6439 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6440
6441         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6442         using decode_method_ref ().
6443
6444         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6445         convert it to an in32. Fixes #475859.
6446
6447         * arrays.cs: Add a test.
6448
6449 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6450
6451         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6452         OP_LCONV_TO_U2.
6453
6454         * basic-long.cs: Add a test.
6455
6456 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6457
6458         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6459         remove the frame pointer in leaf methods which don't receive any
6460         arguments, don't throw exceptions and don't do dynamic stack
6461         allocations.
6462
6463 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6464
6465         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6466         the fail_tramp changes. Hopefully fixes #475132.
6467
6468 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6469
6470         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6471         instead of mono_metadata_signature_dup_full.
6472
6473 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6474
6475         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6476         for processing jump tables. Fixes #473787.
6477
6478 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6479
6480         * mini-generic-sharing.c: mini_method_get_context() just calls
6481         mono_method_get_context_general() now.
6482
6483         * mini.c, mini.h: Moved get_object_generic_inst(),
6484         construct_object_context_for_method() and
6485         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6486
6487 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6488
6489         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6490         basic block fell through to its successor bblock without a branch. Fixes
6491         #474718.
6492
6493         * iltests.il.in: Add a test.
6494         
6495         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6496         (can_encode_patch): We can now handle arrays of generic parameters and
6497         array methods.
6498
6499         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6500
6501         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6502         the AOT file to avoid some #ifdefs in aot-runtime.c
6503
6504         * mini.h: Bump AOT file format version.
6505
6506 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6507
6508         * Makefile.am (fullaotcheck): Make this run the tests.
6509
6510         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6511
6512 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6513
6514         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6515         individually.  Fixes #473482.
6516
6517 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6518
6519         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6520
6521 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6522
6523         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6524         (mono_compile_assembly): Hush compile warnings about
6525         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6526         code path.
6527
6528 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6529
6530         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6531
6532         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6533
6534         * aot-compiler.c: Fix arm support.
6535
6536         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6537         img_writer_emit_unset_mode () function.
6538
6539         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6540         (mono_unwind_get_dwarf_pc_reg): Ditto.
6541
6542         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6543         Move almost all platform specific code to a set of arch_ functions, 
6544         and document them to ease porting.
6545         
6546         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6547
6548         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6549
6550         * aot-compiler.c: Extract the image writing functionality into a separate
6551         module to reduce the size of this file.
6552
6553 2009-02-09  Geoff Norton  <gnorton@novell.com>
6554
6555         * mini-s390.c: Fix the signature of emit_sig_cookie.
6556
6557 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6558
6559         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6560
6561         * aot-runtime.c (is_shared_got_patch): Ditto.
6562
6563         * aot-runtime.c (load_named_code): Cope with the fact that 
6564         decode_got_entry () won't decode the patch fully if its corresponding got
6565         entry is already filled.
6566         
6567         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6568         Initialize *ji.
6569         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6570
6571         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6572         as the moving pointer instead of 'buf' for consistency with the rest of the
6573         codebase.
6574         (mono_arch_create_monitor_exit_trampoline): Ditto.
6575
6576         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6577         generic_class_init trampolines.
6578         (add_generic_class): Extract some code from add_generic_instances () into a
6579         separate function so it can be called from other places too.
6580         (compile_method): Call add_generic_class () for the classes of inflated methods
6581         referenced by the method.
6582         (can_encode_patch): Allow references to generic parameters.
6583
6584         * aot-runtime.c: Add support the patches required by the new trampolines.
6585         
6586         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6587         support.
6588
6589         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6590         full-aot support.
6591
6592         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6593         this from get_throw_pending_exception, make the signature full aot compatible.
6594
6595         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6596
6597         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6598
6599         * exceptions.cs: Add a test.
6600
6601 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6602
6603         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6604         use the DWARF_DATA_ALIGN constant instead.
6605
6606         * exception-<ARCH>.c: Update after the above change.
6607
6608         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6609         dwarf unwinder.
6610
6611         * mini-arm.c: Enable the dwarf unwinder.
6612
6613         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6614         instead of mono_class_setup_vtable ().
6615
6616 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6617
6618         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6619         dwarf unwinder.
6620
6621         * mini-x86.h: Enable the dwarf unwinder.
6622
6623 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6624
6625         Fix mcs/tests/test-7.cs
6626         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6627         2009-02-03.
6628
6629 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6630
6631         * mini.c (print_jit_stats): Remove some unused statistics.
6632
6633 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6634
6635         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6636
6637 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6638
6639         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6640         the method we get from mono_object_get_virtual_method() because
6641         that function does it properly, now.
6642
6643 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6644
6645         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6646         opcodes. Fixes #472775.
6647
6648 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6649
6650         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6651         fact that mono_find_jit_info() sometimes returns the context
6652         corresponding to the jit info in new_ctx.  Fixes #472600.
6653
6654 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6655
6656         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6657         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6658         klass->enum_basetype directly.
6659
6660         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6661         enum subtypes.
6662
6663         * unwind.c: Avoid 0 sized arrays.
6664
6665 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6666
6667         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6668         size on systems with 64k pages. Fixes #471389.
6669
6670 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6671
6672         Contributed under the terms of the MIT/X11 license by Steven
6673         Munroe <munroesj@us.ibm.com>.
6674
6675         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6676         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6677         necessary.
6678
6679 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6680
6681         Contributed under the terms of the MIT/X11 license by Steven
6682         Munroe <munroesj@us.ibm.com>.
6683
6684         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6685         comparison fix.
6686
6687         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6688         The trampoline can be longer on PPC64.
6689
6690 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6691
6692         Contributed under the terms of the MIT/X11 license by Steven
6693         Munroe <munroesj@us.ibm.com>.
6694
6695         * mini-ppc.c: Compiler warning fixes and trivial code
6696         simplifications.
6697
6698 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6699
6700         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6701         ins->dreg which could be a hardware register, not a vreg.
6702
6703         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6704         
6705         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
6706         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
6707
6708         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
6709         
6710         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
6711         ->dreg, that is not the vreg we are looking for.
6712
6713         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
6714
6715         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
6716         LIVERANGE_END.
6717
6718         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
6719         strange crashes.
6720
6721 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6722
6723         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
6724
6725         * aot-compiler.c (emit_line_number_info): Fix line number emission when
6726         the line diff is 0.
6727
6728         * aot-compiler.c: Add xdebug support on x86.
6729
6730         * unwind.c: Add x86 support.
6731         
6732         * aot-compiler.c (emit_exception_debug_info): Control the emission of
6733         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
6734
6735         * mini.c (mini_method_compile): Ditto.
6736         
6737         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
6738         the variable index.
6739
6740         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
6741         which mimic .push_section/.pop_section in GAS.
6742         
6743         * aot-compiler.c: Emit precise live range information for variables.
6744
6745         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
6746
6747         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
6748         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
6749         them.
6750
6751         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
6752         the live ranges of variables.
6753
6754         * mini.h (struct MonoMethodVar): Add two fields containing the live range
6755         of the variable in terms of native offsets.
6756
6757 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
6758
6759         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
6760         
6761 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6762
6763         Contributed under the terms of the MIT/X11 license by Steven
6764         Munroe <munroesj@us.ibm.com>.
6765
6766         * exceptions-ppc.c (restore_regs_from_context): Correct operand
6767         order (offset then base reg) for ppc_load_multiple_regs.
6768         (emit_save_saved_regs) Correct operand order for
6769         ppc_store_multiple_regs.
6770         (mono_arch_get_call_filter): Correct operand order for
6771         ppc_load_multiple_regs.
6772
6773         * mini-ppc.c (emit_memcpy): Fix operand order for
6774         ppc_load_reg_update and ppc_store_reg_update.
6775         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
6776         (mono_arch_emit_epilog): Correct operand order for
6777         ppc_load_multiple_regs.
6778
6779         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
6780         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
6781
6782 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6783
6784         * cpu-ppc64.md: Fixed storer4_memindex length.
6785
6786 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
6787
6788         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
6789         line number info.
6790         
6791         * aot-compiler.c (emit_line_number_info): Optimize this.
6792
6793 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
6794
6795         * aot-compiler.c: Disassemble tokens in the IL disassembly.
6796         
6797         * aot-compiler.c: Add debug info for methods without debug info by
6798         emitting an IL file and having the line number info referencing that file.
6799
6800         * aot-compiler.c: Optimize the size of the generated line number info.
6801
6802         * aot-compiler.c: Emit line number info in xdebug mode.
6803
6804         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
6805         million arguments.
6806
6807 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
6808
6809         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
6810
6811         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
6812         is used.
6813
6814 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6815
6816         * basic-calls.cs: Test for the weird crash found on arm.
6817         
6818 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6819
6820         * cpu-arm.md: Increase the size of storer8_membase_reg and
6821         loadr8_membase_reg to 24 bytes to accomodate the extra add.
6822
6823         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
6824         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
6825         reg to LR otherwise we'll be loading/storing from just the offset.
6826
6827 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6828
6829         Question: if we are storing gint32's inside the "*native_offset",
6830         should we change the signature to "gint32 *native_offset" to
6831         ensure that we do not have type definition problems?
6832         
6833         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
6834         an int * as this is what the other function expects, causes
6835         problems with Freescale's compiler that defined int32_t to be a
6836         long and makes int incompatible 
6837
6838 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6839
6840         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
6841         filename conflict with bjam.
6842
6843 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6844
6845         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
6846         as it might use decomposed ops.
6847
6848 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6849
6850         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
6851
6852         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
6853         is defined.
6854
6855         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
6856
6857         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
6858         offsets.
6859
6860         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
6861         way registers are stored in MonoContext on arm.
6862
6863         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
6864         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
6865
6866         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
6867
6868         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
6869
6870         * mini.c (mini_init): Register mono_isfinite.
6871
6872         * jit-icalls.c (mono_isfinite): New jit icall.
6873
6874         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
6875         
6876         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
6877         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
6878         the parent frame.
6879
6880 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6881
6882         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
6883         separate frame and stack pointers, so we must use FP to find the register
6884         spill area.
6885         The FP reg is retrieved from the MonoContext::regs array.
6886
6887 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6888
6889         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
6890         as FPA requires it.
6891
6892 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6893
6894         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
6895         return R4 and R8 when not running under softfloat.
6896
6897         Fixes basic-calls.exe
6898
6899 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6900
6901         * mini-arm.c: Implement some overflow opcodes.
6902
6903 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6904
6905         * ssa.c: handle another alloca.h
6906
6907         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
6908         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
6909         MONO_ARCH_USE_SIGACTION. 
6910
6911         * aot-runtime.c, mini-exceptions.c: Replace platform define with
6912         capability defines.
6913
6914         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
6915
6916         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
6917         PPC targets as sigaction does not exist on all platforms, define
6918         this on a per-platform basis.
6919
6920         Instead of erroring out if the platform is not defined, include
6921         mini-ppc-os.h, and expect that the OS specific setting provides
6922         the required information.   
6923
6924 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6925
6926         * aot-compiler.c: Fix --enable-minimal=aot.
6927
6928 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6929
6930         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
6931         previous change.
6932
6933 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
6934
6935         * exceptions-arm.c: Fix warnings.
6936
6937         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
6938         ARM.
6939
6940         * mini-x86.c: Fix --enable-minimal=jit build.
6941
6942         * mini.c: Really fix --enable-minimal=jit build.
6943         
6944         * mini.c (construct_object_context_for_method): Move this outside
6945         the DISABLE_JIT block to fix the --enable-minimal=jit build.
6946
6947         "Backported" of r124984 from 2.0 branch.
6948         
6949         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
6950
6951         "Backport" of r124977 + r124978 from 2.0 branch.
6952         
6953         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
6954         to avoid calling mono_exception_from_token () from the throw trampoline.
6955         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
6956         for throwing corlib exceptions, this fixes full-aot support for corlib
6957         exceptions.
6958
6959         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
6960
6961 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6962
6963         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
6964         part of the changes to split the code in mini into operating
6965         system specific files.
6966
6967         This patch was done by copying mini.c to the respective files to
6968         preserve SVN history.
6969
6970 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
6971
6972         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
6973
6974 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
6975
6976         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
6977         remoting-invoke-with-check wrappers of shared methods.
6978
6979         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
6980
6981 2009-01-27  Mark Probst  <mark.probst@gmail.com>
6982
6983         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
6984         optimization if the top of stack is the last instruction in the
6985         bblock.  Otherwise it might have been used after its definition.
6986         Fixes #469742.
6987
6988 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
6989
6990         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
6991         method as well when get_vcall_slot () fails to match a code sequence.
6992
6993         * mini-arm.c: Fix the android build, which doesn't have
6994         __aeabi_read_tp.
6995
6996 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
6997
6998         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
6999         the s390x build.
7000
7001 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7002
7003         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7004
7005 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7006
7007         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7008         and put its id into jinfo->used_regs. This is only used on amd64,
7009         which is currently the only platform generating unwind info.
7010
7011         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7012         the dwarf unwinder. This is required to correctly handle async exceptions
7013         like thread abort and stack overflows, which can happen while a method
7014         is in the middle of its prolog or epilog.
7015         
7016         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7017         the unwind info belonging to an AOTed method.
7018
7019         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7020         into cfg->unwind_ops.
7021         
7022         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7023
7024         * mini.c (mini_init): Call mono_unwind_init ().
7025         (mini_cleanup): Call mono_unwind_cleanup ().
7026
7027         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7028         unwind info to be shared between methods.
7029
7030         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7031         saved in the LMF.
7032
7033         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7034         get_throw_pending_exception () to avoid initialization races.
7035
7036         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7037         mono_arch_exceptions_init () function.
7038
7039         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7040
7041 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7042
7043         * mini.c (mono_get_domain_intrinsic): New helper function.
7044         (mono_get_thread_intrinsic): Ditto.
7045
7046         * mini-arm.c mini-ia64.c: Use the new helper functions.
7047         
7048         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7049         the last constrained_call change, since it is needed in the non-AOT
7050         case as well.
7051
7052         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7053         
7054         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7055         mono_get_lmf_addr () on arm eabi linux.
7056
7057 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7058
7059         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7060         code sequence which matches a non-virtual call.
7061
7062 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7063
7064         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7065         stack pointer (r1).
7066
7067 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7068
7069         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7070         runtime-invoke wrappers, since they are also shared based on signature.
7071
7072 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7073
7074         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7075         info from the (correct) context.
7076
7077 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7078
7079         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7080         
7081         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7082         using dwarf unwinding info. Not yet used.
7083
7084         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7085
7086 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7087
7088         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7089         descriptors.
7090
7091         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7092         special case and handle mono_arch_delegate_invoke_impl() returning
7093         function descriptors.
7094
7095         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7096         trampolines return function descriptors, too.
7097
7098 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7099
7100         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7101         out_of_line optimization.
7102
7103 2009-01-21  Martin Baulig  <martin@ximian.com>
7104
7105         * mini.h
7106         (MonoCompile): Added `disable_deadce_vars' to disable removing
7107         unused variables.
7108
7109         * mini.c
7110         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7111         inside the debugger.
7112
7113         * liveness.c (mono_analyze_liveness): Don't remove any unused
7114         variables if `cfg->disable_deadce_vars' is set.
7115
7116 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7117
7118         * method-to-ir.c: Only apply exception constructor optimization if
7119         the the method actually belongs to an exception class.  Fixes
7120         #467456.
7121
7122 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7123
7124         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7125         change inside a #ifdef __mono_ppc64__.
7126
7127         * aot-compiler.c (compile_method): Remove the previous limitation.
7128
7129         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7130         on type variables in AOTed code.
7131         
7132         * aot-compiler.c (compile_method): Skip generic methods having type 
7133         constraints on their generic parameters.
7134
7135         * aot-compiler.c (compile_method): Check for methods which cannot be
7136         encoded inside RGCTX_FETCH patches as well.
7137
7138         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7139         build.
7140
7141 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7142
7143         * method-to-ir.c: Force the vtable variable in shared generic code
7144         for the case that they might show up on a stack trace where they
7145         are needed.
7146
7147         * mini-exceptions.c: Save and use generic sharing info as well as
7148         IP in stack traces to resolve shared generic instantiations.
7149
7150 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7151
7152         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7153         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7154
7155 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7156
7157         * method-to-ir.c: Do generic sharing for array constructors.
7158
7159 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7160
7161         * mini-exceptions.c (mono_print_thread_dump): Add information
7162         about the thread state using wapi_current_thread_desc.
7163
7164 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7165
7166         * basic-simd.cs: Tests for the new constructors. 
7167
7168 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7169
7170         * mini-ops.h: Added OP_EXPAND_*
7171
7172         * cpu-x86.md: Same.
7173
7174         * mini-x86.c (mono_arch_output_basic_block): Same.
7175         
7176         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7177
7178 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7179
7180         * iltests.il.in: Add a test for #467385.
7181
7182 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7183
7184         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7185         thread been cleaned up is not the same currently in execution.
7186
7187         Fixes appdomain-unload crashes on windows, osx and linux variants
7188         without the __thread keyword.
7189
7190 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7191
7192         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7193         (koush@koushikdutta.com). Implement this for android.
7194
7195         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7196         begins with a digit.
7197
7198         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7199         mono_marshal_get_write_barrier ().
7200
7201 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7202
7203         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7204         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7205         that pass them on a register pair.
7206
7207         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7208         test was crashing due to that.
7209
7210 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7211
7212         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7213         trampoline code. Include ucontext.h only if available.
7214
7215 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7216
7217         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7218         and doesn't check whether it's sharable, like it was before
7219         removing the shared generics hash.  This brings IronPython
7220         performance back to what it was before that change.
7221
7222 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7223
7224         * method-to-ir.c: Handle delegate invocation optimization earlier,
7225         otherwise it would be handled (much more slowly) by the
7226         final/sealed optimization.
7227
7228 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7229
7230         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7231         domain is not set. Fixes #465864.
7232
7233 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7234
7235         * method-to-ir.c: Don't stop sharing of generic methods with catch
7236         clauses - we already handle those.
7237
7238 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7239
7240         * mini.c, mini.h: lookup_generic_method() is now
7241         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7242         making the shared_generics_hash obsolete.
7243
7244 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7245
7246         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7247         use the red zone.  Make room on the stack first and then use it,
7248         not the other way around.
7249
7250 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7251
7252         * mini.c (mini_init): Call mono_xdebug_init ().
7253
7254         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7255
7256 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7257
7258         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7259
7260         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7261         trampolines.
7262
7263         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7264         debug+unwind info for trampolines.
7265
7266         * mini.c (mono_create_unwind_op): New helper function.
7267
7268         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7269
7270 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7271
7272         * aot-compiler.c: Fix the build.
7273
7274 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7275
7276         * Makefile.am: Update dtrace-prelink.sh location.
7277
7278 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7279
7280         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7281         optimization. Fixes #464520.
7282
7283 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7284
7285         * mini-amd64.c : Adding code to save/restore non-volatile registers
7286            on Winx64.
7287
7288         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7289           registers on Winx64.
7290
7291         Contributed under MIT/X11 license.
7292
7293 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7294
7295         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7296         __GNUC_MINOR__ which can break when the major version changes.
7297
7298 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7299
7300         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7301
7302 2009-01-07  Geoff Norton  <gnorton@novell.com>
7303
7304         * helpers.c:  Allow mono -v -v -v to work on darwin.
7305
7306 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7307
7308         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7309           pattern. 
7310
7311         Contributed under MIT/X11 license.
7312
7313 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7314
7315         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7316         instead of directly accessing type->data.klass. Fixes #462016.
7317         (mono_allocate_stack_slots_full): Ditto.
7318
7319         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7320         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7321
7322         * aot-compiler.c (emit_plt): Fix ARM build.
7323
7324 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7325
7326         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7327         
7328         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7329         change.
7330
7331         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7332         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7333         #463357.
7334
7335         * iltests.il.in: Add a regression test.
7336
7337 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7338
7339         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7340
7341 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7342
7343         * basic-simd.cs: Add a regression test for #462457.
7344
7345 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7346
7347         * mini-ops.h: Add a definition of XPHI.
7348
7349         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7350
7351         * ssa.c (op_phi_to_move): Handle XPHI.
7352
7353         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7354
7355         Fixes #462457
7356
7357 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7358
7359         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7360
7361 2008-12-31  Geoff Norton  <gnorton@novell.com>
7362
7363         * mini-ppc.c: The prolog size allocated can be too small for darwin
7364         ppc32 under certain circumstances.  Also fix a small logic bug.
7365
7366 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7367
7368         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7369         while loading AOT methods.
7370
7371         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7372         since only the former is nulled out after a successful cast. This prevents
7373         crashes with rethrown exceptions when using --debug=casts.
7374
7375 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7376
7377         * mini.h: New macro for checking whether a method is final,
7378         i.e. whether the method or its class is marked final.
7379
7380         * method-to-ir.c: Use the new macro for all final-checks
7381         consistently.  Fixes the crash in the System.ServiceModel tests.
7382
7383 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7384
7385         * mini-exceptions.c (get_exception_catch_class): Corrected another
7386         overly strict assertion.
7387
7388 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7389
7390         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7391         Clobbering it is not allowed because the caller might use it as
7392         the vtable register in the interface call.
7393
7394 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7395
7396         * mini-exceptions.c (get_exception_catch_class): Corrected an
7397         overly strict assertion.
7398
7399 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7400         
7401         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7402
7403         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7404
7405         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7406
7407         * cpu-mips.md: correct lengths for certain long_ opcodes.
7408
7409         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7410
7411         * 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().
7412         
7413 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7414
7415         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7416         
7417 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7418         
7419         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7420         
7421 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7422
7423         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7424         next basic block.
7425         
7426 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7427
7428         * 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
7429
7430         * 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)
7431         
7432 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7433         
7434         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7435         
7436 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7437
7438         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7439         gshared code. Fixes #458947.
7440
7441         * generics.cs: Add a test.
7442
7443 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7444         
7445         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7446         
7447         * mini-mips.c: first pass n32 code generation.
7448
7449         * mini-mips.h: datatypes and defines for n32 support.
7450
7451         * exceptions-mips.c: first pass n32 code generation.
7452         
7453         * tramp-mips.c: first pass n32 code generation.
7454         
7455         * cpu-mips.md: add long_ opcodes.
7456         
7457 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7458
7459         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7460
7461         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7462         
7463         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7464         
7465         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7466
7467         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7468
7469         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7470
7471         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7472
7473         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7474
7475         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7476
7477 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7478
7479         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7480
7481 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7482
7483         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7484
7485 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7486
7487         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7488         descriptors for helper functions directly in front of the code.
7489
7490 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7491
7492         * method-to-ir.c: Removed an unnecessary assertion.
7493
7494 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7495
7496         * method-to-ir.c: Merge SGEN changes from the old JIT.
7497
7498 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7499
7500         * driver.c (compile_all_methods_thread_main): Handle failure of
7501         mono_get_method ().
7502
7503 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7504
7505         * mini-ppc.c: Merged with mini-ppc64.c.
7506
7507         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7508
7509         * Makefile.am: Use the same sources for PPC and PPC64.
7510
7511         * mini-ppc64.c: Removed.
7512
7513 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7514
7515         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7516         code to mono_bb_is_fall_through.
7517         
7518         * branch-opts.c (mono_remove_critical_edges): Same.
7519
7520 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7521
7522         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7523         expect that an OP_BR_REG will be there.
7524
7525 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7526
7527         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7528         for the many branch ops. The original check miss OP_BR_REG.
7529
7530         Fixes #457574.
7531         
7532 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7533
7534         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7535
7536 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7537
7538         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7539         while holding the aot lock.
7540
7541 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7542
7543         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7544         
7545 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7546
7547         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7548           to release all runtime callable wrappers held by the runtime.
7549
7550         Contributed under MIT/X11 license.
7551
7552 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7553
7554         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7555           for Winx64.
7556
7557         Contributed under MIT/X11 license.
7558
7559 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7560
7561         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7562         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7563
7564 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7565
7566         * cpu-mips.md: fix ckfinite length
7567
7568         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7569         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7570         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7571         
7572 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7573
7574         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7575         
7576 2008-12-08  Geoff Norton  <gnorton@novell.com>
7577
7578         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7579         size by 8 bytes as well.
7580
7581 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7582
7583         * basic-simd.cs: Fix method names for Vector16b.
7584         
7585 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7586
7587         * basic-simd.cs: Fix method names for Vector16sb.
7588
7589 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7590
7591         * basic-simd.cs: Fix method names for Vector8us.
7592         
7593 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7594
7595         * basic-simd.cs: Fix method names for Vector8s.
7596         
7597 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7598
7599         * basic-simd.cs: Fix method names for Vector4ui.
7600
7601 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7602
7603         * basic-simd.cs: Fix method names for Vector2l.
7604
7605 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7606
7607         * basic-simd.cs: Fix method names for Vector2d.
7608
7609 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7610
7611         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7612         that are extension methods.
7613
7614 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7615
7616         * basic-simd.cs: Fix method names for Vector4f.
7617
7618 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7619
7620         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7621         as such. Fixes #456669.
7622
7623 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7624
7625         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7626         
7627 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7628
7629         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7630         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7631         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7632         (mips_adjust_stackframe): handle FP spills
7633                 
7634         * mini-ops.h: add mips_mtc1_s2
7635         
7636         * cpu-mips.md: add mips_mtc1_s2
7637         
7638 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7639
7640         * unwind.c: New file, move the unwind info encoding functions here from
7641         aot-compiler.c, so they could be used at runtime too.
7642
7643 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7644
7645         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7646         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7647         
7648 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7649
7650         * mini-mips.c: cleanup warnings
7651         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7652         (mips_adjust_stackframe): handle case of taking the address of stack locals
7653         
7654 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7655
7656         * aot-compiler.c: Implement a few functions missing from the asm writer.
7657         (emit_method_code): Only write symbols for methods when using the bin
7658         writer, since the assembler can't deal with the characters in our method
7659         names.
7660
7661         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7662
7663         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7664         call.
7665
7666         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7667         a bit to also restore %rax.
7668
7669 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7670
7671         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7672
7673 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7674
7675         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7676         arguments.
7677
7678 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7679
7680         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7681
7682         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7683         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7684
7685         * exceptions-ppc64.c: Removed.
7686
7687         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7688
7689 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7690
7691         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7692         tramp-ppc64.c.
7693
7694         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7695
7696         * tramp-ppc64.c: Removed.
7697
7698 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7699
7700         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7701         the TYPESPEC table.
7702
7703 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7704
7705         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
7706
7707         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
7708         mini-ppc.h instead of mini-ppc64.h.
7709
7710         * mini-ppc64.h: Removed.
7711
7712 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7713
7714         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
7715         
7716         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
7717         
7718 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7719
7720         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
7721         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
7722         code easier.
7723
7724 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7725
7726         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
7727
7728 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7729
7730         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
7731
7732 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7733
7734         * basic-simd.cs: Tests for operator == and != on Vector4f.
7735
7736 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7737
7738         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
7739
7740         * simd-intrinsics.c: Kill useless enum.
7741
7742 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7743
7744         * cpu-mips.md: add long_conv_to_ovf_i4_2
7745         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
7746
7747 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7748
7749         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
7750         
7751         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
7752
7753 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7754
7755         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
7756         
7757 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7758
7759         * basic-simd.cs: Add tests for new methods.
7760
7761 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7762
7763         * simd-intrinsics.c: Add support for operator == and !=
7764         on Vector4(u)i.
7765
7766         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
7767
7768 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7769
7770         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
7771
7772 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
7773
7774         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
7775
7776         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
7777         MONO_PATCH_INFO_ICALL_ADDR.
7778
7779         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
7780
7781         * aot-compiler.c: Resurrect full-aot support.
7782
7783 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7784
7785         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
7786         
7787 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7788
7789         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
7790         
7791 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
7792
7793         * basic-simd.cs: Fix tests to work under ppc.
7794         Remove tests for methods that will be removed.
7795
7796 2008-12-03  Mark Probst  <mark.probst@gmail.com>
7797
7798         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
7799         generic type (via a typedef or typeref) correctly.
7800
7801 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
7802
7803         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
7804         diagnose an assertion failure.
7805
7806 2008-12-02  Mark Probst  <mark.probst@gmail.com>
7807
7808         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
7809         Fix trampoline size.
7810
7811         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
7812         conversion opcodes are implemented natively instead via emulation.
7813
7814 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7815
7816         * cpu-mips.md: remove mips_xori
7817
7818         * mini-ops.h:  remove mips_xori
7819
7820         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
7821
7822         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
7823         
7824         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
7825         
7826 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7827
7828         * cpu-mips.md: fix instruction lengths.
7829
7830         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
7831
7832         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
7833
7834         * mini-ops.h: fix slti / sltiu op profiles.
7835         
7836 2008-12-02  Martin Baulig  <martin@ximian.com>
7837
7838         * method-to-ir.c (mono_method_to_ir): Disable debugging
7839         information for the init locals block to make the debugger stop
7840         after all locals have been initalized.
7841
7842 2008-12-02  Martin Baulig  <martin@ximian.com>
7843
7844         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
7845         running inside the debugger.
7846
7847 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
7848
7849         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
7850         is enabled.
7851
7852         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
7853         alu->alu imm optimization which only shows if deadce is disabled.
7854
7855         * aot-compiler.c: Rename the function names for the binary and asm writers
7856         so they can coexist in the same process. Rework the xdebug code to use the
7857         asm writer. This avoids the need to call into the runtime to dump the
7858         debugging info. Add more debugging info for types.
7859
7860         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
7861
7862         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
7863         cpu description tables, they can't occur in cpu-<ARCH>.md.
7864
7865         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
7866         the stack in CEE_LDFLDA. Fixes #450542.
7867
7868         * generics.cs: Add a new test.
7869
7870 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7871
7872         * mini-ops.h: updated MIPS opcodes
7873         * mini-mips.c: decompose long opts
7874         * mini-mips.h: decompose long opts
7875         
7876 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
7877
7878         * cpu-mips.md: fix length on int_rem_un
7879         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
7880         
7881 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
7882
7883         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
7884
7885         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
7886
7887 2008-11-29  Martin Baulig  <martin@ximian.com>
7888
7889         * mini-exceptions.c (mono_handle_native_sigsegv): Check
7890         mono_debug_using_mono_debugger() in addition to the
7891         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
7892
7893 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7894
7895         * mini-ops.h: updated more MIPS opcodes
7896         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
7897         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
7898         
7899 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7900
7901         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
7902
7903 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7904
7905         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
7906         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
7907         * mini-ops.h: correct selected mips opcode entries
7908         
7909 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7910
7911         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
7912         make them work.
7913
7914 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7915
7916         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
7917
7918 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7919
7920         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
7921         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
7922         * mini-mips.h: disable IMT
7923         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
7924         
7925 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7926
7927         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
7928
7929 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7930
7931         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
7932
7933 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
7934
7935         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
7936         consistency.
7937
7938 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7939
7940         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
7941         for Set/GetVector aligned versions.
7942
7943 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7944
7945         * basic-simd.cs: Add tests for Get/SetVector.
7946
7947 2008-11-27  Mark Probst  <mark.probst@gmail.com>
7948
7949         * mini.c: Removed g_slist_append_mempool().  Now in
7950         metadata/mempool.c.
7951
7952 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7953
7954         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
7955         size properly and make the bounds check optional.
7956
7957         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
7958         for SetVector and IsAligned.
7959
7960 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
7961
7962         * mini.c: Remove unused mono_normalize_opcodes () function.
7963
7964 2008-11-26  Mark Probst  <mark.probst@gmail.com>
7965
7966         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
7967         using the new atomic add ops now.
7968
7969         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
7970         add.
7971
7972 2008-11-26  Mark Probst  <mark.probst@gmail.com>
7973
7974         * mini-ppc64.c: Several fixes.
7975
7976 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7977
7978         * cpu-mips.md: added jump_table
7979         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
7980
7981 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7982
7983         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
7984
7985 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7986
7987         * mini-ops.h: corrected a handful of MIPS opcodes.
7988
7989 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7990
7991         * aot-compiler.c: MIPS to use ELF writer
7992
7993 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7994
7995         * mini-codegen.c: remove MIPS specific assert.
7996
7997 2008-11-25  Mark Probst  <mark.probst@gmail.com>
7998
7999         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8000         fixes.  PPC64 now passes most of the runtime regressions.
8001
8002 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8003
8004         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8005         volatile intervals a bit.
8006
8007 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8008
8009         * basic-long.cs: New test case.
8010
8011 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8012
8013         * mini.c (mini_method_compile): Disable globalra for large methods for 
8014         now.
8015
8016         * regalloc2.c (order_moves): Add fp support.
8017
8018         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8019         source bblock ends with an OP_BR_REG.
8020
8021         * ratests.cs: Add a new test.
8022
8023 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8024
8025         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8026         sharing.  PPC64 now passes generics.exe.
8027
8028 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8029
8030         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8031
8032 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8033
8034         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8035         memory when mono_jit_info_table_find () can't find the method in the
8036         LMF case.
8037
8038         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8039         AOTed code too.
8040         
8041         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8042         writer too.
8043
8044 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8045
8046         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8047         Several fixes.  PPC64 now runs exceptions.exe and
8048         devirtualization.exe.
8049
8050 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8051
8052         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8053         arrays.exe and basic-math.exe.
8054
8055 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8056
8057         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8058         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8059
8060 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8061
8062         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8063
8064 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8065
8066         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8067
8068         * ir-emit.h: Move macros from method-to-ir.c to here.
8069
8070 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8071
8072         * mini-ops.h: Correct the long simd ops to use LREG.
8073
8074 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8075
8076         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8077         
8078         * mini-ops.h: Correct the dreg type of a few long opcodes.
8079
8080         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8081         Add netbsd support.
8082
8083 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8084
8085         * mini-ppc.c: remove negative stack references in epilog
8086         for platforms that don't support the red zone.
8087
8088 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8089
8090         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8091         point regs.  Now PPC64 passes basic-calls.exe.
8092
8093 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8094
8095         * basic-simd.cs: Add tests for accessors of Vector2l.
8096
8097 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8098
8099         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8100
8101         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8102         
8103         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8104
8105 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8106
8107         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8108         PPC64 passes basic-long.exe.
8109
8110 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8111
8112         * decompose.c: Decompose carry and overflow add on PPC64 like on
8113         other 64 bit archs.  Don't decompose sub at all on PPC64.
8114
8115         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8116         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8117         basic-long.exe.
8118
8119 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8120
8121         * basic-simd.cs: Add tests for accessors of Vector2d.
8122
8123 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8124
8125         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8126
8127         * cpu-x86.md: Same.
8128
8129         * mini-x86.c (mono_arch_output_basic_block): Same.
8130         
8131         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8132
8133 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8134
8135         * basic-simd.cs: Add tests for accessors of Vector4f.
8136
8137 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8138
8139         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8140
8141         * cpu-x86.md: Same.
8142
8143         * mini-x86.c (mono_arch_output_basic_block): Same.
8144         
8145         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8146
8147 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8148
8149         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8150
8151 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8152
8153         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8154
8155         * cpu-x86.md: Same.
8156
8157         * mini-x86.c (mono_arch_output_basic_block): Same.
8158         
8159         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8160
8161 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8162
8163         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8164
8165 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8166
8167         * simd-intrinsics.c: Enable setters for Vector16sb.
8168
8169 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8170
8171         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8172
8173         * cpu-x86.md: Same.
8174
8175         * mini-x86.c (mono_arch_output_basic_block): Same.
8176         
8177         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8178
8179 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8180
8181         * simd-intrinsics.c: Implement setter for Vector8us.
8182
8183 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8184
8185         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8186         for dead variables.
8187
8188 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8189
8190         * mini-ppc.c: remove references to the red zone in the prolog
8191         (for systems that don't support it).
8192
8193 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8194
8195         * cpu-ppc64.md: Fixed a few instruction lengths.
8196
8197         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8198         now.
8199
8200 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8201
8202         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8203         basic.exe now.
8204
8205 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8206
8207         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8208
8209 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8210
8211         * mini-ops.h: Added OP_INSERT_I2.
8212
8213         * cpu-x86.md: Same.
8214
8215         * mini-x86.c (mono_arch_output_basic_block): Same.
8216         
8217         * simd-intrinsics.c: Implement setter for Vector8s.
8218
8219         * simd-methods.h: Add the names of get setters of Vector8s.
8220
8221 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8222
8223         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8224         
8225         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8226         parameters.
8227
8228         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8229
8230 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8231
8232         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8233         for PPC64.  An empty program runs now.
8234
8235 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8236
8237         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8238
8239         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8240         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8241         info for JITted code is emitted into a shared library, loadable into gdb.
8242
8243 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8244
8245         * Makefile.am: Changes to build PPC64.
8246
8247         * mini-arch.h: Include mini-ppc64.h on PPC64.
8248
8249 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8250
8251         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8252         in PPC code up to r119147.
8253
8254 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8255
8256         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8257         cpu-ppc64.md: Changes for PPC64.
8258
8259         Based on code submitted by andreas.faerber@web.de at
8260         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8261         X11/MIT license.
8262
8263 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8264
8265         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8266         cpu-ppc64.md: Copied from the corresponding PPC files from
8267         r118846.
8268
8269 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8270
8271         * mini-ops.h: Added OP_ROUND.
8272
8273         * cpu-x86.md: Added round.
8274
8275         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8276
8277         * basic-math.cs: Added test_0_round to test rounding.
8278
8279         Contributed under MIT/X11 license.
8280
8281 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8282
8283         * aot-compiler.c : Fix the Winx64 build.
8284
8285         Contributed under MIT/X11 license.
8286
8287 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8288
8289         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8290         in OP_EXTRACT_R8 to avoid possible stack corruption.
8291
8292 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8293
8294         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8295
8296         * cpu-x86.md: Added extract_r8.
8297
8298         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8299         
8300         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8301         a couple of OP_EXTRACT_I4.
8302
8303         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8304
8305         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8306
8307 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8308
8309         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8310         and not 4.1. 
8311
8312 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8313
8314         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8315         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8316
8317         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8318         are not needed any more.
8319
8320         * mini.h: Remove the unused INS_LIST macros.
8321
8322         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8323         longer needed.
8324
8325         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8326         ir-emit.h.
8327
8328         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8329         mono_alloc_ireg () instead.
8330
8331         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8332         macros.
8333
8334         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8335         on amd64.
8336
8337         * aot-runtime.c (load_aot_module): Disable AOT when running under
8338         CAS.
8339
8340         * mini-amd64.h: Change the monitor fastpath defines to check for
8341         !PLATFORM_WIN32 so they work on *bsd too.
8342
8343         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8344
8345         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8346
8347         * mini.h (MonoCompile): Remove new_ir flag.
8348
8349         * regalloc.h regalloc.c: Remove unused code.
8350
8351         * cpu-*.md: Remove more unused opcodes.
8352
8353         * simple-cee-ops.h simple-mini-ops.h: Removed.
8354
8355         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8356         
8357 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8358
8359         * aliasing.h: Removed.
8360
8361         * *.c: Remove references to aliasing.h and inssel.h.
8362
8363         * mini.c: Remove additional unused functions.
8364
8365         * mini-ops.h cpu-*.md: Remove unused opcodes.
8366
8367 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8368
8369         Remove the old JIT code.
8370
8371         * inssel*.brg: Removed.
8372
8373         * ssa.c abcremoval.c aliasing.c: Removed.
8374
8375         * ssa2.c: Renamed to ssa.c.
8376
8377         * abcremoval2.c: Renamed to abcremoval.c.
8378
8379         * *.c: Removed all !cfg->new_ir code.
8380
8381         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8382         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8383
8384         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8385         
8386 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8387
8388         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8389         to simplify the code and cut back on the number of global symbols in the AOT
8390         file.
8391         
8392         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8393
8394 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8395
8396         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8397         with the got/got_info tables.
8398
8399         * mini.h: Bump AOT file format version.
8400         
8401         * unwind.h: New file, contains definitions for stack unwinding.
8402
8403         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8404         to cfg->unwind_ops.
8405         
8406         * aot-compiler.c: Generalize the emitting of unwind information to use the
8407         information in cfg->unwind_ops.
8408
8409         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8410
8411         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8412         AOT method frames. Enable writing symbols for methods by default.
8413
8414 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8415
8416         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8417         and make it work with vectors of element sizes 1, 2 and 4.
8418
8419         * simd-intrinsics.c: Enable getter for all vectors with element size
8420         1, 2 or 4.
8421
8422         * simd-methods.h: Add the names of other getters.
8423
8424         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8425
8426         * cpu-x86.md: Same.
8427
8428         * mini-x86.c: Same.
8429
8430 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8431
8432         * mini-ppc.h: portability fix.
8433
8434 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8435
8436         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8437         buggy and will overwrite it.
8438
8439 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8440
8441         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8442         Use it to emit local symbols for all methods so AOTed methods show up with
8443         their full name in gdb/valgrind output.
8444
8445 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8446
8447         * mini-ppc.c: portability fixes.
8448
8449 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8450
8451         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8452         entries out of the if (!generic_shared...) code so it is always done.
8453         (mono_class_init_trampoline): Do the patching when running under valgrind
8454         too, newer versions of valgrind have no problems with it.
8455
8456 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8457
8458         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8459         further sections.
8460
8461 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8462
8463         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8464         filters.
8465
8466 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8467
8468         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8469
8470 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8471
8472         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8473
8474         * cpu-x86.md: Same.
8475
8476         * mini-x86.c: Same.
8477
8478         * simd-intrinsics.c: Same.
8479
8480 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8481
8482         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8483
8484 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8485
8486         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8487         to work with more Vector types.
8488
8489 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8490
8491         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8492         store the elemens directly instead of using and intermediate.
8493
8494 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8495
8496         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8497
8498         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8499         to preserve %eax for aot plt trampolines.
8500
8501         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8502         (encode_method_ref): Flag synchronized methods so they won't go through
8503         the AOT trampoline.
8504
8505         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8506         wrappers.
8507
8508         * cpu-ia64.md (jmp): Increase max length.
8509
8510 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8511
8512         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8513         open generic classes.
8514
8515         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8516
8517         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8518         box+brtrue optimization since it causes test failures on x86.
8519
8520 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8521
8522         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8523
8524         * cpu-x86.md: Same.
8525
8526         * mini-x86.c: Same.
8527
8528         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8529         for simd ctor values. 
8530
8531         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8532         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8533
8534 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8535
8536         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8537         LogicalRightShift.
8538
8539         * simd-instrincs.c: Same.
8540
8541         * basic-simd.cs: Same.
8542
8543 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8544
8545         * ratests.cs: Add more tests.
8546
8547         * regalloc2.c (add_spill_code): Handle more corner cases.
8548
8549 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8550
8551         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8552         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8553         both the source an destination of an instruction.
8554
8555 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8556
8557         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8558         wapihandles.c: more portability changes.
8559
8560 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8561
8562         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8563         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8564         safe to execute in a signal handler and the kernel provides better
8565         the info in /proc/self/smaps. Avoid the assert on sigaction during
8566         cleanup.
8567
8568 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8569
8570         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8571         do the bblock linking hack if it is actually needed.
8572
8573         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8574         up linking.
8575
8576         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8577         crash problem is fixed.
8578
8579         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8580         bblocks.
8581
8582         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8583         for catch clauses.
8584         (mini_method_compile): Set the starting value of next_vreg to 
8585         MAX_IREGS + MAX_FREGS when using globalra.
8586
8587         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8588         filter clauses with BB_EXCEPTION_HANDLER.
8589
8590         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8591
8592 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8593
8594         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8595         space for stdcall.  Fixes regressions on Win32.
8596
8597 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8598
8599         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8600         bblocks.
8601         (linear_scan): Remove an assert which doesn't seem to be needed.
8602
8603         * local-propagation.c (mono_local_deadce): Avoid a call to
8604         MONO_DELETE_INS which would screw up the instruction linking.
8605
8606         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8607
8608         * regalloc2.c: Upgrade to work the current JIT code.
8609
8610 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8611
8612         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8613         case.
8614
8615         * aot-runtime.c: Remove some dead code.
8616
8617         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8618         consistency.
8619         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8620
8621         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8622         trampolines using sscanf since atoi doesn't work on large unsigned values.
8623
8624         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8625         Initialize code_size.
8626
8627 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8628
8629         * method-to-ir.c (mini_emit_inst_for_method): Make
8630         Interlocked.CompareExchange work for Int arguments on 32 bit
8631         archs, as well.
8632
8633 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8634
8635         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8636
8637 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8638
8639         * main.c Fix MSVC build.
8640
8641         Contributed under MIT/X11 license.
8642
8643 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8644
8645         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8646         alignment larger than 8 bytes are aligned correctly, too.
8647
8648         * mini.c: Honor the min_align field of MonoClass when laying out
8649         the stack.
8650
8651 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8652
8653         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8654
8655         * aot-compiler.c (emit_plt): Fix a warning.
8656         
8657         * aot-compiler.c: Implement ARM support in the binary writer.
8658
8659 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8660
8661         * basic-simd.cs: Add test for getter with byref arg.
8662         Fix the naming of a few tests.
8663         Add missing checks to a test.
8664
8665 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8666
8667         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8668
8669         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8670         most of the full-aot support for monitor enter/exit trampolines.
8671
8672         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8673         enter/exit trampoline creation functions.
8674
8675         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8676         make dist.
8677
8678 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8679
8680         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8681         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8682         implement the needed functionality without adding crap to the runtime.
8683
8684 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8685
8686         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8687         non-x86 builds.
8688
8689         * mini.c (mono_build_date): New global version holding the build date in
8690         string format.
8691         
8692         * Makefile.am (buildver.c): Generate a file containing the build date.
8693
8694         * main.c: Set the build date from the generated file.
8695
8696         * mini.c (mono_get_runtime_build_info): New helper function returning build
8697         information in a string format.
8698         
8699         * driver.c (mono_main): Print the build date in --version.
8700
8701         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8702         file when the bind-to-runtime-version option is used.
8703
8704 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8705
8706         * simd-intrinsics.c: Fix bug when using getters and byref args. 
8707
8708 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8709
8710         * simd-methods.h: Rename prefetch methods.
8711
8712         * simd-intrinsics.c: Same.      
8713
8714 2008-11-05  Mark Probst  <mark.probst@gmail.com>
8715
8716         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
8717         sizes.
8718
8719 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8720
8721         * aot-compiler.c: Use the bundled elf header files instead of depending on
8722         the system one.
8723         
8724         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
8725         mempool.
8726
8727         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
8728         on every call.
8729
8730 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
8731
8732         * cpu-x86.md: Add store nta ops.
8733
8734         * mini-ops.h: Same.
8735
8736         * mini-x86.c: Same.
8737
8738         * mini.h: Add an enum for simd prefetch modes.
8739
8740         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
8741         of store. Use the changed code to support store nta.
8742
8743         * simd-intrinsics.c: Add prefetch ops for all vector types.
8744
8745 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8746
8747         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
8748         threads.
8749         
8750         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
8751         names.
8752
8753         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
8754         trampolines.
8755
8756 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8757
8758         * mini-x86.c: Fixed commit.
8759
8760 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8761
8762         * aot-compiler.c (emit_plt): Align the plt section only on x86.
8763
8764 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8765
8766         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
8767         and MONITOR_EXIT, for the ASM fastpaths.
8768
8769         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
8770         available.
8771
8772         * mini.c, patch-info.h: Signature and patch infos for
8773         Monitor.Enter/Exit trampolines.
8774
8775         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
8776
8777         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
8778         Monitor.Enter/Exit ASM fastpath for Linux.
8779
8780 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8781
8782         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
8783
8784         * objects.cs: Add a new test.
8785         
8786         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
8787
8788         * aot-runtime.c (load_method): Run class initialization in the PLT case even
8789         if MONO_LOG_LEVEL is set.
8790
8791         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
8792
8793         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
8794
8795         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
8796         
8797         * aot-compiler.c: Change the relocation code to use virtual addresses instead
8798         of file offsets. Align the sections belonging to the data segment to 
8799         PAGESIZE.
8800
8801 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8802
8803         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
8804         elf.h. Port it to amd64.
8805
8806 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8807
8808         * driver.c: Enable SIMD by default.
8809
8810 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8811
8812         * cpu-x86.md: Add prefetch op.
8813
8814         * mini-ops.h: Same.
8815
8816         * mini-x86.c: Same.
8817
8818         * mini.h: Add an enum for simd prefetch modes.
8819
8820         * simd-methods.h: Add prefetch function names.
8821
8822         * simd-intrinsics.c: Add prefetch ops for all vector types.
8823
8824 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8825
8826         * aot-compiler.c (emit_bytes): Speed this up a little.
8827
8828 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
8829
8830         * aot-compiler.c: Add JIT time etc. statistics.
8831         
8832         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
8833
8834         * mini.h (MonoCompile): Add 'got_offset' field.
8835
8836         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
8837         method_got_offsets array.
8838
8839         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
8840         wrappers.
8841
8842         * aot-compiler.c (compile_method): Add generic method instances referenced
8843         by the method to the list of methods to be compiled, this is required so if
8844         A<T> references B<T>, and another assembly references A<int>, then it will
8845         also get a copy of B<int>.
8846
8847         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
8848         when checking for monitor enter/exit.
8849
8850 2008-10-30  Mark Probst  <mark.probst@gmail.com>
8851
8852         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
8853         for Monitor.Enter and Monitor.Exit if enabled.
8854
8855         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
8856         Solaris.
8857
8858 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
8859
8860         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
8861         of an OP_MOVE. Fixes #440046.
8862
8863         * basic-long.cs: Add a new test.
8864
8865 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8866
8867         * mini.h: Add synchronization note for the managed counter-part.
8868
8869         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
8870         returns the simd caps of the current cpu.
8871
8872 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8873
8874         * basic-simd.cs: Remove Console.WriteLine.
8875
8876 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8877
8878         * basic-simd.cs: New tests for Vector2ul.
8879
8880 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8881
8882         * simd-intrinsics.c: Add new vector type Vector2ul.
8883
8884 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8885
8886         * basic-simd.cs: New tests for Vector2l.
8887
8888 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8889
8890         * cpu-x86.md: Add long version of most packed int ops.
8891
8892         * mini-ops.h: Same.
8893
8894         * mini-x86.h: Same.
8895
8896         * simd-intrinsics.c: Add new vector type Vector2l.
8897
8898 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8899
8900         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
8901
8902         * simd-methods.h: Remove SN_op_BitwiseXor.
8903
8904 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8905
8906         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
8907         alignment.
8908
8909 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8910
8911         * basic-simd.cs: Test for Vector2d.
8912
8913         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
8914         value.
8915
8916 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8917
8918         * cpu-x86.md: Add double version of all packed float ops.
8919
8920         * mini-ops.h: Same.
8921
8922         * mini-x86.h: Same.
8923
8924         * simd-intrinsics.c: Add new vector type Vector2d.
8925
8926         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
8927
8928         * simd-methods.h: Add Duplicate.
8929
8930 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8931
8932         * basic-simd.cs: Test for packing with signed saturation.
8933
8934 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8935
8936         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
8937         found in the TYPESPEC table.
8938
8939 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
8940
8941         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
8942         too.
8943
8944         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8945
8946         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
8947         instead of the RVA, since the RVA can be changed by tools like the cil 
8948         stripper.
8949
8950         * method-to-ir.c (mono_method_to_ir2): Ditto.
8951
8952         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
8953         (deserialize_variable): Ditto.
8954
8955 2008-10-25  Martin Baulig  <martin@ximian.com>
8956
8957         * debug-mini.c (write_variable): Use
8958         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
8959
8960 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8961
8962         * cpu-x86.md: Add unsigned variants of packd and packw.
8963
8964         * mini-ops.h: Same.
8965
8966         * mini-x86.h: Emit the right instruction for packd and packw.
8967         Add unsigned variants of packd and packw.
8968
8969         * simd-intrinsics.c: Packd and packw were used in place of their
8970         unsigned variants. Change that.
8971         Add intrinsics for (Signed)PackWithSignedSaturation.
8972
8973         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
8974
8975 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8976
8977         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
8978
8979 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8980
8981         * mini-ops.h: Remove dword packed add/sub with saturation ops.
8982
8983         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
8984
8985         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
8986         sse instructions.
8987
8988         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
8989
8990 2008-10-24  Mark Probst  <mark.probst@gmail.com>
8991
8992         * method-to-ir.c, mini.c: Special casing for the synchronized
8993         wrapper for the ldtoken+GetTypeFromHandle case.
8994
8995 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
8996
8997         * mini.c (mono_replace_ins): Move this to branch-opts.c.
8998
8999         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9000         created/split bblocks.
9001
9002 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9003
9004         * mini-ops.h: Add packed signed mul high.
9005         
9006         * cpu-x86.md: Same.
9007
9008         * mini-x86.c (mono_arch_output_basic_block): Same.
9009
9010         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9011
9012         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9013
9014 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9015
9016         * basic-simd.cs: Tests for Vector16sb.
9017
9018 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9019
9020         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9021
9022 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9023
9024         * mini-ops.h: Add packed signed min, max and compare greater.
9025         
9026         * cpu-x86.md: Same.
9027
9028         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9029         saturation.
9030
9031         * simd-methods.h: Add CompareGreaterThan.
9032
9033         * simd-methods.h: Remove CompareEquals.
9034
9035         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9036
9037         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9038
9039         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9040         CompareEqual.
9041
9042 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9043
9044         * basic-simd.cs: Fix tests due to change in the API.
9045
9046 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9047
9048         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9049
9050 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9051
9052         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9053
9054         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9055         inst_offset as this has invalid values for LDADDR.
9056
9057 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9058
9059         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9060
9061         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9062
9063 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9064
9065         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9066         for accessing field->data.
9067
9068 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9069
9070         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9071
9072 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9073
9074         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9075
9076         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9077
9078 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9079
9080         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9081         from the cfg mempool.
9082
9083 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9084
9085         * basic-simd.cs: Tests for new methods in Vector8us.
9086
9087 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9088
9089         * mini-ops.h: Add multiply and store high.
9090         
9091         * cpu-x86.md: Same.
9092
9093         * mini-x86.c (mono_arch_output_basic_block): Same.
9094
9095         * simd-methods.h: Same.
9096
9097         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9098         and CompareEqual.
9099
9100 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9101
9102         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9103         mono_class_setup_vtable ().
9104
9105         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9106         mono_class_get_vtable_entry () for accessing klass->vtable.
9107
9108         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9109
9110         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9111         found.
9112
9113         * method-to-ir.c (mono_save_token_info): Don't save references made from
9114         wrappers.
9115
9116         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9117         of generic instances.
9118
9119         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9120
9121 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9122
9123         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9124         OP_JMP depends on the method signature.  Calculate it properly.
9125
9126 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9127         
9128         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9129         called directly.
9130
9131         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9132         instances.
9133         (emit_extra_methods): Add another table mapping method indexes to 
9134         offsets in the extra_method_info table.
9135
9136         * mini.h: Bump AOT file format version.
9137         
9138         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9139         and mono_aot_get_method_from_token () into one function.
9140
9141 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9142
9143         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9144         separate counter.
9145
9146 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9147
9148         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9149         methods.
9150
9151         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9152         disable_aot.
9153
9154         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9155
9156         * mini.h: Bump aot file format version.
9157
9158         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9159         AOT file can contain native code for methods which are not in the METHOD
9160         table. Generate code for non-sharable generic instances of generic methods
9161         found in the METHODSPEC table.
9162         
9163         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9164         encoding generic type handles.
9165
9166         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9167         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9168
9169         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9170         macros + MONO_ADD_INS.
9171
9172         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9173         context as well.
9174
9175         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9176
9177         * mini.h: Bump aot file format version.
9178
9179         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9180
9181 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9182
9183         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9184         platforms, with definable stack alignment value.  Set to 16 now
9185         for all platforms.
9186
9187         * mini.c, mini.h, driver.c: Command line option for disabling
9188         stack alignment.
9189
9190 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9191
9192         * basic-simd.cs: Tests for new methods in Vector4ui.
9193
9194 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9195
9196         * mini-ops.h: Add packed int shuffle.
9197         
9198         * cpu-x86.md: Same.
9199
9200         * mini-x86.c (mono_arch_output_basic_block): Same.
9201
9202         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9203         extract mask, max, min, shuffle.
9204
9205         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9206
9207 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9208
9209         * basic-simd.cs: Tests for new methods in Vector8us.
9210
9211 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9212
9213         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9214         RuntimeTypeHandle, not a TypedReference.
9215
9216 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9217
9218         * simd-intrinsics.c: remove relocations.
9219
9220 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9221
9222         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9223         optimizations from the x86 backend.
9224
9225 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9226
9227         * simd-methods.h, simd-intrinsics.c: debloat method names and
9228         prepare for no relocations.
9229
9230 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9231
9232         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9233         
9234         * cpu-x86.md: Same.
9235
9236         * mini-x86.c (mono_arch_output_basic_block): Same.
9237
9238         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9239         extract mask, max, min and sum of absolute differences.
9240
9241         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9242         method name.
9243
9244 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9245
9246         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9247         Renamed one test for consistency.
9248
9249 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9250
9251         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9252         fix to the code that deal with other blocks.
9253
9254 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9255
9256         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9257
9258 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9259
9260         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9261         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9262         able to process the source reg.
9263
9264 2008-10-16  Martin Baulig  <martin@ximian.com>
9265
9266         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9267
9268         * inssel.brg: Add `OP_HARD_NOP'.
9269
9270         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9271
9272         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9273         `OP_HARD_NOP' instruction when running inside the debugger.
9274
9275         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9276         `OP_HARD_NOP' instruction when running inside the debugger.
9277
9278 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9279
9280         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9281         now works. The issue with the regalloc tripping up no longer
9282         happens.
9283
9284         * simd-intrinsics.c (load_simd_vreg): Same.
9285
9286 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9287         
9288         * basic-simd.cs: Tests for new Vector8ui methods.
9289
9290 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9291
9292         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9293         only for type. This fixes crashes where MonoInst::klass is checked
9294         for ops of type != VTYPE or OBJ.
9295
9296         * simd-intrinsics.c (load_simd_vreg): Same.
9297
9298 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9299
9300         * mini-ops.h: Add ops for packed shuffle/max/avg and
9301         extract mask.
9302         
9303         * cpu-x86.md: Same.
9304
9305         * mini-x86.c (mono_arch_output_basic_block): Same.
9306
9307         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9308         extract mask.
9309
9310         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9311         to emit extract mask op.
9312
9313         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9314         to emit word shuffles.
9315
9316 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9317
9318         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9319         the largest alignment needed by a variable, but at least
9320         sizeof(gpointer).
9321
9322 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9323
9324         * basic-simd.cs: Tests for the fixes in the last commit.
9325
9326 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9327
9328         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9329         no longer handles STACK_PTR input.
9330
9331         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9332
9333         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9334         get_simd_vreg   but handles STACK_PTR input.
9335
9336         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9337         as the input can be an arbitrary pointer.
9338
9339         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9340         LDADDR local optimization directly otherwise use a store op.
9341
9342 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9343
9344         * basic-simd.cs: Tests for dup low and dup high.
9345
9346 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9347
9348         * mini-ops.h: Add dup low and dup high ops.
9349         
9350         * cpu-x86.md: Same.
9351
9352         * mini-x86.c (mono_arch_output_basic_block): Same.
9353
9354         * simd-intrinsics.c (vector4f_intrinsics): Same.
9355
9356 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9357
9358         * basic-simd.cs: Tests for recently added functionality.
9359
9360 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9361
9362         * mini-ops.h: Add remaining sse1 fp ops.
9363         
9364         * cpu-x86.md: Add remaining sse1 fp ops.
9365
9366         * mini-x86.c (mono_arch_output_basic_block): Same.
9367
9368         * mini.h: Add enum for simd FP compare conditions.
9369
9370         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9371
9372         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9373         so the backed can generate the appropriate op.
9374
9375 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9376         This patch squeese one more byte from the SimdIntrinsc struct.
9377
9378         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9379         a a shift amount intead of simply or'ing it.
9380
9381         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9382
9383         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9384         byte so we can have an aditional flags field without increasing struct size.
9385
9386         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9387         against the simd_supported_versions bitmask.
9388
9389         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9390
9391 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9392
9393         * mini.c: remove rawbuffer code (the only use here is unsafe because
9394         it takes locks during signal handling and the kernel now provides much
9395         better info in proc/pid/smaps these days).
9396
9397 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9398
9399         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9400         OP_X86_PUSH_OBJ. Fixes #434620.
9401
9402         * objects.cs: Add a test.
9403         
9404 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9405
9406         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9407         that the packuswb/packusdw don't work with unsigned numbers for what
9408         would be negative numbers in signed format.
9409
9410         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9411         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9412
9413         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9414
9415         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9416
9417         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9418
9419         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9420
9421         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9422         add more ops.
9423
9424         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9425         version as the enum in mini.h.
9426
9427         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9428         for sse3 ops, check the simd_version field if present. This way the code
9429         works with all versions of sse.
9430
9431 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9432
9433         * simd-intrinsics.c: Fixed intrinsic name typo.
9434
9435         * mini.h: Added missing simd exported function.
9436
9437         * basic-simd.cs: Added tests for Vector4ui.
9438         Fixed broken test for Vector16b.
9439
9440 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9441
9442         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9443         the max length to 64.
9444
9445 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9446
9447         * method-to-ir.c: Only do the fast virtual generic method call for
9448         non-wrapper methods.
9449
9450         * mini.h, mini-trampolines.c: The new generic virtual remoting
9451         trampoline handles virtual method calls via the vtable (as done by
9452         the fast virtual generic method calls) to remoting proxies.
9453
9454         * mini.c (mono_jit_create_remoting_trampoline): For generic
9455         methods reate a generic virtual remoting trampoline.
9456
9457         * mini-amd64.h: Enable fast virtual generic method calls again.
9458
9459 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9460
9461         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9462         restore registers when doing tail calls.
9463
9464 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9465
9466         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9467         Vector4ui.
9468
9469 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9470
9471         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9472
9473 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9474
9475         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9476
9477 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9478
9479         * basic-simd.cs: Retrofit for API changes.
9480
9481 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9482
9483         * mini-ppc.c: Handle integer stack arguments for tail calls.
9484
9485 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9486
9487         * optflags-def.h: Removed sse3 optimization.
9488
9489         * driver.c: Same.
9490
9491         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9492         sse3.
9493
9494         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9495
9496         * mini.h: Added enumeration with simd versions.
9497
9498         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9499         for detecting SSE3.
9500
9501         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9502
9503         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9504
9505 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9506
9507         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9508
9509         * basic-simd.cs: Fixed test naming.
9510
9511 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9512
9513         * mini-ops.h: Added ops for packed and saturated math, shifts
9514         and packing/unpacking.
9515
9516         * cpu-x86.md: Added descriptors for the above ops.
9517
9518         * mini-x86.c: Added code to emmit the above ops.
9519
9520         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9521
9522 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9523
9524         * aot-compiler.c (compile_method): Enable AOT for generic code.
9525
9526         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9527
9528 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9529
9530         * mini.c: add a workaround for a common screwup that ends up blamed
9531         to mono (other processes blocking signal delivery).
9532
9533 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9534
9535         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9536         in the LDFLD/STFLD opcodes. Fixes #432673.
9537
9538         * iltests.il.in: Add a new test.
9539
9540 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9541
9542         * mini-arm.c: attach the thread in unmanaged->managed transitions
9543         using delegates (bug #433148).
9544
9545 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9546
9547        * basic-simd.cs: Use new ShuffleSel constants.
9548
9549 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9550
9551         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9552
9553         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9554         only disable simd intrinsics if no sse2 is detected.
9555
9556         * optflags-def.h: Added sse3.
9557
9558         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9559         is disabled.
9560
9561 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9562
9563         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9564         when adding delegate-invoke wrappers.
9565
9566 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9567
9568         * Makefile.am: Reenable the simd tests.
9569
9570 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9571
9572         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9573           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9574           other vreg is allocated to that hreg.
9575
9576         Contributed under MIT/X11 license.
9577
9578 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9579
9580         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9581         yet checked in.
9582
9583 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9584
9585         * basic-simd.cs: New test suite for SIMD intrinsics.
9586
9587         * Makefile.am: Added new tests.
9588
9589 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9590
9591         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9592
9593         * mini-ops.h: Same.
9594
9595         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9596
9597         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9598         using SSE2 aware opcodes.
9599
9600         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9601         is enabled, this code path is only reachable if conversion ops are emmited after
9602         mono_method_to_ir.
9603
9604         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9605
9606         This optimization saves 6 bytes per conversion against the old version.
9607
9608 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9609
9610         * aot-compiler.c (compile_method): Don't skip methods referencing 
9611         generic methods without a corresponding entry in token_info_hash, since
9612         encode_method_ref () can handle all generic methods now.
9613
9614         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9615         generic context is set.
9616         
9617         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9618         generic sharing of LDTOKEN.
9619
9620 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9621
9622         * mini-amd64.h: Temporarily disabled fast virtual generic method
9623         calls because it breaks the System.Runtime.Remoting tests.
9624
9625 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9626
9627         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9628
9629         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9630         so inlining actually works.
9631         (check_inline_caller_method_name_limit): Ditto.
9632
9633 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9634
9635         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9636         64 bit safety (from Olaf Hering and Andreas Farber).
9637
9638 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9639         
9640         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9641         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9642         unused virtual call support code.
9643
9644         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9645         
9646         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9647         which can't use aot trampolines.
9648         (decode_patch): Don't create aot trampolines for methods which can't use
9649         them.
9650
9651         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9652         use aot trampolines.
9653
9654         * mini.h: Bump AOT image format version.
9655         
9656 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9657
9658         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9659         to save_token_info () since cmethod is inflated for constrained calls.
9660
9661         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9662
9663 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9664
9665         * Makefile.am: Add build rules for ppc64.
9666         This avoids the build failing at pedump with unresolved symbols
9667         due to lack of arch_sources. Instead it will now fail earlier
9668         due to lack of cpu-ppc64.md.
9669
9670         Contributed under MIT/X11 license.
9671
9672 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9673
9674         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9675         tail calls.
9676
9677         * iltests.il.in: Add test case for tail call with many arguments.
9678
9679 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9680
9681         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9682         to the fast virtual generic method code until the aot case is fixed.
9683
9684 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9685
9686         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9687
9688 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9689
9690         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9691         thunks.
9692
9693 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9694         
9695         * simd-intrinsics.c: Forgot to add this one.
9696
9697         * mini-codegen.c: Fix macro in case SIMD is not supported.
9698
9699 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9700         
9701         This patch land initial JIT support for simd intrinsics.
9702
9703         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9704
9705         * Makefile.am: Added simd-intrinsics.c
9706
9707         * simd-intrinsics.c: New file with simd instrinsic related
9708         code.
9709
9710         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
9711
9712         * cpu-x86.md: Add simd related instructions.
9713
9714         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
9715
9716         * driver.c: Added two new --regression variants.
9717
9718         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
9719
9720         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
9721
9722         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
9723         extract some complicated logic to helper functions.
9724
9725         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
9726
9727         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
9728
9729         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
9730         the specialized simplification pass.
9731
9732         * method-to-ir.c (mono_spill_global_vars): Use new macro.
9733
9734         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
9735
9736         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
9737         table.
9738
9739         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
9740         if MONO_ARCH_NEED_SIMD_BANK is defined.
9741
9742         * mini-ops.h: Added the new simd ops.
9743
9744         * mini-x86.c: Added mono_arch_xregname.
9745
9746         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
9747
9748         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
9749
9750         * mini-x86.h: Define simd related MONO_ARCH macros.
9751
9752         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
9753
9754         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
9755
9756         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
9757         MONO_CLASS_IS_SIMD to deal with simd related IR.
9758
9759         * mini.h (MonoInst): Added spill_var to the backend union.
9760
9761         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
9762
9763         * mini.h: Added forward declarations of the new simd fuctions.
9764
9765         * optflags-def.h: Added new optimization names SIMD.
9766
9767         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
9768
9769         * regalloc.h: Added support for working with 3 register banks.
9770
9771         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
9772
9773         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
9774
9775 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
9776
9777         * mini-exceptions.c: remove 64 bit related ifdef clutter.
9778
9779 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9780
9781         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
9782         instead of one on 64 bit systems.
9783
9784         * method-to-ir.c: Remove unused includes.
9785
9786 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
9787
9788         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
9789         cfg->used_int_regs, since the two are different on arm.
9790
9791 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9792
9793         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
9794         mono_method_get_vtable_index() to get the vtable index.
9795
9796 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9797
9798         * method-to-ir.c (mono_method_to_ir2): Don't create native
9799         wrappers for array methods, because they're never called (and if
9800         they were called they wouldn't work).
9801
9802 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9803
9804         * method-to-ir.c (mono_method_to_ir2): Array methods are
9805         special-cased and must not be invoked indirectly via the (M)RGCTX
9806         when generic sharing is turned on.  Fixes #431413.
9807
9808 2008-10-01  Mark Probst  <mark.probst@gmail.com>
9809
9810         * method-to-ir.c: When generic sharing is active, call
9811         non-interface virtual generic methods via the standard trampoline.
9812
9813         * mini-trampolines.c: Handle virtual generic shared methods.
9814
9815         * mini.h, mini-x86.c, mini-x86.h: New argument for
9816         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
9817         method thunks and which is the trampoline to call if the lookup
9818         fails.  Enable the virtual generic method thunk for x86.
9819
9820         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
9821         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
9822         argument but assert that it's NULL, because these archs don't yet
9823         implement the virtual generic method thunk.  Changes in the IMT
9824         thunk data structures.
9825
9826 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
9827
9828         * aot-compiler.c (emit_globals): Avoid invalid characters in
9829         the static linking symbol.
9830
9831         * objects.cs: Add a test for the range check optimization. Fix warnings.
9832
9833         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
9834         optimization from the current JIT.
9835
9836         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
9837         later in decompose_array_access_opts () to allow more optimizations.
9838
9839         * method-to-ir.c (mono_handle_soft_float): Rename this to 
9840         mono_decompose_soft_float () for consistency.
9841
9842         * mini-ops.h: Fix arguments of OP_STRLEN.
9843
9844         * method-to-ir.c (save_cast_details): Extract the cast details saving code
9845         into a separate function.
9846         (reset_cast_details): Ditto.
9847         (handle_unbox): Save cast details. Fixes #431254.
9848
9849         * method-to-ir.c: Remove some obsolete FIXMEs.
9850
9851 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9852
9853         * ir-emit.h (alloc_dreg): Write a warning before crashing.
9854
9855 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9856
9857         * mini-codegen.c: More work on macros to make them
9858         ready for multiple regbanks.
9859
9860 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9861
9862         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
9863
9864         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
9865
9866 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9867
9868         * mini-codegen.c (mono_spillvar_offset): Proper support for
9869         multiple regbanks.
9870
9871 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9872
9873         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
9874         the stack overflow changes.
9875
9876 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9877
9878         * mini-codegen.c: Make all bank macros depend on reg_bank.
9879
9880         * mini-codegen.c (mono_local_regalloc): Make free mask
9881         initialization regbank aware.
9882
9883 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9884
9885         * mini-codegen.c (mono_local_regalloc): Extract callee
9886         mask selection to a function and make it regbank aware.
9887
9888 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9889
9890         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
9891         code to deal with many regbanks.
9892
9893 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9894
9895         * mini-codegen.c: More fp->regbank changes.
9896
9897 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9898
9899         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
9900         of a hardcoded constant.
9901
9902 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9903
9904         * method-to-ir.c (type_from_stack_type): Fix typo.
9905
9906 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
9907
9908         * mini-ia64.c (emit_move_return_value): Convert float return values to
9909         double.
9910
9911         * objects.cs: Add a new test.
9912         
9913         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
9914         VARARG methods to fix an assert later.
9915
9916         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
9917         end so it at least compiles.
9918
9919 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9920
9921         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
9922
9923 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
9924
9925         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
9926         optimization to a new function (emit_optimized_ldloca_ir) and enable
9927         it for both ldloca and ldloca_s.
9928
9929 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9930
9931         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
9932         gshared CASTCLASS code.
9933
9934         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
9935         amd64, where the libc stack unwinder encounters stack frames referring to
9936         native code in unmapped memory.
9937
9938         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
9939         sharing.
9940
9941         * generics.cs: Add new test.
9942
9943 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
9944
9945         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
9946         add a check that one of the ARM_FPU_ constants is defined.
9947
9948         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
9949         
9950         * mini-exceptions.c: Fix build on non-altstack platforms.
9951
9952         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
9953         sharing of vtypes.
9954
9955         * ir-emit.h: Add a comment to NEW_PCONST.
9956
9957         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
9958
9959         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
9960
9961         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
9962         after the changes to MonoJitDomainInfo.
9963
9964 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9965
9966         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
9967
9968 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9969
9970         * mini-ppc.c: Compiler warning fixes.
9971
9972 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9973
9974         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
9975         for pinvokes.
9976
9977 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9978
9979         * exceptions-ppc.c, mini-ppc.h: Compile
9980         mono_arch_handle_altstack_exception() on Darwin, too.
9981
9982 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9983
9984         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
9985         work on archs which don't have generic sharing implemented, only
9986         without the vtable_arg.
9987
9988 2008-09-26  Mark Probst  <mark.probst@gmail.com>
9989
9990         * mini.c: Added comment explaining why delegate ctor icall
9991         wrappers are compiled.
9992
9993 2008-09-26  Mark Probst  <mark.probst@gmail.com>
9994
9995         * mini.c: Don't produce trampolines to delegate ctor icall
9996         wrappers but compile them upfront.
9997
9998 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
9999
10000         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10001         runtime-set function when going back to managed code. Currently this
10002         is used to set back the protection on the soft ovf pages and/or to
10003         throw the stack overflow exception that happened in unmanaged code.
10004
10005 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10006
10007         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10008         runtime-set function when going back to managed code. Currently this
10009         is used to set back the protection on the soft ovf pages and/or to
10010         throw the stack overflow exception that happened in unmanaged code.
10011
10012 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10013
10014         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10015         the support code for restoring stack protection after stack overflows
10016         that happen in unmanaged code. Don't set the exec permission on the
10017         soft overflow area.
10018
10019 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10020
10021         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10022         delegate->method_ptr is set. Fixes #428054.
10023
10024 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10025
10026         * tests.cs: Rename to ratests.cs.
10027
10028         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10029         emit_get_rgctx_... functions.
10030
10031 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10032
10033         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10034
10035 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10036
10037         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10038         before asserting that method is sharable.
10039
10040 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10041
10042         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10043         whether method needs a static RGCTX wrapper used instead of
10044         complex conditions.
10045
10046         * generic-sharing.c, mini.h: A few functions moved to
10047         metadata/generic-sharing.c.
10048
10049 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10050
10051         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10052         Generic code sharing for value types, which essentially means
10053         treating value type methods like static methods.  The RGCTX is
10054         passed in the same way.
10055
10056 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10057
10058         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10059         opcode when creating multi-dimensional arrays of open types.
10060
10061         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10062         open generic types.
10063
10064         * generics.cs: Add a test.
10065
10066         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10067
10068 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10069
10070         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10071
10072         * mini.c (mini_method_compile): Set it when running under the debugger. 
10073
10074         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10075         vreg optimization if the flag is set.
10076
10077         * driver.c (mono_main): Add --attach= option to pass options to
10078         the attach agent.
10079
10080         * mini.c (sigquit_signal_handler): Start the attach agent.
10081
10082         * ssapre.c: Disable this to save space since it is not yet ported to
10083         linear IR.
10084
10085         * regalloc2.c: Disable this to save space.
10086
10087         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10088
10089 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10090
10091         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10092         the -v option useful again.
10093
10094 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10095
10096         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10097         --break-at-bb.
10098
10099         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10100         arrays of arrays. Fixes #428406.
10101
10102         * method-to-ir.c (mini_emit_castclass): Ditto.
10103
10104         * objects.cs: Add new test.
10105         
10106 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10107
10108         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10109         was wrong at it choked against target_type_is_incompatible for byref types.
10110
10111 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10112
10113         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10114         places.
10115
10116 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10117
10118         * mini-exceptions.c: update a few more exceptions-related counters.
10119
10120 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10121
10122         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10123         new functions to allocate from persistent mempools.
10124
10125 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10126
10127         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10128         multiple register banks in the future.
10129
10130         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10131
10132 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10133
10134         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10135
10136         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10137
10138         * mini.h: Export type_to_eval_stack_type.
10139
10140         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10141         is only ins->klass of byref types.
10142
10143 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10144
10145         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10146         (mini_emit_memcpy2): Ditto.
10147
10148         * mini-amd64.c: Fix a warning.
10149
10150 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10151
10152         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10153         linking.
10154
10155 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10156
10157         * method-to-ir.c: Extract stloc micro-optimization to a
10158         function and apply it to all cases.
10159
10160 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10161
10162         * method-to-ir.c: Don't fail generic code sharing in cases we
10163         already support.
10164
10165 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10166
10167         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10168
10169 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10170
10171         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10172         implementation.
10173
10174 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10175
10176         * trace.c: make tracing more useful and correct, with per-thread
10177         id and indent info.
10178
10179 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10180
10181         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10182         doing a method call and the argument is an R4.
10183
10184 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10185
10186         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10187         generic methods.
10188
10189 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10190
10191         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10192
10193 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10194
10195         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10196         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10197
10198 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10199
10200         * driver.c: Add a --agent argument (not supported yet) to load managed
10201         agent assemblies before loading the main assembly, similarly to how the
10202         Java VM handles agents.
10203
10204 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10205
10206         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10207         function to do stack layout of local variables.
10208
10209 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10210
10211         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10212         calculation.
10213
10214 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10215
10216         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10217         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10218         JIT if DISABLE_JIT is defined.
10219
10220         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10221         defined.
10222
10223 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10224
10225         * iltests.il.in: Disable the fconv test on PPC (the result is
10226         undefined according to ECMA).
10227
10228 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10229
10230         * iltests.il.in: Enable tail call tests for PPC.
10231
10232         * mini.h: Add variable for storing incoming valuetype argument
10233         addresses for tail calls.
10234
10235         * mini-ppc.c: Implement valuetype arguments and return values for
10236         tailcalls on Linux.
10237
10238 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10239
10240         * mini-ppc.c: Partially implement tail calls (struct arguments and
10241         return values not supported).
10242
10243         * method-to-ir.c: Enable tail calls on PPC.
10244
10245 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10246
10247         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10248         runtime-invoke wrappers to work around the problem of them getting
10249         assigned to a random class.
10250
10251         * aot-runtime.c (mono_aot_get_method): Ditto.
10252         
10253 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10254
10255         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10256         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10257
10258 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10259
10260         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10261         until they're implemented properly.
10262
10263         * exceptions-ppc.c: Use arch-independent exception-handling code
10264         instead of custom one.
10265
10266         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10267         for Linear IR.
10268
10269         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10270
10271         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10272         applies when __powerpc__ is defined.
10273
10274 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10275
10276         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10277         methods to their code to avoid computing the full name of wrappers and
10278         doing a lookup in a string hash table.
10279
10280 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10281
10282         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10283         we identify bblocks before method_to_ir () is ran.
10284
10285         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10286         Also avoid optimizing branches pointing to themselves.
10287
10288         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10289
10290 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10291
10292         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10293
10294 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10295
10296         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10297         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10298         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10299         'buf'.
10300
10301         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10302         jumped to the same entry in plt_jump_table.
10303
10304 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10305
10306         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10307         dynamic images.
10308
10309 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10310
10311         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10312         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10313         #421807.
10314
10315 2008-08-29  Geoff Norton  <gnorton@novell.com>
10316
10317         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10318         segment, and doesn't properly handle .space as .text.  Fixes
10319         AOT Mach/ARM
10320
10321 2008-08-29  Geoff Norton  <gnorton@novell.com>
10322
10323         * mini.c: Disable the mach exception handler when running on 
10324         ARM
10325
10326 2008-08-29  Geoff Norton  <gnorton@novell.com>
10327
10328         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10329         globals on Darwin/ARM
10330
10331 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10332
10333         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10334         since too many things depend on it. Instead, call 
10335         mono_runtime_set_no_exec ().
10336         
10337         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10338         the new JIT.
10339
10340         * aot-compiler.c: Add an 'asm-only' AOT option.
10341
10342         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10343                 
10344         * aot-compiler.c (compile_method): Disable gshared support for now as it
10345         doesn't yet work.
10346
10347 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10348
10349         * mini-amd64.h : Fix a compiler warning.
10350
10351         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10352           Changed to use a callback function to retrieve the unwind info.
10353           This avoids problems observed when code blocks were removed by
10354           unloading an app domain.
10355
10356         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10357           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10358           to work properly.
10359
10360         Contributed under MIT/X11 license.
10361
10362 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10363
10364         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10365           case to keep the stack aligned to 8.
10366
10367         Contributed under MIT/X11 license.
10368
10369 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10370
10371         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10372         avoid repeated linear searches.
10373
10374 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10375
10376         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10377         methods it can't handle.
10378         
10379         * aot-compiler.c (add_method): Avoid adding a method twice.
10380         (add_wrappers): Add runtime invoke wrappers for all methods.
10381
10382         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10383         function to create an aot-compatible version of this trampoline.
10384
10385         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10386
10387 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10388
10389         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10390
10391         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10392         with a generic sharing failure.
10393
10394         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10395
10396         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10397         CEE_RETHROW. Fixes #419634.
10398
10399         * mini.c (mono_method_to_ir): Ditto.
10400
10401         * exceptions.cs: Add a new test.
10402         
10403         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10404         to mono_type_stack_size_internal () since some callers might not pass in
10405         an rgctx.
10406
10407         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10408         instrument_prolog. Fixes #419878.
10409
10410         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10411         doubles in soft float mode volatile.
10412
10413 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10414
10415         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10416
10417         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10418         to handle soft float correctly.
10419
10420         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10421         the fast path.
10422
10423         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10424
10425         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10426         to sp, since the generics catch code requires it.
10427
10428         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10429         copying.
10430
10431         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10432         mono_arch_emit_imt_argument ().
10433
10434         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10435
10436         * mini-arm.c tramp-arm.c: Generic sharing updates.
10437
10438 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10439
10440         * mini-arm.c: Fix the arm build.
10441
10442         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10443         handling enums, generic instances and generic sharing.
10444         (mini_type_stack_size_full): Ditto.
10445
10446         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10447         
10448         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10449
10450         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10451
10452         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10453         trampolines.
10454
10455         * mini-arm.c: Various small generic sharing changes.
10456
10457         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10458         this for x86.
10459         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10460         custom code.
10461
10462         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10463         helper function to return a generic class init trampoline.
10464
10465         * method-to-ir.c mini.c: Use it.
10466         
10467         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10468         arch-specfic function to return a generic class init trampoline.
10469
10470         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10471         the GENERIC_CLASS_INIT custom code.
10472
10473         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10474         a fatal error, not a sharing failure.
10475
10476         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10477         needed.
10478
10479         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10480         trampoline argument from MONO_ARCH_VTABLE_REG.
10481
10482         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10483         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10484         argument, and pass the vtable in VTABLE_REG.
10485
10486         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10487         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10488         argument, and pass the vtable in VTABLE_REG.
10489         (mono_arch_create_trampoline_code_full): Remove some special casing for
10490         the rgctx fetch trampoline.
10491
10492         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10493         Fixes #419273.
10494
10495         * iltests.il: Add a test for it.
10496
10497 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10498
10499         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10500
10501         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10502         no longer needed.
10503
10504         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10505         use mono_jit_info_table_find () to avoid recursion.
10506         (mono_delegate_trampoline): Add a sync wrapper here.
10507
10508         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10509         here.
10510
10511         * mini.c (mono_method_to_ir): Ditto.
10512         
10513         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10514         add_sync_wrapper argument. Don't add a sync wrapper here.
10515         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10516
10517         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10518         
10519 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10520
10521         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10522           of nonvolatile registers back from MonoContext to CONTEXT.
10523
10524         Contributed under MIT/X11 license.
10525
10526 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10527
10528         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10529           arguments on Winx64 there are only 4 argument registers.  For this
10530           logic to work the last argument must be pulled from the stack.  
10531
10532         Contributed under MIT/X11 license.
10533
10534 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10535
10536         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10537
10538         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10539         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10540         encode/decode_method_ref ().
10541
10542         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10543
10544         * aot-runtime.c (decode_patch): Ditto.  
10545
10546         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10547         MONO_PATCH_INFO_METHOD.
10548
10549         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10550         MonoGenericJitInfo.
10551
10552         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10553         MonoGenericJitInfo.
10554
10555         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10556
10557         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10558         one from the caller.
10559
10560         * aot-runtime.c (decode_generic_inst): New function to decode and
10561         return a interned generic inst.
10562         (decode_klass_ref): Use it.
10563         (decode_method_ref): Ditto.
10564
10565         * aot-compiler.c (emit_exception_debug_info): Save 
10566         jinfo->has_generic_jit_info too.
10567
10568 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10569
10570         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10571
10572         * iltests.il.in: Add a test for fconv_to_i.
10573
10574         * liveness.c: Disable the liveness2 pass for now to save space.
10575
10576         * regalloc2.c: Include mempool-internals.h to fix warnings.
10577
10578         * aot-compiler.c (encode_method_ref): Encode the context of generic
10579         instance methods.
10580
10581         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10582         the context saved in the aot file.
10583
10584         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10585
10586         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10587
10588         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10589         volatile so they won't be optimized away.
10590
10591 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10592
10593         * ssa.c:
10594         * ssa2.c:
10595         * mini.c:
10596         * regalloc2.c:
10597         * dominators.c: Remove duplicated functions that now are in
10598         mempool-internals.h.
10599
10600 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10601
10602         * aot-compiler.c: Fix warnings.
10603
10604         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10605
10606         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10607
10608         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10609         as the patch type.
10610
10611         * mini.c (mono_resolve_patch_target): Ditto.
10612         
10613         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10614         (encode_klass_ref): Add support for encoding VARs/MVARs.
10615
10616         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10617
10618         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10619         the handling of the got entries into a separate 'decode_got_entry' function.
10620         Add support for RGCTX_FETCH.
10621
10622         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10623         clobbered by the trampoline code.
10624
10625         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10626         not clobbered by the indirect calling code.
10627
10628 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10629
10630         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10631         to fix the build.
10632
10633 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10634
10635         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10636         signature using the compilation mempool otherwise we would leak it.
10637
10638 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10639
10640         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10641         mono_emit_abs_call ().
10642
10643         * patch-info.h: Add GENERIC_CLASS_INIT.
10644
10645         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10646
10647         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10648         as their target as a near call.
10649
10650         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10651         ABS handling code.
10652         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10653
10654         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10655         call to a runtime function described by a patch.
10656
10657         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10658         mono_emit_abs_call, this has the advantage that the ABS handling code in
10659         mono_codegen () can handle them both, and can handle other stuff in the
10660         future without additional code.
10661
10662         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10663         entry.
10664         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10665         abs addresses.
10666
10667         * mini.h: Add missing bblock related prototypes.
10668
10669         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10670         reverse_inst_list_len fields.
10671
10672         * mini.c: Refactor this file a bit by moving branch optimizations to 
10673         branch-opts.c.
10674
10675         * method-to-ir.c: Merge generic sharing changes missed earlier.
10676
10677         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10678
10679         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10680         shared patches. Process METHODCONST as a shared patch.
10681
10682         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10683         as it crashes on the 2.0 mscorlib.
10684
10685         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10686         to cause crashes.
10687         
10688         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10689         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10690         by IMT.
10691
10692         * aot-compiler.c: Reorganize the got handling code to be a bit more
10693         understandable.
10694
10695 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10696
10697         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10698         mono_patch_info_equals/hash, and use it to massively simplify
10699         get_plt_index ().
10700
10701         * mini.c (mono_patch_info_hash): Simplify this and add support for
10702         more patch types.
10703
10704         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
10705
10706         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
10707         handling code, since an offset is not enough to identify a trampoline.
10708
10709         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
10710
10711 2008-08-17  Mark Probst  <mark.probst@gmail.com>
10712
10713         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
10714
10715         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
10716
10717         * mini-ops.h: Argument and result types for OVF_CARRY ops.
10718
10719         * decompose.c: PPC decompositions for various ops.
10720
10721         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
10722
10723 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10724
10725         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
10726         call the generic trampoline code using a call, instead of a jump, to
10727         remove some special casing from the generic trampoline code.
10728
10729         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
10730         (mono_codegen): Ditto.
10731
10732         * aot-compiler.c aot-runtime.c: Ditto.
10733
10734         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
10735
10736         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
10737         helper function to find the offset corresponding to a lazy fetch trampoline.
10738
10739         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
10740         when doing generic sharing.
10741
10742         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
10743         places.
10744         
10745         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
10746         mini-trampolines.c to be with the other trampoline creation functions.
10747
10748         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
10749         as it is equal to method->signature in most cases, add a 
10750         mono_emit_method_call_full variant which takes a signature and an imt
10751         argument as well.
10752
10753 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10754
10755         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
10756         to this function, since it could be computed easily from the method 
10757         argument.
10758         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
10759         more.
10760
10761         * method-to-ir.c mini.c: Remove references to 
10762         compile_generic_method_wo_context.
10763
10764         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
10765         generic method calls.
10766         
10767         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
10768         dimensional non-szarrays.
10769
10770         * mini.c (mini_init): Register mono_array_new_1.
10771
10772         * jit-icalls.c (mono_array_new_1): New jit icall.
10773
10774         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
10775         pointing to the method.
10776
10777         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
10778         method addresses belonging to METHOD_JUMP patches in the 
10779         jump_target_got_slot_hash.
10780         (mono_aot_load_method): Ditto.
10781
10782         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
10783         METHOD_JUMP patches.
10784
10785         * mini.c (mini_create_jit_domain_info): New helper function which 
10786         initializes/frees domain->runtime_info.
10787         (mini_free_jit_domain_info): Ditto.
10788         (mini_init): Install the domain hook functions with the runtime.
10789
10790         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
10791         information maintained by the JIT.
10792
10793         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
10794         insertion into jump_table_hash into mono_codegen (), also implement proper
10795         locking.
10796
10797         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
10798         tail calls, it is already done by the aot code.
10799         
10800         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
10801         mechanism on amd64.
10802
10803         * iltests.il.in: Make the jmp test a bit more complex.
10804
10805         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
10806         generic instances which doesn't have a token.
10807
10808         * aot-runtime.c (decode_method_ref): Ditto.
10809         
10810         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
10811         can handle this case now.
10812         (handle_box): Ditto.
10813
10814 2008-08-15  Geoff Norton  <gnorton@novell.com>
10815
10816         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
10817         debugging check.
10818
10819 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10820
10821         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
10822         calling generic methods.
10823
10824         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
10825
10826         * aot-runtime.c (decode_patch_info): Ditto.
10827
10828         * mini.c (mono_resolve_patch_target): Ditto.
10829         
10830         * patch-info.h: Add METHOD_RGCTX.
10831
10832         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
10833
10834 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
10835
10836         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
10837         arguments in registers.
10838
10839         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
10840         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
10841
10842         * mini.c (mini_method_compile): Abort aot compilation for generic
10843         methods if generic sharing is disabled.
10844         
10845         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
10846         an mrgctx.
10847
10848         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
10849         requiring an mrgctx.
10850
10851         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
10852         store instructions when converting a vcall to a normal call.
10853
10854         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
10855         mono_arch_find_jit_info.
10856
10857 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
10858
10859         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
10860         avoid calling mono_method_full_name () for every method even if the
10861         env var is not set.
10862         (check_inline_caller_method_name_limit): Ditto.
10863
10864 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10865
10866         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
10867         assemblies in one run.
10868
10869         * aot-compiler.c (mono_compile_assembly): Only print out a count of
10870         skipped methods if it is not 0.
10871
10872         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
10873
10874 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10875
10876         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
10877           MONO_ARCH_HAVE_UNWIND_TABLE.
10878
10879         Contributed under MIT/X11 license.
10880
10881 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10882
10883         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
10884           from default optimizaton list on Winx64.
10885
10886         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
10887
10888         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
10889           the LMF from the MonoJitTlsData structure.
10890
10891         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
10892
10893         Contributed under MIT/X11 license.
10894
10895 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10896
10897         * mini.c (sigsegv_signal_handler): Fix the build.
10898
10899         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
10900         assembly->aot_module.
10901
10902         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
10903         hash table. This simplifies and speeds up a lot of code, and fixes support
10904         for .netmodules.
10905
10906         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
10907         with the runtime.
10908
10909         * mini-exceptions.c: Ditto.
10910         
10911         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
10912         'native_offset' argument, since these are computed in the 
10913         mono_find_jit_info () function.
10914
10915         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
10916         is used by exceptions-ppc.c.
10917
10918         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
10919         mono_arch_find_jit_info ().
10920         
10921         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
10922         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
10923         generic code in mini-exceptions.c.
10924
10925 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
10926
10927         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
10928
10929         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
10930         
10931         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
10932         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
10933         called while holding the loader lock. Fixes #415608.
10934         (mono_aot_get_method_from_token_inner): Ditto.
10935
10936 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
10937
10938         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
10939         to reduce differences between this and the generic implementation in
10940         mini-exceptions.c.
10941         (ves_icall_get_frame_info): Ditto.
10942
10943         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
10944
10945         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
10946         longer neccesarry.
10947
10948         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
10949         mono_arch_get_call_filter () and make it non-static, for consistency with the
10950         other architectures.
10951
10952 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
10953
10954         * mini.c:
10955         * local-propagation.c:
10956         * mini-x86.c: Correct the name of arch defines.
10957
10958 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
10959
10960         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
10961         NO_EMULATE_LONG_SHIFT_OPS define.
10962
10963 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10964
10965         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
10966         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
10967
10968         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
10969         MACH fixes. Merged from the 2.0 branch.
10970
10971         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
10972
10973         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
10974         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
10975
10976         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
10977
10978         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
10979         mono_marshal_get_native_wrapper () signature changes.
10980
10981 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
10982
10983         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
10984         conversion bug under arm.
10985
10986 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
10987
10988         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
10989
10990         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
10991         with overflow checking.
10992
10993 2008-08-05  Marek Habersack  <mhabersack@novell.com>
10994
10995         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
10996         to the genmdesc.pl file
10997
10998 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
10999
11000         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11001         arg_array in the soft-float versions of the LOAD/STORE macros.
11002
11003         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11004         implementation.
11005
11006         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11007
11008 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11009
11010         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11011         a float HFA. Fixes #413621.
11012
11013 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11014
11015         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11016         frame_size to args_size. Fixes build.
11017
11018 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11019
11020         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11021         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11022
11023         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11024         the stack are not unaligned. Fixes #413247.
11025         
11026 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11027
11028         * mini.c: update jitted methods performance counters.
11029
11030 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11031
11032         * mini-exceptions.c: increase the exceptions thrown performance
11033         counter in mono_handle_exception ().
11034
11035 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11036
11037         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11038         can work with netmodules.
11039
11040 2008-07-28  Geoff Norton  <gnorton@novell.com>
11041
11042         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11043         regression tests.
11044
11045 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11046
11047         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11048         correct place.
11049
11050 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11051
11052         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11053           The float param registers and other param registers must be the 
11054           same index on Windows x64.
11055
11056         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11057           ArgValuetypeAddrInIReg argument case.  Setting the argument
11058           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11059
11060         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11061           variable computed above as the copy length for arguments of storage
11062           type ArgValuetypeAddrInIReg.
11063
11064         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11065           ArgValuetypeAddrInIReg argument case.  This case will rely on
11066           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11067
11068         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11069           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11070           jump and tail call instructoins as they do not follow the typical call behavior.
11071
11072         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11073           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11074           local variable and pass the local variable by reference to the called method.
11075
11076         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11077           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11078           of a struct is passed in a register it must be saved with the other
11079           volatile argument on the stack.
11080
11081         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11082           frame pointer the stack adjustment value must be saved to the unwind 
11083           info structure.
11084
11085         Contributed under MIT/X11 license.
11086
11087 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11088
11089         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11090         which got lost in the merge.
11091
11092 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11093
11094         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11095         build.
11096
11097         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11098         
11099         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11100         icalls, since they won't be patched.
11101
11102         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11103         different code sequence when running under valgrind to prevent some valgrind
11104         errors.
11105
11106         * iltests.il.in: Add new regression test.
11107
11108         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11109         end with a throw.
11110
11111         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11112         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11113
11114         * iltests.il.in: Add new test.
11115
11116         * aot-compiler.c: Fix some warnings.
11117
11118         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11119         Fixes #412494.
11120
11121 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11122
11123         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11124         (mini_usage_jitdeveloper): Add a missing --wapi option.
11125
11126 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11127
11128         * mini-codegen.c: Simplify the is_fp macros.
11129         (free_up_ireg): Remove, use free_up_reg instead.
11130         (free_up_reg): Fix the fp case.
11131
11132 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11133
11134         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11135         lowered earlier.
11136
11137         * exceptions-x86.c: Merge some changes which seemed to have got lost
11138         in the linear-ir merge.
11139
11140         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11141
11142         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11143         long vreg volatile even if the variable was already created.
11144
11145         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11146         volatile variables.
11147
11148 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11149
11150         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11151
11152         * mini.c (mono_jit_compile_method_inner): Add support for 
11153         MONO_EXCEPTION_BAD_IMAGE.
11154
11155         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11156         mini_method_get_context () returns NULL. Fixes #356531.
11157
11158         * mini.c (mono_method_to_ir): Ditto.
11159         
11160         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11161         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11162
11163 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11164
11165         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11166         in the LDFTN implementation.
11167
11168 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11169
11170         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11171         code, patch calls to icalls, too, even if they're not in the
11172         shared generic code hash.  Fixes #411962.
11173
11174 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11175
11176         * cpu-x86.md: Increase the length of the fcall opcodes.
11177
11178         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11179         calls returning floats.
11180
11181         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11182         on NEWARR.
11183         
11184         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11185         missed earlier.
11186
11187         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11188         into the domain->method_code_hash.
11189
11190         * aot-compiler.c: Fix win32 build.
11191
11192         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11193         
11194         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11195         gshared NEWARR implementation.
11196
11197         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11198
11199         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11200         can be used outside of method_to_ir.
11201
11202         * mini.h (MonoCompile): Add arg_types field.
11203
11204         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11205         
11206         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11207         the values of the local arg_array and param_types array.
11208
11209 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11210
11211         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11212         got accesses might only get generated later when NEWOBJ is decomposed.
11213         
11214         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11215         looking up the native code of the target method when a delegate is called
11216         for the first time.
11217
11218         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11219         optimization.
11220
11221         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11222
11223         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11224         AOT work on platforms without a working dlsym implementation.
11225
11226         * mini.h: Bump AOT image format version.
11227         
11228 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11229
11230         * mini-exceptions.c: Free a MonoType with
11231         mono_metadata_free_type() instead of g_free().
11232
11233         * aot-runtime.c: Free a MonoType.
11234
11235 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11236
11237         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11238         optimization.
11239
11240         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11241         fp stack on x86.
11242
11243 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11244         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11245         profiler hook.
11246
11247 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11248
11249         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11250         NEWOBJ calls on valuetypes.
11251
11252         * iltests.il.in: Add new test.
11253
11254         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11255
11256 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11257
11258         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11259         is no longer needed.
11260
11261         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11262         non register sized integer arguments.
11263         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11264         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11265         emit_memcpy2 ().
11266
11267         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11268         CEE_MONO_RETOBJ.
11269         
11270         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11271         two a binop with different sized arguments is emitted.
11272
11273         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11274         instruction in the ins==NULL case.
11275
11276 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11277
11278         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11279
11280         * mini-x86.c: Fix osx build.
11281
11282         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11283         opcodes as well.
11284
11285         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11286         instruction for non int sized variables.
11287
11288         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11289         implementation.
11290
11291 2008-07-23  Robert Jordan  <robertj@gmx.net>
11292
11293         * method-to-ir.c: Fix MSVC build.
11294
11295 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11296
11297         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11298         a non int sized type, widen it to an int since newer versions of gcc seem to
11299         generate code which needs this.
11300
11301         * ssa2.c abcremoval2.c: Fix warnings.
11302
11303         * *: Merge the Linear IR branch.
11304
11305         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11306         the ChangeLog file there describes all the changes done over the years. 
11307         Further documentation can be found at www.mono-project.com/Linear_IL.
11308
11309 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11310
11311         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11312           The float param registers and other param registers must be the 
11313           same index on Windows x64.
11314
11315         Contributed under MIT/X11 license.
11316
11317 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11318
11319         * mini.c: Make the previous fix GC safe.
11320
11321 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11322
11323         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11324
11325 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11326
11327         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11328           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11329           ArgValuetypeAddrInIReg instead.
11330
11331         Contributed under MIT/X11 license.
11332
11333 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11334
11335         * mini-codegen.c (get_register_spilling): Fix a warning.
11336
11337 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11338
11339         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11340         for types which the initialization fails. Raises the provided exception
11341         at the right stop after cleanup.
11342
11343 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11344
11345         * aot-compiler.c: Free most of the memory allocated during compilation.
11346
11347         * mini.c (mini_parse_debug_options): Fix a leak.
11348         
11349         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11350         during aot compilation.
11351
11352 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11353
11354         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11355         it has too much register pressure.
11356
11357 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11358
11359         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11360
11361 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11362
11363         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11364         on x86.
11365
11366         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11367         on amd64 similar to the way it is done on arm.
11368
11369         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11370
11371         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11372         consistency, normalize error messages, avoid loading aot-only modules in
11373         normal mode.
11374
11375         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11376         for consistency.
11377
11378         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11379
11380 2008-07-11  Martin Baulig  <martin@ximian.com>
11381
11382         * debug-debugger.h
11383         (MonoDebuggerInfo): Add `interruption_request'.
11384
11385 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11386
11387         * aot-compiler.c (emit_plt): Remove some dead code.
11388
11389         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11390
11391         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11392         return the plt info offset belonging to a given plt entry.
11393
11394         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11395         mono_aot_get_plt_info_offset.
11396         
11397         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11398         similar to the amd64 code by makeing jumps through a separate jump table 
11399         instead of embedding the jump addresses into the code.
11400
11401 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11402
11403         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11404         method.
11405
11406 2008-07-10  Martin Baulig  <martin@ximian.com>
11407
11408         * mini.c (mini_method_compile): Disable generics sharing when
11409         running in the debugger.
11410
11411 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11412
11413         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11414
11415         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11416         the local register allocator from running out of registers on x86 when 
11417         using aot.
11418
11419 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11420
11421         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11422         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11423         C4146.
11424
11425         Contributed under MIT/X11 license.
11426
11427 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11428
11429         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11430         speed up the assembler.
11431
11432 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11433
11434         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11435         support.
11436
11437         * mini.c: Move the soft float handling macros a bit earlier, add 
11438         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11439         place.
11440
11441         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11442
11443         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11444         read-only to help catch code allocation requests.
11445         
11446         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11447         and turn it off when using --aot-only or when compiling with --aot=full.
11448
11449         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11450         jump table for switches from the normal domain mempool, not the code
11451         manager.
11452
11453         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11454         unbox trampoline which handles aot-only mode too.
11455
11456         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11457         an AOTed unbox trampoline.
11458
11459         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11460
11461 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11462
11463         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11464         ""
11465
11466         Contributed under MIT/X11 license.
11467
11468 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11469
11470         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11471           the unwind information for the method at the end of the allocated block.
11472           
11473         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11474           MonoCompileArch to hold the unwind info for SEH on Winx64
11475         
11476         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11477           frame pointer info for the method being compiled.
11478           
11479         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11480           the call to mono_exception_from_token.
11481           
11482         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11483           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11484           information is stored a the end of the method block because it is all 32-bit offset based.
11485
11486         Contributed under MIT/X11 license.
11487
11488 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11489
11490         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11491
11492         * wapihandles.c: Fix warnings.
11493
11494         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11495         mode.
11496
11497         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11498         mono_jit_compile_method in aot-only mode since that calls the type 
11499         initializer.
11500         
11501         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11502         get_delegate_invoke_impl in aot-only mode.
11503
11504         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11505
11506 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11507
11508         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11509
11510         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11511         is on by default.
11512
11513         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11514
11515         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11516         init trampoline from the AOT file as well.
11517
11518         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11519         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11520         code.
11521
11522         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11523         mono_init.
11524
11525         * exceptions-amd64.c: Add _full variants for the remaining exception code
11526         creation functions as well, allow emission of relocatable code, remove
11527         caching since that is now done by the caller.
11528
11529         * mini-exceptions.c: Add _full variants for the remaining exception code
11530         creation functions as well, add aot-only support.
11531
11532         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11533         if we can determine a proper token for them.
11534         (add_wrappers): Add a few more wrappers.
11535         (emit_method_code): Remove some dead code.
11536         (emit_trampolines): Emit exception code too.
11537
11538         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11539
11540         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11541         mono_array_new_va which avoids varargs.
11542
11543         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11544
11545         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11546         mono_arch_create_specific_trampoline () in all places.
11547
11548         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11549         a bit so it can be used for other things as well.
11550         
11551         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11552         on demand as well.
11553
11554         * exceptions-amd64.c: Rename the caching from the exception code creation
11555         functions, it is done by the caller instead.
11556         
11557         * exceptions-amd64.c: Change the signature of the exception code creation 
11558         functions to allow the creation of relocatable code later.
11559
11560         * mini-exceptions.c: Add a set of functions to query the various 
11561         runtime-generated exception functions.
11562
11563         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11564         mono_arch_.. () functions.
11565         
11566 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11567
11568         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11569
11570         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11571
11572         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11573         (mini_get_vtable_trampoline): Ditto.
11574
11575         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11576         code in the AOT case by returning the code size and a list of relocations to
11577         the caller.
11578
11579         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11580
11581 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11582
11583         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11584           clean the stack.
11585
11586         Contributed under MIT/X11 license.
11587
11588 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11589
11590         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11591         so the buffer size can be computed correctly. Fixes #404735.
11592
11593         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11594         normally as cfg->debug_info is already freed.
11595
11596 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11597
11598         * mini-amd64.c: For calls returning vtypes in registers, don't store
11599         the return address on the stack, instead allocate a separate local for
11600         it. Fixes #404729.
11601
11602 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11603
11604         * mini-trampolines.c, mini.h: Add an argument to
11605         mono_create_jit_trampoline_in_domain() for turning off the adding
11606         of the sync wrapper.
11607
11608         * mini.c: Use the JIT trampoline without sync instead of
11609         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11610         be patched.
11611
11612 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11613
11614         * driver.c: Turn on GSHARED optimization by default.
11615
11616 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11617
11618         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11619         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11620
11621         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11622         create a variant of the generic trampoline code callable from AOTed trampolines.
11623
11624         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11625         trampoline code callable from AOTed trampolines.
11626
11627         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11628
11629 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11630
11631         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11632         pass-through manner.
11633
11634         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11635         and don't fail sharing for them anymore.
11636
11637         * mini-exceptions.c: Handle exceptions in shared generic methods.
11638
11639         * generic-sharing.c: When checking the context of a generic
11640         method, also check its class's context.  Don't treat wrappers as
11641         sharable.
11642
11643         * mini-trampolines.c: Some code factored out to
11644         metadata/generic-sharing.c.  Handle the MRGCTX case.
11645
11646         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11647         we must deal with the method being of another instantiation of the
11648         class.  Add static rgctx invoke wrappers to generic methods.
11649
11650 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11651
11652         * mini.c: Provide all jit infos of generic shared methods with a
11653         generic jit info.
11654
11655         * mini-exceptions.c: Handle the new situation that a generic info
11656         might be available, but not info about the this/vtable/mrgctx
11657         variable.
11658
11659 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11660
11661         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11662         generic methods.
11663
11664 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11665
11666         * dominators.c (check_dominance_frontier): Fix a warning.
11667
11668         * mini.h: Add some missing prototypes.
11669
11670         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11671
11672         * driver.c (mono_jit_init_version): Correct the comments since the first
11673         argument should be the name of the root domain, not a filename.
11674
11675         * aot-runtime.c (make_writable): Error out if this is called while running
11676         with --aot-only.
11677         (load_aot_module): Ditto.
11678
11679         * aot-compiler.c: Really fix the computation of method indexes.
11680
11681         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11682         optimizations as this is no longer called frequently.
11683
11684         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11685         method and the invoke impl code and pass it to the delegate trampoline instead of
11686         just the delegate class.
11687
11688 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11689
11690         * aot-compiler.c: Fixup the computation of method indexes.
11691         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11692         the method builder infrastructure.
11693
11694         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11695         has no header.
11696
11697         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11698         mode, load the method right away instead of creating a trampoline.
11699
11700         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11701
11702         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11703         some checks a bit.
11704
11705 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11706
11707         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
11708         (mono_aot_load_method): Use method_index instead of method->token.
11709
11710         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
11711         can handle icalls etc. properly.
11712
11713         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11714
11715         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
11716
11717         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
11718         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
11719         JIT_ICALL_ADDR patch type.
11720
11721         * patch-info.h: Add JIT_ICALL_ADDR patch type.
11722
11723         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
11724         request flag.
11725         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
11726
11727         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
11728
11729 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11730
11731         * mini.c: Use domain->jit_code_hash_lock for controlling access to
11732         domain->jit_code_hash.
11733
11734 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11735
11736         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
11737
11738 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11739
11740         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
11741         get_this_arg_from_call, let it compute it when needed.
11742
11743         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
11744         gsctx from code only when needed.
11745
11746         * mini-trampolines.c (get_generic_context): Rename this to 
11747         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
11748         it can be called by the arch backends.
11749
11750         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
11751
11752 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
11753
11754         * driver.c (mono_main): Add experimental --aot-only command line option.
11755
11756         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
11757         set.
11758
11759 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
11760
11761         * driver.c (DllMain): Remove mono_module_handle.
11762
11763         Contributed under MIT/X11 license.
11764
11765 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
11766
11767         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
11768         for emitting methods which are not in the source assembly. Detect and report
11769         failure of assembling+linking.
11770         
11771         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
11772
11773         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
11774
11775 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
11776
11777         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
11778
11779 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11780
11781         * mini.h: Remove some obsolete prototypes.
11782
11783         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
11784
11785 2008-06-24  Mark Probst  <mark.probst@gmail.com>
11786
11787         * mini.c (get_object_generic_inst): Variable-sized arrays are not
11788         supported by Visual Studio, so use alloca().
11789
11790 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
11791
11792         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
11793         Fixes #402585.
11794
11795 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11796
11797         * mini.c: Fail sharing of a generic method if it contains an open
11798         catch clause (because we don't pass MRGCTXs yet).
11799
11800 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11801
11802         * mini.c: When compiling a method with generic sharing, insert the
11803         method instantiated with an all-Object generic context into the
11804         jit info table, instead of the context of the first instantiation
11805         of the method we happen to compile.
11806
11807 2008-06-18  Martin Baulig  <martin@ximian.com>
11808
11809         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
11810         `major_version' and `minor_version'.
11811
11812 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11813
11814         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
11815         mono_method_is_generic_sharable_impl() takes an additional
11816         argument specifying whether to treat type variables as reference
11817         types.
11818
11819 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11820
11821         * mini.h: Removed obsolete prototypes.
11822
11823 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11824
11825         * mini.c: Don't fail generic sharing for initobj and sizeof - we
11826         already handle them.
11827
11828 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11829
11830         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
11831         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
11832         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
11833         tramp-x86.c: Added a MonoGenericContext* argument to
11834         mono_arch_get_unbox_trampoline() so that it can call other
11835         functions which require it.
11836
11837 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11838
11839         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
11840         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
11841         mono_arch_get_this_arg_from_call() takes a
11842         MonoGenericSharingContext* as well.
11843
11844 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11845
11846         * mini.c: Factor out code for emitting unbox into emit_unbox() and
11847         implement generic sharing of unbox.
11848
11849 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11850
11851         * mini.c: Don't compute the vtable to determine whether a field is
11852         special static, because it might not work for open types.
11853
11854 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11855
11856         * mini.c: Removed the unused token_type and token_source arguments
11857         from get_runtime_generic_context_ptr().
11858
11859 2008-06-17  Marek Habersack  <mhabersack@novell.com>
11860
11861         * mini.c (ADD_BINOP): fix the build
11862
11863 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
11864
11865         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
11866         a widening op.
11867
11868 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11869
11870         * mini.h: Removed class relations enum that's not used anymore.
11871
11872 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11873
11874         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
11875
11876         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
11877         the lazy fetch trampoline access code.
11878
11879 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11880
11881         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
11882
11883 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11884
11885         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
11886
11887         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
11888
11889         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
11890
11891 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11892
11893         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
11894         intrinsics.
11895
11896         * mini-ops.h: Add MIN/MAX_UN opcodes.
11897
11898         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
11899         intrinsics.
11900
11901         * basic-math.cs: Add more min/max tests.
11902
11903         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11904
11905 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11906
11907         * mini.c: Small fix in the prologue of emit_castclass.
11908
11909 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11910
11911         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11912
11913         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
11914         do not work even for unsigned types. Fixes #400014.
11915
11916         * basic-math.cs: Add regression tests for unsigned Min/Max.
11917
11918 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11919
11920         * mini.c: Added additional context_used argument to several
11921         functions, which will be needed for sharing generic methods.  Use
11922         GET_RGCTX macro wherever appropriate.  Declare only one
11923         context_used in mono_method_to_ir().
11924
11925 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11926
11927         * mini.c, generic-sharing.c: Removed generic class relations.
11928
11929         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
11930         functions due to MRGCTX changes.
11931
11932 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11933
11934         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
11935         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
11936         with calculated IMT.
11937
11938         * mini.c: Generic sharing of calls via generic interfaces.
11939
11940         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
11941         generic method with non-constant MonoGenericContext*.  Instead,
11942         the context is taken out of the method itself.
11943
11944 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11945
11946         * mini.c: Generic sharing of ldvirtftn.
11947
11948 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11949
11950         * mini.c: Generic sharing of ldftn.
11951
11952 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11953
11954         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
11955
11956 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11957
11958         * mini.c: Generic sharing of the special case of ldtoken followed
11959         by a call to GetTypeFromHandle.
11960
11961 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11962
11963         * mini.c: Generic sharing of box for nullable types.
11964
11965 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11966
11967         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
11968         are passed on the stack. Fixes #324807.
11969
11970 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
11971
11972         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
11973         for the ArgValuetypeAddrInIReg case.
11974
11975         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
11976         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
11977
11978         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
11979         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11980         local variable and pass the local variable by reference to the called method.
11981           
11982         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
11983         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
11984
11985         Contributed under MIT/X11 license.
11986
11987 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
11988
11989         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
11990
11991         * debug-mini.c (mono_debug_print_vars): Release memory after printing
11992         everything.
11993
11994 2008-06-10  Martin Baulig  <martin@ximian.com>
11995
11996         * debug-mini.c
11997         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
11998
11999 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12000
12001         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12002         possible error when no arguments are passed.
12003
12004         Contributed under MIT/X11 license.
12005
12006 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12007
12008         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12009         where the file name is NULL.
12010
12011 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12012
12013         * mini.c: Fix s390 build.
12014
12015 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12016
12017         * trace.c (mono_trace_parse_options): Fix warnings.
12018
12019         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12020
12021 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12022
12023         * mini.c (remove_block_if_useless): Avoid printing the method name.
12024         
12025         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12026         MONO_INST_NEW.
12027
12028         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12029         LMF. Not yet used.
12030
12031         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12032         translated code after it has been patched.
12033
12034 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12035
12036         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12037         avoid problems during code patching on SMP systems.
12038         (emit_call): Avoid adding a patch info which is already added by 
12039         emit_call_body.
12040         (mono_arch_emit_exceptions): Ditto.
12041
12042 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12043
12044         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12045         MONO_TYPE_ISSTRUCT already checks for it.
12046
12047 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12048
12049         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12050           structs with floats on Winx64 the float registers are not used.  
12051           The integer registers are always used..
12052         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12053           only one register will be used and only if the size of the struct 
12054           is 1,2,4, or 8 bytes.
12055
12056         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12057           to work for Winx64.
12058
12059         Contributed under MIT/X11 license.
12060
12061 2008-06-05  Martin Baulig  <martin@ximian.com>
12062
12063         * debug-debugger.c (debugger_lookup_class): Also call
12064         mono_class_setup_methods() here; we're only called from RTI.
12065
12066 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12067
12068         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12069         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12070         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12071         Post-process object files and add dtrace-generated object, if necessary.
12072
12073         Contributed under MIT/X11 license.
12074
12075 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12076
12077         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12078         element class.
12079
12080         * mini.c: Generic sharing for unbox.any and castclass.
12081
12082 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12083
12084         * mini.c: Ignore tailcall prefix in shared generic code and when
12085         doing calls which require a vtable/rgctx argument.
12086
12087 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12088
12089         * mini.c: Don't free the JIT info.
12090
12091         * driver.c: Changes in the JIT info table testing code.
12092
12093 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12094
12095         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12096         interruption. Fix some warnings.
12097
12098         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12099         interruption_checkpoint.
12100
12101 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12102
12103         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12104         from embedding applications.
12105
12106 2008-06-02  William Holmes  <billholmes54@gmail.com>
12107
12108         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12109           reserving 32 bytes on the stack when making calls. 
12110
12111         Contributed under MIT/X11 license.
12112
12113 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12114
12115         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12116         the linear IL branch.
12117
12118         * driver.c: Print out more information for --version on arm.
12119
12120 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12121
12122         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12123         bb_exit instead, since out of line bblocks might not actually be emitted
12124         out-of-line.
12125         
12126         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12127         maximum epilog size for out of line bblocks if tracing is enabled.
12128
12129         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12130
12131 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12132
12133         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12134
12135 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12136
12137         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12138         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12139         opcodes.
12140
12141 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12142
12143         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12144         the 'value' to store is a constant.
12145
12146         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12147
12148         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12149         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12150
12151 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12152
12153         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12154         for accessing method->generic_container.
12155
12156 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12157
12158         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12159         
12160         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12161
12162         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12163
12164         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12165         fails.
12166
12167 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12168
12169         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12170
12171         * mini.c: Handle the case when mono_class_vtable () fails.
12172
12173 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12174         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12175         the stat profiler.
12176
12177 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12178
12179         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12180         together with domain sharing.
12181
12182 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12183
12184         * mini.c: Treat callvirts to final methods like non-virtual calls
12185         when doing generic sharing, i.e. look them up in the runtime
12186         generic context.
12187
12188 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12189
12190         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12191         with computed types (for generic sharing).
12192
12193         * mini.c: Generic sharing for mkrefany and refanyval.
12194
12195 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12196
12197         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12198         possible.
12199
12200         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12201         the generic sharing code.
12202         
12203         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12204         when needed.
12205
12206 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12207
12208         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12209
12210 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12211
12212         * driver.c: updated copyright date
12213
12214 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12215
12216         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12217         needed.
12218
12219 2008-05-19  Martin Baulig  <martin@ximian.com>
12220
12221         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12222         pointing to the new `_mono_debug_using_mono_debugger' variable.
12223
12224         * driver.c
12225         (mono_main): Check mono_debug_using_mono_debugger() rather than
12226         the `MONO_INSIDE_MDB' environment variable to check whether we're
12227         inside the debugger.
12228
12229 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12230
12231         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12232         argument.
12233
12234 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12235
12236         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12237
12238         * mini.c: Added mini_assembly_can_skip_verification. This
12239         function checks if the assembly requested to skip verification. 
12240         Fixes part of #387274.
12241
12242 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12243
12244         * mini.c (mini_get_method): Disable the check for open generic classes when
12245         using generic sharing.
12246
12247         * generics.cs: Add a test for #387034.
12248
12249         * mini.c (mini_get_method): Check whenever the method class is an open generic
12250         type, and return NULL in that case, causing a verification error. Fixes
12251         #384123.
12252
12253 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12254
12255         * driver.c (mono_main): Revert r102623. The right
12256         thing to do is to enable the verifier under verifiable
12257         unless a --security flag was passed.
12258
12259         We need this non-trivial behavior for --verify-all otherwise
12260         mcs-compileall won't be able to use it. As it needs everything to
12261         be verified under validil.
12262
12263 2008-05-06  Martin Baulig  <martin@ximian.com>
12264
12265         Fix #383749.
12266
12267         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12268         (mono_debugger_thread_cleanup): Likewise.
12269         (mono_debugger_extended_notification): Likewise.
12270
12271 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12272
12273         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12274         against both inflated and non-inflated methods. We need to check against the
12275         generic definition for cases where the instantiated method is not visible.
12276         We need to check against the inflated types for cases where the instantiation
12277         changes any super type. This fixes #382986.
12278
12279         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12280         that check for visibiliy as generic params only appears as the type subject
12281         of tokens on call opcodes. Field manipulation and ldftn must always
12282         target an exact type.
12283
12284 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12285
12286         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12287         if no related --security flag is passed.
12288
12289 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12290
12291         * mini-arch.h: Prepare support for ppc64.
12292
12293         Contributed under MIT/X11 license.
12294
12295 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12296
12297         * aot-runtime.c: Prepare support for ppc64.
12298
12299         Contributed under MIT/X11 license.
12300
12301 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12302
12303         * mini-ops.h: Prepare support for ppc64.
12304
12305         Contributed under MIT/X11 license.
12306
12307 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12308
12309         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12310
12311         Contributed under MIT/X11 license.
12312
12313 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12314
12315         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12316         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12317         assemblies on windows.
12318
12319 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12320
12321         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12322         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12323         * main.c: Use UTF-8 encoded command line instead of Windows default code
12324         page on Windows to support Unicode.
12325         * driver.c (DllMain): New function for mixed-mode assembly support.
12326         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12327         export __stdcall functions without decoration.
12328
12329         Contributed under MIT/X11 license.
12330
12331 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12332
12333         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12334         saving it very early.
12335
12336 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12337
12338         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12339         deleted.  The only way to access the new RGCTX is via the
12340         trampline.
12341
12342         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12343         vtable instead of the RGCTX to static methods.
12344
12345         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12346         accessing the new RGCTX.
12347
12348         * generic-sharing.c: There is no separation between self, type
12349         arguments and other types in the RGCTX anymore.
12350
12351 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12352
12353         * mini-amd64.c (add_general): Remove previous stack adjustment.
12354         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12355         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12356         for 32 bytes of stack space reserved for all calls.
12357         
12358         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12359         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12360         adjustment.
12361         
12362         Code contributed under MIT/X11 license.
12363
12364 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12365
12366         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12367         against the root definition, peeling out method and type instantiations.
12368         Cache verify success results, code that fails verification is still
12369         checked multiple times.
12370
12371 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12372
12373         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12374
12375 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12376
12377         * mini-amd64.c (add_general): Always increment stack on Win64.
12378         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12379         on Win64.
12380         
12381         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12382         stack based argument handling on Win64.
12383         
12384         Code contributed under MIT/X11 license.
12385
12386 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12387
12388         * Makefile.am (version.h): Add support for git-svn.
12389
12390 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12391
12392         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12393         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12394         avoiding allocations and libc functions which might deadlock.
12395         
12396         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12397         'no-gdb-backtrace' option is set.
12398
12399         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12400
12401         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12402
12403 2008-04-21  Martin Baulig  <martin@ximian.com>
12404
12405         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12406         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12407
12408 2008-04-21  Martin Baulig  <martin@ximian.com>
12409
12410         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12411         `thread_vtable', `event_handler_ptr' and `event_handler'.
12412
12413 2008-04-21  Martin Baulig  <martin@ximian.com>
12414
12415         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12416         allows delayed initialization of the `executable_code_buffer' when
12417         attaching.
12418
12419 2008-04-21  Martin Baulig  <martin@ximian.com>
12420
12421         * mini.h (mono_debugger_create_notification_function): Removed.
12422         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12423
12424         * mdb-debug-info64.s
12425         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12426
12427         * mdb-debug-info32.s
12428         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12429
12430         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12431         currently only works on x86 and x86_64, so don't create it on ppc.
12432
12433 2008-04-21  Martin Baulig  <martin@ximian.com>
12434
12435         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12436
12437         * mini.c
12438         (mini_method_compile): In the fp elimination check, check
12439         `debug_options.mdb_optimizations' in addition to
12440         mono_debug_using_mono_debugger().       
12441
12442         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12443         disable some JIT optimizations which are only disabled when
12444         running inside the debugger.
12445         Added `--help-debug' option to describe the debugging options.
12446         (parse_debug_options): New static function to parse the `--debug'
12447         options, so we can easily add more stuff in future.
12448
12449 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12450
12451         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12452         the method has no body.
12453
12454 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12455
12456         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12457         assembly is not allowed in MSVC 64-bit compiler. 
12458         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12459         as we get floating point exceptions everywhere.
12460         
12461         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12462         correctly align arguments for call to throw_exception.
12463         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12464         
12465         Code contributed under MIT/X11 license.
12466
12467 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12468
12469         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12470
12471 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12472
12473         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12474
12475         * mini-amd64.c (NEW_INS): Set cil_code.
12476
12477         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12478         from mini-amd64.c so all debugger related logic is in one place.
12479
12480         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12481         later won't have a random ip assigned to them.
12482
12483 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12484
12485         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12486         the arch specific function initializes code_size.
12487         (mono_create_delegate_trampoline): Ditto.
12488
12489         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12490         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12491         platforms.
12492
12493         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12494         running under the debugger.
12495
12496         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12497         debugger.
12498
12499         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12500         debugger. Also move the disabling of optimizations here from driver.c.
12501         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12502         debugger.
12503
12504         * mini.h (MonoCompile): Add a few new flags.
12505
12506 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12507
12508         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12509         so the cil_code field of created MonoInst's is properly set.
12510         (mini_select_instructions): Ditto.
12511
12512         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12513         (MONO_INST_NEW_CALL): Ditto.
12514
12515         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12516         in many places so the ins->cil_code field is properly initialized.
12517
12518         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12519         place.
12520
12521 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12522
12523         * mini.c (mini_method_compile): Print a different message when compiling a 
12524         shared method.
12525         
12526         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12527         > 1.
12528
12529 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12530
12531         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12532         SSE2 instructions.
12533
12534         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12535         
12536 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12537
12538         * mini.c (handle_stack_args): Make this return void since its return value was
12539         never used. Also set cfg->unverifiable for invalid IL instead of calling
12540         G_BREAKPOINT ().
12541
12542 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12543
12544         * mini.c: Make sure "this" is live in catch clauses with type
12545         variables in shared generic code.
12546
12547 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12548
12549         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12550         generic_class_is_reference_type() to ensure the proper behaviour
12551         when sharing generic code and the type in question is a type
12552         argument.
12553
12554 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12555
12556         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12557         race conditions when printing thread dumps. Fixes #377738.
12558
12559 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12560         
12561         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12562         shows up when both MonoInst arguments can cause aliasig.
12563         There is likely no way in the current JIT to trigger this problem, but
12564         it showed up in the development of generics sharing, when in a new
12565         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12566         When the generics sharing code will be committed, its tests will be
12567         valid also for this bug.
12568
12569 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12570
12571         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12572         PATCH_INFO_METHOD.
12573
12574         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12575         NULL.
12576
12577 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12578
12579         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12580         use a more detailed exception message for InvalidCastException.
12581
12582         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12583
12584         * driver.c (mono_main): Add --debug=casts option to turn on better 
12585         InvalidCastException message details.
12586
12587         * mini.c (mini_get_debug_options): New helper function to return the address of
12588         the debug_options variable.
12589
12590         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12591         the jit_tls TLS variable.
12592
12593         * mini.c (mono_jit_tls): New TLS variable.
12594
12595         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12596         option is used.
12597
12598 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12599
12600         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12601
12602         * mini.c: Removed verifer related stuff, code moved to verify.c.
12603
12604         * driver.c: Using code from verify.c instead of mini.c.
12605
12606 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12607
12608         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12609         longer valid.
12610
12611 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12612
12613         * mini.c (check_for_method_verify): Enabling verification of
12614         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12615         have been fixed.
12616
12617 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12618
12619         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12620         caller saved registers as well.
12621         
12622         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12623         saved registers as well.
12624
12625 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12626
12627         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12628
12629         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12630         code.
12631
12632 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12633
12634         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12635         to get_call_info.
12636         (get_call_info): Take a gsctx argument instead of 'cfg'.
12637
12638 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12639
12640         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12641         mono_verify_all is set.
12642
12643         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12644
12645         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12646
12647 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12648
12649         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12650         an exception.
12651
12652         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12653         verifier and the code generated by the compiler.
12654
12655 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12656
12657         * mini.c: Generic sharing of the non-nullable case of the box
12658         instruction.
12659
12660 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12661
12662         * inssel.brg: Fix the build.
12663
12664         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12665
12666 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12667
12668         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12669         Array:Address. Fixes #372410.
12670
12671         * iltests.il.in: New tests for readonly prefix.
12672
12673 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12674
12675         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12676         mini-trampolines.c.
12677
12678         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12679         mini-exceptions.c.
12680
12681         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12682         
12683         * mini.c (mono_decompose_op_imm): New helper function.
12684
12685         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12686         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12687         return value.
12688
12689         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12690         mono_arch_output_basic_block. Fix warnings.
12691
12692         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12693         for now.
12694
12695 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12696
12697         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12698         since the extra frame is now detected automatically inside the loop.
12699
12700         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12701         opts which are now in mono_peephole_ins ().
12702         
12703         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12704
12705         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
12706         frames and skip duplicate managed-to-native frames. Fixes #367665.
12707
12708         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12709         opts which are now in mono_peephole_ins ().
12710         (mono_arch_peephole_pass_2): Ditto.
12711
12712         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
12713
12714         * mini-codegen.c (mono_peephole_ins): New helper function containing the
12715         arch independent peephole optimizations.
12716
12717         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12718         opts which are now in mono_peephole_ins ().
12719
12720         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
12721         
12722         * mini-s390.c (mono_arch_output_basic_block): Fix build.
12723
12724         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
12725         pattern.
12726
12727         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
12728         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
12729         opcode. 
12730
12731 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
12732
12733         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
12734         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12735         return value.
12736
12737         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12738         mono_arch_output_basic_block. Fix warnings.
12739
12740 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12741
12742         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12743         conv.ovf.u.un.
12744
12745 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12746
12747         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12748         conv.ovf.u.un.
12749
12750         * iltests.il: Add new tests.
12751
12752 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
12753
12754         * mini.c: Removed Windows version macros.
12755
12756 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12757
12758         * generic-sharing.c: Put reflection types in the extensible part
12759         of the runtime generic context.
12760
12761         * mini.c: Generic sharing of the GetTypeHandle special case of the
12762         ldtoken instruction.
12763
12764 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12765
12766         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
12767
12768         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
12769         
12770         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
12771         consistency with the other version on the linear IR branch.
12772
12773         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
12774
12775         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
12776
12777         * iltests.il.in: Add new tests.
12778
12779 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
12780
12781         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
12782
12783         * iltests.il.in: Add new tests.
12784
12785 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12786
12787         * mini.c: Two variables with the same name were declared in
12788         nesting contexts and one wasn't initialized.  Fixed.
12789
12790 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12791
12792         * mini.c: Generic sharing of the initobj instruction.
12793
12794 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
12795
12796         * mini.c: make the test to optimize ldtoken from typeof() more
12797         precise.
12798
12799 2008-03-18  Mark Probst  <mark.probst@gmail.com>
12800
12801         * mini.c: Generic sharing of the initobj instruction for reference
12802         types.
12803
12804 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
12805
12806         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
12807         the mono_breakpoint_clean_code() code to perform bound checks.
12808
12809 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
12810
12811         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
12812         mono_arch_patch_callsite() to include the start of the managed method
12813         to be able to perform bound checks.
12814
12815 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12816
12817         * mini.c: Generic sharing for the isinst instruction.
12818
12819 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12820
12821         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12822         inssel-long32-mips.brg: Added opcodes for doing indirect calls
12823         with the runtime generic context argument.
12824
12825         * mini.c: Share calls to several types of unsharable methods by
12826         putting the address of the method code in the runtime generic
12827         context and doing an indirect call.
12828
12829         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12830         to switches.
12831
12832 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12833
12834         * generic-sharing.c: Change due to a change in the runtime genric
12835         context API.
12836
12837 2008-03-15  Martin Baulig  <martin@ximian.com>
12838
12839         * tramp-x86.c
12840         (mono_arch_nullify_class_init_trampoline): Add call to
12841         mono_breakpoint_clean_code() to make things work when running
12842         inside the debugger.
12843
12844         * tramp-amd64.c
12845         (mono_arch_nullify_class_init_trampoline): Add call to
12846         mono_breakpoint_clean_code() to make things work when running
12847         inside the debugger.
12848
12849 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12850
12851         * inssel-long.brg (reg): Fix 64 bit build.
12852
12853 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12854
12855         * mini.c, mini.h: Share static generic code by passing it an
12856         implicit argument pointing to the runtime generic context.
12857
12858         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12859         inssel-long32-mips.brg: New opcodes for calling shared static,
12860         which need to be passed the runtime generic context.
12861
12862         * mini-amd64.c, mini-x86.c: Save the runtime generic context
12863         argument on the stack in the prologue if needed.  New function for
12864         finding the runtime generic context argument from the registers
12865         saved by the trampoline.
12866
12867         * mini-amd64.h, mini-x86.h: Specify which register to use for the
12868         runtime generic context argument.
12869
12870         * tramp-amd64.c: Also restore the register used for the runtime
12871         generic context argument.
12872
12873         * mini-trampoline.c: Resolve shared static calls by consulting the
12874         runtime generic context via the new argument.
12875
12876         * generic-sharing.c: Add an argument to sharability-checking
12877         functions that specifies whether type variables should be treated
12878         as sharable type arguments.
12879
12880         * inssel-x86.brg: Removed a superfluous, buggy rule.
12881
12882         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12883         to switches.
12884
12885 2008-03-14  Martin Baulig  <martin@ximian.com>
12886
12887         * debug-debugger.c (main_thread_handler): Call
12888         mono_runtime_run_main() without sending any notifications.
12889
12890         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
12891
12892 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12893
12894         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
12895
12896 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12897
12898         * tramp-x86.c: Fixed register restore offsets in the trampoline
12899         code for ECX and EDX.
12900
12901 2008-03-12  Geoff Norton  <gnorton@novell.com>
12902
12903         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
12904         different ucontext_t implementations.
12905         * exceptions-arm.c: Use the above defines to get exceptions working on 
12906         iPhone (based on a patch by Luke Howard lukeh@padl.com)
12907         * mini-arm.c: Implement iPhone icache support (based on a patch by
12908         Luke Howard lukeh@padl.com)
12909
12910 2008-03-12  Mark Probst  <mark.probst@gmail.com>
12911
12912         * mini.c: Enable generic sharing of calls to non-static
12913         non-interface non-generic non-value-type methods.
12914
12915         * mini-trampolines.c: Resolve calls from shared generic code.
12916
12917 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
12918
12919         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
12920
12921         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
12922
12923 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
12924
12925         * mini.c: some fixes for the AOT compiler.
12926
12927 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12928
12929         * cpu-amd64.md: Add clob:1 to some float opcodes.
12930
12931 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
12932
12933         * mini.h: Added MiniVerifierMode enumeration.
12934
12935         * mini.c: Added mini_verifier_set_mode to control
12936         the usage of the new verifier.
12937
12938         * mini.c (mono_method): Integrated the new verifier.
12939
12940         * driver.c: Extended --security option with validil and
12941         verifiable options to activate the new verifier.
12942
12943 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12944
12945         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
12946         optimization to ctors taking 0 or 2 arguments too.
12947
12948         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
12949         a bit.
12950
12951         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
12952
12953         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
12954
12955 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
12956
12957         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
12958         non-aot case as well.
12959
12960         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
12961
12962         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
12963         changes.
12964
12965         * aot-compiler.c (encode_patch): Ditto.
12966
12967         * mini.h (G_MININT32): Fix the definition of this.
12968
12969 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
12970
12971         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
12972
12973         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
12974
12975 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12976
12977         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
12978         methods returning vtypes in registers.
12979         (mono_arch_allocate_vars): Ditto.
12980
12981         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
12982
12983         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
12984
12985         * generics.cs: Add a test from the linear IR branch.
12986
12987         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
12988
12989         * mini.c (inline_method): Cache failed inline attempts.
12990
12991 2008-03-04  Mark Probst  <mark.probst@gmail.com>
12992
12993         * mini.c: For shared methods of generic classes put the location
12994         of "this" into the MonoGenericJitInfo.
12995
12996         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
12997         register out of a MonoContext by register number.  Add the generic
12998         sharing context as an argument to mono_arch_find_this_argument().
12999
13000         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13001         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13002         for new arch function.
13003
13004         * mini-exception.c: Handle open exception clauses in shared
13005         generic code.
13006
13007         * mini-trampolines.c: Supply additional argument to
13008         mono_arch_find_this_argument().
13009
13010 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13011
13012         * Makefile.am (regtests): Run the bench.exe tests last.
13013
13014 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13015
13016         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13017         a bit.
13018
13019 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13020
13021         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13022         with MS.
13023
13024         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13025         
13026         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13027
13028         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13029         whose class has no cctor.
13030
13031         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13032
13033 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13034
13035         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13036         unverified.
13037
13038 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13039
13040         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13041         to be in sync with the code on the linear IR branch.
13042
13043         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13044
13045         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13046
13047 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13048
13049         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13050
13051         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13052
13053         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13054
13055         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13056
13057         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13058         
13059         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13060         body.
13061
13062 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13063
13064         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13065         OP_LOADR4_MEMBASE emission.
13066
13067         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13068         (mono_spillvar_offset_float): Ditto.
13069
13070         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13071
13072         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13073         emission.
13074
13075         * basic-long.cs: Add regression tests for them.
13076
13077         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13078         use.
13079         (mono_arch_allocate_vars): Fix representation of single-precision float
13080         argument.
13081         (mono_arch_output_basic_block): Ditto.
13082
13083         * inssel-mips.brg: Ditto, remove duplicate items.
13084
13085         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13086         arguments of tail calls as on other platforms.
13087         (mono_arch_output_basic_block): Handle tail calls.
13088
13089         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13090         register.
13091
13092         * objects.cs (test_5_pass_static_struct): Add test for it.
13093
13094         Contributed under MIT/X11 license.
13095
13096 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13097
13098         * Makefile.am: Use gmcs for compiling the regression tests.
13099
13100         * *.2.cs *.2.il: Rename to *.cs and *.il.
13101
13102 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13103
13104         * regalloc.h: Make the vassign array smaller.
13105
13106         * mini.c (mini_method_compile): Remove an unused field in cfg.
13107
13108         * mini-codegen.c: Add a bunch of micro optimizations.
13109
13110 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13111
13112         * regalloc.h: Remove some unused fields.
13113
13114 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13115
13116         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13117
13118         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13119
13120 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13121
13122         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13123
13124         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13125         trampoline: Fetch an entry from the runtime generic context.  If
13126         it's NULL, jump to the actual trampoline to fill the runtime
13127         generic context.  Otherwise, return it.
13128
13129         * mini.c: Call the lazy fetch trampoline to get entries out of the
13130         runtime generic context.
13131
13132         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13133         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13134         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13135
13136 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13137
13138         * mini.c: Fetch data out of the extensible part of the runtime
13139         generic context instead of calling a helper function.
13140
13141         * generic-sharing.c: Some functions moved into
13142         metadata/generic-sharing.c.  Helper function for fetching other
13143         types now checks and asserts against extensible rgctx (just for
13144         debugging purposes - the helper function isn't called anymore
13145         unless for debugging).
13146
13147 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13148
13149         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13150         for tail calls up to the point that the tests in iltests.exe run. Also add a
13151         dummy CKFINITE implementation.
13152         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13153         needed for trampoline LMF frames.
13154
13155         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13156         trampoline LMF frames.
13157
13158 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13159
13160         * mini.c (inline_method): clean any pending loader error when inlining fail.
13161         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13162
13163 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13164
13165         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13166
13167         * aot-runtime.c (decode_patch_info): Ditto.
13168
13169         * mini.c (mono_resolve_patch_target): Ditto.
13170         
13171         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13172         icall wrappers.
13173
13174         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13175         
13176         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13177         if it references an icall address.
13178
13179 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13180
13181         * cpu-s390x.md: Remove some more unused opcodes.
13182         
13183         * cpu-s390x.md: Remove some unused opcodes.
13184
13185         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13186         mono_op_imm_to_op ().
13187
13188         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13189         instead of a switch statement.
13190         
13191         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13192         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13193
13194         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13195         
13196         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13197
13198         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13199         -1.
13200
13201 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13202
13203         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13204         opened. Fixes #362607.
13205
13206         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13207
13208         * iltests.il.in: Add a test for static methods in interfaces.
13209
13210 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13211
13212         * genmdesc.c (build_table): Fix a crash on older glib versions.
13213
13214         * cpu-sparc.md: Remove some unused opcodes.
13215         
13216         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13217         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13218
13219         * cpu-amd64.md: Remove some unused opcodes.
13220
13221         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13222         like the other opcodes.
13223
13224 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13225
13226         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13227
13228         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13229
13230         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13231         variables 'cfg' instead of 'm' for consistency.
13232
13233         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13234
13235         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13236         argument holding the vtype return address, to avoid the ambigious use of
13237         cfg->ret for this purpose.
13238
13239         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13240
13241         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13242         
13243         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13244         new mono_print_ins () function which only takes one argument.
13245
13246 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13247
13248         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13249         macro arguments.
13250
13251 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13252
13253         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13254
13255         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13256
13257         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13258         opcodes and other small changes.
13259
13260         * mini-ops.h: Add some new opcodes from the linear IR branch.
13261
13262         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13263
13264         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13265         opcodes, use the REG_MEMBASE opcodes instead.
13266         
13267         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13268         opcodes, use the REG_MEMBASE opcodes instead.
13269         
13270         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13271         linear IR branch.
13272
13273         * mini.c (mono_op_imm_to_op): New helper function.
13274
13275         * mini-ops.h: Add some opcodes from linear IR branch.
13276
13277 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13278
13279         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13280         <tsv@solvo.ru>.
13281
13282 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13283
13284         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13285         OP_ICONV_TO_R4/R8.
13286
13287         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13288
13289 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13290
13291         * aot-compiler.c (emit_method_code): Add an assert.
13292
13293         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13294         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13295         methods.
13296
13297 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13298
13299         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13300         some load/store opcodes so they are consistent. 
13301         (mono_arch_emit_prolog): Simplify some code.
13302
13303         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13304
13305         * objects.cs: Add tests for large argument offsets on ARM.
13306
13307         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13308         stack offsets. Fixes #359651.
13309
13310         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13311
13312         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13313
13314         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13315
13316         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13317
13318         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13319
13320         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13321         rid of CEE_CONV_R_UN.
13322
13323         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13324
13325 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13326
13327         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13328
13329         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13330
13331         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13332
13333         * cpu-amd64.md: Remove some unused opcodes.
13334
13335         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13336
13337         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13338
13339         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13340         arch specific functions for its parts. Call the peephole pass after local
13341         regalloc so the prolog can compute a more accurate max_offset.
13342         
13343         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13344         the corresponding OP_I/OP_L opcodes.
13345
13346         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13347
13348         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13349
13350 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13351
13352         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13353         as they are handled in mini.c.
13354
13355         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13356         
13357         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13358         case since it is handled in mini.c.
13359
13360         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13361
13362         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13363
13364         * *.c: Use the new opcodes in the IR and back end code.
13365
13366         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13367
13368         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13369
13370 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13371
13372         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13373         an assert because it has a race condition.
13374
13375 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13376
13377         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13378
13379         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13380
13381         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13382
13383         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13384         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13385
13386 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13387
13388         * cpu-amd64.md (move): Correct the maximum size of move.
13389
13390 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13391
13392         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13393         the generic class init trampoline to return quickly if the class
13394         is already inited.
13395
13396 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13397
13398         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13399         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13400
13401 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13402
13403         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13404         branch.
13405
13406 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13407
13408         * objects.cs: Add some soft-float tests.
13409
13410         * mini.c: Fix a couple more soft-float issues.
13411
13412         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13413
13414         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13415         avoid a REX prefix.
13416
13417 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13418
13419         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13420         exception happens while compiling a virtual method.
13421
13422 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13423
13424         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13425         
13426         * mini-sparc.c: Fix build.
13427
13428         * mini-sparc.c (get_call_info): Add support for generic sharing.
13429
13430         * mini-exceptions.c: Add a FIXME.
13431
13432 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13433
13434         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13435         altstack handling code.
13436
13437         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13438         
13439         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13440
13441         * mini-s390.c: Add support for generic sharing.
13442
13443         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13444         Fix CAS on s390.
13445         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13446
13447         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13448
13449         * mini-s390x.c: Add support for generic sharing.
13450         
13451         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13452         Fix CAS on ia64.
13453         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13454
13455         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13456         can be used since it takes a 16 bit signed immediate.
13457
13458         * inssel-s390x.brg: Fix OP_SETRET.
13459
13460         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13461
13462         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13463
13464         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13465
13466         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13467
13468         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13469         in one place.
13470
13471         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13472         stuff.
13473
13474         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13475         of the unused mono_arch_patch_delegate_trampoline stuff.
13476
13477 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13478
13479         * basic-long.cs: Move the fp related tests to basic-float.cs.
13480
13481         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13482
13483         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13484
13485         * basic-calls.cs: Add a test for proper float argument passing.
13486
13487         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13488         if the context corresponds to an exception received through a signal.
13489
13490         * exceptions.cs: Add a test for nullref handling at the start of a try
13491         clause.
13492
13493         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13494
13495         * jit-icalls.c (mono_break): New JIT icall.
13496
13497         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13498
13499         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13500
13501 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13502
13503         * cpu-*.md: Get rid of unused opcodes.
13504
13505         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13506
13507         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13508         by all platforms.
13509
13510         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13511         define.
13512
13513         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13514         the arch independent trampoline code in mini-trampolines.c.
13515
13516         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13517
13518         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13519
13520         * mini-s390.h: Remove an unused define.
13521         
13522         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13523         the arch independent trampoline code in mini-trampolines.c.
13524
13525         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13526
13527 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13528
13529         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13530
13531         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13532
13533         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13534
13535         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13536
13537         * cpu-amd64.md: Use smaller sizes for int opcodes.
13538
13539         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13540
13541         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13542         objects.cs.
13543
13544         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13545         debugging.
13546
13547         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13548         instead of though a pointer to save an indirection when accessing elements of
13549         the array.
13550
13551         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13552         some typos.
13553         (NOT_IMPLEMENTED): New helper macro.
13554         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13555         of a bb.
13556
13557         * *.c: Use the new helper macro.
13558
13559 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13560
13561         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13562
13563 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13564
13565         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13566         stack slots.
13567
13568 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13569
13570         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13571         profiling is enabled.
13572         
13573         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13574         the end.
13575         (mono_arch_emit_prolog): Add more first bblock optimizations.
13576
13577         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13578         in order if possible.
13579         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13580         bblock, since the arguments are still in their original registers.
13581
13582         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13583
13584 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13585
13586         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13587         as well.
13588
13589         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13590         offset 0.
13591
13592         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13593
13594         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13595         process async exceptions received while in unmanaged code.
13596
13597         * mini.c (mini_init): Install a callback with the runtime which will be called
13598         when a thread receives an async exception while in unmanaged code.
13599
13600         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13601
13602         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13603
13604 2008-01-16  Wade Berrier  <wberrier@novell.com>
13605
13606         * cpu-g4.md:
13607         * cpu-arm.md:
13608         * cpu-s390x.md:
13609         fix build
13610
13611 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13612
13613         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13614         compilation with sun cc.
13615
13616         * cpu-*.md: Fix the build.
13617
13618         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13619
13620         * mini-amd64.h: Add some comments to the MonoLMF structure.
13621
13622         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13623         
13624         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13625         in the LMF structure if possible. This saves two instructions in the
13626         managed->native wrappers.
13627
13628         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13629
13630 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13631
13632         * generic-sharing.c: New type argument lookup code which uses the
13633         runtime generic context template.
13634
13635 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13636
13637         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13638
13639         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13640         (mono_arch_output_basic_block): Fix localloc implementation.
13641
13642         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13643
13644         * mini-ia64.c (peephole_pass): Fix ia64 build.
13645
13646         * mini-amd64.c (peephole_pass): Fix a warning.
13647         
13648         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13649         at a constant offset from sp/fp.
13650
13651         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13652         instead of obtaining it from *lmf in the managed method case.
13653
13654 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13655
13656         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13657
13658 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13659
13660         * mini.h (MonoInstList): New type.
13661         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13662         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13663         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13664         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13665         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13666         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13667         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13668         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13669         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13670         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13671         MONO_INST_LIST_FOR_EACH_ENTRY,
13672         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13673         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13674         mono_inst_list_first, mono_inst_list_last,
13675         mono_inst_list_next, mono_inst_list_prev): New instruction
13676         list handling interfaces.
13677         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13678         list head 'ins_list'.
13679         (MonoInst): Replace next pointer with list head 'node'.
13680         (MonoCallInst): Make 'out_args' a MonoInstList.
13681         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13682         (MonoCompile): Delete reverse_inst_list and
13683         reverse_inst_list_len.
13684         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13685         mono_arch_lowering_pass, mono_arch_local_regalloc,
13686         mono_arch_output_basic_block, mono_arch_emit_prolog):
13687         Convert to new instruction lists.
13688         (insert_after_ins): Delete.
13689         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13690         instruction lists.
13691         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13692         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13693         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13694         mono_emulate_opcode, mono_emit_load_got_addr,
13695         inline_method, mono_method_to_ir, mono_print_bb_code,
13696         print_dfn, decompose_pass, nullify_basic_block,
13697         replace_out_block_in_code, remove_block_if_useless,
13698         merge_basic_blocks, move_basic_block_to_end,
13699         try_unsigned_compare, optimize_branches, mono_print_code,
13700         mini_select_instructions, remove_critical_edges): Likewise.
13701         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13702         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13703         mono_arch_output_basic_block, mono_arch_emit_prolog):
13704         Likewise.
13705         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
13706         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13707         mono_arch_output_basic_block): Likewise.
13708         (inst_list_prepend, insert_after_ins): Delete.
13709         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
13710         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
13711         instruction lists.
13712         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
13713         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
13714         mono_arch_emit_prolog): Likewise.
13715         * cfold.c (mono_constant_fold): Likewise.
13716         * liveness.c (visit_bb, mono_analyze_liveness,
13717         optimize_initlocals): Likewise.
13718         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
13719         * graph.c (mono_draw_code_cfg): Likewise.
13720         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
13721         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
13722         mono_ssa_cprop): Likewise.
13723         * abcremoval (get_relations_from_previous_bb, process_block):
13724         Likewise.
13725         * local-propagation (mono_cprop_invalidate_values,
13726         mono_local_cprop_bb): Likewise.
13727         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
13728         peephole_pass, mono_arch_output_basic_block,
13729         mono_arch_emit_prolog): Likewise.
13730         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
13731         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13732         mono_arch_emit_prolog): Likewise.
13733         (insert_after_ins): Delete.
13734         * aliasing.c (print_code_with_aliasing_information,
13735         mono_build_aliasing_information, mono_aliasing_deadce):
13736         Convert to new instruction lists.
13737         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
13738         peephole_pass, NEW_INS, mono_arch_lowering_pass,
13739         mono_arch_local_regalloc, mono_arch_output_basic_block):
13740         Likewise.
13741         (insert_after_ins): Delete.
13742         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
13743         peephole_pass, mono_arch_output_basic_block): Convert to
13744         new instruction lists.
13745         * mini-codegen (InstList, inst_list_prepend,
13746         insert_after_ins): Delete.
13747         (insert_before_ins, get_register_force_spilling,
13748         get_register_spilling, free_up_ireg, free_up_reg,
13749         create_copy_ins, create_spilled_store, alloc_int_reg,
13750         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
13751         to new instruction lists.
13752         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
13753         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13754         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
13755         (insert_after_ins): Delete.
13756         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
13757         mono_arch_local_regalloc, mono_arch_output_basic_block,
13758         mono_arch_call_opcode): Convert to new instruction lists.
13759         (insert_after_ins): Delete.
13760         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
13761         peephole_pass, mono_arch_output_basic_block,
13762         mono_arch_emit_prolog): Convert to new instruction lists.
13763
13764 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13765
13766         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
13767
13768         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
13769         Fixes #353182.
13770
13771         * Makefile.am (version.h): Make this work with non-bash shells.
13772
13773 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13774
13775         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
13776
13777 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13778
13779         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
13780         the InitializeArray optimization.
13781
13782 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13783
13784         * mini.c driver.c: Don't include os/gc_wrapper.h.
13785
13786 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13787
13788         * mini.c (print_jit_stats): Print GC statistics if available.
13789
13790 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
13791
13792         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
13793
13794 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
13795
13796         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
13797
13798 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
13799
13800         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
13801         
13802         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
13803
13804         * driver.c (mono_main): Ditto.
13805
13806 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
13807
13808         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
13809
13810         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
13811         in the vtable can't be encoded.
13812         (compile_method): Ditto.
13813
13814 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
13815
13816         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
13817         defined.
13818
13819         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
13820         lmf->rbp.
13821
13822         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
13823         the top LMF entry belongs to the current method.
13824
13825         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
13826
13827 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
13828
13829         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
13830         
13831         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
13832
13833         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
13834
13835         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
13836
13837         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
13838
13839         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
13840         implementation.
13841
13842         * basic-float.cs: Add an ulong->double cast test.
13843
13844 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
13845
13846         * mini.c (mono_method_to_ir): Fix a warning.
13847
13848 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
13849
13850         * mini-ops.h: Add OP_SWITCH.
13851
13852         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
13853         CEE_SWITCH in back-end code, use OP_SWITCH instead.
13854
13855 2007-12-11  Geoff Norton  <gnorton@novell.com>
13856
13857         * mini-s390x.c: Minor change to the MAX() define to allow
13858         it to compile with other gcc versions.
13859
13860 2007-12-11  Geoff Norton  <gnorton@novell.com>
13861
13862         * cpu-s390x.md:
13863         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
13864
13865 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13866
13867         exceptions-arm.c (mono_arch_get_restore_context): Restore
13868         the frame pointer.
13869
13870         exceptions-arm.c (throw_exception): Save the frame pointer.
13871         This is a partial fix for #323747. Only the client side is
13872         fixed.
13873
13874 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13875
13876         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
13877         was using an unrelated variable to log the class which
13878         needed the cctor to be called. This was crashing on arm.
13879
13880 2007-12-09  Robert Jordan  <robertj@gmx.net>
13881
13882         * mini-x86.c (mono_arch_emit_epilog):
13883         Consider all kinds of 64-bit types. Fixes #323114.
13884
13885 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
13886
13887         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
13888
13889 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13890
13891         * mini-amd64.c (peephole_pass): Add a missing instruction check.
13892
13893 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13894
13895         * mini.c: run type ctor before allocating an object, not only
13896         when running it's constructor method (fixes at least part of bug #342507).
13897
13898 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13899         
13900         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
13901         
13902         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
13903         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
13904         function.
13905
13906         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
13907         mono_generic_class_init_trampoline () the same as it is done with the other
13908         trampolines.
13909
13910         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
13911         aot-runtime.c aot-compiler.c: Implement AOT support.    
13912
13913 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13914
13915         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
13916         build for archs which don't have the vtable trampoline defined
13917         yet.
13918
13919 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13920
13921         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
13922
13923         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
13924
13925         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
13926
13927         * tramp-<ARCH>.c: Use the new helper function.
13928
13929 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13930
13931         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
13932         trampoline call, which takes a vtable argument.
13933
13934         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
13935         OP_TRAMPCALL_VTABLEs like other calls.
13936
13937         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
13938         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
13939         call.  Implemented a support function which fetches the vtable
13940         from a register set.
13941
13942         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
13943         Implemented a generic class init trampoline, using the
13944         OP_TRAMPCALL_VTABLE opcode.
13945
13946         * mini.c: Implemented static field access when sharing generic
13947         code.  This implies initing the class using the new
13948         OP_TRAMPCALL_VTABLE call.
13949
13950 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13951
13952         * mini.c: Don't compile methods with sharing enabled if their
13953         classes are disabled for sharing.
13954
13955 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
13956
13957         * inssel.brg: Add a missing sign extension to the GETCHR and array access
13958         opcodes. Fixes #346563.
13959
13960         * objects.cs: Add a new test.
13961
13962         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
13963
13964         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
13965         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
13966
13967 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
13968
13969         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
13970
13971 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
13972
13973         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
13974         code stream.
13975
13976 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
13977
13978         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
13979
13980         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
13981         optimization in the AOT case.
13982         
13983 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
13984
13985         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
13986         
13987         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
13988
13989         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
13990
13991         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
13992
13993         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
13994         is created by the inlined delegate ctor.
13995
13996         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
13997
13998         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
13999
14000 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14001
14002         * cpu-x86.md: Fix the length of ckfinite.
14003
14004 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14005
14006         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14007         
14008         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14009         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14010
14011         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14012
14013         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14014         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14015
14016 2007-11-28  Martin Baulig  <martin@ximian.com>
14017
14018         * mini-x86.c
14019         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14020         after creating the trampoline.
14021
14022 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14023
14024         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14025
14026         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14027         the same version.
14028
14029         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14030         instead of the calling method to help AOT.
14031
14032         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14033
14034 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14035
14036         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14037         is defined.
14038
14039 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14040
14041         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14042         
14043         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14044         (encode_method_ref): No need to handle generic method definitions specially.
14045
14046         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14047
14048         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14049         decode_klass_info.
14050
14051         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14052         encode_klass_info.
14053         (compile_method): Enable generic sharing.
14054
14055 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14056
14057         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14058         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14059
14060         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14061         generic code.
14062
14063         * mini-trampolines.c: Fix a warning.
14064
14065         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14066         NEW_PCONST.
14067         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14068         (generic_class_is_reference_type): Remove unused function.
14069
14070         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14071         in the generic vtable trampoline case.
14072
14073         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14074         
14075         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14076         return an AOT method based on a vtable slot.
14077
14078         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14079
14080         * mini.c (mini_get_vtable_trampoline): Export this.
14081
14082 2007-11-22  Martin Baulig  <martin@ximian.com>
14083
14084         * debug-debugger.h
14085         (MonoDebuggerInfo): Move `debugger_version' up.
14086
14087 2007-11-22  Martin Baulig  <martin@ximian.com>
14088
14089         * mini-amd64.c
14090         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14091
14092         * mini-trampolines.c
14093         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14094         after compiling the method.
14095
14096 2007-11-20  Martin Baulig  <martin@ximian.com>
14097
14098         * debug-mini.c
14099         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14100         (mono_debugger_remove_breakpoint): Likewise.
14101         (mono_debugger_check_breakpoints): Likewise.
14102
14103         * debug-debugger.c: Implement the new breakpoint interface here.
14104
14105 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14106
14107         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14108         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14109
14110         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14111
14112 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14113
14114         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14115
14116         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14117         mini.c.
14118
14119         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14120         mini.c.
14121
14122         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14123         returning a vtype in a register.
14124
14125         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14126         here from the arch specific code.
14127
14128         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14129         mini.c.
14130
14131         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14132         (mono_arch_emit_prolog): Increment maximum prolog size.
14133
14134         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14135         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14136
14137         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14138         MonoGenericSharingContext.
14139
14140         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14141         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14142
14143 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14144
14145         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14146         which extract fields out of the runtime generic context.  Full
14147         sharing of the NEWARR opcode.
14148
14149 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14150
14151         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14152         --enable-minimal=ssa.
14153
14154 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14155
14156         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14157         mono_marshal_get_delegate_invoke () signature change.
14158
14159 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14160
14161         * mini.c: Removed the shared context in favor of the generic
14162         sharing context.  Allocate the MonoJitInfo structure with room for
14163         the generic sharing context if it's needed.
14164
14165         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14166         domain-internals.h now.
14167
14168         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14169
14170         * generic-sharing.c: Several changes for working without a shared
14171         context and instead operating on open types instead.
14172
14173 2007-11-12  David S. Miller  <davem@davemloft.net>
14174
14175        * inssel-sparc.brg: Fix double instruction emit.
14176
14177 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14178
14179         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14180         Get/Set/Address methods.
14181         
14182         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14183         mono_marshal_get_delegate_invoke signature change.
14184
14185 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14186
14187         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14188         This can happens with dynamic methods. Fixes the other bug in #322722.
14189
14190 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14191
14192         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14193         BX call sequence.
14194
14195         * mini-arm.c (arm_patch): Implement patching of BX call
14196         sequence. Fixes one of the bugs in #322722.
14197
14198 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14199
14200        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14201        under Linux.  We only need to flush every 32-byte cache line.    
14202
14203 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14204
14205         * mini.c:
14206         move_basic_block_to_end: Add branches when needed, eventually creating
14207         a new BB.
14208         optimize_branches: added a parameter that tells if it's ok to create
14209         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14210         and avoid calling move_basic_block_to_end when it's not ok.
14211         Fixes bug 318677.
14212
14213 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14214
14215         * mini.c: Abort inlining call to InitializeArray if something
14216         looks wrong.  Let the icall handle it, which now has proper safety
14217         checks.
14218
14219 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14220
14221         * mini.c (mono_spill_call): add support for soft-float.
14222
14223         * mini.c (mono_method_to_ir): add support for soft-float
14224         to inlined functions that return float.
14225
14226         * mini.c (mono_method_to_ir): add support for soft-float
14227         to cee_stsfld opcode on float fields.
14228
14229 2007-11-05  Geoff Norton  <gnorton@novell.com>
14230
14231         * mini-x86.h: Fix the structure access for X86 Leopard.
14232
14233
14234 2007-11-05  Martin Baulig  <martin@ximian.com>
14235
14236         * mini-trampolines.c
14237         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14238         after compiling the method to notify the debugger.
14239
14240 2007-11-05  Martin Baulig  <martin@ximian.com>
14241
14242         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14243
14244 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14245
14246         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14247         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14248
14249 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14250
14251         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14252         native-to-managed wrappers.
14253         
14254 2007-11-01  Geoff Norton  <gnorton@novell.com>
14255
14256         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14257         members.
14258
14259 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14260
14261         * mini.c, mini-x86.c: when getting back from unmanaged code
14262         to managed via a marshaled delegate we also need to set the
14263         right domain.
14264
14265 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14266
14267         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14268         for amd64.
14269
14270 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14271
14272         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14273         let the debugger or other external agents to tell the JIT when
14274         a sw breakpoint has been inserted in the code that the JIT needs
14275         to be able to inspect.
14276
14277 2007-10-31  Martin Baulig  <martin@ximian.com>
14278
14279         * debug-debugger.h
14280         (MonoDebuggerInfo): Remove `runtime_class_init'.
14281
14282 2007-10-30  Martin Baulig  <martin@ximian.com>
14283
14284         * debug-mini.h
14285         (mono_debugger_thread_created): Added `MonoThread *' argument.
14286         (mono_debugger_extended_notification): New public method.
14287         (mono_debugger_trampoline_compiled): New public method.
14288
14289         * debug-mini.c
14290         (MonoDebuggerThreadInfo): Added `thread' and
14291         `extended_notifications' fields.
14292
14293         * debug-debugger.c
14294         (debugger_executable_code_buffer): New static variable.
14295
14296         * debug-debugger.h
14297         (MonoDebuggerInfo): Added `executable_code_buffer',
14298         `executable_code_buffer_size', `breakpoint_info_area',
14299         `breakpoint_table' and `breakpoint_table_size'.
14300
14301 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14302
14303         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14304         that IP  either is an unused value or the vtable pointer. IMT 
14305         calls use vtable + offset now. Reduced by almost half the size
14306         of IMT entries.
14307
14308 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14309
14310         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14311         defines to access param registers. Replace long usage with
14312         gsize as sizeof(long) != sizeof(void*) on Win64.
14313
14314         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14315         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14316         instead of non-existant _GetAddressOfReturnAddress.
14317
14318         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14319         param registers. Save/restore %rdi and %rsi in MonoLMF.
14320
14321         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14322         param registers. Modify (throw_exception) signature to take 
14323         %rdi and %rsi on Win64. 
14324
14325         Code is contributed under MIT/X11 license.
14326
14327 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14328
14329         * helpers.c: unlink debugging output files.
14330
14331 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14332
14333         * mini.c: Move mono_create_ftnptr () to object.c.
14334
14335 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14336
14337         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14338         optional. This function can now be used to disassemble code generated
14339         outside the JIT such as trampolines and IMT thunks.
14340
14341         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14342
14343         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14344         vtable pointer from a ldr instruction.
14345
14346         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14347         new IMT call sequence.
14348
14349         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14350         call sequence for interface invocations.
14351
14352         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14353         for imt support. This function is empty since IMT on ARM requires no
14354         special handling on the IR side.
14355
14356         * mini-arm.c (mono_arch_find_imt_method): added, required for
14357         imt support.
14358
14359         * mini-arm.c (mono_arch_find_this_argument): added, required
14360         for imt support.
14361
14362         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14363         a ldr instruction to load a value stored in the code stream.
14364
14365         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14366         for imt support.
14367
14368
14369 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14370
14371         * mini.c (mini_init): Install the jump trampoline callback.
14372
14373 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14374
14375         * mini-trampolines.c: handle synchronized methods with the common
14376         vtable trampoline (bug #335601).
14377
14378 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14379
14380         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14381
14382         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14383         64 bit platforms.
14384
14385         * mini-ia64.h mini-ia64.c: Add support for IMT.
14386
14387         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14388         prolog. Fixes #331958.
14389
14390 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14391
14392         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14393
14394 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14395
14396         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14397         trampoline.
14398
14399 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14400
14401         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14402         trampoline.
14403
14404 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14405
14406         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14407         trampoline.
14408
14409 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14410
14411         * mini-trampolines.c: changed the magic rampoline to understand
14412         the common vtable trampoline method: the method to invoke is
14413         determined by the vtable displacement of the call.
14414
14415 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14416
14417         * mini.c, mini.h: register the common vtable trampoline if the
14418         architecture supports it.
14419
14420 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14421
14422         * cpu-amd64.md: use the correct max length for tls_get.
14423
14424 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14425
14426         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14427         CEE_STELEM_ANY. Fixes #333696.
14428
14429 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14430
14431         * exceptions-x86.c: provide more graceful handling of the case where
14432         we followed a bogus function pointer from managed code (bug #332866).
14433
14434 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14435
14436         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14437         replaces the generic_shared flag and will carry more information
14438         in the future.
14439
14440         * generic-sharing.c: Added mini_type_stack_size() which allows
14441         allows open types if given a generic sharing context.
14442         mini_get_basic_type_from_generic() takes a
14443         MonoGenericSharingContext* instead of a MonoCompile* now.
14444
14445         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14446         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14447         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14448         changes above.  Just passing arguments through to the right
14449         places.
14450
14451 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14452
14453         * mini-arm.c: unify the call emission to emit_code_seq().
14454
14455 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14456
14457         * tramp-arm.c: reduced the trampoline size.
14458
14459 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14460
14461         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14462         variable handling out of arch-specific code.
14463
14464 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14465
14466         * mini-arm.c: implemented fast delegate dispatch.
14467
14468 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14469
14470         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14471         that fp elimination is turned off if the space required by locals is too
14472         big. Fixes #331958.
14473
14474 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14475
14476         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14477         ARM to the new style trampoline.
14478
14479 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14480
14481         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14482
14483         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14484
14485 2007-10-09  Martin Baulig  <martin@ximian.com>
14486
14487         * debug-debugger.h
14488         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14489         `field_info_offset_offset'.     
14490
14491 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14492
14493         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14494         removed more internal usage of the r11 register and made it available
14495         to the register allocator.
14496
14497 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14498
14499         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14500         when sharing generics and treat type variables as references.
14501
14502 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14503
14504         * mini-ppc.c: started removing the internal uses of register r11
14505         to eventually allow the register allocator to manage it as an
14506         additional available register.
14507
14508 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14509
14510         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14511
14512 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14513
14514         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14515         specific trampolines as they are not performance critical as a jump
14516         target (maybe align as before only for AOT code?). This saves about
14517         200 KB of native code on x86 for monodevelop startup.
14518
14519 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14520
14521         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14522         monodevelop startup.
14523
14524 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14525
14526         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14527
14528         * mini-sparc.h mini-sparc.c: Implement IMT support.
14529
14530         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14531         its smaller and doesn't clobber sparc_g1.
14532
14533         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14534
14535 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14536
14537         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14538
14539 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14540
14541         * mini-ppc.c: implemented fast delegate invocation.
14542
14543 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14544
14545         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14546
14547 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14548
14549         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14550         code to the new style trampoline in preparation for IMT support.
14551
14552 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14553
14554         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14555         systems already. This also reduces the specific trampiline sizes and
14556         prepares for the use of r12 as the IMT identifier register.
14557
14558 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14559
14560         * mini-mips.h: endianess fix (simplified from a patch by
14561         Thomas Kunze <thommy@tabao.de>, bug #323737).
14562
14563 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14564
14565         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14566         to access ucontext fields and enable netbsd support
14567         (partially from Magnus Henoch <mange@freemail.hu>).
14568
14569 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14570
14571         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14572         use the preprocessor from the CPP env var if it is set.
14573
14574 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14575
14576         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14577         code, before interface_offset gets used.
14578
14579 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14580
14581         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14582         mono_class_setup_vtable () before accessing klass->vtable.
14583
14584 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14585
14586         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14587         hackish.
14588
14589 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14590
14591         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14592         IMT slots (this saves hundreds of KB of memory in programs like
14593         IronPython and Monodevelop).
14594
14595 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14596
14597         * mini.c: print the delegate counter.
14598
14599 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14600
14601         * mini-x86.c: make it easier to enable the debugging code for IMT
14602         slots.
14603
14604 2007-09-28  Martin Baulig  <martin@ximian.com>
14605
14606         * debug-debugger.h
14607         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14608         `mono_method_klass_offset' and `mono_method_token_offset'.
14609
14610 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14611
14612         * mini.c: First generics sharing implementation.  Can only share
14613         in very simple cases.  If sharing doesn't work it falls back to
14614         dedicated compilation.
14615
14616         * mini.h: Flag in MonoCompile to specify whether generic
14617         compilation is shared.  Flags enum for marking which generic inst
14618         of a context is used.  Prototypes for helper functions.
14619
14620         * generic-sharing.c: Helper functions for generic method sharing.
14621
14622         * optflags-def.h: Optimization flag (gshared) for enabling generic
14623         method sharing added.
14624
14625         * Makefile.am: generic-sharing.c added.
14626
14627 2007-09-19 Daniel Nauck <dna@mono-project.de>
14628
14629         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14630
14631 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14632         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14633         fixes bug 325507.
14634
14635 2007-09-19  Martin Baulig  <martin@ximian.com>
14636
14637         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14638         mono_debug_cleanup() is now part of mono_cleanup().
14639
14640 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14641
14642         * driver.c (mono_main): Fix a warning.
14643
14644 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14645
14646         * aot-compiler.c: Optimize various parts when processing large assemblies.
14647         Fixes ##325568.
14648
14649         * mini.c (mono_patch_info_hash): Improve hash function.
14650
14651 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14652
14653         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14654         
14655         Code is contributed under MIT/X11 license.
14656
14657 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14658
14659         * mini.c (mini_init): Fix a leak.
14660
14661         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14662
14663 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14664
14665         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14666
14667 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14668
14669         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14670
14671 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14672
14673         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14674         variance tests.
14675
14676         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14677
14678         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14679
14680         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14681
14682         * aot-runtime.c (decode_patch_info): Ditto.
14683
14684 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14685
14686         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14687         static case. Cache delegates in architecture specific code, 
14688         based on number of parameters.
14689         
14690         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14691         in architecture specific code, based on number of parameters.
14692         
14693         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14694         caching happen in architecture specific code now.
14695         
14696         Code is contributed under MIT/X11 license.
14697
14698 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14699
14700         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14701         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14702         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14703
14704         Code is contributed under MIT/X11 license.
14705
14706 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14707         * mini.c: (mono_thread_abort) Fixed bug #82416.
14708
14709 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14710
14711         * mini.: hook the new managed GC allocation feature into the JIT.
14712
14713 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14714
14715         * mini.c: implementation for the new runtime tls opcode.
14716
14717 2007-09-11  Martin Baulig  <martin@ximian.com>
14718
14719         * debug-debugger.h
14720         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
14721         `mono_method_inflated_offset'.
14722
14723 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
14724
14725         * driver.c mini.h mini.c: Add a new devel command line option for injecting
14726         async exceptions into a method.
14727
14728         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
14729         purpose of testing whenever the unwinder works at every instruction.
14730
14731 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
14732
14733         * mini.c: check accessibility of method used in ldftn (fixes
14734         bug #82635).
14735
14736 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
14737
14738         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
14739
14740         * inssel.brg: Fix a warning.
14741
14742 2007-09-03  Martin Baulig  <martin@ximian.com>
14743
14744         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
14745         now takes the `main_method' as argument.
14746
14747 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
14748
14749         * cpu-sparc.md (endfilter): Add missing src1:i argument.
14750
14751 2007-08-30  Jonathan Chambers <joncham@gmail.com>
14752
14753         * driver.c: include the cil-coff.h header on Windows.
14754         
14755         Code is contributed under MIT/X11 license.
14756
14757 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14758
14759         * mini.c, driver.c: don't include the cil-coff.h header.
14760
14761 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14762
14763         * mini.c: flag places that needs fixes fo soft-float support.
14764
14765 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
14766
14767         * mini.h, inssel-float.brg: fix soft-float constant loads on big
14768         endian systems (partially from Dean Jenkins, bug #81924).
14769
14770 2007-08-28  Mark Probst  <mark.probst@gmail.com>
14771
14772         * mini.c (check_linkdemand): Remove embedded reference object in
14773         call to LinkDemandSecurityException.
14774         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
14775         with an IntPtr instead of a reference object.
14776
14777 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
14778
14779         * mini.c (handle_initobj): Handle alignment properly.
14780
14781         * inssel.brg (mini_emit_memset): Ditto. 
14782
14783         * inssel.brg (mini_emit_memcpy): Ditto. 
14784
14785         * inssel-sparc.brg: Ditto.              
14786
14787         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
14788
14789 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
14790
14791         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
14792         exceptions raised in unmanaged code. Fixes part of #82594.
14793
14794 2007-08-24  Mark Probst  <mark.probst@gmail.com>
14795
14796         * mini.c (mono_method_to_ir), declsec.c
14797         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
14798
14799 2007-08-22  Martin Baulig  <martin@ximian.com>
14800
14801         * debug-mini.h
14802         (MonoDebuggerThreadInfo): New typedef.
14803         (mono_debugger_thread_table): New global variable.
14804         (mono_debugger_thread_created): New public function.
14805         (mono_debugger_thread_cleanup): New public function.
14806
14807         * debug-debugger.h
14808         (MonoDebuggerInfo):
14809         - removed `get_current_thread' and `lookup_assembly'.
14810         - removed `data_table'.
14811         - added `thread_table'.
14812
14813         * mini.c
14814         (mono_thread_start_cb): Call mono_debugger_thread_created().
14815         (mono_thread_attach_cb): Likewise.
14816         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
14817         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
14818         initial domain.
14819
14820         * driver.c (mono_main): Move mono_debug_init() up, before calling
14821         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
14822
14823 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14824
14825         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
14826         together when passing several arguments of type double (gives a small
14827         speedup and saves a few bytes of generated code).
14828
14829 2007-08-20  Jb Evain  <jbevain@novell.com>
14830
14831         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
14832
14833 2007-08-20  Jb Evain  <jbevain@novell.com>
14834
14835         * mini.c (mono_method_to_ir): throw MethodAccessException
14836         and FieldAccessException instead of InvalidProgramException.
14837
14838 2007-08-20  Mark Probst  <mark.probst@gmail.com>
14839
14840         * mini.c: CoreCLR security checks.
14841
14842         * mini.h: Removed MonoSecurityMode (moved to
14843         metadata/security-manager.h) and mono_security_mode global var
14844         (replaced by set/get functions in security-manager.h).
14845
14846         * driver.c: Added "core-clr-test" security mode for testing.  Used
14847         set-function for setting security mode.
14848
14849 2007-08-17  Mark Probst  <mark.probst@gmail.com>
14850
14851         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
14852         the new jit_info_table.
14853
14854         * driver.c: Test code for the new jit_info_table (enabled by the
14855         define MONO_JIT_INFO_TABLE_TEST).
14856
14857 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
14858
14859         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
14860         detection of call <REG> instruction sequence. Fixes build on freebsd.
14861
14862 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
14863
14864         * mini-exceptions.c: Fix a warning.
14865
14866 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
14867
14868         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
14869         stack overflow handling code on amd64 too.
14870
14871         * mini-exceptions.c (mono_setup_altstack): Make this use 
14872         mono_thread_get_stack_bounds ().
14873
14874         * mini-x86.h: Disable sigaltstack on solaris x86.
14875
14876 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
14877
14878         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
14879
14880 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
14881
14882         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
14883
14884 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
14885
14886         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
14887
14888         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
14889
14890 2007-08-03  Neale Ferguson <neale@sinenomine.net>
14891
14892         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
14893         due to alignment.
14894
14895 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14896
14897         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
14898         to be emitted (bug #82281).
14899
14900 2007-08-01  Martin Baulig  <martin@ximian.com>
14901
14902         Merged the `debugger-dublin' branch.
14903
14904         * debug-debugger.h (MonoDebuggerInfo):
14905         Removed the `old_*' compatibility entries.
14906         Added `debugger_version' and `data_table'.
14907         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
14908         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
14909
14910         * debug-mini.c
14911         (MiniDebugMethodBreakpointInfo): Add `address_list'.
14912         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
14913         instead of a `gconstpointer'.
14914         (mono_debugger_insert_method_breakpoint): Return a
14915         `MonoDebugMethodAddressList *'.
14916
14917 2007-06-28  Martin Baulig  <martin@ximian.com>
14918
14919         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
14920
14921 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
14922
14923         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
14924         __builtin_frame_address () since it is broken on older gcc versions.
14925
14926 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14927
14928         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
14929         on the stack overflow handling and made the managed stack overflows
14930         catchable in most cases using soft guard pages.
14931         * exceptions-x86.c: added code to restore the protection in the soft
14932         guard pages at the end of exception handling.
14933
14934 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
14935
14936         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
14937
14938 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14939
14940         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
14941         exception handling.
14942
14943 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14944
14945         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
14946         signal handling support until it has been ported to the new mechanism.
14947         * mini.c: fixed stack overflow detection and use the new
14948         architecture code  to handle signals on the altstack.
14949
14950 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
14951
14952         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
14953         stack overflows on the alt stack.
14954
14955 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
14956
14957         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
14958         stack overflows on the alt stack.
14959
14960 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
14961
14962         * exceptions-ppc.c: cleanup preparing for altstack support.
14963
14964 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
14965
14966         * exceptions-arm.c: cleanup preparing for altstack support.
14967
14968 2007-07-27  Mark Probst  <mark.probst@gmail.com>
14969
14970         * mini.c (print_jit_stats): Output hazard pointer stats.
14971
14972 2007-07-26  Mark Probst  <mark.probst@gmail.com>
14973
14974         * driver.c, mini.c: Replaced security mode flags with a single
14975         enum variable.
14976
14977 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14978
14979         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
14980
14981 2007-07-25  Mark Probst  <mark.probst@gmail.com>
14982
14983         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
14984         (which doesn't do anything yet) for activating Core CLR
14985         (Silverlight) security.
14986
14987 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
14988
14989         * mini-codegen.c: work around a possible gcc bug on arm.
14990
14991 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14992
14993         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
14994         message for platforms that don't support AOT compilation.
14995
14996 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14997
14998         * mini.h, mini.c, driver.c: temporary smcs hack.
14999
15000 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15001
15002         * mini-arm.h, mini-arm.c: arm EABI fixes.
15003
15004 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15005
15006         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15007         case.
15008
15009         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15010         trampolines taking a method argument.
15011
15012         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15013
15014         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15015         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15016
15017         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15018         JIT compilation throws an exception. Fixes #82050.
15019
15020 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15021
15022         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15023         with the MONO_EXCEPTION_ defines.
15024
15025 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15026
15027         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15028         #82117.
15029         
15030         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15031         the cause of an assertion.
15032
15033 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15034
15035         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15036         removed.
15037
15038 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15039
15040         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15041         assert. Should fix #82103.
15042
15043 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15044
15045         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15046         here too. Fixes #82095.
15047
15048         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15049         addresses.
15050
15051         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15052
15053         * mini-amd64.h: Enable IMT for amd64.
15054         
15055         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15056
15057 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15058
15059         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15060
15061 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15062
15063         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15064         as soon as check_linkdemand sets an exception_type.
15065
15066 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15067
15068         * mini-x86.c: fixed offsets for IMT call sequence.
15069         * mini-x86.h: enable IMT again.
15070
15071 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15072
15073         * trace.c (mono_trace_enter_method): Decode MonoType too.
15074
15075         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15076
15077         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15078
15079         * mini-amd64.c: Add preliminary IMT implementation.
15080         
15081 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15082
15083         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15084         understand the new IMT-base interface invocation (thanks to
15085         Daniel Nauck for the report and the remote debugging session).
15086
15087 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15088
15089         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15090
15091 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15092
15093         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15094
15095 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15096
15097         * mini-trampolines.c: implement AOT IMT support.
15098         * mini-x86.h: enable IMT support for wider testing.
15099
15100 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15101
15102         * inssel.brg (emit_imt_argument): Add aot support here.
15103
15104         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15105
15106 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15107
15108         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15109         of the IMT implementation, partially from massi, with my
15110         implementation of the bsearch sequence. Disabled by default until
15111         the AOT code is implemented.
15112
15113 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15114
15115         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15116
15117         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15118
15119 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15120
15121         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15122         arch-independent IMT JIT code from Massimiliano
15123         Mantione (massi@ximian.com) with small cleanups from me.
15124
15125 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15126
15127         * Makefile.am: fix svn invocation to get the svn revision to be
15128         independent of the local language (build fix).
15129
15130 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15131
15132         * mini.c (inline_method): Reset cfg->exception_type if the
15133         inlining is aborted.  Fixes: 82049.
15134
15135 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15136
15137         * mini.c: remove assert from exception handling code when exception_ptr
15138         is not set.
15139
15140 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15141
15142         * mini.c (mono_codegen): Add an assert.
15143
15144         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15145         enter and leave code.
15146         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15147
15148 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15149
15150         * mini-ppc.c: fixed memory corruption for localloc(0)
15151         (bug #81852).
15152
15153 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15154         
15155         * mini.c: Fix warnings.
15156
15157 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15158
15159         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15160         to emit better double->int conversions.
15161
15162 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15163
15164         * mini.c: the provided Min/Max optimizations are valid for unisgned
15165         ints.
15166
15167 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15168
15169         * 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
15170
15171 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15172
15173         * mini.c (mono_running_on_valgrind): Add support for reporting the
15174         method and  its boundaries to valgrind.
15175
15176 2007-06-28  Martin Baulig  <martin@ximian.com>
15177
15178         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15179
15180 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15181
15182         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15183
15184         * generic.2.cs: Add new test case.
15185
15186 2007-06-25  Martin Baulig  <martin@ximian.com>
15187
15188         Merged the `debugger-dublin' branch.
15189
15190         * debug-mini.c
15191         (mono_debugger_insert_method_breakpoint): New public method.
15192         (mono_debugger_remove_method_breakpoint): Likewise.
15193         (mono_debugger_check_breakpoints): New static method.
15194         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15195
15196         * debug-debugger.h (MonoDebuggerInfo):
15197         Renamed (to keep backward compatibility in the vtable):
15198         `insert_breakpoint' -> `old_insert_breakpoint'.
15199         `remove_breakpoint' -> `old_remove_breakpoint'.
15200         `create_string' -> `old_create_string'.
15201         `lookup_class' -> `old_lookup_class'.
15202         `lookup_type' -> removed; changed into a dummy field.
15203         `lookup_assembly' -> `old_lookup_assembly'.
15204         Added (same functionality, but different signature):
15205         `create_string', `lookup_class', `lookup_assembly'
15206         Added new:
15207         `get_method_addr_or_bpt', `remove_method_breakpoint',
15208         `runtime_class_init'.
15209
15210         * debug-debugger.c: Merged the `debugger-dublin' branch.
15211
15212 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15213
15214         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15215         well.
15216         (peephole_pass): Likewise.
15217
15218 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15219
15220         * driver.c: hopefully make setaffinity work also for ancient
15221         versions of linux.
15222
15223 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15224
15225         * driver.c : win32 build fix.
15226
15227 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15228
15229         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15230         processor if it is set.
15231
15232 2007-06-21  Martin Baulig  <martin@ximian.com>
15233
15234         * debug-mini.h: New file.
15235
15236         * debug-mini.c
15237         (mono_debugger_insert_breakpoint_full): Moved here from
15238         ../metadata/mono-debug-debugger.c.
15239         (mono_debugger_remove_breakpoint): Likewise.
15240         (mono_debugger_breakpoint_callback): Likewise.
15241
15242 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15243
15244         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15245         changes in MonoGenericClass.
15246
15247 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15248
15249         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15250
15251 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15252
15253         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15254         removal of MonoGenericMethod.
15255
15256 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15257
15258         * mini-exceptions.c: hooks for the exception events profiling API.
15259
15260 2007-06-14  Randolph Chung  <tausq@debian.org>
15261
15262         * Makefile.ma: Add hppa target.
15263         * mini-arch.h: Include mini-hppa.h
15264         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15265         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15266         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15267
15268 2007-06-14  Randolph Chung  <tausq@debian.org>
15269
15270         * inssel.brg: Add rules for "chained" compare-branch operations so that
15271         a single compare op can affect multiple branches.  Adjust cost for
15272         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15273         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15274         cost for some rules so that they can more easily be overridden by
15275         per-arch rules (with fixes from lupus).
15276         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15277
15278 2007-06-13  Randolph Chung  <tausq@debian.org>
15279
15280         * mini-ops.h: Reorder branch ops so that they match the order of the
15281         corresponding CEE_* ops.  The code expects them this way.
15282         Add new ops for HPPA target.
15283         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15284
15285 2007-06-13  Randolph Chung  <tausq@debian.org>
15286
15287         * mini-exceptions.c: Handle cases where the stack grows towards
15288         larger addresses.
15289         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15290
15291 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15292
15293         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15294         counter.
15295         * driver.c: explain where a non-matching corlib is found.
15296
15297 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15298
15299         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15300
15301 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15302
15303         * mini-exceptions.c: Generate a method profile leave event during
15304         an exception to ensure that the profiler gets notified.
15305
15306 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15307
15308         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15309         branch.
15310
15311         * cpu-amd64.md: Add long_and/or/xor opcodes.
15312
15313 2007-06-06  Wade Berrier  <wberrier@novell.com>
15314
15315         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15316         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15317         length of instruction shr_imm (expected 8, got 10)
15318
15319 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15320
15321         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15322
15323 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15324
15325         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15326         MonoInternalHashTable again (fixed bug in the internal hash table
15327         code).
15328
15329 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15330
15331         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15332         Have to figure out what makes it crash the SWF regression.
15333
15334 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15335
15336         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15337
15338 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15339
15340         * mini.c: optimize out the type check when storing null in a
15341         reference array.
15342
15343 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15344
15345         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15346         MonoInternalHashTable.
15347
15348 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15349
15350         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15351         signed integer methods.
15352
15353 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15354
15355         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15356         permanently since the current approach doesn't work.
15357
15358 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15359
15360         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15361         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15362
15363 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15364
15365         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15366         the sreg2==rdx case.
15367         
15368         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15369         account if it contains a rex prefix.
15370         (peephole_pass): Handle OP_FMOVE as well.
15371
15372 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15373
15374         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15375         as it causes regressions.
15376
15377 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15378
15379         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15380         static case as well.
15381
15382         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15383
15384         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15385         (mono_arch_get_this_arg_from_call): Ditto.
15386
15387         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15388
15389         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15390         invoke_impl field.
15391
15392         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15393         (mono_arch_get_this_arg_from_call): Ditto.
15394
15395         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15396         
15397         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15398         try to create optimized invoke code and use that for further invocations. 
15399         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15400
15401         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15402
15403 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15404
15405         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15406         sealed classes or methods.
15407         *devirtualization.cs: tests for the new optimization
15408
15409 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15410
15411         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15412         by the update_volatile () function.
15413
15414 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15415
15416         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15417         require it.
15418
15419         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15420
15421 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15422
15423         * mini.c: Add configure checks for header files.
15424         * mini-x86.c: Add configure checks for header files.
15425         * trace.c: Add configure checks for header files.
15426         * aot-runtime.c: Add configure checks for header files.
15427         * aot-compiler.c: Add configure checks for header files.
15428         * driver.c: Add configure checks for header files.
15429         * mini-codegen.c: Add configure checks for header files.
15430         
15431         Code is contributed under MIT/X11 license.
15432
15433 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15434
15435         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15436         icompare_imm -128 + op_iclt. Fixes #81703.
15437
15438 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15439
15440         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15441
15442 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15443
15444         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15445         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15446         so that all isinst checks now use "interface_bitmap".
15447
15448 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15449
15450         * cpu-amd64.md (jmp): Fix a warning.
15451
15452         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15453
15454         * basic.cs: Add new regression test.
15455
15456         * basic.cs: Remove test which is now in basic-long.cs.
15457
15458         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15459
15460         * basic-long.cs: Add new test.
15461         
15462 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15463
15464         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15465
15466 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15467
15468         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15469
15470         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15471         places.
15472         
15473         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15474         throwing code a bit.
15475
15476         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15477         the exception throwing code a bit.
15478
15479         * mini-x86.c (get_call_info): Allocate result from a mempool.
15480
15481 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15482
15483         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15484
15485         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15486
15487         * mini.h (MonoCompile): Add 'token_info_hash' field.
15488
15489         * mini.c: Save token->method associations during compilation so the AOT 
15490         compiler can use it.
15491         
15492         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15493         which reference generic classes and methods.
15494
15495 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15496
15497         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15498
15499         * aot-compiler.c (compile_method): Fix a typo in a comment.
15500
15501         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15502
15503         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15504         everything generic.
15505
15506         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15507
15508 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15509
15510         * mini.h (MonoCompile): Add 'args' field.
15511
15512         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15513         into cfg->args.
15514
15515         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15516
15517 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15518
15519         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15520
15521         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15522
15523         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15524         opcodes for some opcodes.
15525
15526         * mini.h *.brg *.c: Use the new opcodes.
15527
15528 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15529
15530         * mini.h: Bumped aot revision.
15531
15532         * inssel.brg: modified code generation of type checks for interfaces
15533         to use the new "MonoClass.interface_bitmap" instead of the old
15534         "MonoClass.interface_offsets".
15535
15536 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15537
15538         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15539
15540 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15541
15542         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15543         64 bit platforms.
15544
15545 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15546
15547         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15548
15549 2007-04-27  Wade Berrier  <wberrier@novell.com>
15550
15551         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15552         mini.h) to fix build.
15553
15554 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15555
15556         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15557         
15558         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15559         causes the corlib unit tests to fail.
15560
15561 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15562
15563         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15564
15565         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15566
15567         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15568         opcodes to the comparison relations.
15569
15570         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15571         opcodes to their types.
15572         
15573         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15574
15575         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15576         it in cfg->arch.cinfo.
15577
15578         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15579
15580         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15581         cfg->cil_offset_to_bb.
15582
15583 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15584
15585         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15586         created becase of initlocals.
15587
15588 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15589
15590         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15591         Sergey Tikhonov <tsv@solvo.ru>.
15592
15593 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15594
15595         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15596
15597 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15598
15599         * cpu-s390.md (break): Correct the length of break instruction.
15600
15601 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15602
15603         * mini.c: fix a couple of soft-float issues and comments.
15604
15605 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15606
15607         * trace.c (is_filenamechar): - is also a filename char.
15608
15609 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15610
15611         * mini-s390.c: Correct checking for enum type in return value processing.
15612
15613 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15614
15615         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15616         (version.h): Makefile is in the build directory.
15617
15618 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15619
15620         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15621
15622 2007-04-11  Martin Baulig  <martin@ximian.com>
15623
15624         * mini.c (can_access_member): Fix handling of generic classes;
15625         fixes #81259.
15626
15627 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15628
15629         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15630
15631 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15632
15633         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15634
15635 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15636
15637         * mini-codegen.c: make sure the right spill amount is
15638         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15639
15640 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15641
15642         * mini-ppc.c: fixes for the fp_branch_nan test.
15643
15644 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15645
15646         * basic.cs: Comment out new test which still fails on ia64.
15647
15648 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15649
15650         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15651
15652 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15653
15654         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15655
15656 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15657
15658         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15659         on 64 bit machines. Fixes part of #80738.
15660
15661         * basic.cs: Add regression test.
15662
15663 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15664
15665         * inssel.brg basic.cs: Revert previous change to fix build.
15666
15667         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15668         platforms.
15669         
15670         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15671
15672         * basic.cs: Add new regression test.
15673
15674 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15675
15676         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15677         many arguments.
15678
15679 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15680
15681         * cpu-s390x.md: Correct length of break instruction.
15682
15683 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15684
15685         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15686         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15687
15688 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15689
15690         * *.c: Begin WIN64 port.
15691         * mini.c:  Use correct register in profiler.
15692         * mini-amd64.c: No inline assembly on Win64.
15693         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15694         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15695         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15696         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15697         mono_arch_ip_from_context for Win64.
15698         
15699         Contributed under MIT/X11 license.
15700
15701 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15702
15703         * exceptions-amd64.c (seh_handler): Ditto.
15704
15705         * exceptions-x86.c (seh_handler): Fix a memory leak.
15706
15707 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
15708
15709         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
15710         mini-s390x.c: fixed peephole optimizations to deal
15711         correctly with 1 and 2 byte reload avoidance.
15712
15713 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15714
15715         * cpu-s390.md, cpu-s390x.md: update localloc length.
15716
15717 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15718
15719         * cpu-g4.md: added missing descriptions.
15720
15721 2007-03-14  Miguel de Icaza  <miguel@novell.com>
15722
15723         *  Makefile.am: Add support so the tail tests are not executed on
15724         PowerPC as that is a known limitation of the PowerPC port.
15725
15726 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15727
15728         * runmdesc.bat:  Move to msvc directory.
15729         
15730 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15731
15732         * runmdesc.bat:  Run executable that was produced by the current
15733         target and sent via an argument.
15734         
15735 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
15736
15737         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
15738         #81102.
15739
15740         * generics.2.cs: Add regression test.
15741
15742 2007-03-09  Wade berrier  <wberrier@novell.com>
15743
15744         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
15745
15746 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
15747
15748         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
15749         AOT code depends on this.
15750
15751 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15752
15753         * mini.c: more precise tracking of types in the eval stack
15754         (part of fix for bug #81044).
15755
15756 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
15757
15758         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
15759
15760         * aot-compiler.c (encode_patch): Remove an obsolete comment.
15761
15762 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
15763
15764         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
15765
15766         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
15767
15768 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
15769
15770         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
15771         a pointer on 64 bit systems. Fixes #80190.
15772
15773         * iltests.il: Add new regression test.
15774
15775 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15776
15777         * mini.c: inline a constant for Environment.IsRunningOnWindows.
15778
15779 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
15780
15781         * trace.c: Remove an erroneous alignemnt check when tracing.
15782           Fixes --trace on OSX86.
15783
15784 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15785
15786         * mini-$(arch).h: initialize SP in context for all the archs.
15787
15788 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
15789
15790         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
15791         regressions in the thread tests.
15792
15793 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
15794
15795         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
15796         - fixed implementation of LOCALLOC opcode
15797         - implemented non-un compare for floats
15798         - code cleanup
15799         - implementation of FDIV and CKFINITE opcodes
15800         - fixes for latest mono updates
15801         - additional arch opcodes
15802
15803 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15804
15805         * Makefile.am: simplify and merge rules for cross-compilation.
15806
15807 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
15808
15809         * local-propagation.c: Actually *apply* the fix for bug 80591...
15810
15811 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15812
15813         * mini-exceptions.c: backuot part of the last change
15814         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
15815
15816 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
15817         * inssel.brg: Fix bug 59286.
15818
15819
15820 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
15821
15822         * mini-exceptions.c: patch from Zoltan to correctly check for
15823         stack boundaries (using the stack register, not the frame register),
15824         fixes bugs #80724, #79717.
15825
15826 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
15827
15828         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
15829         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
15830
15831         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
15832         presence of frame pointer elimination.
15833
15834 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
15835         
15836         * mini-x86.h: NetBSD UCONTEX_REG defines.
15837
15838 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
15839
15840         * inssel-amd64.brg: Fix amd64 build.
15841
15842 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
15843
15844         * mini.h: remove extern to workaround what looks likes gcc bug 26905
15845         on amd64.
15846
15847 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
15848
15849         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
15850         ends.
15851
15852         * mini-<ARCH>.c: Use mono_is_regsize_var ().
15853
15854 2007-01-30 Mark Mason <mason@broadcom.com>
15855
15856            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
15857            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
15858            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
15859            beginning support for CEE_JMP [not quite working yet]
15860            * tramp-mips.c: LMF handling now works
15861         
15862 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
15863
15864         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
15865
15866         * mini.h (NULLIFY_INS): New macro.
15867
15868 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15869
15870         * mini.c: statistical profiler fix for windows, patch
15871         from Tor Lillqvist (tml@novell.com).
15872
15873 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
15874         * local-propagation.c: Fix bug 80591.
15875
15876 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
15877
15878         * Makefile.am: put back the --export-dynamic option as with
15879         the previous gmodule flags (thanks to Robert Jordan).
15880
15881 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
15882
15883         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
15884
15885         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
15886         simplify and speed up the local register allocator. Also rename some fields
15887         like iassign->vassign.
15888         
15889         * regalloc.c: Remove some functions which are no longer used since their
15890         inlined version is in mini-codegen.c.
15891         
15892         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
15893
15894         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
15895
15896 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
15897
15898         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
15899         narrowing. Fixes #80622.
15900
15901         * iltests.il: Add new regresssion test. 
15902
15903 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15904
15905         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
15906         debug-debugger.c, debug-debugger.h: warning fixes.
15907         * driver.c: updated copyright year and made it fit in one line.
15908
15909 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
15910
15911         * aot-runtime.c: updated to use mono-dl instead of gmodule.
15912
15913 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
15914
15915         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
15916
15917         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
15918
15919         * iltests.il: Add new test for bug #80507.
15920
15921 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15922
15923         * mini-arm.h: use soft-float also on vfp for now.
15924
15925 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15926
15927         * mini.c: fix some more soft-float issues.
15928
15929 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
15930
15931         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
15932
15933 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
15934         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
15935         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
15936         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
15937
15938 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
15939
15940         * mini-arm.c: typo fix.
15941
15942 2007-01-23  Neale Ferguson <neale@sinenomine.net>
15943
15944         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
15945
15946 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
15947
15948         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
15949         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
15950
15951         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
15952
15953         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
15954
15955         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
15956         
15957         * inssel.brg: Fix a warning.
15958
15959         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
15960
15961         * abcremoval.c ssa.c ssapre.c: Update after this change.
15962         
15963         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
15964
15965         * dominators.c (df_set): Use mono_bitset_union_fast.    
15966
15967 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
15968
15969         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
15970         mini-codegen.c: reduce relocations and memory usage for the cpu
15971         description.
15972
15973 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
15974
15975         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
15976
15977         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
15978         to reduce their size.
15979
15980 2007-01-19 Mark Mason <mason@broadcom.com>
15981
15982         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
15983         * mini-mips.c: more configuration macros, support long conditional branches, additional
15984         asserts, fix epilog instrumentation.
15985         * mini-mips.h: use standard stack walk
15986         * cpu-mips.md: increase size of div, rem and conditional branches
15987         
15988 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
15989
15990         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
15991         to cpu spec data.
15992
15993 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
15994
15995         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
15996         (compile_method): Ditto.
15997
15998         * aot-runtime.c (decode_klass_info): Ditto.
15999
16000         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16001         needed by the code generated by inssel.brg. Also fix a warning.
16002
16003 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16004
16005         * mini.c: deal with enums that become genericinsts by
16006         being nested in a generic class (bug #79956).
16007
16008 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16009
16010         * mini.c: match the generic definition to check for
16011         private access with generic types (bug #78431).
16012
16013 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16014
16015         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16016         to make life easier for people cross-compiling that insist on not
16017         using scratchbox.
16018
16019 2007-01-17 Mark Mason <mason@broadcom.com>
16020
16021         * inssel-long.brg: patch to deal with mips missing flags
16022         * inssel-long32-mips.brg: implement overflow checks
16023         * insset-mips.brg: implement overflow checks
16024         * mini-mips.h: implement conditional exception handling
16025         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16026           Remove unused code, minor cleanups.
16027         * exceptions-mips.c: minor cleanups
16028         * mini-ops.h: add mips conditional exception ops
16029         * cpu-mips.md: add mips conditional exception ops
16030
16031         
16032 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16033
16034         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16035         to deal with mips missing of flags.
16036
16037 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16038
16039         * exceptions-ppc.c: execute fault handlers.
16040
16041 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16042
16043         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16044
16045 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16046
16047         * mini.c: handle also floating point values in initialize_array.
16048
16049 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16050
16051         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16052         array initialization and make it conditional on the intrins option.
16053
16054 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16055
16056         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16057         relocations and put the patch info names close to the enum definition.
16058
16059 2007-01-15 Mark Mason <mason@broadcom.com>
16060
16061         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16062
16063 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16064
16065         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16066
16067 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16068
16069         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16070
16071 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16072
16073         * Makefile.am: distribute the mips sources.
16074
16075 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16076
16077         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16078         directly.
16079
16080 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16081
16082         * cpu-x86.md: back out for now as this triggers other regressions.
16083
16084 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16085
16086         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16087         to eax:edx, so ecx can't get allocated to them (bug #80489).
16088
16089 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16090
16091         * mini.c, mini-exceptions.c: enabled running fault handlers
16092         (bug #80469).
16093
16094 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16095
16096         * driver.c: If nothing fail, do not use the string "failed",
16097         because it makes it very annoying to view test result logs on the
16098         web. 
16099
16100 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16101
16102         * debug-debugger.c (mono_debugger_main): Rename "main" to
16103         "main_method" to prevent a warning.
16104
16105         Remove a warning for unused field.
16106
16107 2006-12-28  Martin Baulig  <martin@ximian.com>
16108
16109         * debug-debugger.c
16110         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16111
16112 2006-12-22  Martin Baulig  <martin@ximian.com>
16113
16114         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16115         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16116         seperate `.mdb_debug_info' section, so we can access it from the
16117         debugger even if the binary is stripped.
16118
16119         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16120         from the `.mdb_debug_info' here to prevent the linker from
16121         removing that section.
16122
16123         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16124         mdb-debug-info64.s.
16125
16126 2006-12-19  Robert Jordan  <robertj@gmx.net>
16127
16128         * mini-x86: enable the code to return small structures in
16129         registers for FreeBSD as well. Fixes bug #80278.
16130         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16131
16132 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16133
16134         * mini-x86.c: align the stack when calling the profiler
16135         function instrumenting the prolog (on OSX).
16136
16137 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16138
16139         * mini.c: emit a break opcode where Debugger.Break () is called.
16140
16141 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16142
16143         * mini.c (mono_method_to_ir): Provide useful information on this
16144         assert, to prevent others from debugging like I did.
16145
16146 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16147
16148         * mini.c: enable code which was incorrectly commented
16149         (bug #80235).
16150
16151 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16152
16153         * mini-x86.c: enable on OSX, too, the code to return small
16154         structures in registers.
16155
16156 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16157
16158         * mini-x86.c: remove the use of the dynamic code manager here, too.
16159
16160 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16161
16162         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16163         mono_debugger_create_notification_function() to use
16164         mono_global_codeman_reserve () instead of a dynamic code manager.
16165
16166 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16167
16168         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16169         ves_array_element_address() jit icall and use a generated
16170         managed method instead (which is about 4 times faster for a rank 3
16171         array access).
16172
16173 2006-11-29  Mark Mason  <mason@broadcom.com>
16174
16175         * basic-calls.cs: additional tests for passing
16176         structures as function arguments.
16177
16178 2006-11-29  Mark Mason  <mason@broadcom.com>
16179
16180         * mini-mips.h: disable custom exception handling
16181         * mini-mips.c: throw/rethrow should use jalr to call
16182         exception stubs.  Fixed bug with passing structures
16183         by value. More support for tracing floating point
16184         functions.
16185
16186 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16187
16188         * mini.c: fixed typo in the soft-float ldind.r4 handling
16189         (bug #80086).
16190
16191 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16192
16193         * mini.c, mini.h, driver.c: added --runtime command line
16194         option to select a different runtime than the autodetected one.
16195         * jit.h: added API for embedders to initialize with a specific
16196         runtime version.
16197
16198 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16199
16200         * mini.c: handle also boxing of r4 values (bug #80024).
16201
16202 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16203
16204         * mini-ppc.c: force indirect calls until we reserve
16205         enough address space for all the generated code.
16206
16207 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16208
16209         * exceptions-arm.c: workaround bugs in the libc definition
16210         of struct ucontext.
16211
16212 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16213
16214         * inssel.brg: fixes from me and Mark Mason.
16215
16216 2006-11-23  Dick Porter  <dick@ximian.com>
16217
16218         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16219         semaphore display now we've fixed the initial value
16220
16221 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16222
16223         * inssel.brg: partially revert the last change to fix the build.
16224
16225 2006-11-21  Mark Mason  <mason@broadcom.com>
16226
16227         * inssel.brg: Add and use compare-and-branch macros to support
16228         architectures that do not have condition code registers (ie. MIPS).
16229         * *-mips.{c,brg,md}: Fix copyright statements
16230
16231 2006-11-20  Mark Mason  <mason@broadcom.com>
16232
16233         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16234         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16235         * mini.h: Added declaration for mono_print_ins()
16236         * mini-codegen.c: added ins_spec initializer for MIPS
16237         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16238         vreg to be virtual and hreg to be non-virtual.
16239         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16240         is not yet working/implemented correctly.
16241         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16242         non-static, fixup calls to print_ins() from other parts in the file.
16243
16244 2006-11-20  Mark Mason  <mason@broadcom.com>
16245
16246         * basic-calls.cs: added tests for passing structures as arguments
16247         to calls.
16248
16249 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16250
16251         * inssel-long32.brg: optimize signed division by power of two.
16252
16253 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16254
16255         * mini-arm.c: added support for interworking with thumb code
16256         (mono must be still be built using the ARM instruction encoding).
16257
16258 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16259
16260         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16261         verifier has different rules for it.   Fixes a few verifier issues
16262         in the test suite.
16263
16264         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16265         at the end, so people know what happened.
16266
16267 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16268
16269         * brach-opts.c: in optimize_exception_target() make sure we
16270         are in a catch clause (fixes bug #79871).
16271
16272 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16273
16274         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16275         more soft-float support fixes.
16276
16277 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16278
16279         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16280         that are passed half on the stack and half in registers.
16281
16282 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16283
16284         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16285         more mips integration work from Mark E Mason 
16286         <mark.e.mason@broadcom.com>.
16287
16288 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16289
16290         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16291         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16292         tramp-mips.c: added sources for the mips port, not
16293         integrated in the build yet. Contributed by
16294         Mark E Mason <mark.e.mason@broadcom.com>.
16295
16296 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16297
16298         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16299
16300 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16301
16302         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16303         put the soft-float rules in its own file since it seems to
16304         break s390 compilation.
16305
16306 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16307
16308         * mini-arm.c: fixed wrnings.
16309
16310 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16311
16312         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16313         inssel-arm.brg: ARM support for soft-float.
16314
16315 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16316
16317         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16318         loads and stores of 32 bit fp values.
16319
16320 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16321
16322         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16323
16324         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16325         works. Fixes #79852 and #79463.
16326
16327 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16328
16329         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16330         more soft-float support WIP and fixes.
16331
16332 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16333
16334         * mini-arm.c: some VFP updates.
16335
16336 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16337
16338         * mini-exceptions.c: 0 is a valid local var offset in some
16339         architectures, don't assert (bug #78508).
16340
16341 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16342
16343         * exceptions-arm.c: fixed off by one error in stack walk code.
16344
16345 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16346
16347         * mini.h, mini.c: more precise tracking of type load exceptions.
16348
16349 2006-11-03  Robert Jordan  <robertj@gmx.net>
16350
16351         * Makefile.am: [WIN32] Add monow.exe target.
16352         * driver.c: [WIN32] Don't detach the console when debugging.
16353         Fixes bug #79797.
16354         
16355 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16356
16357         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16358
16359 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16360
16361         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16362
16363         * driver.c (mini_regression): Fix --regression with AOT.
16364
16365         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16366
16367 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16368
16369         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16370
16371         * mini-sparc.h: Don't use sigaction on sparc/linux.
16372
16373         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16374
16375         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16376
16377         * mini-exceptions.c: Add proper include files for getpid ().
16378
16379 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16380
16381         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16382         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16383         method.
16384
16385         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16386         name cache to reduce its size.
16387
16388         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16389
16390 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16391
16392         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16393         the mono_lmf TLS variable.
16394
16395         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16396         trampoline lmf frames.  
16397
16398         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16399
16400 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16401
16402         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16403         the mono_lmf TLS variable.
16404
16405         * mini-exceptions.c: Access the LMF structure through accessors.
16406
16407         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16408         variable instead of in jit_tls->lmf.
16409
16410         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16411         
16412         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16413         trampoline lmf frames.
16414
16415         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16416
16417 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16418
16419        * mini.c trace.c mini-x86.c: Revert these too.
16420         
16421        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16422        signature change.
16423
16424 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16425
16426         * genmdesc.c: removed now dead code.
16427
16428 2006-10-09  Robert Jordan <robertj@gmx.net>
16429
16430         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16431
16432 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16433
16434         * mini.h: do not leave gaps in the opcode values.
16435
16436 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16437
16438         * jit-icalls.h: flag functions as internal here, too.
16439
16440 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16441
16442         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16443         functions with the internal attribute.
16444
16445 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16446
16447         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16448
16449 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16450
16451         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16452         for soft-float.
16453
16454 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16455
16456         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16457         tail calls as on other platforms.
16458
16459         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16460
16461         * iltests.il: Add a few tailcall tests.
16462
16463 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16464
16465         * driver.c: fix loop for old compilers (bug #79521).
16466
16467 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16468
16469         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16470
16471         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16472
16473         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16474         metadata without any code.
16475
16476         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16477         more precise debugging information using gdb.
16478
16479 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16480
16481         * inssel-ia64.brg: Make the helper methods static.
16482
16483 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16484
16485         * inssel-x86.brg: make the helper methods static.
16486
16487 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16488
16489         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16490
16491 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16492
16493         * mini.c: updates for monoburg changes.
16494         * inssel.brg: make a few helper functions static as they should.
16495
16496 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16497
16498         * Makefile.am: Move mini-codegen.c to common_sources.
16499
16500 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16501
16502         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16503         instructions.
16504         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16505         mini-ppc.h: port to use the common local register allocator.
16506
16507 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16508
16509         * mini.h: Remove the comment too then.
16510
16511 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16512
16513         * mini.h: put back backend.data which is to be used shortly and
16514         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16515         pointers on 4 byte boundaries it'd have much bigger issues running
16516         and you can ifdef it out anyway.
16517
16518 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16519
16520         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16521         MonoInst size by 4 bytes on 64 bit machines.
16522
16523 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16524
16525         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16526         replacement with more meaningful field names. Arch maintainers, please
16527         check the assigned names are good enough for your arch.
16528
16529 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16530
16531         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16532         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16533
16534 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16535
16536         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16537         relocations and memory requirements, put the optimization flags
16538         definitions in their own file.
16539
16540 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16541
16542         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16543
16544         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16545
16546 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16547
16548         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16549
16550 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16551
16552         * inssel.brg: use the correct function to get the size of an item
16553         in an array, given an element class.
16554         * aot-compiler.c: do not access class->class_size directly.
16555
16556 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16557
16558         * mini.h, debug-mini.c: added a debugging function to print
16559         info about local variables and arguments in a jitted method.
16560
16561 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16562
16563         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16564
16565         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16566
16567 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16568
16569         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16570         inner and outer loops when passing vtypes.
16571
16572 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16573
16574         * mini-ppc.c: take into account the cpu errata for cache flushing
16575         which caused some random errors (bug #79381).
16576
16577 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16578
16579         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16580         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16581
16582 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16583
16584         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16585         loaded.
16586
16587         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16588         freebsd ports tree.
16589
16590         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16591         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16592
16593         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16594         displacement.
16595
16596 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16597
16598         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16599
16600 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16601
16602         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16603         macro does not have to be changed during debugging.
16604
16605         * 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>.
16606
16607         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16608
16609         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16610         
16611         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16612         MONO_ARCH_NO_EMULATE_MUL is defined.
16613
16614         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16615
16616         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16617
16618         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16619
16620         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16621         
16622 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16623
16624         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16625         stuff to mini-exceptions.c where it is used.
16626
16627         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16628         setup code, the real one is in mini-exceptions.c.
16629
16630         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16631         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16632         some changes from the freebsd ports tree.
16633
16634         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16635         constants.
16636         
16637         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16638
16639 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16640
16641         * mini.c: on Linux, check for /proc to be mounted
16642         (bug# 79351, novell bug#201204).
16643
16644 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16645
16646         * mini.c: handle cases where pthread_attr_getstack() behaves
16647         incorrectly (bug #78096).
16648
16649 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16650
16651         * mini-arm.c: support larger stack frames (bug #79272).
16652
16653 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16654
16655         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16656
16657         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16658         tokens.
16659
16660         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16661         mono_class_from_name () to find a class from its name.
16662
16663         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16664
16665 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16666
16667         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16668
16669 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16670
16671         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16672
16673 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16674
16675         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16676         callinfo->trampoline.
16677
16678         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16679         fixes #79271.
16680         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16681         future.
16682
16683 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16684
16685         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16686
16687 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16688
16689         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16690         stats.method_trampolines, it is already done by the generic trampoline code.
16691
16692         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16693         
16694 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16695
16696         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16697
16698         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16699
16700         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16701
16702         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16703         
16704         * mini.c (print_jit_stats): Print new stats.
16705
16706         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16707
16708 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16709
16710         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
16711         Address on two dimensional arrays. Fixes #78729.
16712
16713         * mini.h (MonoCompile): Add a 'skip_visibility' field.
16714
16715         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
16716         a method.
16717
16718         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
16719
16720         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
16721         #79130.
16722         
16723         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
16724         a race condition.
16725         (mini_get_ldelema_ins): Ditto.
16726
16727 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
16728
16729         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
16730         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
16731         Fixes #79213.
16732
16733 2006-08-29 Neale Ferguson <neale@sinenomine.net>
16734
16735         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
16736         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
16737
16738         * exceptions-s390x.c: Cosmetic change.
16739
16740         * tramp-s390.c: Fix warning.
16741
16742         * cpu-s390.md: Correct length of mul_imm.
16743
16744 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
16745
16746         * aot-compiler.c: added binary writer with ELF backend
16747         implementation (only on Linux/x86 for now).
16748
16749 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16750
16751         * Makefile.am: Don't run net 2.0 AOT tests.
16752
16753         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
16754         (mono_compile_assembly): Skip net 2.0 assemblies as well.
16755
16756         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
16757
16758 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16759
16760         * aot-compiler.c: simplified and refactored the asm-writing code
16761         to allow different backends.
16762
16763 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16764
16765         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
16766
16767         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
16768         little. Share patches of type TYPE_FROM_HANDLE as well.
16769
16770         * mini.c (mono_patch_info_equal): New helper function.
16771         (mono_patch_info_hash): Ditto.
16772
16773         * aot-compiler.c (emit_method_code): Fix s390 build.
16774
16775         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
16776         is not handled because it is stored as a flag and not as a type ctor. Fixes
16777         #79016.
16778
16779 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
16780
16781         * aot-compiler.c: Fix computation of GOT slot statistics.
16782         
16783         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
16784         Also remove support for not PIC AOT.
16785
16786         * mini.h: Bump AOT file format version.
16787
16788         * objects.cs: Add a test for #78990.
16789
16790         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
16791         (peter.dettman@iinet.net.au). Fixes #79087.
16792
16793         * basic-long.cs: Add a test for the above.
16794
16795 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
16796
16797         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
16798         
16799         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
16800         code somewhat.
16801
16802 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
16803
16804         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
16805         exceptions.
16806
16807 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
16808
16809         * mini.c: Don't verify COM proxy invoke calls
16810         
16811
16812 2006-08-10  Dick Porter  <dick@ximian.com>
16813
16814         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
16815         which process is holding semaphores locked.
16816
16817 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
16818
16819         * mini-ia64.c mini-amd64.c: Fix #79027.
16820
16821         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
16822
16823         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
16824
16825         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
16826         implicit arguments in a vararg call. Fixes #79027.
16827
16828 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
16829
16830         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
16831         (mono_get_array_new_va_signature): Ditto.
16832
16833 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
16834
16835         * aot-runtime.c: Call init_plt lazily.
16836
16837         * inssel-long.brg: Fix unsigned long->int conversion.
16838
16839         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
16840
16841         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
16842         that most data is now in the .rss/.data section.
16843
16844 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
16845
16846         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
16847
16848         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
16849
16850         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
16851
16852         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
16853
16854         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
16855         virtual call. Fixes #79010.
16856
16857         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
16858         and use the result as the this argument in the real call.
16859
16860         * generics.2.cs: Add a new test for #79010.
16861         
16862 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
16863
16864         * mini-x86.c: Fix a warning.
16865
16866         * aot-compiler.c: Add a bunch of statistics.
16867
16868         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
16869
16870 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
16871
16872         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
16873
16874 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
16875
16876         * 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>.
16877
16878 2006-07-13  Miguel de Icaza  <miguel@novell.com>
16879
16880         * mini.c (mono_method_to_ir): Obtain the original method in the
16881         CIL stream and use this to perform validation.
16882
16883         Fixed: #78816
16884
16885 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
16886
16887         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
16888         (mono_arch_call_opcode): Ditto.
16889
16890         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
16891         #78826.
16892
16893         * mini.c (mono_patch_info_dup_mp): New helper function.
16894         
16895         * aot-compiler.c (compile_method): Fix some of the memory allocated during
16896         compilation. Fixes #78827.
16897
16898 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
16899
16900         * declsec.c: Use original security informations for
16901           MONO_WRAPPER_MANAGED_TO_MANAGED.
16902
16903 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
16904
16905         * mini.c: Allow Com Interop methods/classes and
16906         don't verify COM wrapper calls
16907         
16908
16909 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
16910
16911         * inssel-long32.brg: Fix long->i4 checked conversion.
16912
16913         * exceptions.cs: Add a test for the above.
16914
16915 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
16916
16917         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
16918
16919         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
16920         leaks.
16921
16922         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
16923         #78775.
16924
16925 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
16926
16927         * mini.c: Fix solaris/x86 exception handling.
16928
16929         * Makefile.am: Get rid of $(ICU_LIBS).
16930
16931 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
16932
16933         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
16934         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
16935         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
16936
16937         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
16938
16939         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
16940         this function causes a SIGSEGV.
16941
16942 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
16943
16944         * mini.c: Remove unused solaris/x86 includes.
16945
16946 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
16947
16948         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
16949
16950 2006-06-20  Jb Evain  <jbevain@gmail.com>
16951
16952         * cpu-g4.md: fix max length of start_handler instruction.
16953
16954 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
16955         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
16956
16957 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
16958         * ssa.c: Fixed bug 78653 for SSA based deadce.
16959         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
16960         MonoInst.flags, used in SSA based deadce.
16961         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
16962         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
16963
16964 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
16965
16966         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
16967         it can end up using non executable memory on ppc64 systems
16968         running ppc32 userspace (fix from Johannes Berg).
16969
16970 2006-06-14  Dick Porter  <dick@ximian.com>
16971
16972         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
16973         4.1.1
16974
16975 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
16976         * mini.c: Made so that inline is locally disabled if it would
16977         trigger a .cctor, because too many apps depend on this behavior
16978         (which seems to be also the one of the MS CLR).
16979
16980 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
16981
16982         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
16983         No idea why this worked before.
16984
16985         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
16986         which branch to outer exception clauses since they could skip the
16987         inner finally clauses. Fixes #78633.
16988
16989         * exceptions.cs: Add a test for the above.
16990
16991         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
16992         Fixes #78629.
16993
16994         * iltests.il: Add a test for the above.
16995
16996 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
16997
16998         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
16999         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17000
17001         * iltests.il: Add a test for the above.
17002
17003 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17004
17005         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17006         
17007         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17008         methods as instrinsics.
17009
17010 2006-06-09  Wade Berrier <wberrier@novell.com>
17011
17012         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17013         (simple-cee-ops.h ssapre-mini-ops.h)
17014
17015 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17016
17017         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17018         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17019         instruction).
17020         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17021         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17022
17023 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17024
17025         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17026
17027 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17028
17029         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17030         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17031         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17032         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17033         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17034         of opcodes, so that bug 78549 should not happen again.
17035         * ssapre.c: Updated to use the renamed files.
17036
17037 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17038
17039         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17040         in OP_ATOMIC_EXCHANGE_I4.
17041
17042 2006-06-07  Wade Berrier <wberrier@novell.com>
17043
17044         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17045         in mono_debugger_create_notification_function)
17046
17047 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17048
17049         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17050         
17051         * mini.c (type_from_stack_type): Disable some changes which do not
17052         seem to work.
17053
17054         * driver.c: Reenable opts.
17055
17056         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17057         of the evaluation stack.
17058         
17059         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17060         evaluation stack trace at entry to the bblock.
17061
17062         * mini.c (merge_stacks): New function to perform verification of stack merges.
17063         Turned off by default.
17064
17065         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17066         STACK_MP.
17067         
17068 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17069
17070         * local-propagation.c: Fixed bug 78549.
17071
17072 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17073
17074         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17075
17076 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17077
17078         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17079         tramp-arm.c, tramp-ia64.c
17080         (mono_debugger_create_notification_function): Update signature to
17081         new signature and use new protocol for creating the notification
17082         function.  
17083
17084         Should fix the build.
17085
17086 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17087
17088         * exceptions-ppc.c (mono_jit_walk_stack)
17089         (ves_icall_get_frame_info): Fix the build
17090
17091 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17092
17093         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17094
17095 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17096
17097         * il2tests.2.il: New file for generics CIL tests.  Add test for
17098         #78019.
17099         * Makefile.am: Update.
17100
17101         Fix #78019
17102         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17103         to nullable types.
17104
17105 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17106
17107         * aliasing.c: Fixed bug 78311.
17108
17109 2006-05-29  Martin Baulig  <martin@ximian.com>
17110
17111         * mini-exceptions.c (mono_find_jit_info): When computing the
17112         native offset, check whether we're actually inside the method's
17113         code; call mono_debug_print_stack_frame() to format the frame.
17114         (ves_icall_System_Exception_get_trace): Call
17115         mono_debug_print_stack_frame() to format the stack frame.
17116         (ves_icall_get_trace): Update to the new debugging API.
17117         (mono_jit_walk_stack_from_ctx): Likewise.
17118         (ves_icall_get_frame_info): Likewise.
17119
17120         * mini.c (get_method_from_ip): Use the new debugging API.
17121         (mono_print_method_from_ip): Likewise.
17122
17123         * exceptions-ppc.c
17124         (mono_jit_walk_stack): Use the new debugging API.
17125         (ves_icall_get_frame_info): Likewise.   
17126
17127 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17128
17129         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17130
17131 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17132
17133         * mini.c: Added "limitator" to inline for debugging.
17134
17135 2006-05-24  Martin Baulig  <martin@ximian.com>
17136
17137         * debug-debugger.c (mono_debugger_init): Create a private,
17138         malloc()-based code manager for the notification function and
17139         intentionally leak it on exit.  This fixes the crash-on-exit race
17140         condition.
17141
17142         * tramp-amd64.c
17143         (mono_debugger_create_notification_function): Added
17144         `MonoCodeManager *' argument.
17145
17146         * tramp-x86.c
17147         (mono_debugger_create_notification_function): Added
17148         `MonoCodeManager *' argument.
17149
17150 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17151
17152         * aliasing.c: Fixed 64 bit issue.
17153         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17154         default since all known bugs are fixed (one more time!).
17155
17156 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17157
17158         * mini.c: write barrier support.
17159
17160 2006-05-23  Martin Baulig  <martin@ximian.com>
17161
17162         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17163         check at the top of the file.
17164
17165 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17166
17167         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17168         reverting changes without reason and without changelog entries.
17169
17170 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17171
17172         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17173         to a few opcodes. Fixes #78439.
17174
17175         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17176         consistency with other archs.
17177
17178         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17179
17180 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17181
17182         * debug-debugger.c: fix the build.
17183
17184 2006-05-17  Martin Baulig  <martin@ximian.com>
17185
17186         * debug-debugger.c
17187         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17188         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17189         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17190         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17191
17192 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17193
17194         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17195
17196 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17197
17198         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17199         MONO_TYPE_GENERICINST.
17200         
17201         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17202         MONO_TYPE_GENERICINST.
17203
17204 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17205
17206         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17207         #78325.
17208
17209 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17210
17211         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17212         mempool.
17213         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17214
17215 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17216
17217         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17218         mono_trace_cleanup ().
17219
17220         * iltests.il: Fix problem with the newly added test.
17221
17222         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17223         due to register constraints, free up the previous hreg. Fixes #78314.
17224
17225         * iltests.il: Add new test for #78314.  
17226
17227         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17228         Interlocked.Add. Fixes #78312.
17229
17230         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17231         
17232 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17233
17234         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17235
17236 2006-05-05  Martin Baulig  <martin@ximian.com>
17237
17238         * debug-mini.c (mono_debug_open_block): New method.
17239
17240         * mini-amd64.c
17241         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17242         the beginning of each basic block.
17243
17244         * mini-x86.c
17245         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17246         the beginning of each basic block.
17247
17248 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17249
17250         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17251         default until I understand why they break the build on amd64.
17252
17253 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17254
17255         * mini.c (mini_cleanup): Call mono_cleanup ().
17256
17257         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17258         errors.
17259
17260 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17261
17262         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17263         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17264         default since all known bugs are fixed, and I cannot reproduce bug
17265         77944... I'm asking Matt Hargett to test again after this commit.
17266
17267 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17268
17269         * mini-codegen.c: Fixed typo that thrashed inline.
17270
17271 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17272
17273         * dominators.c (compute_dominators): Avoid using a worklist since
17274         it is not correct in some cases. Instead, iterate over all bblocks as
17275         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17276
17277 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17278
17279         * mini.c (mono_jit_compile_method_inner): Use
17280         mono_prepare_exception_from_error that resets the value
17281         internally.
17282
17283 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17284
17285         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17286         
17287 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17288
17289         * aliasing.c: Fixed bug 78210.
17290
17291 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17292
17293         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17294         default until all their problems (or the ones they trigger) are fixed.
17295
17296 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17297
17298         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17299         
17300         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17301         as loaded only after resolving patches since that could invoke the same method.
17302
17303         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17304
17305         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17306         functions.
17307
17308         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17309         AOT loader.
17310
17311         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17312         stack.
17313
17314         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17315         made from AOT code through the PLT table.
17316
17317         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17318         holding the plt offset when a call is made to the aot plt trampoline.
17319         
17320 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17321
17322         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17323         amd64 AOT support.
17324
17325         * Makefile.am (common_sources): Fix build breakage.
17326
17327         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17328         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17329         intra-assembly calls if possible.
17330         
17331         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17332
17333         * mini-trampolines.c: Handle PLT entries.
17334
17335         * mini.c: Avoid creating a GOT var for calls.
17336
17337         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17338         from mscorlib code.
17339
17340         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17341         from mscorlib code.
17342
17343         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17344         AOT code.       
17345
17346         * mini.h: Bump AOT file format version.
17347         
17348         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17349         covers more cases.
17350
17351 2006-04-25  Martin Baulig  <martin@ximian.com>
17352
17353         * driver.c: Disable copyprop, consprop and inline when running
17354         inside the debugger.
17355
17356 2006-04-25  Martin Baulig  <martin@ximian.com>
17357
17358         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17359         with `get_current_thread' and added `detach'.
17360         (MonoDebuggerMetadataInfo): Added `thread_size',
17361         `thread_tid_offset', `thread_stack_ptr_offset' and
17362         `thread_end_stack_offset'.
17363
17364 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17365
17366         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17367         aot-runtime.c.
17368
17369         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17370         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17371
17372         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17373
17374         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17375
17376         * aot.c: Add support for ADJUSTED_IID.  
17377
17378 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17379
17380         * aot.c (emit_method_order): Don't align method_order_end.
17381
17382         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17383         the interface ID changes.
17384
17385 2006-04-21  Dick Porter  <dick@ximian.com>
17386
17387         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17388         cleaning up a thread.  Fixes the new part of bug 77470.
17389
17390 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17391
17392         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17393         to managed wrapper.
17394                      
17395 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17396
17397         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17398         
17399         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17400         SIGSEGV. Fixes #78072.
17401
17402         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17403         unregister our SIGABRT handler.
17404
17405 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17406
17407         * mini.c: Disabled inline where it can alter the call stack in a
17408         way visible from managed code.
17409         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17410         default.
17411
17412 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17413
17414         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17415         on other platforms. Fixes #78089.
17416
17417 2006-04-13  Martin Baulig  <martin@ximian.com>
17418
17419         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17420         determine whether we're inside the debugger.
17421
17422         * debug-debugger.h
17423         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17424
17425 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17426
17427         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17428         handler clauses. Fixes #78024.
17429
17430         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17431         in the CALL_MEMBASE opcodes. Fixes #78088.
17432         (mono_arch_get_vcall_slot_addr): Ditto.
17433
17434 2006-04-10  Martin Baulig  <martin@ximian.com>
17435
17436         * debug-debugger.c: The thread handling code has now been moved
17437         into ../metadata/threads.c.
17438
17439 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17440
17441         * driver.c (mono_main): Fix --with-gc=none build.
17442
17443         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17444         (mono_spillvar_offset_float): Ditto.
17445         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17446         hreg, not when its !global, since on ia64, there is a third category: stacked
17447         registers.      
17448
17449 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17450
17451         * mini.c: set MonoInst->klass for load field address and a few other
17452         places.
17453
17454 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17455
17456         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17457
17458 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17459
17460         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17461         the branch opt changes.
17462
17463 2006-04-06  Dick Porter  <dick@ximian.com>
17464
17465         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17466         
17467         * wapihandles.c (mini_wapi_seminfo): 
17468         * driver.c (mono_main): Add semaphore info option
17469
17470 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17471
17472         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17473         branch optimization changes. Fixes #78009.
17474
17475 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17476
17477         * mini.c: ignore accessibility of methods in managed->native wrappers.
17478
17479 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17480
17481         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17482         
17483         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17484
17485 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17486
17487         * mini.c: Modify the branch optimizations to preserve the invariant that
17488         the entries inside the in_bb and out_bb arrays are unique.
17489         (mono_unlink_bblock): Avoid creation of new arrays.
17490
17491 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17492
17493         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17494         change (#77992).
17495
17496 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17497
17498         * mini.c (optimize_branches): Remove the "optimizations" in
17499         the cbranch1/cbranch2 -> branch cases which were causing several
17500         problems in the past. Fixes #77986.
17501
17502 2006-03-31  Chris Toshok  <toshok@ximian.com>
17503
17504         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17505         default optimizations :(
17506
17507 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17508
17509         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17510         branch.
17511
17512 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17513
17514         * local-propagation.c: Added comments to structs and removed
17515         "Mono" prefixes from local tree mover types.
17516
17517 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17518
17519         * Makefile.am (arch_sources): Define this for each architecture so 
17520         libmono_la_SOURCES is defined in one place.
17521
17522 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17523
17524         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17525         from handles/.
17526
17527 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17528
17529         * driver.c: print the GC name supplied by configure.
17530
17531 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17532
17533         * local-propagation.c: Added tree mover, and moved here all the
17534         local propagation code from mini.c
17535         * mini.c: Added support for treeprop, and moved all the local
17536         propagation code to local-propagation.c
17537         * mini.h: Added support for treeprop
17538         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17539         treeprop, inline and deadce by default
17540         * Makefile.am: Added local-propagation.c
17541
17542 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17543
17544         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17545
17546 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17547
17548         * debug-debugger.c: make it compile without the Boehm GC.
17549
17550 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17551
17552         * mini.c: fixed issue with mismatch when an icall is registered
17553         with multiple names but same address.
17554
17555 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17556
17557         * declsec.c, mini-exceptions.c: use write barrier to set reference
17558         fields of managed objects.
17559
17560 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17561
17562         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17563         (can_access_internals): Fix a warning.
17564
17565         * mini.c (print_method_from_ip): Rename this to 
17566         mono_print_method_from_ip so it gets exported.
17567
17568         * trace.c: Deal with strings inside StringBuilder's containing garbage
17569         and fix memory leaks. Fixes #77848.
17570
17571 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17572
17573         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17574         fixes #77787.
17575
17576 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17577         
17578         * mini-s390.c: Remove OP_X86_TEST_NULL.
17579
17580 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17581
17582         * mini.c: use the correct GetHashCode() for the moving collector.
17583
17584 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17585
17586         * liveness.c: Regalloc spill cost tuning.
17587
17588 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17589         
17590         * mini-s390x.h: Correct S390_LONG macro.
17591
17592         * mini-s390x.c: Cleanup unused code.
17593
17594 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17595
17596         * jit-icalls.h: New file.
17597
17598         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17599         icalls and include that instead of including jit-icalls.c.
17600
17601         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17602         OP_X86 opcodes.
17603
17604 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17605
17606         * mini.c: when checking for member accessibility, also check for
17607         friend assemblies and for explicit interface implementations.
17608
17609 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17610
17611         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17612
17613         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17614
17615         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17616         common cases are done first.    
17617
17618         * mini-ops.h: Only define platform specific opcodes on the given platform.
17619
17620         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17621         branch.
17622         
17623 2006-03-14  Martin Baulig  <martin@ximian.com>
17624
17625         Revert Paolo's change from r57348:
17626
17627         * mini.h: don't use gboolean for bitfields.
17628         * mini.c: verifier changes for fields and methods accessibility.
17629
17630 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17631
17632         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17633
17634         * mini-s390x.c: Fix conv_r_un.
17635
17636         * cpu-s390, cpu-s390x.md: Fix lengths.
17637
17638 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17639
17640         * mini.c: nested types have access to all the nesting
17641         levels, not just the enclosing types.
17642
17643 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17644
17645         * mini.c: added a few more verification checks.
17646
17647 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17648
17649         * liveness.c: Merge optimizations from the linear-il branch.
17650
17651 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17652
17653         * mini-ia64.c (emit_call): Add a comment.
17654
17655         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17656
17657         * tramp-ia64.c: Fix some warnings.
17658
17659 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17660
17661         * mini.h: don't use gboolean for bitfields.
17662         * mini.c: verifier changes for fields and methods accessibility.
17663
17664 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17665
17666         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17667         lazy icall wrapper changes.
17668
17669         * dominators.c: Replace all the dominator algorithms with faster
17670         ones from the linear-il branch.
17671
17672         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17673         the mempool.
17674
17675         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17676         common cases are done first.
17677
17678         * mini-amd64.c: Fix some warnings.
17679
17680         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17681         from the mempool.
17682
17683         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17684         added code.
17685
17686         * mini.h: Add a missing prototype.
17687
17688 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17689
17690         * mini.c: Compile icall wrappers lazily.
17691
17692         * mini-codegen.c: Use printf instead of g_print since its much faster.
17693
17694         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17695         function.
17696
17697         * mini.c (optimize_branches): Cache the negative result from 
17698         remove_block_if_useless ().
17699
17700         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17701         Also fix some bblock linking issues.
17702
17703         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17704         assembly files.
17705
17706         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
17707
17708         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
17709         accessed fields first, for better cache behavior.
17710         
17711 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
17712
17713         * mini.c: speedup IList<T> array accesses.
17714
17715 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17716
17717         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
17718         inline_costs counter. Fixes #77190.
17719
17720 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
17721
17722         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
17723         trace messages. Fixes #77706.
17724
17725 2006-03-04  Martin Baulig  <martin@ximian.com>
17726
17727         * tramp-amd64.c, tramp-x86.c
17728         (mono_debugger_create_notification_function): Use
17729         mono_global_codeman_reserve() to allocate a buffer at runtime and
17730         return it.
17731
17732         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
17733
17734         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
17735         notification function at runtime and then call `initialize' in the
17736         `MONO_DEBUGGER__debugger_info' vtable.
17737
17738 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
17739
17740         * iltests.il: Fix a visibility problem.
17741
17742 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17743
17744         * driver.c, mini.c: add hooks for the counters API.
17745
17746 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17747
17748         * driver.c: show disabled options.
17749
17750 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17751
17752         * linear-scan.c: always use cost-driven selection.
17753
17754 2006-02-28  Raja R Harinath  <rharinath@novell.com>
17755
17756         * jit-icalls.c (helper_compile_generic_method): Revert change from
17757         2006-02-24.
17758
17759 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
17760
17761         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
17762
17763 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
17764
17765         * inssel.brg: style fixes, mostly to force the updated monoburg
17766         to run for people using svn.
17767
17768 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
17769
17770         * mini.c: match monoburg changes.
17771
17772 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17773
17774         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
17775         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
17776         declaration in the header file.
17777
17778 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17779
17780         * helpers.c: reduce relocations and mem usage.
17781
17782 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17783
17784         * mini.h, mini-codegen.c: disable logging features if
17785         requested by configure.
17786
17787 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
17788
17789         * mini.c: tiny verifier changes.
17790
17791 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17792
17793         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
17794         cpu-pentium.md: stack alignment changes for osx/x86,
17795         partially from Geoff Norton <gnorton@customerdna.com>.
17796
17797 2006-02-24  Raja R Harinath  <harinath@gmail.com>
17798
17799         * jit-icalls.c (helper_compile_generic_method): Update to changes
17800         in metadata/class.c.
17801
17802 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
17803         
17804         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
17805         
17806         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
17807         interface calls with large offsets.
17808
17809 2006-02-23  Raja R Harinath  <rharinath@novell.com>
17810
17811         * jit-icalls.c (helper_compile_generic_method): Document the
17812         special-case we depend on so that we can inflate the method twice
17813         with the same context with no bad side-effects.
17814
17815 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
17816
17817         * mini-x86.c, mini-amd64.c: fix for case when xen support
17818         is disabled.
17819
17820 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17821
17822         * mini-x86.c, mini-amd64.c: generate code to access tls items
17823         in a faster way for Xen systems.
17824
17825 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17826
17827         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
17828         updates and compilation fixes for the OSX/x86 port, mostly from
17829         Geoff Norton <gnorton@customerdna.com>.
17830
17831 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
17832
17833         * inssel.brg: faster interface call implementation
17834         to sync with the interface_offsets MonoVTable changes.
17835
17836 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17837
17838         * mini.c: more verification checks.
17839
17840 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
17841
17842         * mini.c: added a few more verification checks.
17843
17844 2006-02-17      Neale Ferguson <neale@sinenomine.net>
17845
17846         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
17847         facility on the processor and use it if available.
17848
17849 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17850
17851         * driver.c, aot.c, mini.c: throw exception if the IL code is
17852         invalid or unverifiable.
17853
17854 2006-02-17  Raja R Harinath  <rharinath@novell.com>
17855
17856         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
17857         m.StructField.
17858
17859 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
17860
17861         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
17862
17863 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17864
17865         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
17866         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
17867         handling of instantiated generic valuetypes.
17868
17869 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
17870
17871         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
17872         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
17873         instead.
17874
17875         * generics.2.cs: Revert the nullable reftypes tests.
17876
17877 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
17878
17879         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
17880         using __builtin_frame_address (1) as it doesn't work in the presence
17881         of optimizations. Hopefully fixes #77273.
17882
17883         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
17884         -> generics.cs change as it doesn't work with some automake versions.
17885
17886 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17887
17888         * mini.c: handle systems that sue a different way to
17889         retrieve the stack address of the current thread.
17890
17891 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
17892
17893         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
17894         it specially in the makefile.
17895
17896         * generics.2.cs: Add tests for nullable reference types.
17897
17898 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17899
17900         * mini.c: always handle the case when mono_jit_init()
17901         is called in a thread different from the main thread,
17902         confusing libgc (bug #77309).
17903
17904 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
17905
17906         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
17907
17908 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
17909
17910         * mini.c: change optimize_branches () to use a single loop
17911         and introduce a new optimization to simplify some range checks.
17912
17913 2006-02-03  Martin Baulig  <martin@ximian.com>
17914
17915         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
17916         and merged with debugger_thread_manager_add_thread().
17917         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
17918         inform the debugger about the main thread.
17919
17920 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17921
17922         * basic.cs: Add test for div.un/rem.un constant folding.
17923
17924 2006-02-03  Neale Ferguson <neale@sinenomine.net>
17925
17926         * cpu-s390x.md: correct int_xor_imm length
17927
17928 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17929
17930         * generics.2.cs: New test for #77442.
17931
17932         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
17933         #77442.
17934
17935 2006-02-02  Martin Baulig  <martin@ximian.com>
17936
17937         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
17938         <mono/metadata/mono-debug-debugger.h>   
17939
17940         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
17941
17942 2006-02-02  Martin Baulig  <martin@ximian.com>
17943
17944         * debug-debugger.h: New header file for debug-debugger.c.
17945
17946         * debug-debugger.c: Big API cleanup; don't run the managed Main()
17947         function is a separate thread anymore; add support for attaching.
17948
17949 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
17950
17951         * tramp-x86.c: Fix a warning.
17952
17953 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
17954
17955         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
17956         on very large methods.
17957
17958         * aot.c (load_patch_info): Fix a warning.
17959
17960 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
17961
17962         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
17963         mini-ops.h: alu membase optimizations.
17964
17965 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
17966
17967         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
17968         to speedup StringBuilder.
17969
17970 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
17971
17972         * dominators.c (mono_compute_natural_loops): Fix detection of
17973         loop body start blocks.
17974
17975         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
17976
17977 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
17978
17979         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
17980         #75145.
17981
17982 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
17983
17984         * aliasing.c: Fixed aliasing issue on 64 bit archs.
17985
17986 2006-01-25  Martin Baulig  <martin@ximian.com>
17987
17988         * debug-debugger.c: Moved the `MonoDebuggerManager' and
17989         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
17990         started to cleanup this file a little bit.
17991
17992 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
17993
17994         * mini.c: optimize a codepath frequently happening in generics code.
17995
17996 2006-01-23  Martin Baulig  <martin@ximian.com>
17997
17998         * Makefile.am: Only compile debug-debugger.c on supported platforms.
17999
18000         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18001         functions directly.
18002
18003         * driver.c: debug-debugger.c is only available if
18004         `MONO_DEBUGGER_SUPPORTED' is defined.   
18005
18006 2006-01-23  Martin Baulig  <martin@ximian.com>
18007
18008         * debug-debugger.c: Only enable this on platforms where the Mono
18009         Debugger is working (x86 and x86_64).
18010
18011 2006-01-21  Martin Baulig  <martin@ximian.com>
18012
18013         The Mono Debugger is now using the normal `mono' instead of the
18014         `mono-debugger-mini-wrapper' when executing managed code.
18015
18016         * debug-debugger.c: New file; previously known as
18017         debugger/wrapper/wrapper.c.
18018
18019         * debug-mini.c (mono_init_debugger): Removed.
18020
18021         * driver.c (mono_main): Added new `--inside-mdb' command line
18022         argument which is used when running inside the debugger.
18023
18024 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18025
18026         * liveness.c (mono_analyze_liveness): Remove some unused data
18027         structures.
18028
18029 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18030
18031         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18032
18033 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18034
18035         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18036         depends on implementation details of monobitset.
18037
18038         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18039         Fixes #77271.
18040
18041 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18042
18043         * liveness.c: Update after monobitset changes.
18044
18045 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18046
18047         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18048
18049 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18050
18051         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18052
18053         * mini-s390x.c: Remove warning messages.
18054
18055 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18056
18057         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18058
18059 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18060
18061         * generics.2.cs: Add ldelem/stelem_any test.
18062
18063 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18064
18065         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18066
18067 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18068
18069         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18070         
18071 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18072
18073         * generics.2.cs: Reenable vtype tests.
18074
18075         * inssel-x86.brg: Remove an icorrect valuetype rule.
18076
18077 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18078
18079         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18080         initial support for OP_ABS.
18081
18082 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18083
18084         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18085
18086 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18087
18088         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18089         conversion and implement LADD/LSUB.
18090
18091         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18092         architectures.
18093
18094 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18095
18096         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18097
18098         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18099         architectures.
18100
18101 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18102
18103         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18104         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18105         (stack walk problem).
18106
18107 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18108
18109         * aot.c (mono_aot_load_method): Fix a warning.
18110
18111 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18112
18113         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18114
18115 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18116
18117         * iltests.il: Add test for #77148.
18118
18119         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18120         #77148.
18121
18122 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18123
18124         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18125
18126 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18127
18128         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18129         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18130
18131         * basic-long.cs: Add lconv-to-r4/r8 tests.
18132
18133 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18134
18135         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18136
18137         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18138         here as on other archs.
18139
18140 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18141
18142         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18143
18144 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18145
18146         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18147         
18148         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18149
18150         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18151         instrument_prolog; Add memory_barrier instruction.
18152
18153 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18154
18155         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18156
18157 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18158
18159         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18160
18161         * aliasing.c inssel.brg: Fix warnings.
18162
18163         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18164         could skip initialization of some parts of memory.
18165
18166         * mini.c mini-ia64.c: Fix warnings.
18167
18168         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18169
18170 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18171
18172         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18173         a crash seen on sparc.
18174
18175         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18176         
18177         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18178
18179 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18180
18181         * mini-ops.h: Add s390_backchain instruction
18182
18183         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18184
18185         * cpu-s390.md: Add s390_backchain instruction
18186
18187         * mini-s390.c: Significant ABI changes
18188
18189         * mini-s390.h: Cater for zero length structures
18190
18191 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18192
18193         * mini-s390.c: ABI fixes
18194
18195         * inssel-s390.brg: Remove debug statements
18196
18197         * cpu-s390.md: Fix length of ATOMIC_xx operations
18198
18199 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18200
18201         * basic-float.cs: Add float<->long conversion tests.
18202
18203 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18204
18205         * mini-s390.c: Fix LOCALLOC processing.
18206
18207         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18208
18209 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18210
18211         * iltests.il: Add tests for some opcodes not covered by the other
18212         tests.
18213
18214 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18215
18216         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18217         register loading for Tail processing; Correct trace output.
18218
18219         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18220
18221         * cpu-s390.md: Correct size of jmp instruction. 
18222
18223 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18224
18225         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18226
18227 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18228
18229         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18230           Bring s390 up to current level.
18231
18232 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18233
18234         * generics.2.cs: Disable the newly added tests as they do not work yet.
18235         
18236         * generics.2.cs: Add valuetype tests.
18237
18238 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18239
18240         * basic-long.cs: Add i4->u8 test.
18241
18242         * objects.cs: Add tests for JIT intrinsic.
18243
18244         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18245         optimizations lost by a mistake.
18246
18247 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18248
18249         * basic-long.cs: Remove a test moved to objects.cs.
18250
18251         * arrays.cs: Add more array tests.
18252
18253 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18254
18255         * arrays.cs: Add new tests for multi-dimensional arrays.
18256
18257 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18258
18259         * Makefile.am (test_sources2): Add generics.2.cs.
18260         (EXTRA_DIST): Add test_sources2.
18261
18262 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18263
18264         Support for boxing and unboxing nullable types as well as the
18265         isinst operation on nullables, per the CLI ammendment.
18266
18267         * inssel.brg (CEE_ISINST): Special case for nullable
18268
18269         * mini.c (handle_unbox_nullable): new method
18270         (handle_box): Special case for nullable types
18271         (mono_method_to_ir): Call handle_unbox_nullable in correct
18272         places.
18273
18274         * generics.2.cs: New test suite
18275
18276         * Makefile.am: Support for regression tests with generics.
18277
18278 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18279
18280         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18281         allocated to registers. Fixes #76800.
18282
18283 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18284
18285         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18286
18287 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18288
18289         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18290         of platforms.
18291
18292 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18293
18294         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18295         objects.cs.
18296
18297         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18298         
18299         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18300 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18301
18302         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18303         single precision before storing to a single precision location.
18304
18305 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18306
18307         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18308
18309 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18310
18311         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18312         correct files.
18313
18314         * basic.cs: Remove test_0_byte_compares test which was moved to
18315         objects.cs a long time ago.
18316
18317 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18318
18319         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18320
18321 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18322
18323         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18324         handlers are called.
18325
18326         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18327         throwing code.
18328
18329          * mini-ia64.c: Add support for the throw->branch exception 
18330         optimization.   
18331
18332         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18333
18334 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18335
18336         * mini.c: Enabled "fastpath" deadce :-)
18337         
18338 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18339
18340         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18341         alias analysis pass to support it.
18342         * mini.h: Likewise.
18343         * ssa.c: Likewise.
18344         * liveness.c: Likewise (liveness computation can use aliasing
18345         information to be more accurate).
18346         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18347         moreover made so that "--compile-all" uses the given optimization
18348         flags and not the default ones.
18349         * aliasing.c: Alias analysis (new file).
18350         * aliasing.h: Likewise.
18351         * Makefile.am: added "aliasing.c" and "aliasing.h".
18352         
18353 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18354
18355         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18356         OP_L opcodes.
18357
18358 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18359
18360         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18361         fp >= end_of_stack exit condition, as it is not needed, and it might
18362         become true for fp eliminated frames.
18363
18364 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18365
18366         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18367         coded offsets.
18368
18369 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18370
18371         * mini-arm.c: fixed alignment of doubles/longs to match
18372         the C ABI (bug #76635).
18373
18374 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18375
18376         * aot.c: fix compilation with --enable-minimal=aot.
18377
18378 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18379
18380         * mini-arm.c: fixed compatibility with the new
18381         floating point emulator package for compares.
18382
18383 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18384
18385         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18386
18387 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18388
18389         * mini-exceptions.c (print_stack_frame): Output to stderr.
18390         (mono_handle_native_sigsegv): Ditto.
18391
18392 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18393
18394         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18395         OP_LCONV_TO_OVF_I implementation.
18396
18397         * mini-amd64.c: Add support for the throw->branch exception 
18398         optimization.
18399
18400         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18401         when the catch clause catches a more general exception, i.e. Object.
18402
18403 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18404
18405         * cpu-ia64.md: Remove unused opcodes.
18406
18407         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18408         specific defines for architectures defining USE_SIGACTION.
18409
18410         * mini-ia64.c: Fix some warnings.
18411
18412         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18413         version seemed to skip a frame.
18414
18415 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18416
18417         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18418         only calls which are made to native code use this flag.
18419
18420 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18421
18422         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18423         varargs methods as well.
18424         
18425         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18426         which have save_lmf set. Reorganize methods prologs a bit.
18427
18428         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18429         debugger to the proper place.
18430
18431 2005-10-29  Martin Baulig  <martin@ximian.com>
18432
18433         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18434         when running inside the debugger until the debugger has support
18435         for it.
18436
18437 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18438
18439         * mini.h: Fix a warning.
18440
18441 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18442
18443         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18444         we expose publicly, this returns the string.
18445
18446 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18447
18448         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18449         with fp elimination.
18450
18451 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18452
18453         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18454         native stacktrace using the glibc 'backtrace' function if available.
18455
18456 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18457
18458         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18459
18460         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18461         handle SIGSEGVs received while in native code.
18462
18463         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18464         code, call mono_handle_native_sigsegv which will abort the runtime
18465         after printing some diagnostics, instead of converting it into a
18466         confusing NullReferenceException.
18467
18468 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18469
18470         * cpu-pentium.md: Remove unused opcodes.
18471
18472 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18473
18474         * mini-amd64.h (MonoLMF): Add rsp field.
18475
18476         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18477         the lmf too.
18478
18479 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18480
18481         * mini-codegen.c (get_register_spilling): Fix some warnings.
18482
18483 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18484
18485         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18486         elimination during exception handling. Enable fp elimination by
18487         default.
18488
18489         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18490         elimination.
18491
18492 2005-10-16  Martin Baulig  <martin@ximian.com>
18493
18494         * mini-exceptions.c
18495         (mono_debugger_run_finally): New public method for the debugger.
18496
18497 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18498
18499         * debug-mini.c (mono_debug_init_method): Fix warning.
18500
18501         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18502         the 'exname' parameter const to fix some warnings.
18503
18504 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18505
18506         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18507         introduced by the previous patch.
18508
18509 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18510
18511         * basic-float.cs: Add test for precision of float arithmetic.
18512
18513         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18514         when loading/storing single values from/to memory.
18515
18516         * mini.c (mono_jit_compile_method_with_opt): Create the function
18517         pointers in the correct domain.
18518
18519 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18520
18521         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18522         introduced by previous patch.
18523         
18524         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18525         when out_filter_idx is NULL.
18526
18527         * mini-exceptions.c: Don't run filter clauses twice during exception
18528         handling. Fixes #75755.
18529
18530 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18531
18532         * aot.c: Add support for ldflda wrappers.
18533
18534         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18535         #75902.
18536
18537 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18538
18539         * mini.c, mini.h: do not consider exception handlers blocks when
18540         setting up interface variables.
18541
18542 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18543
18544         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18545
18546 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18547
18548         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18549         causes a regression.
18550
18551         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18552
18553 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18554
18555         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18556         of the OP_P definitions.
18557
18558         * TODO: Add a proposal for dealing with the CEE/OP mess.
18559
18560         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18561         optimizations from the x86 port.
18562
18563         * cpu-amd64.md: Ditto.
18564
18565         * basic.cs basic-long.cs: Add tests.
18566
18567 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18568
18569         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18570         Patrik Torstensson's implementation of my exception-handling
18571         optimization idea, when the exception object is not used
18572         (bug #62150).
18573
18574 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18575
18576         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18577         of the mul_imm optimizations from the old jit.
18578
18579 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18580
18581         * mini.c, liveness.c: patch by Patrik Torstensson and
18582         Zoltan Varga to improve performance in methods with
18583         exception clauses.
18584
18585 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18586
18587         * driver.c: Remove 'Globalization' entry from --version.
18588
18589 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18590
18591         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18592         there is a profiler interested in JIT events.
18593
18594         * aot.c: Load profile files produced by the AOT profiling module, and
18595         reorder methods based on the profiling info. Add a 'method_order' table
18596         to the AOT file to make mono_aot_find_jit_info work with the reordered
18597         methods.
18598
18599         * mini.h: Bump AOT file version info.
18600
18601 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18602
18603         * mini-arm.h: work around what looks like a gcc bug when optimizations
18604         are enabled.
18605
18606 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18607
18608         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18609         conditionals.  Use ...
18610         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18611
18612 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18613
18614         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18615         to determine the amount of memory to copy when passing valuetypes.
18616
18617         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18618         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18619
18620 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18621
18622         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18623         information about aot.
18624
18625 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18626
18627         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18628         macros. This will allow a deadlock debugger to easily be plugged
18629         in.
18630
18631 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18632
18633         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18634
18635 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18636
18637         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18638         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18639         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18640         ($(arch_built)) [CROSS_COMPILING]: Error out.
18641
18642 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18643
18644         * aot.c: Add support for the no_special_static flag for classes.
18645
18646 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18647
18648         * Reapply reverted patches.
18649
18650         * *: Revert r50174 as well.
18651
18652         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18653
18654 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18655
18656         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18657
18658 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18659
18660         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18661         part of the SIG_HANDLER_SIGNATURE.  
18662
18663 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18664
18665         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18666         statistics.
18667
18668         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18669         introduced by previous patch.
18670
18671 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18672
18673         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18674         saved registers too.
18675
18676         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18677         upon the information returned by get_call_info ().
18678         
18679         * mini-x86.c (add_float): Fix stack size calculation.
18680         (mono_arch_call_opcode): Rewrite this so it works based up the
18681         information returned by get_call_info ().
18682         (mono_arch_get_this_vret_args): Ditto.
18683
18684 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18685
18686         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18687         in cinfo to determine the registers which need to be used.
18688
18689 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18690
18691         * driver.c (mono_main): Add --server and --desktop flags. 
18692
18693 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18694
18695         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18696         registers as global registers.
18697
18698         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18699         longer needed with the new register allocator.
18700
18701         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18702
18703         * cpu-ia64.md: Remove unused opcodes.
18704         
18705         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
18706         
18707 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
18708
18709         * cpu-amd64.md: Remove unused opcodes.
18710
18711         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
18712         needed with the new register allocator.
18713
18714         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
18715         reg-reg moves.
18716
18717 2005-09-16  Raja R Harinath  <rharinath@novell.com>
18718
18719         * Makefile.am (check-local): Don't invoke semdel-wrapper.
18720
18721 2005-09-16  Martin Baulig  <martin@ximian.com>
18722
18723         * exceptions-amd64.c
18724         (throw_exception): Don't call mono_debugger_throw_exception() if
18725         we're a rethrow - see the FIXME in the code.
18726
18727 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
18728
18729         * mini.c (mono_init_exceptions): This only works on some architectures.
18730         
18731 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18732
18733         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
18734         on ia64.
18735
18736         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
18737
18738         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
18739         now in mini-exceptions.c.
18740
18741 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
18742
18743         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
18744         now in mini-exceptions.c.
18745
18746 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18747
18748         * exceptions-x86.c: Applied patch from Patrik Torstensson 
18749         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
18750
18751         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
18752         code into mini-exceptions.c. Add some assertions to it.
18753
18754 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
18755
18756         * aot.c (emit_section_change): Applied patch from "The Software Team" 
18757         (<software@solmersa.com>). Fix as errors on windows.
18758
18759 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18760
18761         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
18762         method info into the LMF.
18763
18764 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18765         
18766         * mini-ia64.c: Add proper unwind info for method epilogs.
18767
18768         * exceptions-ia64.c: Add some code to help debugging.
18769         
18770         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
18771
18772         * mini-exceptions.c: Fix warning.
18773
18774 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18775
18776         * mini.c: Really fix build.
18777
18778         * mini-x86.c mini-amd64.c: Fix build.
18779
18780 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18781
18782         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
18783
18784         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
18785         some Interlocked methods as intrinsics.
18786
18787         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
18788         for Thread methods as well.
18789
18790         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
18791
18792         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
18793
18794         * mini-ia64.c mini-x86.c mini-amd64.c 
18795         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
18796         OP_MEMORY_BARRIER.
18797         
18798         * mini.c (mono_init_exceptions): Fix build breakage.
18799
18800 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
18801
18802         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
18803         of instructions. Use the new ia64_unw_op macros for emitting unwind
18804         info.
18805
18806         * mini.c (mono_init_exceptions): Initialize exception handling
18807         related trampolines at startup.
18808
18809 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
18810
18811         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
18812
18813 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
18814
18815         * mini.c: Handle type loading errors gracefully during compilation and
18816         throw the appropriate exception.
18817
18818 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
18819
18820         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
18821         for the mono binary.
18822
18823 2005-09-09  Martin Baulig  <martin@ximian.com>
18824
18825         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
18826         the release.
18827
18828 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18829
18830         * mini-arm.h: use emulation for conv.r.un for the release.
18831
18832 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18833
18834         * mini-arm.c, objects.cs: more fixes and tests for them.
18835
18836 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18837
18838         * mini-arm.c: align structures to at least 4 bytes to be able
18839         to keep our current optimized memcpy.
18840
18841 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
18842
18843         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
18844
18845 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18846
18847         * mini.c: ignore SIGPIPE.
18848
18849 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
18850
18851         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
18852
18853         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
18854
18855 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
18856
18857         * mini.h: Add prototype for mono_allocate_stack_slots_full.
18858
18859 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18860
18861         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
18862         exception handling support.
18863         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
18864         patch by Brian Koropoff <briank@marakicorp.com>).
18865
18866 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
18867
18868         * mini.c: revert another 'optimization' which breaks when
18869         items on the eval stack need to be saved at a basic block end
18870         (bug #75940).
18871
18872 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
18873
18874         * jit-icalls.c: for arrays, ensure we always provide
18875         lower bounds.
18876
18877 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
18878
18879         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
18880         
18881         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
18882
18883 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
18884
18885         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
18886         arguments in their original register.
18887
18888 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
18889
18890         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
18891         memset/memcpy.
18892
18893         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
18894         when ssapre is enabled.
18895
18896         * inssel-long.brg: Fix bug in previous patch.
18897
18898         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
18899         multiplication by a constant.
18900
18901 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
18902
18903         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
18904         icc.
18905
18906         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
18907         saving registers.
18908
18909 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
18910
18911         * inssel-arm.brg: apply changes tested by Brian Koropoff
18912         <briank@marakicorp.com>.
18913
18914 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
18915
18916         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
18917         
18918 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
18919
18920         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
18921         to the same register if dreg is just a base register.
18922         (print_ins): Improve printing of membase opcodes.
18923
18924         * inssel-x86.brg: Add optimized ldind(reg) rules.
18925
18926         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
18927
18928 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
18929
18930         * mini.c: when running under valgrind, set the stack bottom for
18931         the GC at the actual approximate stack for the app (fixes running
18932         mono with valgrind).
18933
18934 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
18935
18936         * mini.c: do no break at the first valuetype to init found
18937         (fixes bug #75791).
18938
18939 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
18940
18941         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
18942
18943 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
18944
18945         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
18946
18947 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
18948
18949         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
18950
18951 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18952
18953         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
18954
18955         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
18956         code.
18957
18958         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
18959         code.
18960
18961         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
18962         methods.
18963
18964 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
18965
18966         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
18967
18968 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18969
18970         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
18971         in the tail recursion optimization.
18972
18973         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
18974         debug info into the assembly file.
18975
18976         * iltests.il: Add test for filter regions.
18977
18978         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
18979         initial stack of filter regions. Fixes #75755.
18980
18981 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
18982
18983         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
18984         stack requirements.
18985
18986 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18987
18988         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
18989         the check for an already compiled method on non-ia64 platforms.
18990         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
18991         proper domain.
18992
18993         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
18994
18995         * inssel-x86.brg: Add some optimized call rules.
18996
18997 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
18998
18999         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19000         method here.
19001
19002         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19003         mono_arch_patch_delegate_trampoline.
19004
19005         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19006
19007         * mini-trampolines.c: Fix build.
19008
19009         * mini-amd64.h: Add delegate trampolines.
19010
19011         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19012
19013         * inssel-amd64.brg: Add optimized call rules.
19014         
19015         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19016
19017         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19018
19019 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19020
19021         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19022         change.
19023
19024         * mini-ia64.c: Remove LMF fixmes.
19025
19026         * mini-ia64.h: Remove most fields from LMF.
19027
19028         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19029
19030         * mini-trampolines.c: Add support for IA64 function descriptors.
19031
19032         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19033         for IA64 function descriptors.
19034
19035 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19036
19037         * tramp-arm.c: patch the vtable for virtual calls. Added
19038         support code to register/unregister the LMF.
19039         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19040         more LMF work.
19041
19042 2005-08-19  Dick Porter  <dick@ximian.com>
19043
19044         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19045         bit value if needed.
19046
19047 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19048
19049         * mini.c (mini_get_method): Move handling of wrapper data here.
19050
19051         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19052
19053         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19054         virtual.
19055
19056         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19057         bblock->code does not remain empty.
19058
19059 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19060
19061         * arrays.cs: Add regression test for #75832.
19062
19063         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19064         rules. Fixes #75832.
19065
19066         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19067         instruction scheduling.
19068
19069 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19070
19071         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19072
19073 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19074
19075         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19076
19077         * mini-codegen.c: Fix VC build.
19078
19079         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19080
19081 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19082
19083         * mini.h: fix signature for mono_register_opcode_emulation.
19084
19085 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19086
19087         * mini.c: Get rid of most of the helper_sig_... constants using
19088         mono_create_icall_signature ().
19089
19090 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19091
19092         * jit-icalls.c (helper_ldstr): New helper function.
19093
19094         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19095
19096         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19097         throw, load the string using a helper call instead of creating a string object.
19098
19099         * aot.c: Update after LDSTR changes.
19100
19101         * mini.h: Bump AOT file version.
19102         
19103         * aot.c: Save class size info into the AOT file. Print more statistics during
19104         compilation.
19105
19106         * mini.h: Bump AOT file version.
19107
19108         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19109         ordering of disasm cases. Fixes #74957.
19110
19111 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19112
19113         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19114         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19115         the generic code needed for the ARM port.
19116
19117 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19118
19119         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19120         inssel-arm.brg: more ARM features and fixes.
19121
19122 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19123
19124         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19125         ARM port work in progress.
19126
19127 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19128
19129         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19130
19131         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19132
19133         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19134
19135         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19136
19137         * *-ia64.*: Ongoing IA64 work.
19138         
19139         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19140
19141 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19142
19143         * TODO: Remove out-of-data todo stuff.
19144
19145         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19146         dead code.
19147
19148         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19149
19150         * mini.h: Bump corlib version.
19151
19152 2005-07-27  Martin Baulig  <martin@ximian.com>
19153
19154         * mini-codegen.c
19155         (create_copy_ins): Added `const unsigned char *ip' argument; set
19156         `copy->cil_code' from it.
19157
19158 2005-07-27  Martin Baulig  <martin@ximian.com>
19159
19160         * mini-exceptions.c (mono_handle_exception): Don't call
19161         mono_debugger_handle_exception() for filters.
19162
19163 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19164
19165         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19166         as well.
19167
19168 2005-07-26  Martin Baulig  <martin@ximian.com>
19169
19170         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19171
19172         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19173         helper_compile_generic_method() if the method is actually virtual
19174         and non-final.
19175
19176 2005-07-26  Martin Baulig  <martin@ximian.com>
19177
19178         * mini.c
19179         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19180         public; this is now accessed directly by the debugger.
19181         (mono_generic_trampoline_code): Removed.
19182
19183         * debug-mini.c
19184         (mono_debug_init_method): Also add interncalls and wrappers.
19185
19186 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19187
19188         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19189
19190 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19191
19192         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19193
19194 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19195
19196         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19197
19198 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19199
19200         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19201         getting TLS offsets on AMD64 too.
19202
19203 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19204
19205         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19206
19207 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19208
19209         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19210         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19211
19212 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19213
19214         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19215
19216         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19217         to mini.c.
19218
19219         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19220         mono_sparc_is_virtual_call ().
19221         
19222         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19223
19224         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19225         trampoline parameters.
19226
19227         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19228         
19229         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19230         to mono_arch_get_vcall_slot_addr.
19231
19232         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19233         trampoline code.
19234
19235         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19236
19237 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19238
19239         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19240
19241 2005-07-19  Martin Baulig  <martin@ximian.com>
19242
19243         * exceptions-amd64.c (throw_exception): Call
19244         mono_debugger_throw_exception() here like we're doing it on i386.
19245
19246 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19247
19248         * mini-ia64.c: Add optimized TLS access support.
19249
19250 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19251
19252         * mini-exceptions.c: Ongoing IA64 work.
19253
19254         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19255
19256         * mini.c: Use the default optimization set when embedding. Fixes
19257         #75194.
19258
19259 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19260
19261         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19262         of trampolines to a separate file.
19263
19264         * mini-trampolines.c: New file.
19265
19266         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19267         separate file.
19268         
19269         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19270         amd64/ia64 code.
19271
19272         * mini-codegen.c: Fix cygwin build.
19273
19274 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19275
19276         * mini.c: Add some minor changes needed by the IA64 port.
19277
19278         * *-ia64.*: Ongoing IA64 work.
19279
19280 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19281
19282         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19283         trampolines into arch-independent and arch-dependent parts.
19284
19285         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19286
19287 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19288
19289         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19290
19291         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19292         the xp-regalloc-branch for amd64.
19293
19294         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19295         xp-regalloc-branch for x86.
19296
19297 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19298
19299         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19300
19301 2005-07-06  Martin Baulig  <martin@ximian.com>
19302
19303         * mini.c
19304         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19305         (mono_jit_runtime_invoke): Likewise.
19306
19307 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19308
19309         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19310         on x86 too.
19311         
19312         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19313         without loading their metadata. Reorganize the file format so exception handling+
19314         debug info is kept separate from normal method info. Create MonoJitInfo 
19315         structures for methods lazily.
19316
19317         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19318         loading metadata.
19319         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19320
19321         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19322
19323         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19324         in AOT code.
19325
19326         * mini.h: Bump AOT file version.
19327
19328 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19329
19330         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19331
19332 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19333
19334         * Makefile.am (check-local): Call semdel-wrapper.
19335
19336 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19337
19338         * mini-x86.c: Revert the last change as it seems to break the build..
19339
19340 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19341
19342         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19343         
19344         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19345
19346 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19347
19348         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19349         outside of the macro, so strange stuff doesn't happen with gcc4
19350         (NEW_AOTCONST_TOKEN): Likewise.
19351
19352 2005-06-28  Martin Baulig  <martin@ximian.com>
19353
19354         * mini.c (mini_class_is_system_array): New static method; use this
19355         instead of `klass->parent == mono_defaults.array_class' everywhere
19356         since this also works for the new generic array class.
19357
19358 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19359
19360         * inssel.brg: Remove warnings.
19361
19362 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19363
19364         * mini-ia64.c: Ongoing IA64 work.
19365
19366         * basic-float.cs: Add float->i1 conversion test.
19367
19368         * iltests.il: Add conv.u4 test.
19369
19370 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19371
19372         * inssel-long.brg: Fix bug caused by last change.
19373
19374 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19375
19376         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19377         BSDs.  Allows the x86 JIT to work on OSX86
19378
19379 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19380
19381         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19382         u4->i8 conversion.
19383
19384         * mini-ia64.c: Ongoing IA64 work.
19385
19386 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19387
19388         * mini-ia64.c: Ongoing IA64 work.
19389
19390         * driver.c: Clean up jit_code_hash as well when using --regression.
19391
19392         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19393
19394         * basic-long.cs: Add tests for long->u4 conversion.
19395
19396 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19397
19398         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19399         that we do not depend on undefined C behavior: the order stuff
19400         gets evaluated within an expression. Fixes mono when compiled on
19401         GCC 4.
19402
19403 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19404
19405         * *-ia64.*: Ongoing IA64 work.
19406
19407         * aot.c: Lower memory usage while loading AOT methods.
19408
19409         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19410
19411         * mini.h: Bump AOT file format version.
19412
19413 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19414
19415         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19416
19417 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19418
19419         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19420         not on callee assembly). Fixed some comments.
19421
19422 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19423
19424         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19425         it gets proper disassembly.
19426         (emit_method_info): Remove some dead code.
19427
19428         * mini.c (mini_method_compile): Allways allocate the GOT var in
19429         mono_method_to_ir for emulating opcodes.
19430
19431 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19432
19433         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19434         before freeing the code memory. Fixes #74990.
19435
19436         * objects.cs: Add regression test for #74992.
19437
19438         * liveness.c: Extend live ranges of arguments to the beginning of the
19439         method. Fixes #74992.
19440
19441         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19442         so it points into the faulting instruction.
19443
19444 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19445
19446         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19447
19448         * *-ia64.*: Ongoing IA64 work.
19449
19450         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19451
19452 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19453
19454         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19455
19456         * *-ia64.*: Ongoing IA64 work.
19457
19458 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19459
19460         * basic-long.cs: Add tests for add/sub.ovf.
19461
19462         * basic.cs: Add tests for sub.ovf.
19463
19464         * *-ia64.*: Ongoing IA64 work.
19465
19466 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19467
19468         * *-ia64.*: Ongoing IA64 work.
19469
19470         * basic.cs: Add conv.ovf.i4.un test.
19471
19472 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19473
19474         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19475         
19476 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19477
19478         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19479
19480 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19481
19482         * *-ia64.*: Ongoing IA64 work.
19483
19484 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19485
19486         * trace.[ch]:
19487         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19488
19489 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19490
19491         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19492
19493 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19494
19495         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19496
19497         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19498         of a call is callable by a near call.
19499
19500 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19501
19502         * mini-ia64.c: Ongoing IA64 work.
19503
19504 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19505
19506         * genmdesc.c: Make the generated array non-static.
19507
19508         * inssel-long.brg: Fix LSHR_IMM rule.
19509
19510         * *-ia64.*: Ongoing IA64 work.
19511
19512         * *-ia64.*: Ongoing IA64 work.
19513
19514 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19515
19516         * *-ia64.*: Ongoing IA64 work.
19517
19518         * *-ia64.*: Ongoing IA64 work.
19519         
19520         * mini-ia64.c: Ongoing IA64 work.
19521
19522         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19523
19524 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19525
19526         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19527         
19528         * objects.cs basic-long.cs: Move some tests to objects.cs.
19529
19530 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19531
19532         * *-ia64.*: Ongoing IA64 work.
19533
19534         * iltests.il: Add a new test.
19535
19536         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19537         newobj. Fixes #75042.
19538
19539 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19540
19541         * *-ia64.*: Ongoing IA64 work.
19542         
19543         * *-ia64.*: Ongoing IA64 work.
19544         
19545         * *-ia64.*: Ongoing IA64 work.
19546
19547         * basic.cs objects.cs: Move tests accessing static variables as well.
19548
19549         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19550
19551 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19552
19553         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19554
19555         * driver.c: Always print failed tests.
19556
19557         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19558         frame pointer.
19559
19560         * *ia64*: Ongoing IA64 work.
19561
19562 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19563
19564         * basic.cs: Add tests for add.ovf. Fix warnings.
19565
19566 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19567
19568         * driver.c (mono_main): Avoid crash if no argument is passed to
19569         --break;  Do not use g_error, but f_printf.   And fix all other
19570         ocurrences of the same crash.
19571
19572 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19573
19574         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19575         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19576         Fixes #74742.
19577
19578 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19579
19580         * *-ia64.*: Add beginnings of IA64 backend.
19581
19582         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19583
19584 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19585
19586         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19587         Fixes #74925.
19588
19589         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19590
19591         * mini-amd64.c: Fix a warning.
19592
19593 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19594
19595         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19596         in float_neg. Fixes #74897.
19597
19598         * mini-amd64.c (emit_call): Fix another near call bug.
19599
19600 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19601
19602         * declsec.c: Keep the appdomain information in the structure. Added a 
19603         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19604         value gets overwritten).
19605         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19606         an MonoAppDomain member to MonoSecurityFrame.
19607         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19608         used in the stack walk. Now use a MonoArray which grow (double) when
19609         it gets full.
19610
19611 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19612
19613         * mini.c: Re-enabled runtime cleanup, since running threads should
19614         now properly stop when exiting.
19615
19616 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19617
19618         * mini-codegen.c: New file contaning the arch-independent local
19619         register allocator. Not used by any architectures yet.
19620
19621         * mini.h linear-scan.c: Merge some changes from the 
19622         mini-xp-local-regalloc branch.
19623
19624 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19625
19626         * mini-amd64.c (emit_call): Fix calls to native functions when the
19627         runtime is compiled as a shared library. Fixes #74756.
19628
19629         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19630         on a literal field. Fixes #74751.
19631
19632 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19633
19634         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19635
19636 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19637
19638         * objects.cs: Add missing null casting test.
19639
19640 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19641
19642         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19643         in wrapper methods. Also rename 'address' variable to 'offset'.
19644
19645 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19646
19647         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19648         warnings.
19649         
19650         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19651
19652         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19653         work on windows.
19654
19655 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19656
19657         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19658
19659 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19660
19661         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19662         just the last bytes.
19663
19664 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19665
19666         * aot.c (mono_compile_assembly): Fix warning.
19667
19668         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19669         by the _MSC_VER stuff.
19670
19671 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19672
19673         * inssel-long.brg: Fix #74588.
19674
19675         * cpu-amd64.md: Fix #74591.
19676
19677         * iltests.il: Add new regression tests.
19678
19679 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19680
19681         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19682         valuetype.
19683
19684 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19685
19686         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19687
19688         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19689         from Bill Middleton <flashdict@gmail.com>.
19690
19691 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19692
19693         * arrays.cs: Add new regression test. Fix warnings.
19694
19695 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19696
19697         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19698         and leakage in CKFINITE.
19699
19700         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19701         this to a null op since it is called on amd64 too.
19702
19703         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19704
19705         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
19706         body since this is not used on amd64.
19707         
19708         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
19709
19710         * mini-amd64.c: Remove obsolete fixmes.
19711
19712         * mini.c (print_method_from_ip): Fix debugging support.
19713
19714 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19715
19716         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
19717         so that expressions that don't give much gain are not reduced.
19718         * ssapre.h: Likewise.
19719
19720 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19721
19722         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
19723
19724         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
19725
19726         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
19727
19728 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
19729
19730         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
19731
19732         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
19733
19734 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
19735
19736         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
19737         stack touching.
19738
19739         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
19740
19741         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
19742
19743         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
19744
19745         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
19746         MONO_ARCH_USE_SIGACTION. Fixes #74252.
19747
19748         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
19749
19750         * mini-x86.c: Fix up stack overflow handling.   
19751
19752         * exceptions.cs: Add new regression test.
19753
19754 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
19755
19756         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
19757         mono_jit_thread_attach.
19758
19759         * mini.c (mono_method_to_ir): Verify called method is not abstract.
19760
19761 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19762
19763         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
19764         avoid calling constructors using callvirt.
19765
19766         * inssel.brg: Fix #74073.
19767
19768 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
19769
19770         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
19771         compilation with non-GCC compilers.
19772         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
19773         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
19774
19775 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
19776
19777         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
19778         klass->interface_offsets (will likely fix bug#74073).
19779
19780 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19781
19782         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
19783
19784 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
19785
19786         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
19787         to amd64_div_reg_size ().
19788         
19789         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
19790
19791 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
19792
19793         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
19794
19795 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19796
19797         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
19798
19799 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19800
19801         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
19802         
19803         * mini.c (mono_precompile_assembly): Load and precompile referenced
19804         assemblies as well. Fixes #74015.
19805
19806 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
19807
19808         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
19809
19810 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
19811
19812         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
19813         a lot of checks and (anyway) permissions cannot work until corlib is 
19814         loaded.
19815
19816 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
19817
19818         * mini-ppc.c: fixed ABI issue on sysv/ppc.
19819
19820 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
19821
19822         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
19823         calls (fixes bug#72824).
19824
19825 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19826
19827         * mini.c: fix tail recursion elimination (see test in bug#73936).
19828
19829 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
19830
19831         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
19832         some fp functions in sse2 mode.
19833
19834 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
19835
19836         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
19837
19838 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
19839
19840         * mini.h mini.c: Add mono_get_jit_tls_key ().
19841
19842         * mini-x86.c: Enable fast TLS support on windows.
19843
19844 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
19845
19846         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
19847         * mini.c: Check for p/invoke method when generating code. If a
19848         p/invoke method, or it's class, isn't decorated with [Suppress
19849         UnmanagedCodeSecurity] then generate code to call System.Security.
19850         UnmanagedDemand (only if the security manager is active).
19851
19852 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19853
19854         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
19855         last change as it seems to cause strange crashes.
19856         
19857 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19858
19859         * *.c: handle unsafe function pointers where needed.
19860
19861 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19862
19863         * mini.c (mono_jit_free_method): Remove the fixme too.
19864
19865 2005-03-15  Miguel de Icaza  <miguel@novell.com>
19866
19867         * mini.c: As discussed, make the code actually free the delegate
19868         thunk now, to enable the debugging of delegate problems, use
19869         MONO_DEBUG=1 when running Mono. 
19870
19871         This takes also care of parts of the leaks as seen by Joe.
19872
19873 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
19874
19875         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
19876         thread_tls_offset calculation.
19877
19878 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
19879
19880         * declsec.c: Reworked linkdemand checks for icall. The previous code
19881         was using the declaration code (untrusted) and didn't work as expected
19882         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
19883         specific case.
19884
19885 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
19886
19887         * iltests.il: Add new localloc test.
19888
19889         * mini-amd64.c: Handle large stack allocations the same way as on
19890         windows if stack overflow handling is working.
19891         
19892         * mini-amd64.c: Allocate the signal stack using mmap.
19893
19894         * mini.c (sigsegv_signal_handler): Fix reading of context.
19895
19896         * mini-exceptions.c: Fix up stack overflow handling.
19897
19898         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
19899
19900         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
19901
19902         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
19903
19904         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
19905
19906         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
19907         tramp_init functions as they are no longer needed.
19908
19909 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
19910
19911         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
19912         
19913         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
19914
19915         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
19916         
19917         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
19918         support that now.
19919
19920         * mini-ops.h: Add OP_LMUL_IMM.
19921
19922         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
19923         long mul/div opcodes as intrinsic.
19924
19925         * mini-amd64.c (emit_call): Handle the case when the callee might be
19926         an AOT method.
19927
19928 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
19929
19930         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
19931         extra safe.
19932         
19933         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
19934
19935         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
19936
19937 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
19938
19939         * mini.c (mono_codegen): Don't leak here, to help people running
19940         monogrind.
19941
19942 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
19943
19944         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
19945         conversions in sse2 mode.
19946
19947         * basic-float.cs: Add regression test.
19948         
19949         * mini-amd64.c: Reenable sse2.
19950
19951 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
19952
19953         * mini-amd64.c: Disable sse2 until some regressions are fixed.
19954
19955 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
19956
19957         * driver.c: Copyright text should include 2005.
19958         
19959 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
19960
19961         * cpu-amd64.md (load_membase): Fix more max lengths.
19962
19963 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
19964
19965         * cpu-amd64.md (load_membase): Fix max length.
19966
19967         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
19968
19969         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
19970
19971         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
19972         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
19973
19974         * basic-float.cs: Add rounding regression test.
19975
19976         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
19977
19978 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
19979
19980         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
19981         structures in registers for pinvoke wrappers.
19982
19983 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
19984
19985         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
19986
19987 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
19988
19989         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
19990         wrapper to mono_jit_thread_attach.
19991
19992         * mini.c (mini_jit_thread_attach): New jit icall.
19993
19994         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
19995         native->managed wrappers.
19996
19997         * exceptions.cs: Add new regression test.
19998
19999         * mini.c (optimize_branches): Check regions in the cbranch to throw
20000         block case as well. Fixes #73242.
20001
20002 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20003
20004         * mini.c: thread safety fixes.
20005
20006 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20007
20008         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20009         patching stuff, since delegates use jump trampolines so there is
20010         no caller.
20011
20012         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20013         jump trampolines.
20014         
20015         * tramp-amd64.c: Fix build.
20016
20017         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20018         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20019
20020         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20021         Rename this to mono_arch....
20022         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20023
20024         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20025
20026         * mini-amd64.c (emit_call): If both the caller and the callee is
20027         guaranteed to have 32 bit addresses, emit a normal call.
20028
20029         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20030
20031         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20032         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20033         method_ptr inside delegates.
20034
20035 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20036
20037         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20038         invalidated. Fixes #73001.
20039
20040         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20041
20042         * mini-x86.c: Only use stdcall for pinvokes on windows.
20043
20044 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20045
20046         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20047         * mini-x86.c: remove unreliable __thread var offset detection,
20048         use the correct accessors and enable by default.
20049
20050 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20051
20052         * mini.c (mono_jit_free_method): Fix memory leak.
20053
20054 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20055
20056         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20057
20058 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20059
20060         * cpu-amd64.md: Fix lengths of atomic opcodes.
20061
20062 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20063
20064         * driver.c: try to not imply using ICU is any good.
20065
20066 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20067
20068         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20069         functions as inline ops.
20070
20071         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20072         some Interlocked functions as inline ops.
20073
20074         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20075
20076         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20077
20078         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20079
20080         * mini.c: Add support for OP_NOT_TAKEN.
20081
20082         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20083         structures in registers for pinvoke wrappers.
20084
20085         * mini-amd64.c: Fix warnings.
20086
20087 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20088
20089         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20090
20091         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20092
20093         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20094         address instead of loading the address from it.
20095
20096         * mini-x86.c: Add support for returning small structs in registers
20097         on Win32. Fixes part of #70864.
20098         
20099 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20100
20101         * trace.c (get_token): Improve error checking.
20102
20103 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20104
20105         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20106
20107 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20108  
20109         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20110         it can be reused for MonoClass.
20111         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20112         _LINKDEMAND.
20113
20114 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20115
20116         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20117         instead of a MonoReflectionMethod. The method information wasn't used
20118         when displaying SecurityException details (but will be now).
20119
20120 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20121
20122         * Makefile.am : windows build fix.
20123
20124 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20125
20126         * iltests.il: Add new regression test.
20127
20128         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20129         #72522.
20130
20131 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20132  
20133         * mini.c: Moved linkdemand check into helper function check_linkdemand
20134         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20135         LDFTN, LDVIRTFTN).
20136
20137 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20138
20139         * declsec.c: Added statistics counter for different kinds of 
20140         LinkDemands.
20141         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20142         (and commented) declaration.
20143         * mini.c: Added statistics counter for security Demand code 
20144         generation. Added display of security statistics.
20145
20146 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20147
20148         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20149         Fix compilation errors under gcc-2.95.
20150
20151 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20152
20153         * mini.c, driver.c: Use the new jit trampoline hashtable
20154
20155 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20156
20157         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20158
20159 2005-02-11  Martin Baulig  <martin@ximian.com>
20160
20161         * debug-mini.c (mono_debug_close_method): Free the line number array.
20162
20163 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20164
20165         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20166         icalls.
20167
20168         * mini.h: Bump AOT file format version. 
20169
20170 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20171
20172         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20173         APTC and P/Invoke.
20174         * declsec.h: Added macros to get/set lazyly initialized security 
20175         informations about assemblies. Added new enum for different type of
20176         possible LinkDemand violation. Added function to check LinkDemands.
20177         * mini.h: Added a field to MonoCompile to hold any security violation
20178         detected when JITting a method (so it can be thrown later).
20179         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20180         and CEE_CALLVIRT. Added code to throw exception at the end of
20181         mini_method_compile (note: the exception is unhandled right now).
20182
20183 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20184
20185         * mini.c, jit-icalls.c: use the managed implementation of
20186         memset for initobj and memset, to avoid managed <-> unmanaged
20187         transitions.
20188
20189 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20190
20191         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20192         optimization if it would need a GOT var.
20193
20194         * basic.cs: Add tests for constant propagation and switch statements.
20195
20196         * ssa.c: Fix out-of-range constant propagation and switch statements.
20197
20198 2005-02-09    <vargaz@freemail.hu>
20199
20200         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20201
20202 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20203
20204         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20205
20206 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20207
20208         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20209
20210 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20211
20212         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20213         arithmetic operations.
20214
20215 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20216
20217         * mini-ppc.c: add a workaround for broken user code that
20218         DllImports vararg functions with non-vararg signatures.
20219
20220 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20221
20222         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20223         meaningfull error message for assemblies written in Managed C++.
20224
20225         * tramp-amd64.c mini-amd64.h: Add support for 
20226         create_trampoline_from_token ().
20227
20228         * aot.c mini-x86.c abcremoval.c: Applied patch from
20229         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20230
20231 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20232
20233         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20234         which takes a MonoImage/token as parameter instead of a MonoMethod.
20235
20236         * aot.c: Use the new trampoline for initializing vtables.
20237
20238         * aot.c: Add support for ldfld/stfld_remote wrappers.
20239
20240         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20241         rules for compare <MEM>, IMM.
20242
20243         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20244
20245         * aot.c: Handle inherited finalizers correctly.
20246
20247 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20248
20249         * inssel.brg (stmt): Add a missing _setup_... ().
20250
20251         * aot.c: Save some parts of the class state to the AOT file and use it
20252         to recompute that state when a class is initialized.
20253
20254         * mini.c: Install AOT hooks into the runtime.
20255
20256         * mini.h: Bump AOT file format version.
20257         
20258         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20259         Fixes #72148.
20260
20261         * iltests.il: Add new test.
20262
20263 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20264
20265         * mini.c: fix typo.
20266
20267 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20268
20269         * mini.c: setup the statistical profiler in the thread attach
20270         callback to cope with the new single thread code.
20271
20272 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20273
20274         * mini-ppc.c: ensure we have enough room for the profiler
20275         calls (fixed bug#72084).
20276
20277 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20278
20279         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20280         it.
20281
20282 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20283
20284         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20285
20286 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20287
20288         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20289         to succesfully execute parrotbench).
20290         * ssapre.h: Likewise.
20291
20292 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20293
20294         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20295         variable for stores to method arguments (fixes a SSAPRE issue).
20296
20297 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20298
20299         * mini.c: handle value types in dup, fixes gen-112.cs.
20300
20301 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20302
20303         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20304         sequence for calls in dynamic methods to avoid thunks.
20305
20306 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20307
20308         * mini.c: correctly remove dynamic methods from the hashtable.
20309
20310 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20311
20312         * driver.c: Disabled SSAPRE until fix the bug that appears
20313         in IronPython's parrotbench.
20314
20315 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20316
20317         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20318
20319         * mini.c (mono_method_to_ir): Revert the previous change.
20320         
20321         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20322         when AOT compiling.
20323
20324         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20325         mono_jit_info_table_find () etc. when running under valgrind.
20326
20327         * inssel.brg: Fix warnings.
20328
20329         * mini-exceptions.c: Fix warnings.
20330
20331 2005-01-31  Martin Baulig  <martin@ximian.com>
20332
20333         * driver.c (compile_all_methods_thread_main): Don't try to compile
20334         generic methods or anything which has type parameters.
20335
20336 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20337
20338         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20339
20340         * TestDriver.cs: Add --verbose flags.
20341
20342         * graph.c ssa.c: Fix 64 bit warnings.
20343         
20344         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20345         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20346         Fix 64 bit warnings.
20347
20348         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20349         variable not spotted by gcc.
20350         
20351         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20352         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20353         X86_COMPARE_MEMBASE opcodes.
20354
20355         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20356
20357 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20358
20359         * *: MonoMethod->signature might be NULL now. You *MUST* use
20360         mono_method_signature.
20361
20362 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20363
20364         * driver.c (compile_all_methods_thread_main): Compile the methods
20365         without invoking cctors.
20366
20367 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20368
20369         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20370         * basic-calls.cs: test for the above.
20371
20372 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20373
20374         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20375         MonoJitInfo changes.
20376
20377 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20378
20379         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20380         eagerly if it contains dynamic methods.
20381         
20382         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20383
20384         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20385         trace, it is now computed by an icall from trace_ips.
20386         
20387         * mini-exceptions.c: Fix a warning.
20388
20389 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20390
20391         * mini-exceptions.c: don't bother getting stack trace info if
20392         it's not going to be used.
20393
20394 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20395
20396         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20397         ssapre-mini-ops.h.
20398
20399 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20400
20401         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20402
20403         * aot.c: Avoid calling mono_method_get_header () if not needed.
20404
20405         * mini.h: Bump AOT file format version.
20406         
20407         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20408
20409         * mini.c (mono_print_tree): Print more info for calls.
20410
20411 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20412
20413         * declsec.h: Remove warning by adding missing include for marshal.h
20414
20415 2005-01-26  Martin Baulig  <martin@ximian.com>
20416
20417         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20418         `ip' twice.
20419
20420 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20421
20422         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20423         flags.
20424
20425         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20426
20427         * aot.c (mono_compile_assembly): Fix a warning.
20428
20429 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20430
20431         * declsec.c: Look for security attributes on the original MonoMethod 
20432         (and not the wrapped one). This fix permissions on icalls.
20433
20434 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20435
20436         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20437
20438         * mini.c (mono_allocate_stack_slots): Add a fixme.
20439
20440         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20441
20442 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20443
20444         * inssel.brg: optimize casts of sealed types (more
20445         optimizations waiting for fixes in remoting).
20446
20447 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20448
20449         * inssel.brg (stmt): Add another dummy rule.
20450
20451         * driver.c: Fix warnings.
20452
20453         * driver.c (mono_main): If running under valgrind, instruct glib to use
20454         the system allocation functions so valgrind can track the memory
20455         allocated by the g_... functions.
20456
20457         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20458
20459         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20460
20461         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20462
20463         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20464         variables in try regions.
20465
20466         * mini.c (mini_method_compile): Don't disable optimizations on large
20467         methods when AOT compiling.
20468
20469         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20470         allocate stack slots. Not yet used.
20471
20472 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20473
20474         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20475
20476 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20477
20478         * mini-ppc.c: make the branch info relative as the code
20479         buffer can be reallocated.
20480
20481 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20482
20483         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20484         * driver.c: Removed the AOT/security restriction. Now initialize the
20485         security manager (in metadata) if --security is used.
20486         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20487         rather than the pointer to declarative security, when AOT is used.
20488
20489 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20490
20491         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20492         basic blocks, reduced intrinsic exception throwing code size.
20493
20494 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20495
20496         * driver.c (mini_usage): Reorder the usage screen.
20497
20498 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20499
20500         * mini.c (mono_resolve_patch_target): Fix warning.
20501
20502 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20503
20504         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20505         previous patch.
20506
20507         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20508
20509         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20510         breaks the amd64 build.
20511
20512         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20513         register allocation. Fixes #71454.
20514
20515         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20516
20517         * arrays.cs: Add new regression test.   
20518
20519 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20520
20521         * ssapre.c: Turned usage of snprintf to GString.
20522         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20523         (I left it on by mistake in my previous commit).
20524
20525 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20526
20527         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20528         on cond branch optimization (fixes bug# 71515).
20529
20530 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20531
20532         * abcremoval.c: Fixed bug 71062.
20533         * abcremoval.h: Likewise.
20534
20535 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20536
20537         * mini.c: Added a new functionality to optimize_branches, the removal
20538         of useless basic blocks, and fixed some problem in the removal of
20539         critical edges; some utility functions added for both purposes.
20540         * ssapre.c: Added complex expression support, and fixed bug 70637.
20541         * ssapre.h: Likewise.
20542         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20543         enabled in SSAPRE.
20544         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20545         * driver.c: Re-enabled SSAPRE.
20546
20547 2005-01-19  Martin Baulig  <martin@ximian.com>
20548
20549         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20550         the result of mono_get_method_constrained().
20551
20552 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20553
20554         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20555         manager.
20556
20557 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20558
20559         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20560         be detected.  Fixes #59296.
20561
20562 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20563
20564         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20565         which can happen. Fixes #71361.
20566
20567 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20568
20569         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20570         manager.
20571
20572 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20573
20574         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20575         appdomain-unload.exe to fail.
20576         
20577         * mini.c: Fix some memory leaks.
20578
20579 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20580
20581         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20582         Fixed bug and sped up some codepaths.
20583
20584 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20585
20586         * mini.c: Fix some memory leaks.
20587
20588         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20589         conversion.
20590
20591         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20592
20593         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20594         #71320.
20595
20596         * iltests.il: Add regression test for #71320.
20597
20598 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20599
20600         * mini.c (mono_codegen): Fix installation of profiler hooks.
20601
20602         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20603
20604 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20605
20606         * mini.h, mini.c, cfold.c: optimize access to enum
20607         readonly fields, too. Eval conditional branches if possible
20608         to perform unreachable code removal in more cases.
20609
20610 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20611
20612         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20613
20614         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20615         code manager.
20616
20617         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20618         WinXP DEP. Fixes #71244.
20619
20620 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20621
20622         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20623
20624 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20625
20626         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20627
20628 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20629
20630         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20631         changes.
20632
20633         * mini.h: Bump AOT version.
20634
20635         * mini.h (MonoCompile): Change exvar to a hash table.
20636
20637         * mini.c: Allocate a separate exvar for each handler block.
20638
20639         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20640
20641         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20642         ex var with the pending exception and only throw if the two are equal.
20643         Fixes #68552.
20644         
20645         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20646
20647         * mini-x86.c: Fix warnings.
20648
20649         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20650         used by all the ports now.
20651
20652         * aot.c: Add write-symbols and save-temps options.
20653
20654 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20655
20656         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20657
20658 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20659
20660         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20661         operations.
20662
20663         * tramp-s390.c: Check vtable slot belongs to the domain.
20664
20665         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20666         as per other platforms.
20667
20668         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20669
20670 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20671
20672         * driver.c: we don't run the Main() code in a subthread anymore.
20673
20674 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20675
20676         * mini.c: added experimental rtc support in the statistical
20677         profiler: if the user has the permission, more accurate statistics
20678         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20679         The MONO_RTC value must be restricted to what the linux rtc allows:
20680         power of two from 64 to 8192 Hz.
20681
20682 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20683
20684         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20685
20686 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20687
20688         * mini-ppc.c: better icache flush for smp.
20689
20690 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20691
20692         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20693
20694         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20695         amd64 port, not yet used.
20696
20697 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20698
20699         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20700         a struct type.
20701
20702 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20703
20704         * driver.c: Added --security option to activate the security manager.
20705         Right now this will allow code generation for declarative demands and
20706         is disabled when AOT is specified.
20707         * mini.c: Add code generation for declarative security demands.
20708         * mini.h: Add mono_use_security_manager as an extern gboolean.
20709
20710 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20711
20712         * aot.c (mono_compile_assembly): Speed up compilation a bit by
20713         emitting more dense assembly code.
20714
20715         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
20716         exception throwing stuff.
20717
20718 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20719
20720         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
20721         dead code.
20722
20723         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
20724         left in by mistake.
20725
20726         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
20727         fixed.
20728
20729         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
20730
20731         * tramp-*.c: Only patch vtable slots if the object is in the current
20732         domain. Fixes appdomain-unload.exe.
20733
20734         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
20735         
20736         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
20737         x86 branch.
20738
20739 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20740
20741         * mini.c (reverse_branch_op): New helper function.
20742
20743         * mini.c (optimize_branches): Run the new optimization only on 
20744         platforms which support it. Also reverse all kinds of branches.
20745
20746         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
20747
20748         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
20749         a throw statement.
20750
20751         * mini.c (optimize_branches): Reverse not-equals branches if the false
20752         bblock is a throw. This happens a lot of time with argument checking in
20753         corlib.
20754
20755         * mini.c (mono_codegen): Add support for placing basic blocks after
20756         the function epilogue.
20757
20758         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
20759         function epilogue.
20760         
20761 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
20762
20763         * mini.c (setup_stat_profiler): Only set this up if the platform
20764         supports ITIMER_PROF.
20765
20766 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20767
20768         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
20769         previous patch.
20770
20771         * inssel.brg: Fix a warning.
20772
20773 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
20774
20775         * mini.c: added support for statistical profiler 
20776         (run with: --profile=default:stat).
20777
20778 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
20779
20780         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
20781
20782         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
20783
20784         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
20785         related to global registers from the amd64 port.
20786
20787 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
20788
20789         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
20790
20791         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
20792         with global registers.
20793         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
20794
20795         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
20796
20797 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
20798
20799         * debug-mini.c (encode_value): Fix off-by-one.
20800
20801         * aot.c (encode_value): Likewise.
20802
20803         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
20804
20805 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
20806
20807         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
20808         AOT.
20809
20810         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
20811         
20812         * aot.c (emit_method_info): Increase size of temp buffer.
20813
20814         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
20815         the AOT case.
20816
20817 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
20818
20819         * aot.c (emit_method_info): Fix build.
20820         
20821         * aot.c: Further rework of the AOT file format to reduce the size of
20822         the method info data.
20823
20824         * mini.h: Bump AOT file format version.
20825
20826 2004-12-27  Martin Baulig  <martin@ximian.com>
20827
20828         * mini.c (mini_get_method): New static method; call
20829         mono_get_method_full() and mono_get_inflated_method().
20830         (mono_method_to_ir): Use mini_get_method() instead of
20831         mono_get_method_full(). 
20832
20833 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
20834
20835         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
20836
20837 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
20838
20839         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
20840
20841         * inssel-amd64.brg: Add some optimization rules.
20842
20843 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
20844
20845         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
20846         standard not GC'd stuff is fine.
20847
20848 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
20849
20850         * aot.c: Rework the AOT file format to get rid of most of the global
20851         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
20852
20853         * mini.h: Bump AOT file format version.
20854         
20855 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
20856
20857         * mini.h: Bump AOT file format version.
20858
20859         * aot.c (mono_aot_is_got_entry): New function to determine if an 
20860         address is inside a GOT.
20861
20862         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
20863
20864         * cpu-pentium.md: Increase the maximum size of some instructions which
20865         might involve a got access.
20866         
20867         * mini.c (get_method_from_ip): Another debug helper function.
20868
20869         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
20870         when got var accesses are created during the decompose phase.
20871
20872         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
20873
20874         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
20875         argument mini_compile_method and to MonoCompile, and use this to
20876         determine whenever a given method is compiled for AOT. This allows the
20877         other methods compiled during AOT compilation to be free of AOT stuff,
20878         so the backends does not need to add special support for them by
20879         creating a fake GOT etc.
20880
20881         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
20882         longer needed.
20883
20884 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20885
20886         * mini.c (mono_method_to_ir): It turns out that some of the
20887         x-appdomain wrappers are lax with types, so just ignore this for
20888         all wrappers.
20889
20890         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
20891         at the vtable->klass. If it is non-shared code we can just use the
20892         vtable.
20893
20894 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
20895
20896         * mini-ppc.c: access MonoDomain from tls, too.
20897
20898 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
20899
20900         * declsec.c: Removed unused variable (and related warning ;-)
20901
20902 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20903
20904         * iltests.il: New test for LDELEMA on an array of ref types.
20905
20906         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
20907         all ldelema's on reftypes.
20908         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
20909         it was the wrong place to put it.
20910
20911         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
20912         register to pop to make this cleaner, at the request of Paolo.
20913
20914 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20915
20916         * mini-ops.h (OP_GETHASHCODE): New op.
20917
20918         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
20919
20920         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
20921         operation.
20922
20923         For a microbenchmark, this reduces the cost of Hashtable.get_Item
20924         by 25%.
20925         
20926         * mini-x86.c (mono_arch_output_basic_block): Rather than
20927
20928         add ebp, 4
20929
20930         Emit
20931
20932         pop edx
20933
20934         The first is 3 bytes while the second is 1. This saves 36 kb on
20935         mscorlib, quite a big saving. When bootstraping mcs, I was able to
20936         see a small boost because of icache locality.
20937
20938         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
20939
20940 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
20941
20942         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
20943         started code sharing with the generic code.
20944
20945 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
20946
20947         * mini-ppc.c, cpu-g4.md: added code for direct access to
20948         tls data slots.
20949
20950 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
20951
20952         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
20953          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
20954         to OP_TLS_GET.
20955
20956 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
20957
20958         * declsec.c|h: Added functions to cache the declarative stack modifiers
20959         in MonoJitInfo and to create a security frame from a MonoJitInfo 
20960         structure.
20961         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
20962         created. Register internal calls for System.Security.SecurityFrame::
20963         _GetSecurityFrame and _GetSecurityStack.
20964         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
20965         the definitions for the new stack walk/callback mechanism.
20966         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
20967         first security frame for LinkDemands and InheritanceDemands) and
20968         GetSecurityStack for Demands. Both use the new mono_walk_stack code
20969         from lupus.
20970         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
20971         walk initialization (lupus).
20972
20973 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20974
20975         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
20976         idiom.
20977         (handle_loaded_temps): Do not create a temporary variable for
20978         things that we know are temps. They will never be modified.
20979         (mono_spill_call): Set MONO_INST_IS_TEMP
20980         (mono_emulate_opcode): ditto
20981         (emit_tree): ditto
20982         (mono_method_to_ir.CEE_DUP): ditto
20983
20984 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
20985
20986         * mini.c (type_to_eval_stack_type): Make this handle the void type
20987         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
20988         (emit_tree): use ip_in_bb to special case some common idioms
20989         Update all callers to pass in the IP.
20990         (mono_method_to_ir): Make CEE_CALL* do the above as well.
20991
20992         This gives us a nice 2% speedup in mcs bootstrap.
20993
20994         * mini-x86.c (peephole_pass): Peephole pass to make
20995         mov  [foo], eax
20996         push [foo]
20997
20998         into
20999
21000         mov [foo], eax
21001         push eax
21002
21003         * mini.c (ip_in_bb): new method.
21004         (mono_method_to_ir): use this method rather than doing the hash
21005         lookup ourselves.
21006
21007         * linear-scan.c (mono_linear_scan): When expiring actives, you
21008         don't need to keep around variables that expire on this
21009         instruction. This makes it so that:
21010              a = b + 1
21011         will turn into:
21012              store (ebx add (ebx, 1))
21013         which will become
21014              add ebx, 1
21015
21016 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21017
21018         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21019         combination to avoid doing two copies. Fix up problems with previous
21020         patch.
21021
21022         * mini.c: Fix 64 bit warnings.
21023
21024         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21025
21026 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21027
21028         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21029         changes from the x86 code.
21030
21031         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21032
21033 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21034
21035         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21036         throwing code to reduce its size, unify the AOT and non-aot code and 
21037         get rid of relocations in the AOT case.
21038
21039         * mini-x86.h mini.c exceptions-x86.c 
21040         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21041         raise corlib exceptions which doesn't require relocations in the 
21042         caller.
21043
21044         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21045
21046 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21047
21048         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21049         needed.
21050
21051         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21052         in the AOT case.
21053
21054 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21055
21056         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21057         with add function when used from Inc/dec atomic 
21058         functions. Re-enabled optimization on x86.
21059         * mini-ops.h: renamed atomic_add functions to
21060         allow _add to match the Interlocked::Add and
21061         _add_next to match Interlocked::Inc/Dec.
21062
21063 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21064
21065         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21066         linking of BBs to the end BB, and enabled SSAPRE also with
21067         consprop and copyprop (which was prevented by that bug).
21068
21069 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21070
21071         * mini-x86.c: disabling the Interlocked optimizing code. 
21072
21073 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21074
21075         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21076         file version check.
21077         
21078 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21079
21080         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21081         interlocked optimization due lack of support on x86, rewrote 
21082         exchange to take into account that base may be in eax.
21083         
21084         xsp works again; activated Interlocked optimizing code.
21085         
21086 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21087
21088         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21089
21090 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21091
21092         * mini-ops.h: Add new opcodes.
21093
21094         * mini.h: Add new patch types. Add got_var to MonoCompile.
21095
21096         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21097         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21098         make it work with all kinds of patchable code.
21099
21100         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21101         address of the GOT, and referencing entries in the GOT.
21102
21103         * mini.c: Add code to load the GOT address if needed by an opcode.
21104
21105         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21106         independent AOT code on the x86 using an elf-style Global Offset Table.
21107
21108 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21109
21110         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21111
21112 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21113
21114         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21115         when running xsp.
21116
21117 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21118
21119         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21120         of Interlocked:Increment/Decrement/Add as inline ops.
21121         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21122
21123 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21124
21125         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21126         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21127
21128 2004-12-12  Duncan Mak  <duncan@ximian.com>
21129
21130         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21131         again. `patch_info->table_size' is no longer valid after Zoltan's
21132         commit #37636.
21133
21134 2004-12-12  Martin Baulig  <martin@ximian.com>
21135
21136         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21137         if we are the "real" method, ie. not an inlined method inside it.
21138
21139 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21140
21141         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21142         before we look in the special fields table. This fixes
21143         ../tests/thread-static-init.cs.
21144
21145 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21146
21147         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21148         for Array get_Rank and get_Length. Fixes bug #70465.
21149
21150 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21151
21152         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21153         separate structure to reduce the size of MonoJumpInfo.
21154
21155 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21156
21157         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21158
21159 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21160
21161         * mini.c (mini_get_inst_for_method): Changed to allow ports
21162         to return a MonoInst instead of opcode 
21163         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21164         
21165         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21166         Allow ports to return a created MonoInst instead of op-code, will enable
21167         new optimizations.
21168         (renamed mini_get_opcode_for_method to better reflected the functionality)
21169
21170 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21171
21172         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21173
21174 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21175
21176         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21177         Fixes #69985.
21178
21179 2004-12-08  Martin Baulig  <martin@ximian.com>
21180
21181         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21182         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21183
21184 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21185
21186         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21187         correctly.
21188
21189         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21190         arithmetic.
21191
21192 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21193
21194         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21195
21196 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21197
21198         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21199         bug introduced by the previous patch.
21200
21201 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21202
21203         * mini-ppc.c, objectc.cs: handle large structs passed by value
21204         (fixes bug #69972).
21205
21206 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21207
21208         * mini-ppc.c: OP_ARGLIST implementation from
21209         Geoff Norton  <gnorton@customerdna.com>.
21210
21211 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21212
21213         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21214         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21215
21216 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21217
21218         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21219
21220 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21221
21222         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21223         support.
21224
21225 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21226
21227         * mini-sparc.c: Zero out localled-ed memory.
21228
21229         * iltests.il: Add tests for zeroing out localloc-ed memory.
21230
21231 2004-12-04  Martin Baulig  <martin@ximian.com>
21232
21233         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21234         mono_method_get_signature_full().       
21235
21236 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21237
21238         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21239         and some utility functions (always for SSAPRE), integrated SSAPRE.
21240         * mini.h: Likewise.
21241         * driver.c: Added ssapre option.
21242         * ssa.c: Small fix on OP_ARG handling.
21243         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21244         * Makefile.am: Likewise.
21245
21246 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21247
21248         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21249         now in the xp code.
21250
21251         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21252         icall.
21253
21254 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21255
21256         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21257         
21258         * cpu-s390.md : Increase instruction length of oparglist.
21259
21260         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21261
21262 2004-11-30  Martin Baulig  <martin@ximian.com>
21263
21264         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21265         virtual generic methods.  We call a special helper_compile_generic_method()
21266         icall to retrieve the method from the vtable, inflate and compile
21267         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21268
21269         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21270
21271 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21272
21273         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21274
21275 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21276
21277         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21278         Fixes #69929.
21279
21280 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21281
21282         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21283         platforms with PIC aot.
21284
21285 2004-11-28  Martin Baulig  <martin@ximian.com>
21286
21287         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21288         Fixes gen-112.cs.
21289
21290 2004-11-28  Martin Baulig  <martin@ximian.com>
21291
21292         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21293         the result of mono_type_get_underlying_type() to check whether
21294         we're byref.
21295
21296 2004-11-26  Martin Baulig  <martin@ximian.com>
21297
21298         * mini.c
21299         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21300         in the g_assert().
21301
21302 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21303
21304         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21305         the same way as the other arguments so they won't get clobbered.
21306
21307         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21308         calls through R11 since it is clobbered by the trampoline code.
21309
21310 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21311
21312         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21313         pick up in-tree mscorlib.dll.
21314
21315 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21316
21317         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21318
21319         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21320         runtime data/code are now stored in a table similar to the GOT in ELF. 
21321         This allows the code itself to be position independent.
21322
21323         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21324         loading changes.
21325
21326         * aot.c: Attach ELF type (object/function) directives to all global
21327         symbols.
21328
21329         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21330
21331         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21332
21333         * mini-amd64.h: Turn on PIC AOT code.
21334
21335         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21336         returning the offset within an OP_AOTCONST instruction where the GOT
21337         offset needs to be added.
21338
21339         * mini.h: Bump AOT file format version.
21340
21341 2004-11-25  Martin Baulig  <martin@ximian.com>
21342
21343         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21344         uninflated generic methods.
21345
21346 2004-11-25  Martin Baulig  <martin@ximian.com>
21347
21348         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21349
21350 2004-11-24  Martin Baulig  <martin@ximian.com>
21351
21352         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21353         original klass (this only applies for generic instances).
21354
21355 2004-11-24  Martin Baulig  <martin@ximian.com>
21356
21357         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21358         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21359         that array).
21360
21361 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21362
21363         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21364         localloc. Fixes #69678.
21365
21366         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21367         
21368 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21369
21370         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21371         used SSE registers on pinvoke calls. Fixes #69774.
21372
21373 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21374
21375         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21376         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21377
21378 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21379
21380         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21381         Refer directly to the mcs/ tree.
21382
21383 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21384
21385         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21386         Check if a trampoline for a synchronized method is required. 
21387
21388 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21389
21390         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21391         with localloc if needed. Throe arithmetric exception in
21392         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21393         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21394
21395 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21396
21397         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21398         types before switching on type.  Fixes #69622.
21399
21400 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21401
21402         * Makefile.am (check-local): New.  Integrate into 'make check'.
21403         (MCS,RUNTIME): Define using in-tree mono and mcs.
21404         (ILASM): New.
21405         (%.exe): Use $(ILASM).
21406
21407 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21408
21409         * mini-ppc.c: adjust initial prolog size (bug #69691).
21410
21411 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21412
21413         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21414         #69664.
21415
21416 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21417
21418         * Makefile.am (clean-local): Rename from 'clean'.
21419
21420 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21421
21422         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21423         to mono_arch_is_int_overflow. 
21424         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21425         SIGFPE events.
21426
21427 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21428
21429         * declsec.c|h: New files to support declarative security attributes.
21430         Added function to check if a method has (applicable) security.
21431         * mini.c|h: Add check for declarative security attributes in
21432         mono_method_check_inlining.
21433         * Makefile.am: Added declsec.c and declsec.h to the build.
21434
21435 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21436
21437         * mini.c, mini.h: update to keep dynamic code info per-domain.
21438
21439 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21440
21441         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21442         (mini_init): Get rid of it from here too.
21443
21444 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21445
21446         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21447         implemented OP_RETHROW (patch by Geoff Norton
21448         <gnorton@customerdna.com>).
21449
21450 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21451
21452         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21453         between appdomains.  Fixes appdomain-unload on PPC.
21454
21455 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21456
21457         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21458         mini-exceptions.c: handle the new wrapper types.
21459         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21460         token value as a MonoClass* when compiling a wrapper.
21461         mono_jit_create_remoting_trampoline now takes an additional
21462         MonoRemotingTarget parameter.
21463         
21464 2004-11-10  Martin Baulig  <martin@localhost>
21465
21466         * mini.c (mono_method_to_ir): Use `generic_container->context'
21467         rather than creating a new one.
21468
21469 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21470
21471         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21472
21473         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21474
21475 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21476
21477         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21478         the experimental aot cache stuff.
21479
21480 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21481
21482         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21483         mini-exceptions.c: update to exception clause structure changes.
21484
21485 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21486
21487         * exceptions-x86.c (throw_exception): Fix warnings.
21488
21489         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21490         for OP_RETHROW.
21491
21492 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21493
21494         * exceptions-sparc.c (get_throw_exception): Really fix this.
21495
21496 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21497
21498         * tramp-*.c: we no longer support icalls without wrappers, so
21499         a bit of code can be removed here
21500
21501 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21502
21503         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21504         patch.
21505
21506         * cpu-sparc.md: Add op_rethrow.
21507
21508         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21509
21510         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21511
21512         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21513         * mini-ops.h: Add OP_RETHROW.
21514
21515         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21516
21517         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21518
21519 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21520         
21521         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21522         Makes the output much easier to read
21523
21524 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21525
21526         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21527         prevents another huge leak when compiling with ssa. Secondly, the
21528         performance of doing this rather than freeing the lists is much
21529         better. GList does a lock every time you allocate a list link,
21530         so that it can use a memory pool. So, it is better to just use
21531         a memory pool of our own.
21532         
21533         * ssa.c, linear-scan.c: replace g_list_remove_link with
21534         g_list_delete.  The remove one does not free the GList, so we were
21535         leaking memory. On -O=all --compile-all with corlib, this cut down
21536         3 MB of allocations.
21537
21538 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21539
21540         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21541
21542         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21543
21544         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21545         into a new function mono_create_jit_trampoline ().
21546
21547 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21548
21549         * trace.c (get_spec): Allow tracing of classes without a namespace.
21550
21551 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21552
21553         * mini.c: Fix pointer overwrite in mini_method_compile.
21554
21555 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21556
21557         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21558         The darwin ABI needs some special handling for 1 and 2 byte structs
21559         Lets use lbz/lhz instead of lwz everywhere.
21560         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21561         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21562         Use stb/sth for the former, and put the latter always on stack instead of in
21563         argument registers.
21564
21565 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21566
21567         * trace.c (is_filenamechar): Add '_'.
21568
21569 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21570
21571         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21572
21573         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21574
21575 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21576
21577         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21578         depends on libmonogc. Fixes #68805.
21579
21580 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21581
21582         * mini.c (mono_jit_free_method): Provide extra information for
21583         this error.  Currently this leaks, but will be turned into a
21584         developer option in the future.
21585
21586 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21587
21588         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21589
21590 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21591
21592         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21593         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21594         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21595
21596 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21597
21598         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21599         trampolines for AOT code.
21600
21601 2004-10-22    <vargaz@freemail.hu>
21602
21603         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21604         constructed types. Fixes #68136.
21605
21606 2004-10-21  Martin Baulig  <martin@ximian.com>
21607
21608         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21609         if it returns true, unwind the stack to the call instruction.
21610
21611 2004-10-21    <vargaz@freemail.hu>
21612
21613         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21614
21615         * mini.h: Bump AOT version number.
21616
21617         * objects.cs: Add another test for unbox trampolines.
21618
21619         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21620         valuetype methods.
21621
21622 2004-10-20    <vargaz@freemail.hu>
21623
21624         * driver.c: Add SHARED to the set of optimizations tested.
21625
21626         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21627
21628         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21629         used by CEE_NEWARR.
21630
21631         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21632
21633 2004-10-20  Martin Baulig  <martin@ximian.com>
21634
21635         * mini-exceptions.c (mono_handle_exception): Call
21636         mono_debugger_handle_exception() to tell the debugger about
21637         catch/finally clauses.
21638
21639 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21640
21641         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21642
21643         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21644         #68447.
21645
21646 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21647
21648         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21649         methods as their native size, fixed bug #57543, #57545.
21650         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21651         This saves a temporary register and mullw call down into 1 (minor perf
21652         increase for cases like sum = sum * 5;  This use to translate into:
21653             li r11,5
21654             mullw r28,r28,r11
21655         It now translates to
21656             mulli r28,r28,5
21657
21658 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21659
21660         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21661         #68388.
21662
21663 2004-10-11  Martin Baulig  <martin@ximian.com>
21664
21665         * mini.c (mono_method_to_ir): If we're a generic method, get the
21666         MonoGenericContainer from our MonoMethodNormal and create a
21667         MonoGenericContext from it.
21668
21669 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21670
21671         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21672
21673         * basic-long.cs: Add test for checked i8->i2 cast.
21674
21675 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21676
21677         * inssel-ppc.brg: added a couple of speedup rules.
21678
21679 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21680
21681         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21682         to speed up rebuilds.
21683
21684 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21685
21686         * mini-s390.c: Minor fix to OP_OR_IMM.
21687
21688 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21689
21690         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21691         better. Fixes appdomain-unload.exe on sparc.
21692
21693 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21694
21695         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21696         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21697         see bug 67324.
21698
21699 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21700
21701         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21702
21703 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21704
21705         * mini.c: Always generate a field read/write wrapper for members
21706         of the class MarshalByRefObject since the actual instance could
21707         be a CBO.
21708
21709 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21710
21711         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
21712
21713 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21714
21715         * driver.c mini.h trace.c: Move the setting of the main assembly into
21716         a separate function called mono_trace_set_assembly () and call it after
21717         actually loading the main assembly. Fixes #66872.
21718
21719 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21720
21721         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
21722         using the code manager.
21723
21724 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21725
21726         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
21727
21728 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21729
21730         * cpu-amd64.md: Fix bug in previous patch.
21731         
21732         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
21733         #66650.
21734
21735 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
21736
21737         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21738         mini-exceptions.c: updates for changed stack walk interface.
21739
21740 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21741
21742         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
21743
21744 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
21745
21746         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
21747
21748 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
21749
21750         * driver.c (mini_regression_list): Do not call mono_assembly_close 
21751         since assemblies can't be unloaded.
21752         
21753 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21754
21755         * cpu-amd64.md: Fix more instruction lengths.
21756
21757         * cpu-amd64.md: Fix lengths of some instructions.
21758
21759 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
21760
21761         * inssel.brg: Make the array ldelema check aot friendly.
21762
21763 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21764
21765         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
21766
21767         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
21768
21769 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
21770
21771         * mini-x86.c: Fix build.
21772
21773         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
21774         mono_type_get_underlying_type () helper function to simplify code.
21775         
21776 2004-09-09  Martin Baulig  <martin@ximian.com>
21777
21778         * mini-amd64.c: Don't access `type->data.klass' directly, call
21779         mono_class_from_mono_type() instead since the type may be a
21780         generic instance.
21781
21782 2004-09-09  Martin Baulig  <martin@ximian.com>
21783
21784         * mini-amd64.c (get_call_info): Fix support for generic instances.
21785         (add_valuetype): Use mono_class_from_mono_type() to get the class
21786         since we can be a generic instance.
21787
21788 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
21789
21790         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
21791
21792 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21793
21794         * liveness.c: reset spill costs on each scan: bug 62107
21795
21796 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
21797
21798         * exceptions-sparc.c (mono_arch_find_jit_info): remove
21799         unnecessary line that doesn't compile
21800
21801 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
21802
21803         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
21804         trampolines, make them call an error function so people can fix their
21805         code.
21806
21807 2004-09-06  Martin Baulig  <martin@ximian.com>
21808
21809         * mini.c (mono_method_to_ir): When initializing locals, handle a
21810         generic instances like a valuetype if it's a valuetype and like a
21811         class if it's a class.
21812
21813 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21814
21815         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
21816         stack. Fixes #64674.
21817
21818         * exceptions.cs: Add test for unwinding of call arguments.
21819
21820 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
21821
21822         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
21823         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
21824         set the carry/borrow flag). The sparc and s390 implementations
21825         can now use optimized versions (and simplify the code). ppc bugfixes.
21826
21827 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21828
21829         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
21830
21831 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
21832
21833         * inssel-amd64.brg: Remove leftover 32 bit rule.
21834
21835         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
21836
21837 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
21838
21839         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
21840         mono_arch_find_jit_info functions into a new function. Fix a memory
21841         leak.
21842
21843         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
21844         refactored code.
21845         
21846 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21847
21848         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
21849         as well.
21850         
21851         * exceptions.cs: Add array size tests.
21852
21853         * mini.c: Allocate a separate icall wrapper for each arity of 
21854         mono_array_new_va. Fixes #59509.
21855
21856         * exceptions.cs: Add testcase for 64578.
21857
21858         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
21859
21860         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
21861         
21862 2004-09-02  Martin Baulig  <martin@ximian.com>
21863
21864         * mini.c (mono_method_to_ir): When initializing the locals, call
21865         handle_initobj() on the generic instance itself, not its
21866         underlying type.
21867
21868 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21869
21870         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
21871         MonoJitInfo for dynamic methods.
21872
21873         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
21874
21875         * mini.c: Add support for freeing JIT data for dynamic methods.
21876         
21877 2004-09-01  Martin Baulig  <martin@ximian.com>
21878
21879         * mini-x86.c (is_regsize_var): Added support for generic
21880         instances.
21881         (mono_arch_emit_prolog): Make this compile again, use
21882         `x86_push_imm_template (code)'.
21883
21884 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
21885
21886         * mini-x86.c: make all push_imm instructions that get
21887         patched always emit the long form
21888
21889 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
21890
21891         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
21892         in a per-domain hash.
21893
21894         * mini-amd64.c (merge_argument_class_from_type): Handle generic
21895         types.
21896
21897 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
21898
21899         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
21900         work.
21901         
21902         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
21903         work.
21904
21905         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
21906         Beginnings of SSE2 support.
21907
21908         * exceptions.cs: Add more tests for checked int<->uint casts.
21909
21910 2004-08-28  Martin Baulig  <martin@ximian.com>
21911
21912         * mini-x86.c (mono_arch_instrument_epilog): Added support for
21913         generic instances.
21914
21915         * mini.c
21916         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
21917         Handle generic instances recursively.
21918
21919 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21920
21921         * iltests.il: test for conv.u8 on a constant
21922
21923 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21924
21925         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
21926         LCONV_x4 (shrun_32 (membase)).
21927
21928 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21929
21930         * inssel-x86.brg: c&p rules for push/setret of long
21931
21932 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21933
21934         * inssel-x86.brg: c&p rules for compare (base, regvar) and
21935         compare (regvar, base)
21936
21937         * inssel-x86.brg: more burg love
21938
21939         * inssel.brg: more cleanup
21940
21941         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
21942
21943 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21944
21945         * basic-long.cs, basic-calls.cs: new tests for optimization.
21946
21947 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
21948
21949         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
21950         patch.
21951
21952 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
21953
21954         * mini-amd64.c (read_tls_offset_from_method): Add another case.
21955         
21956 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
21957
21958         * inssel.brg (mini_emit_memcpy): use 
21959         NO_UNALIGNED_ACCESS to disable memcpy optimization
21960
21961 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
21962
21963         * mini-amd64.c: Handle generic types in various places.
21964
21965         * mini.c (mono_method_to_ir): Handle generic types in init locals.
21966
21967 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
21968
21969         * mini.c (handle_box): Fix warning.
21970
21971         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
21972
21973         * mini-amd64.h: Enable the emit_state optimization.
21974
21975         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
21976
21977         * mini-amd64.c: Add some new 64 bit peephole opts.
21978
21979         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
21980
21981         * cpu-amd64.md: sreg1 of div instructions must be %rax.
21982
21983         * mini-amd64.c: Register allocator fixes.
21984
21985         * mini.c: Add an optimization to emit_state to avoid allocation of new
21986         registers on some platforms.
21987
21988 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
21989
21990         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
21991
21992         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
21993         allocation. Fixes #63085.
21994
21995         * basic-long.cs: Add new regression test.
21996
21997         * mini-amd64.c: Register allocator improvements.
21998
21999 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22000
22001         * mini-amd64.c (read_tls_offset_from_method): Add another code
22002         sequence.
22003
22004         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22005         instruction sequence for nullifying class init trampolines.
22006
22007         * objects.cs: Add new regalloc test.
22008
22009         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22010
22011 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22012
22013         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22014         
22015         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22016         arguments.
22017
22018         * driver.c: Fix profiling after TLS changes.
22019         
22020         * driver.c (mono_main): Set mono_stats.enabled if needed.
22021
22022         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22023         CEE_BOX.
22024
22025 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22026
22027         * mini-x86.c: use a 1 op rather than a 2 op tls access
22028         instruction -> faster.
22029
22030 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22031
22032         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22033         x86 backend.
22034
22035 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22036
22037         * exceptions-sparc.c (throw_exception): fix typo
22038
22039 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22040
22041         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22042         set tree->dreg correctly with tls. Allow any
22043         register to be used.
22044
22045         * mini-x86.c (read_tls_offset_from_method): add new code
22046         generation pattern seen with GCC.
22047
22048
22049 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22050
22051         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22052         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22053         exceptions-sparc.c: fix some performance issues in exception
22054         handling and setting of the stack trace for exceptions that were
22055         already thrown.
22056
22057 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22058
22059         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22060         x86 backend.
22061         
22062         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22063         registers.
22064
22065 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22066
22067         This patch inlines tls access, when possible.
22068         
22069         * mini.h: new arch functions for TLS intrinsics.
22070         All platforms updated with a stub.
22071
22072         * mini.c: use the new intrinsics
22073
22074         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22075         arch specific intrinsic for tls variables
22076
22077 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22078
22079         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22080         under windows.
22081
22082 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22083
22084         * mini.c: thread local allocation
22085
22086 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22087
22088         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22089
22090         * Makefile.am: Link against the static version of libmonogc.
22091         
22092         * Makefile.am: Link the static versions of the convenience libraries
22093         into the mono executable.
22094
22095         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22096
22097 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22098
22099         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22100         on integer overflow.
22101
22102         * mini-amd64.c: Reorganize function call code.
22103
22104         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22105
22106 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22107
22108         * inssel-x86.brg: use xor eax,eax.
22109         
22110         * basic.cs: new tests
22111
22112 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22113
22114         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22115         in exception throwing code.
22116         
22117 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22118
22119         * inssel-x86.brg: use xor esi,esi.
22120
22121 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22122
22123         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22124         can trace methods compiled during mini_init () too.
22125
22126         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22127         CEE_CONV_U4.
22128
22129 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22130
22131         * Makefile.am: static link on x86 (r=zoltan)
22132
22133 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22134
22135         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22136         code since it causes some programs to fail.
22137
22138 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22139
22140         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22141
22142 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22143
22144         * mini.c: ovfops_op_map - add STACK_OBJ case for
22145         CONV_I 
22146         * basic.cs: add test_0_pin_string as test
22147         case for above.
22148
22149 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22150
22151         * Makefile.am: build C# if srcdir != builddir
22152
22153 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22154
22155         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22156         fall-through blocks.
22157
22158 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22159
22160         * driver.c: enable loop by default again and include abcrem in -O=all.
22161
22162 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22163
22164         * iltests.il: Add some localloc tests.
22165
22166         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22167
22168         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22169         Fixes #62574.
22170
22171         * inssel-amd64.brg: Add some optimizations.
22172
22173         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22174         for gcc-3.4.
22175
22176         * Makefile.am: Statically link mono against libmono on AMD64.
22177         
22178         * mini-amd64.c inssel-amd64.brg: Optimizations.
22179
22180 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22181
22182         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22183
22184         * tramp-amd64.c: Patch calling code in trampolines.
22185
22186 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22187
22188         * mini-amd64.c: pinvoke struct passing fixes.
22189
22190 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22191
22192         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22193         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22194
22195 2004-08-05  Duncan Mak  <duncan@ximian.com>
22196
22197         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22198         CEE_LDELEM_ANY.
22199
22200 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22201
22202         * mini-amd64.c (emit_move_return_value): Move return value for normal
22203         calls too.
22204
22205 2004-08-05  Martin Baulig  <martin@ximian.com>
22206
22207         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22208         `type->type'; just modify `type' itself when dealing with enums
22209         and generic instances.
22210         (check_call_signature): Make `simple_type' a `MonoType *'.
22211
22212 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22213
22214         * mini.c: Use OP_PADD to add offsets to addresses.
22215
22216         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22217
22218 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22219
22220         * mini-sparc.c (mono_arch_emit_epilog): fix check
22221         for folding last op into restore instruction
22222
22223 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22224
22225         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22226         helper methods using the code manager.
22227         
22228         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22229
22230         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22231
22232 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22233         
22234         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22235           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22236
22237         * mini-s390.c: fix tail processing
22238
22239 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22240
22241         * mini-ppc.c: mul.ovf.un exception name fix.
22242
22243 2004-08-03  Martin Baulig  <martin@ximian.com>
22244
22245         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22246         instances; before jumping to `handle_enum', also modify `ptype'.
22247
22248 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22249
22250         * cpu-sparc.md: fcall maximal length too small.
22251
22252 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22253
22254         * mini-amd64.c mini.h: Add initial support for passing/returning 
22255         structures to/from pinvoked methods.
22256
22257 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22258
22259         * mini-ppc.c: reg allocator fix.
22260
22261 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22262
22263         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22264
22265         * inssel.brg: Optimize memset on 64 bit machines.
22266
22267         * mini-amd64.c: Fix some vararg cases.
22268
22269 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22270
22271         * mini-s390.c: Corrected macro in emit_float_to_int
22272
22273         * s390-abi.cs: Tests to exercise the s390 ABI
22274
22275 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22276
22277         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22278         caller saved regs.
22279
22280         * basic.cs: Add a test for add.ovf.un.
22281
22282 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22283
22284         * mini-sparc.c: add case for OP_IDIV_UN
22285
22286 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22287
22288         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22289         
22290         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22291
22292 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22293
22294         * basic.cs: regression tests.
22295
22296         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22297         regressions.
22298
22299 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22300
22301         * basic.cs: Add a new test.
22302
22303         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22304         and AOT. Various fixes and optimizations.
22305
22306         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22307
22308 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22309
22310         * mini-ppc.c: make sure temp regs are not used for global reg
22311         allocation.
22312
22313 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22314
22315         * cpu-sparc.md: conv_i8 fix for 64bits
22316
22317         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22318
22319 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22320         
22321         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22322         add opcode for cmp BYTE PTR [eax], imm.
22323
22324         * inssel.brg: Make memcpy and memset takes bases.
22325
22326 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22327
22328         * *-amd64.*: More AMD64 work.
22329         
22330 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22331
22332         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22333         add a compare-not-equal opcode.
22334         
22335 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22336
22337         * mini.c: Use mono_init_from_assembly instead of mono_init.
22338         
22339 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22340
22341         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22342
22343         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22344
22345         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22346
22347         * inssel.brg: 64 bit fixes.
22348
22349         * mini.h (MonoCallInst): Add some AMD64 specific data.
22350
22351         * mini.h: Add some OP_P opcodes.
22352
22353 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22354
22355         * basic.cs: tests for 61797 and 61740
22356
22357 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22358
22359         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22360         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22361
22362 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22363
22364         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22365
22366         * *-amd64*.*: Ongoing AMD64 work.
22367
22368 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22369
22370         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22371
22372         * *-amd64*: Ongoing AMD64 work.
22373
22374         * mini-arch.h: Add AMD64 support.
22375
22376         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22377
22378         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22379
22380         * mini-ops.h: Add new opcodes.
22381
22382         * Makefile.am: Add AMD64 support.
22383
22384         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22385         rules into the inssel-long*.brg files.
22386
22387         * *-amd64.*: Add beginnings of AMD64 backend.
22388
22389 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22390
22391         * mini.c (print_dfn): commenting out the code that prints
22392         the cil. With -O=deadce, this makes -v -v crash.
22393         
22394         * cpu-pentium.md: make checkthis have a length of 2
22395
22396 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22397
22398         * mini-sparc.h: fix implementations of __builtin
22399         functions for Sun compiler for V9.
22400
22401 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22402
22403         * mini.c: use the new stelem.ref wrapper
22404         * exceptions.cs, arrays.cs: new stelem.ref tests
22405
22406 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22407
22408         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22409         new XSP should work with these changes).
22410
22411 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22412         
22413         * inssel-{long32,x86,}.brg: trivial optimizations.
22414         
22415 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22416
22417         * mini.c: load value when emitting box operation in
22418         constrained calls.
22419
22420 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22421
22422         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22423         is one byte shorter than cmp DWORD PTR [eax], 0.
22424
22425 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22426
22427         * inssel-ppc.brg: arguments on the stack are always
22428         relative to the stack pointer (spotted by Neale Ferguson).
22429
22430 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22431
22432         * exceptions-x86.c: delay appending the method name to the trace until
22433         after mono_jit_info_table_find is called, as this gets the real
22434         MonoMethod.
22435
22436 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22437
22438         * aot.c: register roots
22439
22440 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22441
22442         * aot.c : I could just use PLATFORM_WIN32 flag.
22443
22444 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22445
22446         * aot.c : Reverting the previous fix. This time it broke linux build.
22447
22448 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22449
22450         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22451
22452 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22453
22454         * mini.c (handle_stack_args): Remove some more debugging code.
22455         
22456         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22457
22458         * driver.c mini.h aot.c: Allow additional options to be specified with
22459         --aot and pass them to mono_compile_assembly.
22460
22461         * aot.c: Add experimental code to AOT compile all loaded assemblies
22462         on demand and save the code into a cache in the filesystem.
22463
22464         * aot.c: Add support for more wrapper methods.
22465         
22466         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22467         58863.
22468
22469         * cpu-*.md: Remove removed opcodes.
22470
22471         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22472         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22473         related icalls to marshal.c.
22474
22475 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22476
22477         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22478
22479         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22480
22481         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22482
22483 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22484         * liveness.c: If liveness is recomputated we need to reset the information
22485         for each variable. This way, if the liveness range has been narrowed
22486         by optimizations that happened after the last computation, we can return
22487         a smaller range.
22488         
22489         For example, if you have
22490         
22491         {
22492                 int i = 0;
22493                 
22494                 // Tons of code that does not affect i
22495                 
22496                 i = foo ();
22497                 ...
22498         }
22499         
22500         i = 0 is dead code and will be removed by SSA. However, when
22501         linear scan gets to the code, i will still appear to be live
22502         throughout the entire block. This prevents good register allocation.
22503
22504 2004-07-06  Martin Baulig  <martin@ximian.com>
22505
22506         * debug-mini.c (mono_debug_init_method): Allow
22507         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22508         (mono_debug_add_icall_wrapper): New method.
22509
22510         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22511
22512 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22513
22514         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22515         optimization.
22516
22517 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22518
22519         * aot.c (mono_aot_load_method): Fix loading of debug info.
22520
22521 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22522
22523         * aot.c: Add logging support.
22524
22525 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22526
22527         * mini.h: Add prototype for mono_print_method_from_ip.
22528
22529         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22530
22531         * inssel.brg: 64 bit fixes.
22532
22533         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22534         inssel-long32.brg.
22535
22536         * Makefile.am: Add SPARC64 support.
22537
22538 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22539
22540         * aot.c: Fix alignment problems on 32 bit platforms.
22541
22542 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22543
22544         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22545         SPARC64.
22546
22547         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22548         problems.
22549
22550         * mini.h: Bump AOT file version. Some 64 bit fixes.
22551
22552 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22553
22554         * inssel-sparc.brg: Add new rule to avoid register moves.
22555
22556         * inssel.brg: Add ldind_to_load_membase helper function.
22557
22558 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22559
22560         * mini.c: OffsetToStringData intrinsic.
22561         
22562 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22563
22564         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22565
22566         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22567         regression tests.
22568
22569         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22570 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22571
22572         * mini.c: reinstated mono_compile_get_interface_var()
22573         on x86, too, since the change breaks the Gtk# build there as well.
22574
22575 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22576
22577         * driver.c: remove loop from the default optimizations: it seems to
22578         interact badly with some of the other options (see bug #60613).
22579
22580 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22581
22582         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22583         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22584
22585 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22586
22587         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22588         vararg-using methods.
22589
22590 2004-06-21  Martin Baulig  <martin@ximian.com>
22591
22592         * mini/mini-exceptions.c
22593         (mono_handle_exception): Added `gpointer original_ip' argument.
22594         After calling mono_unhandled_exception(), call
22595         mono_debugger_unhandled_exception() and if that returns true,
22596         restore the context and return.
22597
22598 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22599
22600         * mini-ppc.c: prefer the use of relative branches so
22601         they won't need to be patched in aot code (patch from Patrick Beard).
22602
22603 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22604
22605         * aot.c: patch from Patrick Beard to make the output assembly
22606         more correct for the MacOSX assembler. Small tweak to
22607         generate sane images on Linux/PPC, too.
22608
22609 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22610
22611         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22612         case until bug #59509 is fixed (shows up in #60332).
22613
22614 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22615
22616         * mini.c: make sure the needed wrappers are compiled, too, with
22617         precomp.
22618
22619 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22620
22621         * driver.c: remove NPTL reference in --version output.
22622
22623 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22624
22625         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22626         generate valid assembly for the Mach-O assembler.
22627
22628 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22629
22630         * driver.c: don't include abcrem in the all optimization specifier
22631         since it slows down jit compilation too much for now.
22632
22633 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22634
22635         * mini.c: use BIGMUL only if both operands have the same signage.
22636         * iltests.il: Test for bug 60056. (errors related to signage in
22637         BIGMUL).
22638
22639         r=lupus.
22640
22641 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22642
22643         * mini.c, aot.c: memory leak fixes.
22644
22645 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22646
22647         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22648
22649 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22650
22651         * Makefile.am: remove the -static hack completely, it links in
22652         statically glib as well.
22653
22654 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22655
22656         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22657         * exceptions.cs: make it compile with new mcs/csc.
22658
22659 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22660         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22661         and added relevant test case.
22662
22663 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22664
22665         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22666         regressions in gtk-sharp.
22667
22668 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22669
22670         * exceptions.cs: New regression tests.
22671
22672         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22673
22674 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22675
22676         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22677
22678 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22679
22680         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22681
22682         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22683
22684 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22685
22686         * mini.c (mono_jit_runtime_invoke): Init class in this
22687         method instead of trusting mono_jit_compile_method to
22688         do the work (because wrappers can be in object class)
22689
22690 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22691
22692         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22693
22694         * basic-long.cs: New regression test.
22695
22696 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22697
22698         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22699         and div/rem checks.
22700
22701 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22702
22703         * Makefile.am: fix miguel's change to build mono statically against
22704         libmono (track build dependencies).
22705
22706 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22707
22708         * cfold.c: Some glib versions do not have G_MININT32.
22709
22710 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
22711
22712         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
22713         with precision of tan, atan, sin and cos, and implemented related
22714         regressions tests (fixes bug 54467, but one new problem appeared and
22715         is not fixed yet).
22716
22717 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22718
22719         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
22720
22721         * exceptions.cs: Add test for constant folding && division by zero.
22722
22723         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
22724         since driver.c is in libmono too, so the optimization was useless.
22725
22726         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
22727         variable to driver.c so the compiler can emit more efficient code to
22728         access them.
22729
22730 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22731
22732         * Makefile.am: don't distribute generated inssel.[ch] files.
22733
22734 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22735
22736         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
22737         into the default appdomain. Fixes #58707.
22738
22739         * jit-icalls.c: Remove the broken approximation for truncl, doing
22740         no conversion is better.
22741
22742         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
22743         Fixes #58863.
22744
22745 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22746
22747         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
22748         of the mcrxr instruction which is not available on some processors
22749         even if it's documented to be. Implement add and sub overflow correctly
22750         (still not complete for long unsigned). Speed up icalls a bit.
22751
22752 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
22753
22754         * mini.c (mono_jit_compile_method_with_opt): Make sure that
22755         we run .cctor in the current domain instead of target_domain.
22756         
22757         Fixes bug #58558, .cctor not being called in -O=shared.
22758
22759 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22760
22761         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
22762
22763 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
22764
22765         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
22766         which can be done with an imm8, do it that way.
22767         (mono_arch_output_basic_block): ditto for a jmp
22768         (mono_arch_emit_prolog): Computate maximum offset of a label.
22769
22770 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
22771
22772         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
22773         now tries to allocate prefered physical reg's for virtual
22774         regs. This reduces the number of emited spills/loads with
22775         20-30% on our core assemblies.
22776
22777 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22778
22779         * jit-icalls.c: truncl() is not needed and trunc() is
22780         the correct thing to do anyway (bug #58287).
22781
22782 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
22783
22784         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
22785         if available.
22786
22787 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
22788
22789         * driver.c: enable loop optimizations by default.
22790
22791 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22792
22793         * mini-x86.c: fix calc of max loop size when aligning loops start.
22794
22795 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
22796
22797         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
22798         the stack.
22799
22800 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
22801
22802         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
22803         should set carry.
22804
22805         * basic-long.cs: Add tests for add/subtract of immediates with carry.
22806
22807         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
22808         
22809         * mini.c (inline_method): Allways inline some wrappers even if the cost
22810         is too large. Fixes #58785.
22811
22812         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
22813         
22814 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
22815
22816         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
22817         (crichton@gimp.org). Beginning of support for sparc/linux.
22818
22819         * mini-sparc.c: Optimize retrieval of LMF address.
22820
22821 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
22822
22823         * exceptions-ppc.c:  handle alloca in methods with clauses.
22824
22825 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
22826
22827         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
22828
22829 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
22830
22831         * mini.c: Delegate most of the abort signal work to 
22832           mono_thread_request_interruption, which also handles Stop and Suspend
22833           states.
22834
22835 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
22836
22837         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
22838         supports the save/restore lmf opcodes.
22839
22840 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
22841
22842         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
22843         by gcc-3.4 as well.
22844
22845         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
22846
22847 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22848
22849         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
22850         methods which contain array accesses.
22851
22852         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
22853         boundaries. Fixes #58537.
22854
22855         * iltests.il: Add regression test for #58537.
22856
22857 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22858
22859         * mini-x86.c (mono_arch_local_regalloc): Last part of
22860         fix for bug #58633 (releasing register to early).
22861
22862 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
22863
22864         * basic-long.cs: Add new regression test.
22865
22866 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22867
22868         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
22869         register too early on the chain.
22870
22871 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22872
22873         * mini.c (create_helper_signature): Use a helper function to reduce
22874         the code which needs to be written. Also set the calling convention of
22875         icalls on windows. Fixes #57840.
22876
22877 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22878
22879         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
22880         exceptions-ppc.c: added helper function to get the instruction address
22881         from a signal handler context.
22882
22883 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22884
22885         * helpers.c: use g_get_tmp_dir. Invokes happyness 
22886         from gonzalo.
22887
22888 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22889
22890         * helpers.c: Add new env variable to pass args to objdump.
22891         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
22892
22893 2004-05-17  Radek Doulik  <rodo@ximian.com>
22894
22895         * Makefile.am (common_sources): added abcremoval.h so it get
22896         disted and daily mono packages on go-mono.com will build again
22897
22898 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
22899
22900         * abcremoval.c: Fixed coding style, added copyright header.
22901
22902         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
22903
22904         * mini.h: Added prototype for abc removal main function.
22905
22906         * build_relations_propagation_table.pl: Added copyright header.
22907
22908 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22909
22910         * basic-long.cs: reg test for complex ceq_long bug.
22911
22912 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22913
22914         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
22915         reg in long and clob case (bug #58343). Fixed/added comments.
22916
22917 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
22918
22919         * mini.c (mono_jit_runtime_invoke): Follow new convention
22920         of calling the invoke method with an function pointer.
22921
22922 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
22923
22924         * ChangeLog: Fix author of memory leak patch.
22925
22926 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
22927
22928         * Makefile.am: fix make dist as well...
22929
22930
22931 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
22932
22933         * cfold.c: Made so that conversions from pointer to int4 are no-ops
22934         on archs where pointers are 4 bytes long.
22935
22936         * Makefile.am: Added abcremoval.c source file.
22937
22938         * abcremoval.c: Added abcremoval.c.
22939
22940         * abcremoval.h: Added abcremoval.h.
22941
22942         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
22943
22944         * inssel.brg: Enabled bounds check removal.
22945
22946         * mini.c: Added support for abcrem optimization.
22947
22948         * mini.h: Added abcrem optimization label.
22949
22950         * driver.c: Added support for abcrem optimization.
22951
22952         * propagated_relations_table.def: Added propagated_relations_table.def.
22953
22954 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
22955
22956         * mini.c, cfold.c: fix style.
22957
22958 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22959
22960         * mini.c: handle issue with the low-level implementation of
22961         some long opcodes (bug #54209).
22962
22963 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
22964
22965         * basic.cs: test for my new cmov stuff.
22966
22967 2004-05-13      Patrik Torstensson
22968
22969         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
22970         opt and added peephole documentation.
22971
22972 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
22973
22974         * tramp-ppc.c: rewrote the generic trampoline code.
22975
22976 2004-05-11      Patrik Torstensson
22977
22978         * mini-x86.c: optimize long shl/shr asm code (one less branch)
22979
22980 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
22981
22982         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
22983
22984         * mini.h mini.c dominators.c: Applied patch from Derek Woo
22985         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
22986
22987         * mini.c: Add new icalls for AsAny marshalling.
22988
22989 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22990
22991         * tramp-ppc.c, mini-ppc.c: more cleanups.
22992
22993 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22994
22995         * mini.c: no warnings.
22996
22997 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22998
22999         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23000
23001 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23002
23003         * mini.c: In the thread abort signal handler, if the thread is in the
23004         process of being stoped, don't throw the Abort exception, just stop the
23005         thread.
23006
23007 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23008
23009         * tramp-ppc.c: removed old code.
23010
23011 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23012
23013         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23014         do some simple speed optimizations on ppc.
23015
23016 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23017
23018         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23019         and large offsets in load/store.
23020
23021 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23022
23023         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23024         it causes regressions.
23025
23026 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23027
23028         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23029         support.
23030
23031 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23032
23033         * jit-icalls.c: remove warnings.
23034         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23035         speedups for unsafe code.
23036
23037 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23038
23039         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23040
23041 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23042
23043         * basic-calls.cs: Add new regression test.
23044
23045         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23046         more portable.
23047
23048         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23049
23050         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23051         is no longer used.
23052
23053 2004-05-06      Patrik Torstensson
23054
23055         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23056         long reg allocation in any reg (not only eax:edx) and implemented 
23057         long shl/shr ops in asm instead of helpers.
23058
23059 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23060
23061         * mini-sparc.h: Fix warnings.
23062
23063         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23064         stack.
23065
23066         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23067         separate statement for clarity.
23068
23069         * mini-sparc.c: Update status.
23070
23071 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23072
23073         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23074         here.
23075
23076 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23077
23078         * inssel-ppc.brg: another small pre-release workaround:
23079         we don't do overflow detection for long_sub_un.
23080
23081 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23082
23083         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23084         (also works around a weird ppc bug: 57957).
23085
23086 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23087
23088         * tramp-ppc.c: trampoline fixes.
23089
23090 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23091
23092         * mini-ppc.c: fixed typos.
23093
23094 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23095
23096         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23097         at the top of the stack. Fixed typos. Use a frame registers
23098         for all the methods with exception clauses.
23099
23100 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23101
23102         * exceptions-ppc.c: restore fp registers.
23103
23104 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23105
23106         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23107         order from the stack top (moved the stack room to save the
23108         return value for trace after the param area). Fixed corruption
23109         in restoring registers on unwind.
23110
23111 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23112
23113         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23114
23115 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23116
23117         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23118         and prolog/epilog for methods that use it. Allow
23119         enough param area room for varargs methods. Fix miguel's
23120         breakage in exception handling.
23121
23122 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23123
23124         * Makefile.am: run genmdesc only on current arch.
23125
23126 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23127
23128         * exceptions-x86.c:
23129         * mini-x86.h: fix the build on windows.
23130
23131 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23132
23133         * 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.
23134
23135         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23136
23137         * mini-exceptions.c: New file.
23138         
23139         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23140         Move some parts of the x86 exception handling code to an 
23141         arch-independent file so it can be shared with other ports.
23142
23143 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23144
23145         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23146
23147 2004-04-26  David Waite  <mass@akuma.org>
23148
23149         * driver.c: remove comma from end of enumeration declaration
23150
23151 2004-04-26  Jackson Harper  <jackson@ximian.com>
23152
23153         * driver.c: parse config file before loading first assembly. This
23154         allows the user gac to be enabled/disabled. 
23155         
23156 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23157
23158         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23159         simpler mechanism: we do not care what is encoded initially
23160         (branch absolute or relative), we care about the code and its
23161         target.  I kept the old code for reference for now.
23162
23163         The new code tries first to determine if the jump is anywhere in
23164         the -/+32 absolute meg range, if it succeeds, it encodes using the
23165         absolute branch;  If not, it tried to find something in the
23166         relative range, if not, it uses the handle_thunk code. 
23167
23168 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23169
23170         * exceptions-ppc.c: use the correct ip register on macosx.
23171
23172 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23173
23174         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23175
23176 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23177
23178         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23179         Raise exception on integer divide by zero by hand since the hw
23180         doesn't support it. Handle NaNs in FP compares.
23181
23182 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23183
23184         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23185         code reducing duplication between the platforms and enabled
23186         signal exception handling (on linux for now).
23187
23188 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23189
23190         * exceptions-ppc.c: more macosx support.
23191
23192 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23193
23194         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23195
23196 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23197
23198         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23199
23200 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23201
23202         * iltests.il: more tests.
23203
23204 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23205
23206         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23207         vars as well.
23208
23209 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23210
23211         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23212
23213 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23214
23215         * liveness.c: Mark variables as volatile in all basic blocks reachable
23216         from exception clauses.
23217
23218 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23219
23220         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23221         inlining.
23222
23223 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23224
23225         * iltests.il, basic.cs: more tests for regalloc.
23226
23227 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23228
23229         * iltests.il: Some tests for register allocation modifications
23230         I have locally.
23231
23232 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23233
23234         * exceptions.cs: Add regression test for bug #56782.
23235
23236         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23237         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23238         the beauty of fixing the same thing in 5 different files...
23239
23240 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23241
23242         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23243         methods.
23244
23245 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23246
23247         * mini.c: Add support for STRWLPARRAY marshalling convention.
23248
23249 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23250
23251         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23252         to init the context to setup the regs pointer).
23253
23254 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23255
23256         * exceptions-ppc.c: more exceptions work.
23257
23258 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23259
23260         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23261         not allowed.
23262
23263 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23264
23265         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23266         can use the memory directly.
23267
23268         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23269
23270         add x86_add_membase, x86_sub_membase, x86_mul_membase
23271
23272 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23273
23274         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23275         GENERAL_REGS they were also hardcoded for all PPC ports.
23276
23277         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23278
23279         Remove hard-coded limit for floating point registers, use
23280         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23281
23282         Notice that in MacOS X calling conventions you can fit a lot more
23283         floating point values in registers, so I should update the PInvoke
23284         test to excercise the passing of floating point values on the
23285         stack (currently broken).
23286         
23287 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23288
23289         * tramp-ppc.c (create_trampoline_code): Added
23290         JUMP_TRAMPOLINE_SIZE. 
23291         (ppc_magic_trampoline): Follow the pattern from
23292         x86_magic_trampoline: if code is set to zero, return. 
23293         (create_trampoline_code): Always pass MonoMethod to the jump
23294         trampoline, before it was passing a null.
23295         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23296         share the code with mono_arch_create_jit_trampoline. 
23297
23298         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23299         implemented.
23300         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23301         implemented.  
23302
23303         * cpu-g4.md: Added length for jmp instruction, the worst case
23304         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23305         for save_lmf).
23306
23307 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23308
23309         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23310
23311 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23312
23313         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23314         before each IL instruction.
23315
23316         * mini.c (CEE_BOX): Fix warnings.
23317
23318 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23319
23320         * mini.c: removed a few unused vars and extra whitespace.
23321
23322 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23323
23324         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23325         checks.
23326         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23327         index.
23328         (OP_GETCHR): use the above
23329         (CEE_LDELEMA): use the above.
23330
23331         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23332         version of the generic impl.
23333         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23334         (CEE_LDELEMA): use the above.
23335
23336 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23337
23338         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23339         Fixes #56317.
23340
23341         * iltests.il: Added new regression test for #56317.
23342
23343 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23344
23345         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23346         under NetBSD. Fixes #56450.
23347
23348         * liveness.c (update_gen_kill_set): Fix previous patch.
23349
23350 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23351
23352         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23353
23354 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23355
23356         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23357         ldsfld and ldsflda.
23358
23359         * inssel-sparc.brg: Add more optimizations.
23360
23361         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23362
23363 2004-04-01  Martin Baulig  <martin@ximian.com>
23364
23365         * mini.c (handle_box): New static function; moved the
23366         implementation of CEE_BOX here.
23367         (mono_method_to_ir): Added `constrained_call' variable.
23368         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23369         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23370         mono_method_get_constrained() to get the method.
23371
23372 2004-04-01  Martin Baulig  <martin@ximian.com>
23373
23374         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23375         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23376         (mono_method_to_ir): We don't need these macros anymore since
23377         mono_class_get_full() already takes care of it. 
23378
23379 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23380
23381         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23382         use @function (as doesn't accept #function here) and check the return
23383         value of system and stop if fails.
23384
23385 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23386
23387         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23388
23389 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23390
23391         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23392
23393         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23394
23395         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23396         #56223.
23397
23398         * basic-long.cs: Add test for negation of Int64.MinValue.
23399
23400 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23401
23402         * mini-sparc.c: Update status.
23403
23404         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23405
23406         * exceptions-sparc.c: Fix return value in filters.
23407
23408         * inssel-sparc.brg: Fix register allocation in some rules.
23409
23410 2004-03-28  Martin Baulig  <martin@ximian.com>
23411
23412         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23413         if neccessary.  
23414
23415 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23416
23417         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23418         
23419         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23420         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23421         remove unused conv_u4 opcode.
23422
23423         * mini-x86.c: Remove valgrind workaround since it slows down things
23424         even when mono is not run under valgrind.
23425
23426 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23427
23428         * mini-sparc.c: Update status.
23429
23430         * inssel-sparc.brg: Add some optimizations.
23431
23432         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23433         future delay slot filling. Add support for varargs, tail calls and JMP.
23434
23435         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23436         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23437
23438         * inssel.brg: Fix register allocation in OP_ARGLIST.
23439
23440         * inssel.brg: Fix warnings.
23441
23442 2004-03-25  Martin Baulig  <martin@ximian.com>
23443
23444         * mini.c (inflate_generic_field): Removed.
23445         (mini_get_method): Removed, use mono_get_method_full(),
23446         (mini_get_class): Removed, use mono_class_get_full().
23447         (mono_method_to_ir): Pass our generic context to
23448         mono_field_from_token().        
23449
23450 2004-03-25  Martin Baulig  <martin@ximian.com>
23451
23452         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23453         of a `MonoMethod *'.
23454         (mini_get_method): Take a `MonoGenericContext *' instead
23455         of a `MonoMethod *'.
23456         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23457         a new local variable called `generic_context' which holds the
23458         current `MonoGenericContext *'; use it to lookup things.
23459
23460 2004-03-24  Martin Baulig  <martin@ximian.com>
23461
23462         * mini.c (mini_get_class): New static method; if we're inside a
23463         generic instance, inflate the class if neccessary.
23464         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23465
23466 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23467
23468         * iltests.il: New regression test for #55976.
23469
23470         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23471         #55976.
23472
23473 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23474
23475         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23476         output.
23477
23478 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23479
23480         * liveness.c: Consider SSA stores as well as loads when making vars
23481         volatile.
23482
23483         * exceptions.cs: New regression tests for register allocation.
23484         
23485 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23486
23487         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23488         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23489           domain lock only to protect puntual access to data structures.
23490           Added access lock for sighash, jit_icall_hash_name, 
23491           jit_icall_hash_addr and domain->code_mp.
23492
23493 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23494
23495         * driver.c: Print SIGSEGV handling method.
23496
23497         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23498
23499         * mini.c (setup_jit_tls_data): Handle case when this is called
23500         multiple times for a thread.
23501
23502         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23503         is different from fbxx_un. Fixes #54303. Also use constants instead of
23504         magic numbers in a lot of places.
23505
23506 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23507
23508         * exceptions.cs: Fix cctor test when --regression is used.
23509
23510 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23511
23512         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23513         for Linux/ppc.
23514
23515 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23516
23517         * inssel-ppc.brg: fixed register assignments for some rules.
23518
23519 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23520
23521         * exceptions.cs: Add test for exceptions in static constructors.
23522
23523         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23524         static constructors outside the domain lock. Fixes #55720.
23525
23526 2004-03-17  Martin Baulig  <martin@ximian.com>
23527
23528         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23529         (inflate_generic_field): Take the `MonoMethod *' instead of the
23530         `MonoClass *' and added support for generic method.
23531         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23532         have a `field->parent->gen_params', only inflate the field if it's
23533         an open constructed type.
23534
23535 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23536
23537         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23538         exception object instead of the preconstructed ones.
23539
23540 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23541
23542         * mini.c: reverted changed to sigsegv_signal_handler commited
23543         accidentally in the previous patch.
23544
23545 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23546
23547         * mini.c:
23548         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23549         running --aot with an old assembly.
23550
23551 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23552
23553         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23554         point values.
23555
23556         * mini-sparc.c: Add support for v9 branches with prediction.
23557
23558 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23559
23560         * mini.c (mini_init): #warning is GNUC only
23561
23562         * mini-sparc.h: implement __builtin_frame_address
23563         and __builtin_return_address for Sun C compiler
23564
23565 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23566
23567         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23568
23569 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23570
23571         * basic-calls.cs: Add test for unaligned byref long argument passing.
23572
23573         * mini-ops.h: Add sparcv9 compare and branch instructions.
23574
23575         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23576         v9 instructions if we have a v9 cpu.
23577
23578         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23579         registers for global allocation.
23580
23581         * exceptions-sparc.c: Fixes.
23582         
23583 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23584
23585         * liveness.c (mono_analyze_liveness): Optimized version.
23586
23587         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23588
23589         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23590         sparc work.
23591
23592         * basic-float.cs basic-calls.cs: New regression tests.
23593
23594 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23595
23596         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23597         sigaltstack implementation.
23598
23599         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23600         
23601         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23602         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23603
23604 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23605
23606         * mini.c: Fix warnings.
23607         
23608         * mini.c (mono_resolve_patch_target): New function which contains the
23609         arch independent part of the patching process.
23610
23611         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23612         patching code to a separate function.
23613
23614 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23615
23616         * mini.c (add_signal_handler): ifdef out on Windows
23617
23618 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23619
23620         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23621         cpu-sparc.md: Add exception handling support + other fixes.
23622
23623         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23624         typed GC detection in --version.
23625
23626         * basic.cs exceptions.cs: New regression tests.
23627
23628         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23629         the arch specific code can store data during a compilation.
23630
23631         * mini-ops.h: Add OP_SETFRET.
23632
23633         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23634         function, register a separate icall for each arity, so the icalls can
23635         get a wrapper.
23636         
23637         * mini.c (mono_print_tree): Print negative offsets in a more readable
23638         form.
23639         
23640         * mini.c: Make signal handling work on sparc.
23641         
23642         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23643
23644         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23645
23646         * jit-icalls.c: Emulate truncl by aintl on solaris.
23647
23648         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23649
23650 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23651
23652         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23653
23654 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23655
23656         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23657         a MarshalByRef type, inline a method that performs the check, taking into
23658         account that the object can be a proxy. Also implemented tow new opcodes:
23659         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23660         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23661         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23662
23663 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23664
23665         * mini-ppc.c: if a relative branch displacement is too big
23666         but it points to and area reachable with an absolute branch, 
23667         avoid the thunks.
23668
23669 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23670
23671         * mini.c: optimize small copies in cpblk.
23672
23673 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23674
23675         * basic-calls.cs basic-float.cs: New regression tests.
23676
23677         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23678         negative offsets from %fp. Implement localloc. Fix local register 
23679         allocation. Fix the case when the this argument needs to be saved to
23680         the stack. Implement some missing opcodes.
23681
23682 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23683
23684         * mini.c (mini_method_compile): Reenable global regalloc in methods
23685         with exception handlers.
23686
23687         * linear-scan.c (mono_varlist_sort): Fix warning.
23688
23689         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23690
23691         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23692         regalloc costs.
23693
23694         * liveness.c: Make all variables uses in exception clauses volatile, to
23695         prevent them from being allocated to registers. Fixes #42136.
23696
23697 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23698
23699         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23700         causes regressions.
23701
23702         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23703         argument to mono_arch_regalloc_cost.
23704
23705         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
23706         precisely.
23707
23708 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
23709
23710         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
23711         Make the cost of allocating a variable to a register arch dependent.
23712
23713         * basic-calls.cs: Fix compilation of tests.
23714         
23715         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
23716         helper function to cut back on the number of #ifdefs needed.
23717
23718         * mini-ppc.c: Fix compilation.
23719
23720         * basic-calls.cs: New regression tests.
23721
23722         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
23723
23724         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
23725         of l0 since that is callee saved.
23726
23727         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
23728         to virtual calls.
23729
23730         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
23731         of delay instruction.
23732
23733         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
23734
23735         * mini.h (MonoCallInst): Add 'virtual' flag.
23736
23737         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
23738
23739 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23740
23741         * *.cs: New regression tests.
23742
23743         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
23744         work.
23745
23746         * mini.c (mono_runtime_install_handlers): Fix build.
23747
23748         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
23749         'signal_stack_size' members.
23750
23751         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
23752         alternate signal stack.
23753
23754         * exceptions-x86.c: Add stack overflow handling.
23755
23756         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
23757         functions to arch independent code.
23758
23759         * mini.c (mono_print_tree): Print more detailed info for load_membase
23760         opcodes.
23761         
23762 2004-02-23  Martin Baulig  <martin@ximian.com>
23763
23764         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
23765
23766 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23767
23768         * mini-x86.c: fixed reg allocation for div/rem.
23769
23770 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
23771
23772         * driver.c (mono_main): Report some configuratio options on --version.
23773
23774 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
23775
23776         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
23777         low in the address space. Correctly flush memory in thunks where we
23778         output native code.
23779
23780 2004-02-20  Martin Baulig  <martin@ximian.com>
23781
23782         * mini.c (mini_get_method): New static method; inflate all generic
23783         methods and methods in open generic instances.
23784         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
23785         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
23786
23787 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23788
23789         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
23790
23791         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
23792
23793 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
23794
23795         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
23796
23797         * mini-sparc.c (flushi mono_arch_output_basic_block): make
23798         it compile using Sun's compiler.
23799
23800 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23801
23802         * 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.
23803
23804         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
23805
23806 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
23807
23808         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
23809         code.
23810         * mini-ppc.c: handle calls outside of the allowed range with thunks
23811         allocated using the code manager.
23812         * tramp-ppc.c: use the code manager to hold generated native code.
23813         Fixed the magic trampoline to just patch vtable entries.
23814
23815 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
23816
23817         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
23818         independent file.
23819
23820 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
23821
23822         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
23823         PPC.
23824
23825         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
23826         if we have a working __thread implementation.
23827
23828         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
23829         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
23830
23831 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
23832
23833         * mini-x86.c: Fix compilation under gcc 2.
23834         
23835 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
23836
23837         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
23838         contains a call to the wrapped function.
23839
23840         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
23841         OP_<CALL>_IMM opcodes, and use them under X86.
23842         
23843         * mini.c (mono_jit_find_compiled_method): Fix warning.
23844
23845         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
23846
23847         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
23848
23849         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
23850         functionality to mini.c.
23851
23852         * mini.c (mono_create_jump_trampoline): New function to create a jump
23853         trampoline. Return a compiled method instead of a trampoline if it
23854         exists. Add a cache for jump trampolines.
23855
23856         * mini.c (mono_jit_find_compiled_method): New function to return a
23857         compiled method if it exists.
23858
23859         * mini-x86.c: Call mono_create_jump_trampoline instead of 
23860         mono_arch_create_jit_trampoline.
23861
23862         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
23863         a jump trampoline. Fixes #52092.
23864         
23865 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
23866
23867         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
23868         which is not up-to-date. Add check_corlib_version () instead.
23869
23870         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
23871         have to call it.
23872         
23873         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
23874         since newer valgrind versions do not need it.
23875
23876         * mini.c (mono_jit_compile_method_with_opt): New helper function to
23877         compile a method with a given set of optimizations.
23878
23879         * mini.c: Compile icall wrappers on-demand instead of at startup.
23880
23881         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
23882         wrapper for an icall.
23883
23884 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
23885
23886         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
23887         #54063.
23888
23889         * iltests.il: Add test for non-empty stack before switch instruction.
23890
23891 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
23892
23893         * mini.c: Add support for new stringbuilder marshalling conventions.
23894
23895         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
23896
23897 2004-02-01  Martin Baulig  <martin@ximian.com>
23898
23899         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
23900         in `ginst->mtype_argv'.
23901
23902 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
23903
23904         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
23905         facilitate grepping.
23906
23907 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
23908
23909         * mini.c: fixed buglet in initobj generic implementation for references.
23910
23911 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
23912
23913         * Makefile.am: make the version script conditional.
23914         * jit-icalls.c: handle missing truncl().
23915
23916 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
23917
23918         * exceptions.cs: Add more tests for double->int conversion.
23919
23920         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
23921         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
23922
23923 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
23924
23925         * driver.c: make --verbose --version emit an error
23926         if the loaded corlib doesn't match the runtime version.
23927
23928 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
23929
23930         * mini-ppc.h: export ppc_patch().
23931         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
23932         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
23933         on par or better than on MacOSX.
23934
23935 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
23936
23937         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
23938         mono_lookup_pinvoke_call.
23939
23940         * mini-x86.c: Under windows, the default pinvoke calling convention is
23941         stdcall. Fixes #52834.
23942
23943         * mini.c (optimize_branches): Add an upper bound to the number of
23944         iterations to prevent infinite loops on strange loops. Fixes #53003.
23945
23946 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23947
23948         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
23949         and ISINST. Fixes #52093.
23950
23951         * objects.cs (test_0_vector_array_cast): New tests.
23952         
23953 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
23954
23955         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
23956         checking in Array.Set ().
23957
23958         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
23959         #52590.
23960
23961         * object.cs (test_0_multi_array_cast): New regression test.
23962
23963 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
23964
23965         * exceptions-ppc.c: fix build on Linux/PPC.
23966
23967 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
23968
23969         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
23970         running under valgrind.
23971         (x86_magic_trampoline): Fix build bustage.
23972
23973         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
23974         negative values as well. This is needed for the encoding of the line number
23975         info, since sometimes the line numbers are not in increasing order.
23976
23977 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
23978
23979         * cpu-pentium.md (localloc): Increase the size of the localloc 
23980         instruction since it is a loop under Win32.
23981
23982         * debug-mini.c (record_line_number): Get rid of unneccesary memory
23983         allocation.
23984
23985 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
23986
23987         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
23988         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
23989         Max Horn (max@quendi.de). Fix file names in comments.
23990
23991 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
23992
23993         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
23994         avoid stack overflow.
23995         (replace_usage): Avoid uninitialized variable warnings.
23996
23997         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
23998         and taking the address of valuetype variables.
23999
24000 2004-01-03  Patrik Torstensson
24001
24002         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24003         for other purposes than FP later on.
24004
24005 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24006
24007         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24008         of tail calls.
24009
24010 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24011
24012         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24013
24014 2003-12-30  Patrik Torstensson <p@rxc.se>
24015
24016         * mini-x86.h: Decreased number of availiable fp regs.
24017         Solves corner cases with FP spilling.
24018
24019 2003-12-23  Patrik Torstensson <p@rxc.se>
24020
24021         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24022         for floating point stack tracking / spilling on x86. 
24023         Fixes bug #49012.
24024         
24025         * basic-float.cs: added float mul overflow test.
24026
24027 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24028
24029         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24030
24031 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24032
24033         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24034         supports for cond branches that overflow the immediate
24035         overflow offset. mcs can compile simple programs.
24036
24037 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24038
24039         * exceptions-ppc.c: exception handling support wip:
24040         finally handlers get run on exception.
24041
24042 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24043
24044         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24045         profiling.
24046
24047 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24048
24049         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24050         initial support for stack walking and unwinding.
24051
24052 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24053
24054         * driver.c (mono_main): Make corlib-out-of-sync message more 
24055         descriptive. Also remove verify_corlib call.
24056
24057 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24058
24059         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24060         not overlap with other call's arguments, too.
24061
24062 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24063
24064         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24065         move to arch-specific code the choice of arch-specific
24066         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24067         * mini.c: ensure emulation calls will not interleave
24068         with other calls.
24069
24070 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24071
24072         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24073         the magic trampoline stack frame is dropped before executing
24074         the new method.
24075
24076 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24077
24078         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24079         and integer to fp conversions. Added support for overflowing
24080         arguments on the stack. Reserve a couple more registers as temps.
24081         Added support for aot compilation (as output still needs to be
24082         tweaked, though).
24083
24084 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24085
24086         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24087         Don't overwrite return register in some corner cases.
24088
24089 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24090
24091         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24092         static constructors when AOT compiling.
24093
24094         * driver.c (mono_main): Call mono_check_corlib_version.
24095
24096 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24097
24098         * cpu-g4.md, basic.cs: fixed div target register.
24099
24100 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24101
24102         * mini-ppc.c, basic.cs: shl_imm fix with test.
24103
24104 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24105
24106         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24107         structures by value. Misc fixes.
24108         * objects.cs: more tests.
24109
24110 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24111
24112         * mini-ppc.c: lconv.ovf.i implemented.
24113
24114 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24115
24116         * mini.c:
24117         (mini_init): don't error out if someone already called g_thread_init.
24118
24119 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24120
24121         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24122         to be any type per the spec. Fix abnormal memory usage when
24123         the same object is repeatedly thrown.
24124
24125 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24126
24127         * mini.c: check for overruns in IL code.
24128
24129 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24130
24131         * TODO: Add/remove some todo entries.
24132
24133 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24134
24135         * driver.c (mono_main): Call mono_verify_corlib.
24136
24137 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24138
24139         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24140         This has been moved to mini.c
24141         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24142         type being casted is marshalbyref it could be a proxy, so instead of
24143         emitting the type check code, emit a call to a runtime method that will
24144         perform the check by calling CanCastTo if needed.
24145
24146 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24147
24148         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24149         methods with large stack frames under Win32.
24150
24151 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24152
24153         * Makefile.am: Distribute regression tests.
24154
24155         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24156         at the end instead of inserting each variable into the sorted list.
24157
24158         * linear-scan.c (mono_varlist_sort): New helper function.
24159         
24160 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24161
24162         * mini.c: ensure arguments and locals are within bounds.
24163
24164 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24165
24166         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24167         related fixes.
24168
24169 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24170
24171         * mini.c (mono_cprop_copy_values): Fix crash.
24172
24173         * aot.c: Set verbosity back to 0.
24174         
24175 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24176
24177         * regalloc.c: complete memory leak fix by Laurent Morichetti
24178         (l_m@pacbell.net).
24179
24180 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24181
24182         * driver.c (main_thread_handler): Revert the previous patch.
24183
24184         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24185         under valgrind.
24186
24187         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24188         memory from the memory pool.
24189
24190         * driver.c (main_thread_handler): Turn on all optimizations when
24191         --aot is used.
24192
24193         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24194         an array for better performance.
24195
24196         * regalloc.c (mono_regstate_assign): Fix memory leak.
24197
24198         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24199         serialize the debug info.
24200
24201         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24202         debug info from the serialized representation.
24203
24204         * aot.c: Save debug info into the generated file and load it when 
24205         loading a method.
24206
24207         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24208
24209 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24210
24211         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24212         More FP-related fixes.
24213
24214 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24215
24216         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24217         and register allocation buglet. Hello world now runs.
24218
24219 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24220
24221         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24222         * tramp-ppc.c: fixed class init trampoline.
24223         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24224
24225 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24226
24227         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24228         mini.c: more ppc changes/fixes.
24229
24230 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24231
24232         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24233         Also optimize the case when the arguments are the same in the caller 
24234         and in the callee.
24235
24236         * iltests.il: Add tests for tail calls with valuetype arguments.
24237
24238 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24239
24240         * mini-ppc.c: fixes for struct return type.
24241
24242 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24243
24244         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24245         mono_spillvar_offset() to arch-specific code.
24246
24247 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24248
24249         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24250
24251 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24252
24253         * exceptions-x86.c: Fix stack space leaks.
24254         
24255         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24256         registers from the lmf if the method has save_lmf set.
24257
24258 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24259
24260         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24261         of icall wrappers into InvokeInDomain, since these are now per-domain.
24262
24263 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24264
24265         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24266         make some opcode emulation and intrinsic ops enabled/disabled 
24267         according to the architecture. More fixes.
24268
24269 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24270
24271         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24272
24273 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24274
24275         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24276         arch-specific handling for 'this' and struct return type to
24277         arch-specific code.
24278
24279 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24280
24281         * aot.c: prevent divide by zero error when reporting (it happened with
24282         Accessibility.dll).
24283
24284 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24285
24286         * mini.h (inst_switch): Remove unused macro.
24287
24288 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24289
24290         * aot.c:
24291         (load_aot_module): free 'info->methods' and 'info' properly. No more
24292         "free(): invalid pointer blah" messages when you have an old aot
24293         compiled assembly.
24294
24295 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24296
24297         * jit-icalls.c, mini.c: Added support for context static fields.
24298
24299 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24300
24301         * mini.c (mono_method_blittable): Methods which set LastError are not 
24302         blittable either. Fixes #51108.
24303         
24304 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24305
24306         * mini.c: flush icache.
24307         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24308
24309 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24310
24311         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24312
24313 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24314
24315         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24316         safe on IA32.
24317
24318         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24319         vararg calls.
24320
24321         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24322
24323 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24324
24325         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24326         instruction when the result is discarded.
24327
24328         * iltests.il (test_0_div_regalloc): New regression test.
24329
24330         * arrays.cs: Fix compilation error.
24331
24332 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24333
24334         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24335         float rules to inssel-x86.brg: sane architectures with FP registers
24336         don't need to implement these rules.
24337
24338 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24339
24340         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24341
24342 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24343
24344         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24345         implementation of 32 bit systems.
24346
24347 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24348
24349         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24350         (Jeroen Zwartepoorte).
24351
24352 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24353
24354         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24355         the caller and the callee matches.
24356         
24357         * mini.c (mono_method_to_ir): Add comment.
24358
24359         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24360         signbit is missing on some platforms.
24361
24362 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24363
24364         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24365
24366         * mini.c (setup_jit_tls_data): Call the new function.
24367         
24368         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24369
24370         * mini-x86.c: Add experimental support for fast access to the lmf
24371         structure under NPTL/Linux 2.6.x.
24372
24373 2003-11-06  Martin Baulig  <martin@ximian.com>
24374
24375         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24376         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24377         the debugger.
24378
24379 2003-11-02  Martin Baulig  <martin@ximian.com>
24380
24381         * mini.c (inflate_generic_field): New static method.
24382         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24383         generic instance and the field is declared in a generic type, call
24384         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24385
24386 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24387
24388         * mini.h mini.c (mono_method_same_domain): New function to return
24389         whenever the caller and the callee are in the same domain.
24390
24391         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24392
24393 2003-10-30  Martin Baulig  <martin@ximian.com>
24394
24395         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24396         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24397         method parameters.
24398         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24399         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24400
24401 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24402
24403         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24404         propagation.
24405
24406         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24407         object here, so it is in the correct appdomain etc.
24408
24409 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24410
24411         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24412         already done.
24413         (mono_method_to_ir): Avoid freeing the type created returned from
24414         mono_type_create_from_typespec, since it is put into an internal cache
24415         by the function. Fixes pointer.exe.
24416
24417         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24418         trampolines for icalls and pinvokes as well. Fixes #33569.
24419
24420 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24421
24422         * mini.c: Update after appdomain changes.
24423
24424         * mini.c (mono_jit_compile_method_inner): Allways compile native
24425         method wrappers in the root domain, since there can only be one
24426         instance of them, whose address is stored in method->info.
24427
24428 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24429
24430         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24431         environment variable. Instead detect automatically whenever running
24432         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24433         valgrind.h.
24434
24435 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24436
24437         * trace.c, trace.h: New files that implement the new trace option
24438         parsing. 
24439
24440         * driver.c: Document new --trace options.
24441
24442         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24443         mini-x86.c: Apply:
24444
24445         -       if (mono_jit_trace_calls)
24446         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24447
24448         * mini.h: prototypes.
24449         
24450 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24451
24452         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24453
24454         * mini.c inssel.brg: Implement typedefbyref opcodes.
24455
24456         * mini.c (mono_jit_compile_method): Remove unused local variable.
24457
24458         * mini.c (mono_jit_compile_method_inner): Ditto.
24459         
24460 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24461
24462         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24463         
24464         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24465
24466 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24467
24468         * mini.c (mono_no_aot): Remove unused global variable.
24469
24470         * mini.c: Thread safety fixes.
24471
24472 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24473
24474         * mini.c (mono_create_class_init_trampoline): Add a lock around
24475         class_init_hash_addr.
24476
24477         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24478         #30073.
24479
24480         * mini.c: Decompose the NEWARR instruction before decomposing its
24481         arguments. Fixes #30073.
24482
24483 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24484
24485         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24486         convention.
24487
24488 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24489
24490         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24491
24492         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24493
24494         * driver.c: Add support for compiling icall wrappers to --compile.
24495
24496 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24497
24498         * inssel.brg: The empty value in class->interface_offsets is -1, not
24499         0. Fixes #49287.
24500
24501 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24502
24503         * objects.cs: New test for 'is' operator on an array of interfaces.
24504
24505 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24506
24507         * tramp-ppc.c: update trampoline code to support jumps
24508         and class initialization.
24509
24510 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24511
24512         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24513
24514         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24515
24516         * inssel.brg (OP_UNBOX): Remove unused rule.
24517
24518         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24519         region instead of one for each method. Fixes #47813.
24520
24521 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24522
24523         * exceptions.cs (test_0_nested_finally): New regression test for
24524         nested exception handlers.
24525
24526         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24527
24528         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24529
24530         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24531         inlining.
24532
24533         * mini.c (mono_method_check_inlining): Make the inlining limit 
24534         configurable by an environment variable.
24535         
24536         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24537
24538         * mini.h: Bump AOT file version.
24539
24540         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24541         token, store the image along with the token, since the token might not 
24542         refer to the same image as the method containing the relocation, 
24543         because of inlining.
24544
24545 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24546
24547         * mini.c (mono_precompile_assemblies): New function to compile
24548         all methods in all loaded assemblies.
24549
24550         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24551
24552         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24553         iassign and fassign to int*, since they can contain large negative
24554         values if the register is spilled. Also added some comments. Fixes
24555         #45817.
24556
24557         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24558         under Win32. Fixes #42964.
24559
24560 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24561
24562         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24563
24564         * aot.c: Added support for AOT compiling methods which contain calls
24565         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24566         handled.
24567         
24568         * driver.c (compile_all_methods): Run the compilation in a thread
24569         managed by mono. Fixes #44023.
24570
24571         * mini.c (mono_codegen): Print full method name in verbose output.
24572
24573         * mini-x86.c (mono_arch_patch_code): Fix warning.
24574         
24575         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24576         jumps, since the method we are jumping to might be domain-specific.
24577
24578         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24579
24580 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24581
24582         * inssel.brg: string chars are unsigned.
24583
24584 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24585
24586         * TODO: New todo item.
24587
24588         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24589         which calls mono_runtime_class_init and patches the call site to
24590         avoid further calls.
24591         (mono_arch_create_class_init_trampoline): New arch specific function 
24592         to create a class init trampoline.
24593         (create_trampoline_code): Generalized so it can create
24594         class init trampolines as well.
24595
24596         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24597         (mono_create_class_init_trampoline): New function to create and cache
24598         class init trampolines.
24599         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24600         vtable given the address of a class init trampoline. Used by the
24601         patching process.
24602         (mono_codegen): Generate a call to a trampoline instead of
24603         mono_runtime_class_init in LDSFLD[A].
24604         (mono_codegen): Add relocations for the new trampoline.
24605         
24606         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24607         MONO_PATCH_INFO_CLASS_INIT.
24608
24609         * mini.h: Bump AOT version number.
24610
24611         * aot.c: Create a copy of the loaded code instead of using the original
24612         so methods which call each other will be close in memory, improving
24613         cache behaviour.
24614         
24615         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24616         patch since it breaks the regression tests.
24617         
24618         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24619         for the register saving instruction sequence since the 
24620         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24621
24622 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24623
24624         * TODO: Fix todo item && remove another.
24625
24626 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24627
24628         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24629         previous checkin.
24630
24631         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24632         function of the module.
24633
24634         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24635         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24636         --no-aot command line option.
24637
24638 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24639
24640         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24641         by Bernie Solomon (bernard@ugsolutions.com).
24642
24643         * inssel.brg: Refactor the interface offset table related code into
24644         its separate functions and add support for the AOT case.
24645
24646 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24647
24648         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24649         
24650         * aot.c: Added mono_aot_verbose variable and made all debugging
24651         output depend on the value of this variable.
24652
24653         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24654         method_label and info_label.
24655
24656         * mini.h mini-x86.c aot.c: Added a new relocation type 
24657         MONO_PATCH_INFO_IID for klass->interface_id.
24658
24659         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24660         the MonoJitInfo structure.
24661
24662         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24663         a non-root appdomain in shared mode.
24664
24665 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24666
24667         * aot.c: make aot loader less verbose. Remove free of unused variable.
24668
24669 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24670
24671         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24672
24673         * .cvsignore: Added *.dll.
24674
24675         * mini.c (mono_print_tree_nl): New function callable while debugging.
24676
24677         * mini.c (mono_print_code): Export this.
24678
24679         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24680         patched code.
24681
24682 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24683
24684         * mini.h (MonoCompile): Added 'jit_info' field.
24685
24686         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24687         the cfg structure, since it is needed by the AOT compiler.
24688
24689         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24690
24691         * aot.c: A major rewrite. Changes include:
24692         - save exception tables for methods which have them.
24693         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24694         to g_module_symbol.
24695         - reworked the file format so it is now much smaller and needs
24696         fewer relocation entries.
24697         
24698 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24699
24700         * aot.c (load_aot_module): Fix build bustage on platforms without
24701         Boehm GC.
24702
24703 2003-09-04  Martin Baulig  <martin@ximian.com>
24704
24705         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
24706
24707 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24708
24709         * TODO: Some new optimization ideas.
24710
24711         * aot.c: Move AOT module loading logic here from mono_assembly_open.
24712
24713         * aot.c: Save the optimization flags used to compile the code into
24714         the AOT module.
24715
24716         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
24717         support emitting domain specific code.
24718         
24719         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
24720         no longer domain neutral. It can be made domain neutral by compiling 
24721         with --optimize=shared.
24722
24723         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
24724         between appdomains.
24725
24726         * driver.c mini.h mini.c: New --no-aot debugging option which disables
24727         loading of AOT code.
24728
24729         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
24730         
24731         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
24732         if there is no domain neutrality information.
24733
24734 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
24735
24736         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
24737         format version into the generated library.
24738
24739         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
24740         callee method into the caller since one of them could be shared.
24741
24742         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
24743         system exceptions from AOT code now works.
24744
24745         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
24746         method if it is domain neutral and the callee is not.
24747
24748         * graph.c (cfg_emit_one_loop_level): Fix warning.
24749
24750 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
24751
24752         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
24753         last checkin.
24754
24755 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
24756
24757         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
24758         is needed  by code which is executed before mono_runtime_init ().
24759         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
24760         
24761         * mini.c (mono_thread_abort): Fix warning.
24762         (mono_jit_compile_method): Call static constructor in the AOT case too.
24763
24764         * aot.c (mono_compile_assembly): Fix warning.
24765
24766 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24767
24768         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
24769
24770 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
24771
24772         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
24773
24774         * cpu-pentium.md: Fix the length of call opcodes so they include the
24775         ESP restoring instruction. Fixes #47968.
24776
24777 2003-08-28  Martin Baulig  <martin@ximian.com>
24778
24779         * mini-x86.c (mono_arch_call_opcode): Added support for
24780         MONO_TYPE_GENERICINST.
24781
24782         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
24783
24784 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
24785
24786         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
24787         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
24788
24789         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
24790         metadata_section.
24791
24792 2003-08-26  Martin Baulig  <martin@ximian.com>
24793
24794         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
24795         when reporting an error, set this to the actual error location.
24796         (mono_method_to_ir): Report the correct error location if
24797         get_basic_blocks() returned an error.
24798
24799 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
24800
24801         * mini.c (mono_type_blittable): OBJECT is not blittable.
24802         (mono_method_blittable): Methods which have marshalling descriptors
24803         are not blittable either. Fixes #47842.
24804
24805 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
24806
24807         * driver.c mini.c: Use an environment variable instead of a global 
24808         variable. Also fix the build.
24809
24810         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
24811         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
24812         reporting this. 
24813
24814         * driver.c mini.c: Added --with-valgrind option to turn off some
24815         code which prevents mono from running under valgrind.
24816
24817         * mini.c (mono_emit_call_args): Fixed warning.
24818
24819         * mini.c (mono_emulate_opcode): Fixed warning.
24820
24821 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24822
24823         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
24824         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
24825         regalloc.c, regalloc.h: specify available registers in arch-specific
24826         code and support floats in the regallocator (patch by Laurent Morichetti 
24827         <l_m@pacbell.net>)
24828
24829 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24830
24831         * mini.c: mono_thread_current() can be called only after
24832         mono_runtime_init(): rearrange code to not call it early on.
24833
24834 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24835
24836         * mini.c: allocate jump tables in the code mempools.
24837
24838 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24839
24840         * mini.c, mini.h: make sure per-thread data allocated by the jit is
24841         freed.
24842
24843 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
24844
24845         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
24846         12 to 16.  This fixes bug #47453.
24847
24848
24849 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
24850
24851         * mini-ppc.c: fixed indexed load and unsigned compares.
24852
24853 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
24854
24855         * mini.c: reenabled installation of handler for
24856           thread abort signal.
24857
24858 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24859
24860         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
24861         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
24862         until it's fixed and actually useful.
24863
24864 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24865
24866         * inssel-long32.brg: couple more opcodes implemented.
24867
24868 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24869         
24870         * mini-sparc.c: Even more opcodes implemeted.
24871
24872 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
24873
24874         * mini-sparc.c: More opcodes implemented.
24875
24876 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
24877
24878         * mini-sparc.c: More opcodes implemented.
24879
24880 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24881
24882         * inssel-sparc.brg: Add some needed rules.  Direct
24883         copy from PPC.
24884         * Makefile.am: Use inssel-sparc.brg
24885         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
24886         an assert happy for now.
24887
24888 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
24889
24890         * mini-sparc.c: Fixed compile errors.
24891         * exceptions-sparc.c: Same.  We now produce a mono binary 
24892         on sparc-linux.  Yea.
24893
24894 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
24895
24896         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
24897         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
24898         They compile, but do not work.
24899
24900 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24901
24902         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
24903         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
24904         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
24905         (ct@gentoo.org).
24906
24907 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24908
24909         * mini.c: more opcodes implemented and better support for generics.
24910
24911 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
24912
24913         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
24914         * mini.c, mini.h: first cut at generics support: some new instructions 
24915         added and changed the behaviour of some of the existing ones.
24916
24917 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
24918
24919         * mini.c: Removed definition of metadata_shared mutex here.
24920
24921 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
24922
24923         * mini-x86.c: make vararg calls work for instance methods.
24924
24925 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
24926
24927         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
24928         returns the arguments in a separte list, now.
24929
24930 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24931
24932         * aot.c, mini.c: updates for array type representation changes.
24933
24934 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
24935
24936         * mini.c: register function to perform jit shutdown.
24937
24938 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24939
24940         * mini.c: use a faster allocator if possible.
24941
24942 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
24943
24944         * aot.c: some cleanups and portability changes.
24945
24946 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24947
24948         * mini.c: use faster allocation for CEE_BOX if possible.
24949
24950 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
24951
24952         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
24953         Moved inlined mempcy code to its own function so that is can be
24954         reused. Added an inline memset function as well (optimized initobj).
24955         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
24956
24957 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24958
24959         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
24960
24961 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
24962
24963         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
24964         arch code can setup the cpu for CLR execution, if needed.
24965         We use it on x86 to set the precision of FP operations.
24966
24967 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
24968
24969         * mini.c: disable some optimizations if we can guess they'll cost too
24970         much for a given method.
24971
24972 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
24973
24974         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
24975         
24976 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
24977         * mini.h mini.c mini-x86.c: Added instruction level coverage 
24978         info collection support.
24979
24980 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24981
24982         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
24983         is now implemented in the profiling API. Get rid of a couple of
24984         unnecessary global variables.
24985
24986 2003-06-15  Nick Drochak <ndrochak@gol.com>
24987
24988         * basic-long.cs: tests for negative values for bigmul, and unsigned.
24989         * cpu-g4.md: add op_bigmul and op_bigmul_un
24990         * cpu_pentium.md: add op_bigmul_un
24991         * inssel-long32.brg: add rule for unsigned bigmul
24992         * mini-ops.h: define OP_BIGMUL_UN
24993         * mini-x86.c: THE BUG: handle (un)signed properly
24994         * mini.c: choose unsigned opcode if needed.
24995         This set of patches fixes bug #44291
24996
24997 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
24998
24999         * mini.c (optimize_branches): improved to handle all kinds of
25000         conditional branches.
25001
25002 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25003
25004         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25005         don't raise exceptions.
25006
25007 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25008
25009         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25010         to arch-specific files.
25011
25012 2003-06-09  Martin Baulig  <martin@ximian.com>
25013
25014         * Makefile.am (libs): Added $(LIBGC_LIBS).
25015
25016 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25017
25018         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25019         and OP_ATAN (fixes bug#44293).
25020
25021 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25022
25023         * Makefile.am, mini-x86.c: rename cpu description array to
25024         pentium_desc, since some compilers define the 'pentium' preprocessor
25025         symbol.
25026
25027 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25028
25029         * mini.c (mini_select_instructions): add explicit branch if the
25030         following block is not the false target of a conditional branch -
25031         we need this with any optimization that reorder or remove bblocks
25032
25033         * mini.c (optimize_branches): bug fixes
25034
25035 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25036
25037         * mini.c (mono_method_to_ir): inline static readonly fields
25038
25039         * ssa.c (fold_tree): start cfold support for long (very simple
25040         cases only)
25041
25042         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25043
25044 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25045
25046         * inssel.brg: fixed memcpy (bug #44219).
25047
25048 2003-06-05  Dick Porter  <dick@ximian.com>
25049
25050         * driver.c: Set the glib log levels to not abort if g_message
25051         recurses.
25052
25053         g_set_prgname() has to happen before mini_init() so that the
25054         process handle gets the info.
25055         
25056 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25057
25058         * driver.c: add intrins to the default optimizations to get wider
25059         exposure.
25060
25061 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25062
25063         * mini.h: some large basic blocks will overflow a 16-bit
25064         integers for symbolic registers.
25065
25066 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25067
25068         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25069         (mono_arch_output_basic_block): fix bug 43499 
25070
25071 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25072
25073         * mini.c: kill duplicated definition of mono_debug_format.
25074
25075 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25076
25077         * mini-x86.c, arrays.cs: fixed register allocation bug.
25078
25079 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25080
25081         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25082
25083         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25084
25085 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25086
25087         * mini.c:
25088         (print_method_from_ip): also print source location information if
25089         available.
25090
25091 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25092
25093         * mini.c (mono_find_block_region): bug fix in region code
25094         (mini_method_compile): enable removing unreachable code again, but
25095         only in methods without exception clauses.
25096
25097 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25098
25099         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25100         Implemented arglist opcode and handling of TypedReference type.
25101         Fixed x86 call convention when a structure is returned.
25102         Minimal support for calling static vararg methods.
25103
25104 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25105
25106         * mini.c (mini_method_compile):  always remove unreachable code,
25107         because the code in them may be inconsistent  (access to dead
25108         variables for example).
25109
25110 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25111
25112         * driver.c, debug-mini.c: warning fixes.
25113
25114 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25115
25116         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25117
25118 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25119
25120         * mini.c: thread-static fields are registered in mono_class_vtable(),
25121         so ensure the function is called before checking for them.
25122
25123 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25124
25125         * mini.c (optimize_branches): fix for bug 43586
25126
25127         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25128         overflow (fixes Bug #43639)
25129
25130 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25131
25132         * mini.c, objects.cs: allow the use of stobj for primitive types.
25133
25134 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25135
25136         * mini.c: be less strict about argument checking until we support
25137         running the verifier.
25138
25139 2003-05-27  Nick Drochak <ndrochak@gol.com>
25140
25141         * basic-long.cs: tests for (ulong)int * (ulong)int also
25142         * mini.c: use the same trick for (ulong)int * (ulong)int
25143
25144 2003-05-27  Nick Drochak <ndrochak@gol.com>
25145
25146         * basic-long.cs: add regression test for (long)int * (long)int
25147         * cpu-pentium.md: add op_bigmul specification
25148         * inssel-long32.brg: add OP_BIGMUL rule
25149         * mini-ops.h: add OP_BIGMUL
25150         * mini-x86.c: register allocator: handle case where src1 needs to be
25151         in EAX.
25152         * mini.c: substitute special BIGMUL opcode in the tree for 
25153         (long)int * (long)int
25154
25155 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25156
25157         * jit-icalls.c: call the type ctor on field access if needed.
25158
25159 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25160
25161         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25162         to a method (including results of ldelema, bug#43207).
25163
25164 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25165
25166         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25167         colors to show exception handler blocks.
25168
25169         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25170         (fix for pinvoke7.cs).
25171
25172 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25173
25174         * mini.h, mini.c: ensure correct initialization order for types that
25175         require it. Prepare for lazy compilation of jit icall wrappers.
25176         Provide a name for opcode emulation to reduce unneeded mallocing.
25177
25178 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25179
25180         * mini-x86.c: better register restoring code and profiling
25181         support for tail calls.
25182
25183 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25184
25185         * mini.h, driver.c: prepare for leaf methods optimization.
25186
25187 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25188
25189         * mini.c: get targets of branches before converting a method.
25190
25191 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25192
25193         * mini.c (optimize_branches): added some experimental code (disbaled) 
25194
25195 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25196
25197         * mini.c (optimize_branches): fix branch to branch optimization 
25198
25199         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25200
25201         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25202
25203         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25204
25205         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25206         if needed.
25207
25208 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25209
25210         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25211         enable use of interface variables again.
25212
25213         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25214         I1 to registers because there is no simply way to sign extend 8bit
25215         quantities in caller saved registers on x86.
25216
25217         * inssel-float.brg: set costs of some rules to 2 so
25218         that monobure always select the arch. specific ones if supplied,
25219         regardless of the order we pass the files to monoburg.
25220
25221 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25222
25223         * mini.c, mini-x86.c: since the magic trampoline for jumps
25224         can't patch the code directly, we do it as soon as the
25225         method gets compiled.
25226
25227 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25228
25229         * mini-x86.c, mini.h: introduce a new patching method
25230         to support CEE_JMP and tail calls.
25231         * mini.c: obey tail.call. Don't precompile methods target
25232         of CEE_JMP.
25233         * tramp-x86.c: new trampoline code to handle methods
25234         reached through a jump.
25235
25236 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25237
25238         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25239         bit values to registers
25240
25241 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25242
25243         * mini.c (mono_compile_get_interface_var): share interface
25244         variables if possible.
25245
25246 2003-05-16  Martin Baulig  <martin@ximian.com>
25247
25248         * debug-mini.c (mono_init_debugger): New function to initialize
25249         the debugger.  This is not in the debugger since it needs to
25250         access some of mini's internals.
25251
25252 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25253
25254         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25255
25256 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25257
25258         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25259         for value type handling.
25260
25261 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25262
25263         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25264         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25265
25266 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25267
25268         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25269           the constructor through a proxy.
25270
25271 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25272
25273         * jit-icalls.c, inssel.brg: fixes to array element address
25274         calculations.
25275
25276 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25277
25278         * mini-x86.c (is_regsize_var): allocate pointer to registers
25279
25280 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25281
25282         * driver.c: fixed typo, added intrins to the set of optimizations
25283         tested with regressions.
25284
25285 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25286
25287         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25288         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25289         test case.
25290
25291 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25292
25293         * inssel.brg: remove some common pop instructions without side effects
25294
25295 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25296
25297         * inssel-x86.brg: fixed thinko in int to double conversions.
25298
25299 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25300
25301         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25302
25303 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25304
25305         * inssel-long32.brg: two more missing instructions.
25306
25307 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25308
25309         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25310         if not already set.
25311
25312 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25313
25314         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25315         correctly.
25316
25317         * basic-float.cs: Added tests for negative zero.
25318
25319 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25320
25321         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25322         a couple of missing operations for long casts, with test cases.
25323
25324 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25325
25326         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25327
25328 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25329
25330         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25331         code size estimation.
25332
25333 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25334
25335         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25336         abstract methods (fix bug 42542)
25337
25338         * aot.c: add ability to handle array types
25339         
25340 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25341
25342         * mini.c: Call the _specific versions of the object allocation
25343         functions if possible.
25344
25345 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25346
25347         * driver.c: call setlocale ().
25348
25349 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25350
25351         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25352         windows build.
25353
25354 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25355
25356         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25357
25358         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25359         wrappers (fix bug 42122)
25360
25361 2003-05-04  Martin Baulig  <martin@ximian.com>
25362
25363         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25364
25365         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25366         s/mini_set_defaults/mono_set_defaults/g.
25367
25368 2003-05-04  Martin Baulig  <martin@ximian.com>
25369
25370         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25371
25372 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25373
25374         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25375         (reported by Don Roberts).
25376
25377 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25378
25379         * mini.c: temporarily work around two bugs for this release.
25380
25381 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25382
25383         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25384         that contains -export-dynamic and it makes using the ld script
25385         useless.
25386         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25387
25388 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25389
25390         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25391         specific cpu.
25392
25393 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25394
25395         * mini.c: make sure leave calls all the needed finally blocks,
25396         even when the target jumps out of multiple exception clauses.
25397
25398 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25399
25400         * ldscript, Makefile.am: add linker script to reduce the number of
25401         exported symbols (should also fix the issues with libwine defining
25402         some of the same symbols in io-layer).
25403
25404 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25405
25406         * driver.c (mini_main): Avoid assertion when no file name is given on 
25407         the command line.
25408
25409 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25410
25411         * driver.c: added --version/-V command line option.
25412         Added the inline optimization in the regression tests.
25413
25414 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25415
25416         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25417         to the type in the method signature (fixes bug#42134).
25418
25419 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25420
25421         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25422
25423 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25424
25425         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25426
25427 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25428
25429         * driver.c: fixed bug #42100.
25430
25431 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25432
25433         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25434
25435 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25436
25437         * mini.c: moved most of the code required to do inlining to its own
25438         function so it can be reused. Inline also ctors if appropriate.
25439
25440 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25441
25442         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25443         the runtime can call mono API functions.
25444
25445 2003-04-27  Martin Baulig  <martin@ximian.com>
25446
25447         * debug-mini.c (mono_debug_init_method): Added
25448         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25449         send a notification to the debugger.
25450
25451         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25452         running in the Mono Debugger, just pass the breakpoint number to
25453         mono_debug_init_method().
25454
25455         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25456
25457 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25458
25459         * mini.c: allow some more unsafe compares.
25460
25461 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25462
25463         * mini-x86.c, Makefile.am: make distcheck works (partially from
25464         a patch by Richard Lee <r.h.lee@attbi.com>).
25465         * regset.c, regset.h: removed, they are unused.
25466
25467 2003-04-25  Dick Porter  <dick@ximian.com>
25468
25469         * driver.c: Usage reports the name as 'mono' not 'mini'
25470         * exceptions-x86.c: Build and run on freebsd
25471
25472 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25473
25474         * Makefile.am: install the program with the 'mono' name and
25475         the library as libmono instead of mini and libmini.
25476
25477 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25478
25479         * driver.c: provide the APIs for the embedding interface of the old jit.
25480
25481 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25482
25483         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25484
25485 2003-04-23  Martin Baulig  <martin@ximian.com>
25486
25487         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25488
25489         * driver.c: Added `--debug' command line argument to enable
25490         debugging support.
25491
25492 2003-04-23  Martin Baulig  <martin@ximian.com>
25493
25494         * debug.[ch]: Removed.  The code is now in
25495         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25496
25497         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25498         last six months.
25499
25500 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25501
25502         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25503
25504 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25505
25506         * mini.c:
25507         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25508         mono_domain_finalize.
25509         (mini_method_compile): use mono_method_profile* if the the option is
25510         enabled.
25511
25512 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25513
25514         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25515         methods with their wrapper.
25516
25517         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25518         methods with their wrapper.
25519
25520         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25521         their wrapper.
25522
25523         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25524         wrapper.
25525
25526         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25527         methods.
25528
25529 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25530
25531         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25532
25533 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25534
25535         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25536         of the mempool. This is slightly faster and uses less memory
25537
25538 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25539
25540         * mini.c: avoid O(n) allocation for variables.
25541
25542 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25543
25544         * mini.c: handle items on the stack after inlining methods.
25545
25546 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25547
25548         * mini.c: make the method->opcode optimization dependent
25549         on MONO_OPT_INSTRINS and do it lazily.
25550
25551 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25552
25553         * driver.c: print overall results at the end of regression run.
25554
25555 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25556
25557         * inssel.brg: don't overwrite symbolic registers.
25558
25559 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25560
25561         * inssel-x86.brg: fix conversion from long to float.
25562
25563 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25564
25565         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25566
25567 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25568
25569         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25570
25571         * driver.c: Added --print-vtable option as in the old JIT.
25572
25573 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25574
25575         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25576
25577 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25578
25579         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25580
25581 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25582
25583         * mini.c regalloc.c regalloc.h: Fix memory leak.
25584
25585 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25586
25587         * aot.c (mono_aot_get_method): register all used strings
25588
25589 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25590
25591         * mini.c: always intern strings references with ldstr at compile time.
25592
25593 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25594
25595         * Makefile.am: add BUILT_SOURCES.
25596
25597 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25598
25599         * driver.c: give a better error message when the assembly to execute
25600         doesn't have an entry point.
25601
25602 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25603
25604         * Makefile.am: added hack for automake
25605
25606         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25607         correct sematics.
25608
25609         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25610
25611 22003-04-07  Martin Baulig  <martin@ximian.com>
25612
25613         * Makefile.am: Added Makefile.am.
25614
25615         * debugger-main.c: Removed, this is now in the debugger where it
25616         belongs.
25617
25618         * mini.pc.in: Call this package `mini' for the moment.
25619
25620
25621
25622
25623
25624
25625
25626
25627
25628
25629
25630
25631
25632
25633