2010-06-25 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini-gc.c (mini_gc_init_cfg): Use mono_gc_is_moving () instead of HAVE_SGEN_GC.
4         It might be be better to define a MonoGCJitOptions structure later and have the
5         GC return that.
6
7         * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
8
9         * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
10
11         * debugger-agent.c (get_objref): Implement support for sgen.
12
13         * driver.c: Remove the unused gc_wrapper.h include.
14
15         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
16         implementation.
17
18 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
19
20         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
21
22         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
23         in MonoCompile.
24
25         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
26         instead.
27
28 2010-06-23  Miguel de Icaza  <miguel@novell.com>
29
30         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
31         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
32
33         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
34         it only for Boehm diagnostics.
35
36         * Makefile.am: Make the file a bit more consistent.
37
38         * debug-debugger.c: Wrap the entire file with an #ifdef
39         MONO_DEBUGGER_SUPPORTED to simplify the build.
40
41         * Makefile.am: Fix the opcodes build issue by including the
42         source, not by including the .lo file directly
43
44         Always bring the MDB sources into the build, to drop the
45         dependency on the AM_CONDITIONAL from configure.in as the hard
46         debugger supports Boehm, but not Sgen, this simplifies the build. 
47
48         * Renamed the *.s files into *.S
49
50 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
51
52         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
53         wb for now on 64bits systems while issues with valuetype returns
54         are not fixed.
55
56 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
57
58         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
59         passes by calling createStandardFunctionPasses ().
60
61 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
62
63         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
64
65 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
66
67         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
68         MONO_INST_FAULT.
69
70         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
71         allow better optimization if the OP_LDADDR which caused the flag to be set was
72         optimized away.
73
74         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
75
76         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
77         the type token.
78
79         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
80
81         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
82
83 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
84
85         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
86         to handle the code sequence generated for non-near calls. Fixes #616056.
87
88 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
89
90         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
91
92         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
93
94         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
95         nesting clause too.
96         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
97         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
98         trampoline which saves the context, so changes made to callee saved registers in
99         finally clauses are visible to a nesting catch clause.
100
101         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
102
103         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
104         in LLVM compiled code.
105         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
106         the finally handler has ran.
107
108         * mini.h (ResumeState): New structure containing information required to resume
109         exception handling after executing LLVM compiled finally clauses.
110
111         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
112         bit, by passing all the registers as one argument.
113
114 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
115
116         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
117         to avoid an assert.
118
119 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
120
121         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
122
123         * aot-compiler.c aot-runtime.c: Fix LLVM support.
124
125         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
126         pad, branch to a new bblock instead.
127
128         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
129         orig_method.
130
131         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
132
133         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
134
135 2010-06-17  Geoff Norton  <gnorton@novell.com>
136
137         * mini-arm.h:
138         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
139         can be used by sgen.
140
141 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
142
143         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
144
145         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
146         fails.
147
148         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
149         the ip done by throw_exception (), it is not needed for corlib exceptions.
150
151 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
152
153         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
154         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
155         of size > 5 words. This support fast barriers for value types up to
156         256/512 bytes which     beyond that the copying itself is the major issue.
157
158         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
159         for gsharing, so use it.
160
161         This eliminate all calls to mono_value_copy from managed code in
162         gmcs, fsharp and ipy.
163
164         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
165
166         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
167         performance kept
168
169         * mini.c (mini_init): Register new icall.
170
171 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
172
173         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
174         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
175
176 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
177
178         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
179         value types as the overhead is huge. Manually expand it up to 5 words to
180         avoid code bloat.
181
182         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
183         is an exception that performance is dominated by mono_value_copy.
184
185         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
186
187 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
188
189         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
190         trampolines on x86, since those have their own cconv.
191
192         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
193         exception trampolines.
194
195         * tramp-x86.c: Add xdebug info for a few trampolines.
196
197         * mini-llvm.c: Set the name of the arguments.
198
199         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
200         using a block address if using the LLVM mono branch.
201
202         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
203         trampolines.
204
205 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
206
207         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
208
209         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
210
211         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
212
213         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
214
215         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
216         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
217         to identify the vtable slot address plus the method which needs to be compiled.
218
219         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
220         using llvm.
221
222         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
223         'this' is always passed as the first argument, before the vtype ret arg. This
224         simplifies get_this_arg_reg () and LLVM integration.
225
226         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
227         the latest changes.
228
229         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
230         these trampolines.
231
232         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
233
234         * mini-llvm.c: Fix compilation with llvm 2.6.
235
236         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
237
238         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
239         defined.
240
241         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
242         is always passed as the first argument, before the vtype ret arg. This simplifies
243         get_this_arg_reg () and LLVM integration.
244
245 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
246
247         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
248
249         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
250         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
251         translate into much nicer code.
252
253 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
254
255         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
256         parameter index information. Use this to simplify a lot of code.
257
258         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
259
260 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
261
262         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
263         to fix infinite generic recursion. Fixes #612702.
264
265 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
266
267         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
268         imt trampoline per imt slot when using LLVM.
269
270 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
271
272         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
273
274 2010-06-09  Levi Bard  <levi@unity3d.com>
275
276         * debugger-agent.c: Clear unloaded types on appdomain unload.
277
278 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
279
280         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
281         Fixes #612206.
282
283         * exceptions.cs: Add a test.
284
285 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
286
287         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
288
289         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
290
291         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
292         so it doesn't have to do it.
293
294         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
295         process does not mix with ours.
296
297         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
298         ones.
299
300         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
301         loads/stores which can throw exceptions inside clauses.
302
303 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
304
305         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
306         one ENDFINALLY.
307
308         * mini.c (mini_init): Register mono_resume_unwind as an icall.
309
310 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
311
312         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
313
314         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
315         locals.
316
317 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
318
319         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
320         appdomain.
321
322 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
323
324         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
325         Use a separate generic class init trampoline for llvm, since it needs a different
326         signature.
327
328         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
329         includes the location of this/rgctx.
330
331         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
332         branch.
333
334 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
335
336         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
337
338         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
339         clause.
340
341 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
342
343         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
344         says so.
345
346         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
347
348         * aot-compiler.c (patch_to_string): New debugging helper function.
349
350 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
351
352         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
353         trampoline.
354
355         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
356
357         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
358
359         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
360
361         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
362         clauses.
363
364         * mini.c (create_jit_info): Print EH clause info for LLVM too.
365
366 2010-05-28  Mark Probst  <mark.probst@gmail.com>
367
368         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
369         cpobj with reference types.
370
371 2010-05-28  Mark Probst  <mark.probst@gmail.com>
372
373         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
374         write barrier for reference types.
375
376 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
377
378         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
379         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
380
381 2010-05-31  Martin Baulig  <martin@ximian.com>
382
383         Fix #608271.
384
385         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
386         clear_breakpoint() on all breakpoint events and remove them from the list.
387
388 2010-05-27  Martin Baulig  <martin@ximian.com>
389
390         Fix #605698.
391
392         * debugger-agent.c (method_commands, type_commands): Temporarily
393         set the appdomain while executing this method; do all metadata
394         calls in the debuggee's appdomain where user assemblies are loaded.
395
396 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
397
398         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
399
400 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
401
402         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
403
404 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
405
406         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
407         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
408         be referenced even after the header is freed.
409
410         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
411         section.
412
413 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
414
415 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
416
417         * genmdesc.c (main): Fixing the detection of the nacl switch.
418
419         Code is contributed under MIT/X11 license.
420
421 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
422
423         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
424
425         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
426
427         * mini.h (LLVM_CHECK_VERSION): New helper macro.
428
429 2010-05-25  Miguel de Icaza  <miguel@novell.com>
430
431         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
432         the Perl program
433
434         * genmdesc.c: Added support for nacl: key on the machine
435         description files to support the extra space required by Google
436         Native Client.
437
438 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
439
440         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
441
442 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
443
444         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
445         mono_runtime_class_init_full ().
446         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
447
448 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
449
450         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
451
452 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
453
454         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
455         two are not the same on ilp32.
456
457 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
458
459         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
460         added by mistake.
461
462         * mini-ppc.c: Fix the DISABLE_JIT build.
463
464 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
465
466         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
467         (make_writable): Remove this unused function.
468
469 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
470
471         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
472         structure. Make the labels to plt entries local symbols instead of assembler local
473         labels, since tha latter causes problems for the iphone linker.
474
475 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
476
477         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
478
479 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
480
481         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
482         (ppc_patch_full): Ditto.
483
484         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
485
486         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
487         if gshared is enabled, to avoid asserts in the trampoline code.
488
489         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
490         on ia64.
491
492 2010-05-15  Geoff Norton  <gnorton@novell.com>
493
494         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
495         xdebug mode.
496
497 2010-05-14  Geoff Norton  <gnorton@novell.com>
498
499         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
500         misaligned stack on darwin.
501
502 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
503
504         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
505         arm.
506
507 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
508
509         * xdebug.c: Fix ARM support.
510
511 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
512
513         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
514         and do most of the work on the normal stack.
515         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
516
517 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
518
519         * aot-compiler.c: Put non-code data into the .rodata section on linux.
520
521 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
522
523         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
524
525 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
526
527         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
528         and do most of the work on the normal stack.
529
530 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
531
532         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
533         and do most of the work on the normal stack even if sigaltstack is disabled.
534
535 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
536
537         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
538         UCONTEXT_REG_ constants are available on linux as well.
539         (mono_arch_monoctx_to_sigctx): Ditto.
540         (mono_arch_ip_from_context): Ditto.
541
542 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
543
544         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
545         other domains.
546
547 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
548
549         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
550         no longer needed.
551
552 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
553
554         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
555         if a breakpoint cannot be inserted.
556
557 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
558
559         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
560
561 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
562
563         * debugger-agent.c (frame_commands): Return an error instead of asserting if
564         no JIT info is found for the method.
565
566 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
567
568         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
569         in debug printf.
570
571 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
572
573         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
574         a list of arch specific trampolines.
575
576         * aot-compiler.c (emit_trampolines): Use it.
577
578 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
579
580         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
581         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
582         get rid of the _full from their name.
583
584 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
585
586         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
587         get_nullified_class_init_trampoline to remove some code duplication.
588
589 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
590
591         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
592         attach.
593
594 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
595
596         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
597
598         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
599
600         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
601         there is no need to jump through the first plt entry.
602
603         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
604
605         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
606         arch-specific function.
607         (mono_aot_get_plt_info_offset): Ditto.
608
609         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
610         mono_arch_init () to register jit icalls called from full-aot trampolines.
611         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
612         to mini-<ARCH>.c.
613
614         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
615         the specialized throw corlib exception trampoline, use a variant of the normal
616         trampoline along with a new C function which does the call to
617         mono_exception_from_token (), just like on x86.
618
619 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
620
621         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
622         Reorganize the full aot trampoline creation functions, instead of taking a bunch
623         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
624         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
625         creation functions on architectures which have the full-aot ones.
626
627 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
628
629         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
630
631 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
632
633         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
634         explicitly, this seems to be required by some gcc versions at -O2.
635
636         * mini-arm.c: Ditto.
637
638 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
639
640         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
641         has_target delegate invokes.
642
643 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
644
645         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
646         info fields.
647
648         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
649         add patches/unwind info arguments, move to mini.c.
650
651         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
652
653 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
654
655         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
656         command which returns full path names.
657
658 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
659
660         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
661         code_size output variable.
662
663         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
664         mono_get_lmf_addr.
665         
666 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
667
668         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
669         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
670         (mono_arch_cpu_enumerate_simd_versions): Ditto.
671
672 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
673
674         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
675         apple assembler.
676
677 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
678
679         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
680
681 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
682
683         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
684
685 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
686
687         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
688
689 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
690
691         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
692         line number support works with eglib.
693
694 2010-04-27  Miguel de Icaza  <miguel@novell.com>
695
696         * driver.c, mini.c: Since linking with LLVM makes the default Mono
697         dirty an extra 70kb pages on startup we are now going to choose a
698         different strategy: ship mono and mono-llvm binaries, with the
699         second being the one that links with LLVM and defaults to LLVM
700         being enabled.
701
702 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
703
704         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
705         Implement full-aot support on x86.
706
707         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
708         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
709         the first register returned by get_global_int_regs ().
710
711         * cpu-x86.md: Fix the length of insertx_u1_slow.
712
713         * iltests.il.in: Disable tail call tests when running with full-aot.
714
715 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
716
717         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
718
719 2010-04-24  Mark Probst  <mark.probst@gmail.com>
720
721         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
722         in the initializer, because it's non-constant.
723
724 2010-04-23  Miguel de Icaza  <miguel@novell.com>
725
726         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
727         of LLVM on by default.   Used for buildbots and other setups.
728
729 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
730
731         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
732
733 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
734
735         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
736         initonly static fields when using moving GC.
737
738         Contributed under MIT/X11 license.
739
740 2010-04-23  Geoff Norton  <gnorton@novell.com>
741
742         * mini-amd64.h: Darwin x86_64 support.
743
744 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
745
746         * exceptions-arm.c: Remove platform checks in favor of configure checks.
747
748 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
749
750         * exceptions-arm.c: Add Android support for sigcontext structure.
751
752 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
753
754         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
755         wrappers correctly now that their wrapper info is NULL.
756
757 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
758
759         * mini.c (mono_jit_compile_method_inner): Avoid calling
760         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
761
762 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
763
764         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
765         so the latter can be #ifndef DISABLE_JIT-ed.
766
767         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
768
769 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
770
771         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
772
773 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
774
775         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
776         stack.
777
778 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
779
780         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
781         calling mono_class_num_methods (). Fixes #592244.
782
783 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
784
785         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
786
787         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
788
789 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
790
791         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
792         version.
793         * (handle_alloc): Ditto.
794         (mono_method_to_ir): Remove the constrained call restriction added by a previous
795         change, its not needed anymore.
796
797 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
798
799         * mini-posix.c (sigusr1_signal_handler): Fix build on
800         non x86/amd64 systems.
801
802 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
803
804         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
805         calls where the constrained class needs a context. Fixes #595863.
806
807         * iltests.il.in: Add a test.
808
809 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
810
811         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
812         2.6/SVN seems to have broken support for them.
813
814 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
815
816         * mini-llvm.c: Fix support for LLVM 2.6.
817
818 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
819
820         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
821         MonoInternalThread belonging to the thread.
822
823 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
824
825         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
826         unsafe optimization that will remove bound checks.
827
828 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
829
830         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
831         CompareExchange not to be inlined for I8.
832
833         Contributed under MIT/X11 license.
834
835 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
836
837         * array.cs: Add tests for cast between primitive array types.
838
839 2010-04-07 Andreia Gaita  <avidigal@novell.com>
840
841         * Makefile.am: create a convenience library for moon to link with
842
843 2010-04-07 Paolo Molaro <lupus@ximian.com>
844
845         * method-to-ir.c: optimize array accesses from generic interfaces.
846
847 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
848
849         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
850
851 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
852
853         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
854         of marshalbyref classes.
855
856         Fixes #515884.
857
858 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
859
860         * aot-compiler.c (emit_exception_debug_info): Encode try holes
861         information.
862
863         * aot-runtime.c (decode_exception_debug_info): Decode try holes
864         information.
865
866         * mini.h: Increase AOT version.
867
868 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
869
870         * mini-x86.h: Only enable soft debugger when using sigaction or on
871         Windows. Fixes build on Haiku (lacks siginfo_t).
872
873         Code is contributed under MIT/X11 license.
874
875 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
876
877         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
878         BeOS-style signal handlers.
879
880         Code is contributed under MIT/X11 license.
881         
882 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
883
884         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
885
886 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
887
888         * mini-exceptions.c: Fix win32 build.
889
890 2010-04-01  Mark Probst  <mark.probst@gmail.com>
891
892         * mini.c, driver.c: Call mono_gc_base_init() before
893         mono_debug_init().
894
895 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
896
897         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
898         call_method]): Delegate the actual work in security-core-clr.c
899         to ease code sharing.
900
901 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
902
903         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
904         float conv.ovf.un opcodes are encountered, instead of asserting later.
905         Fixes #566296.
906
907 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
908
909         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
910
911         * iltests.il.in: Add a test.
912
913 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
914
915         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
916         large. Fixes #567040.
917
918         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
919
920 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
921
922         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
923         #592711.
924
925 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
926
927         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
928         mono_create_handler_block_trampoline with the proper #ifdef so that it
929         compiles on amd64.
930
931 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
932
933         * mini-exceptions.c: Introduce mono_walk_stack_full, which
934         allows to select if it's new or old context that is passed to 
935         the callback.
936
937         * mini-exceptions.c (mono_handle_exception_internal): Handle the
938         case when executing a guarded handler from the EH machinery.
939
940         * mini-exceptions.c (mono_install_handler_block_guard): New function
941         responsible for checking for handler blocks, installing the guard and
942         clearing abort state.
943
944         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
945         to check for handler blocks and skip interruption logic if one was found.
946
947         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
948         by the handler block guard trampoline. Resumes interruption by raising the
949         pending ThreadAbortException.
950
951         * mini.c (create_jit_info): Calculate the end address of a finally block.
952
953         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
954         of a finally block to a specified address and return the old one.
955
956         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
957         trampoline patches the original return address and calls the trampoline function.
958
959 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
960
961         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
962
963         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
964         does the patching if the callee is in the same domain.
965
966         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
967         of mono_arch_patch_plt_entry ().
968
969 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
970
971         * mini.c (create_jit_info): Fix try block hole length encoding.
972
973 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
974
975         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
976         duplicate information and print offsets instead of absolute addresses.
977
978 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
979
980         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
981         event is sent. Fixes #591733.
982
983 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
984
985         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
986         OpenBSD.
987
988 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
989
990         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
991         thread_to_tls hash table.
992
993         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
994         section. Fixes #591000.
995
996 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
997
998         * Makefile.am (version.h): Check for pure .git directory only,
999         fixes SVN revision when using git without git-svn.
1000
1001         Contributed under MIT/X11 license.
1002
1003 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1004
1005         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
1006
1007 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1008
1009         * basic-simd.cs: Test for vector x scalar binary operators.
1010
1011 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1012
1013         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1014         intrinsics with expanded scalar arguments.
1015
1016 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1017
1018         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1019         don't have an exception class, so don't decode it. This would crash
1020         with filter clauses.
1021
1022 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1023
1024         Make sure that trunk builds with DISABLE_JIT, an update to the
1025         PlayStation 3 port.
1026         
1027         * mini.c (mini_get_shared_method): this code seems to be necessary
1028         regardless of whether DISABLE_JIT has been defined.
1029
1030         (mono_jit_compile_method_inner): it seems that this method is
1031         required even in full AOT mode, so ifdef out only the pieces that
1032         try to genrate code (the body of code that applies patches to the
1033         code).  
1034
1035         (mini_method_compile): do not compile when using DISABLE_JIT.
1036
1037         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1038         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1039         compile when DISABLE_JIT is set.
1040
1041 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1042
1043         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1044         arch really supports it.
1045
1046 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1047
1048         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1049
1050 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1051
1052         * exceptions-s390x.c: Add support for
1053         mono_arch_get_throw_corlib_exception and fix throw by name.
1054
1055         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1056         logic (especially for varargs); Correct localloc sizing; Add
1057         mono_arch_get_this_arg_from_call and
1058         mono_arch_get_this_arg_from_call.
1059
1060         * mini-s390x.h: Add support for facility list extraction;
1061         Correct/update MONO_ARCH_xxx settings.
1062
1063         * mini-s390.c: Minor corrections to instruction output for
1064         varargs. No IMT implementation - I think it's time to deprecate
1065         s390 and just leave s390x.
1066
1067         * tramp-s390x.c: Correct creation of trampoline instruction
1068
1069
1070         * cpu-s390x.md: Update some instruction lengths
1071
1072 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1073
1074         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1075         can be hit with partial sharing.
1076
1077         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1078         in non-shared classes correctly.
1079         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1080         Turn on partial sharing.
1081
1082 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1083
1084         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1085         by mistake.
1086
1087 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1088
1089         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1090         mono_method_signature ().
1091
1092         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1093
1094         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1095         error checking, so later calls do not need error checking.
1096
1097 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1098
1099         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1100
1101         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1102
1103 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1104
1105         * mini-exceptions.c (mono_handle_exception_internal): Don't
1106         check try_end for archs different than s390. 
1107
1108         * mini.c (create_jit_info): Don't crash if the finallt block is the
1109         last one.
1110
1111 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1112
1113         * driver.c (mono_main): Don't free global codeman under linux since
1114         glic now peeks at code on stack for more archs than just amd64.
1115
1116 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1117
1118         * mini.c, method-to-ir.c: changes to support compressed interface
1119         bitmaps.
1120
1121 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1122
1123         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1124         Use sigaction on OpenBSD too.
1125
1126 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1127
1128         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1129
1130 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1131
1132         * debugger-agent.c: #include sys/select.h for fd_set.
1133
1134         Code is contributed under MIT/X11 license.
1135
1136 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1137
1138         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1139         (openbsd+amd64 ?).
1140
1141 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1142
1143         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1144         some large methods with lots of exception handlers. Fixes #440924.
1145
1146 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1147
1148         * method-to-ir.c: remove code duplication for interface checks.
1149
1150 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1151
1152         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1153         (assembly_unload): Clear all event requests referencing the to-be unloaded
1154         assembly.
1155
1156
1157 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1158
1159         * mini.h, mini-exceptions.c: restore the state of the stack
1160         guard page permissions.
1161
1162 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1163
1164         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1165         call site patching code, it doesn't appear to be needed.
1166
1167 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1168
1169         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1170         sharing generic methods whose type arguments are a mix of reference and
1171         non-reference types. Not yet turned on.
1172
1173         * mini.c (mini_get_shared_method): New helper function to return
1174         the method which will be compiled/registered in the JIT tables when doing
1175         generic sharing.
1176         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1177         use mini_get_shared_method ().
1178
1179         * mini.c (mini_method_compile): Register the same method which is compiled when
1180         doing generic sharing.
1181
1182         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1183
1184         * generics.cs: Add partial sharing tests.
1185
1186 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1187
1188         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1189                    Add an enum value that or's all possable values together. Add an enum value
1190                    that marks the end of the used bit indexes.
1191
1192         * mini-amd64.c : Make changes to match the changes in mini.h 
1193
1194         * mini-x86.c : Make changes to match the changes in mini.h
1195
1196         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1197                    simd_version to support more simd versions. Changed the name of
1198                    simd_version to simd_version_flags to make it more intuitive that
1199                    it now contains bit flags. Reordered the *_intrinsics arrays to
1200                    match the changes above. Changed emit_intrinsics() to use the new
1201                    setup mentioned above.
1202
1203         Code is contributed under MIT/X11 license.
1204
1205 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1206
1207         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1208         remaining archs. Alpha and hppa maintainers, please stand up.
1209
1210 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1211
1212         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1213         is needed even when fail_tramp!=NULL.
1214
1215 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1216
1217         * debugger-agent.c (insert_breakpoint): Write a log message.
1218
1219 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1220
1221         * iltests.il.in: Add a few tests for LEAVE going over multiple
1222         finally clauses.
1223
1224 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1225
1226          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1227
1228 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1229
1230         * mini.h (MonoBasicBlock): Add native_length field.
1231         * mini.h (MonoCompile): Add try_block_holes field.
1232         * mini.h (MonoInst): Add exception_clause pointer to
1233         the data union.
1234
1235         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1236         * mini.c (mono_cfg_add_try_hole): New function to register possible
1237         holes in try blocks.
1238         * mini.c (create_jit_info): Fill in the holes information.
1239
1240         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1241         by a try block.
1242
1243         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1244
1245 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1246
1247         * jit-icalls.c: adjusted for the array API changes.
1248
1249 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1250
1251         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1252
1253 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1254
1255         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1256         the 'pending' flag. This fixes support for appdomains too.
1257
1258
1259 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1260
1261         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1262
1263 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1264
1265         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1266         when using LLVM, LLVM generates it itself when needed.
1267
1268         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1269
1270         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1271         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1272         OP_ANDNPS/OP_ANDNPD.
1273
1274 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1275
1276         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1277         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1278         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1279
1280 2010-03-11  Martin Baulig  <martin@ximian.com>
1281
1282         * debugger-agent.c (type_commands): Add NULL check to
1283         `CMD_TYPE_GET_SOURCE_FILES'.
1284
1285 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1286
1287         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1288
1289 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1290
1291         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1292         #586664.
1293
1294         * iltests.il.in: Add a test.
1295
1296 2010-03-05  Martin Baulig  <martin@ximian.com>
1297
1298         Add support for aborting invocations.
1299
1300         * debugger-agent.c
1301         (InvokeData): Added `InvokeData *last_invoke'.
1302         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1303         added a new `invoke' field to keep the `InvokeData *' throughout
1304         the invocation.
1305         (ErrorCode): Added `ERR_NO_INVOCATION'.
1306         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1307         (mono_debugger_agent_handle_exception): Don't report any exception
1308         if an abort was requested.
1309         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1310         a thread abort if necessary.
1311         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1312
1313 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1314
1315         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1316         so we can release the whole list and not just the first one. Free
1317         it in more places as well.
1318
1319 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1320
1321         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1322
1323 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1324
1325         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1326
1327 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1328
1329         * driver.c: report also other misc build options.
1330
1331 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1332
1333         * method-to-ir.c: Generate better code for the NewObject
1334         intrinsic.
1335         
1336 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1337
1338         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1339         is disabled. Fixes #582322.
1340
1341         * iltests.il.in: Add a test.
1342
1343 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1344
1345         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1346         the handling of obj->synchronization == null and owner != current thread to
1347         mono_monitor_exit ().
1348
1349         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1350
1351
1352 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1353
1354         * mini.c: change the way emulated opcode info is stored and save about
1355         4 KB of runtime memory.
1356
1357 2010-03-04  David S. Miller  <davem@davemloft.net>
1358
1359        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1360        that don't provide the siginfo in the second signal handler argument
1361        are buggy, and this has been fixed for years.
1362        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1363        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1364
1365 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1366
1367         * aot-runtime.c (find_symbol): Fix a leak.
1368         (decode_patch): Ditto.
1369
1370 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1371
1372         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1373
1374 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1375
1376         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1377
1378 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1379
1380         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1381
1382 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1383
1384         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1385         to check for errors, it's enough to create the metadata open.
1386
1387         Fixes #562150
1388
1389 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1390
1391         * trace.c|h:
1392         * mini-exceptions.c: Add support for printing stack traces when handling
1393         exceptions, and when printing exceptions thrown while tracing also print
1394         the exception message.
1395
1396 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1397
1398         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1399         since the exclude token is a valid string character.
1400
1401 2010-03-02  Levi Bard  <levi@unity3d.com>
1402
1403         * debugger-agent.c: Invalidate thread stacks on domain unload.
1404
1405 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1406
1407         * method-to-ir.c: Emit dummy_use for stored reference after write
1408         barriers to make sure the object is pinned if the GC interrupts
1409         before the write barrier is done.
1410
1411 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1412
1413         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1414
1415 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1416
1417         * debugger-agent.c: Add a log message printing the protocol version.
1418
1419 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1420
1421         * debugger-agent.c: Add a new command to communicate the protocol version used
1422         by the client. This could be used to allow newer runtimes to communicate with
1423         older clients.
1424
1425 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1426
1427         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1428
1429 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1430
1431         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1432         type.
1433
1434 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1435
1436         * mini-arm.c: make the arm cpu arch configurable with the
1437         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1438         Bug #584198.
1439
1440 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1441
1442         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1443         support for the perf tool on Linux.
1444
1445 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1446
1447         * method-to-ir.c: make string.InsertenalSetChar() specialization
1448         effective.
1449
1450 2010-03-01  Robert Jordan  <robertj@gmx.net>
1451
1452         * Makefile.am: fix the non-static build.
1453
1454 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1455
1456         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1457         here.
1458
1459 2010-02-26  Robert Jordan  <robertj@gmx.net>
1460
1461         * tasklets.c (continuation_store): Return from an error condition
1462         immediately.
1463
1464 2010-02-26  Martin Baulig  <martin@ximian.com>
1465
1466         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1467
1468         * debug-mini.c
1469         (MonoDebuggerThreadInfo): Added `internal_flags'.
1470         (MonoDebuggerInternalThreadFlags): New enum.
1471         (_mono_debugger_throw_exception): Don't signal the debugger if a
1472         type abort was requested.
1473         (_mono_debugger_unhandled_exception): Likewise.
1474         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1475         (mono_debugger_runtime_invoke): If the debugger requested a thread
1476         abort during the invocation, reset it here.
1477
1478 2010-02-26  Martin Baulig  <martin@ximian.com>
1479
1480         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1481         instead of `MonoThread *'.
1482
1483 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1484
1485         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1486         code offsets table, as it is mostly sorted.
1487
1488 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1489
1490         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1491         Fixes #582991.
1492
1493 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1494
1495         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1496
1497 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1498
1499         * Makefile.am: build the new ABI version of the libmono library.
1500         * debugger-agent.c, mini.c: fix warnings with the new API.
1501         * jit.h: don't depend on glib.h being included.
1502
1503 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1504
1505         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1506
1507 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1508
1509         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1510         ThreadStatic variables.
1511
1512 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1513
1514         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1515         data is not freed yet. Fixes #582460.
1516
1517 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1518
1519         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1520         event requests. Bump protocol minor version.
1521
1522 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1523
1524         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1525
1526 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1527
1528         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1529         #581950.
1530
1531         * iltests.il.in: Add a test.
1532
1533 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1534
1535         * mini.c (inline_method): Check for loader errors.
1536
1537 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1538
1539         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1540         instead of mono_method_get_header as it doesn't decode locals
1541         so the called method can have unresolved dependencies that will only
1542         be satisfied after the current method is JIT'd.
1543
1544         Fixes #550968.
1545
1546 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1547
1548         * basic.cs (test_0_div_opt): Speed this up a bit.
1549
1550 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1551
1552         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1553
1554         * mini.c (mono_jit_create_remoting_trampoline): Call
1555         mono_create_specific_trampoline () instead of
1556         mono_arch_create_specific_trampoline ().
1557
1558         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1559
1560 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1561
1562         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1563         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1564
1565         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1566
1567         * mini-amd64.c: Fix DISABLE_JIT support.
1568
1569 2010-02-20  Geoff Norton  <gnorton@novell.com>
1570
1571         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1572
1573 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1574
1575         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1576         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1577         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1578         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1579         handle_exception.
1580
1581 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1582
1583         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1584         edx/ecx too. This is needed to support OP_SEQ_POINT.
1585
1586 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1587
1588         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1589
1590         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1591
1592 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1593
1594         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1595         LLVM+AOT+exceptions, not enabled yet.
1596
1597 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1598
1599         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1600
1601 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1602
1603         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1604         xdebug info for these.
1605
1606         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1607         in a few places.
1608
1609         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1610         not used yet.
1611
1612 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1613
1614         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1615
1616 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1617
1618         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1619         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1620
1621         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1622         for mtouch.
1623
1624 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1625
1626         * debugger-agent.c: handle incomplete reads and EINTR in
1627         recv()/send(). This could have been causing random
1628         disconnections.
1629
1630 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1631
1632         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1633         points.
1634
1635         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1636         so they have small offsets. Fixes #566311.
1637
1638 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1639
1640         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1641
1642 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1643
1644         * mini-amd64.c: Remove the special casing of byref in a few places now that
1645         mini_type_get_underlying_type () handles it.
1646
1647         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1648         by returning native int. Fixes #577984.
1649
1650 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1651
1652         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1653         a macro.
1654
1655         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1656         of putting the clause itself.
1657
1658         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1659
1660 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1661
1662         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1663         might be unaligned.
1664
1665 2010-02-10  Geoff Norton  <gnorton@novell.com>
1666
1667         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1668
1669 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1670
1671         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1672         llvm methods too.
1673
1674         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1675         it is not an LLVM generated symbol.
1676
1677         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1678
1679         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1680         implementation in gshared mode because it causes regressions.
1681
1682         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1683
1684         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1685         should be done by the caller.
1686
1687         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1688
1689         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1690
1691         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1692         since mono_jit_info_table_find () doesn't do it anymore.
1693
1694         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1695         instead of mono_jit_info_table_find ().
1696
1697 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1698
1699         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1700
1701         * aot-compiler.c (encode_method_ref): Update after the removal of
1702         mono_gc_get_managed_allocator_type ().
1703
1704         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1705         Fixes #564538.
1706
1707 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1708
1709         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1710         generic params as well.
1711         (handle_isinst): Ditto.
1712
1713         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1714         instead of always calling an icall.
1715
1716         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1717         computing the size of the got.
1718
1719         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1720         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1721         the assembly directive '.set' so it points to the first LLVM emitted method.
1722
1723 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1724
1725         * mini.c (mini_method_verify): Report the method which failed to verify.
1726
1727 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1728
1729         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1730         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1731         runtime MS verifier.
1732
1733 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1734
1735         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1736         #561962.
1737
1738 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1739
1740         * mini-llvm.c: Init the jit module only when first JITting.
1741
1742         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1743
1744         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1745
1746         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1747         replaced with the real got.
1748
1749         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1750
1751         * image-writer.c: Reduce the amount of #ifdefs a bit.
1752
1753         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1754         llvm on darwin/arm.
1755
1756         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1757
1758         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1759         global.
1760
1761 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1762
1763         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
1764         (mono_llvm_emit_method): Fix unaligned stores too.
1765
1766         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
1767         so async stack walks don't crash.
1768
1769 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1770
1771         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
1772         was not patched if the callee needed an rgctx trampoline.
1773
1774 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1775
1776         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
1777         vtable address in AOT code.
1778
1779 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1780
1781         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
1782         MonoInst's.
1783
1784 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
1785
1786         * genmdesc.pl: remove dependency on external cpp.
1787
1788 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1789
1790         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
1791         using LLVM, its not needed, and abcrem can't handle it.
1792
1793 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1794
1795         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
1796         it easier to group instructions and reduce duplication.
1797
1798 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1799
1800         * decompose.c: Move the array/soft float decompose routines here from
1801         method-to-ir.c.
1802
1803         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
1804
1805 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
1806
1807         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
1808         to tell LLVM that the got is constant, not used yet.
1809
1810         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
1811
1812 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1813
1814         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
1815         managed wrappers.
1816
1817 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1818
1819         * aot-compiler.c (add_wrappers): Commit the hack which generates
1820         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
1821         custom attribute.
1822
1823 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1824
1825         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
1826         a fault, only used by the LLVM backend.
1827
1828         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
1829         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
1830
1831         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
1832         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
1833
1834         * mini-llvm.c: Only generate volatile loads from load instructions which have
1835         the MONO_INST_FAULT flag set.
1836
1837 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1838
1839         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
1840         64 bit platforms.
1841
1842 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1843
1844         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
1845         sequence points. Fixes #571236.
1846
1847 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1848
1849         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
1850         end of the appdomain unload process, after assemblies have been unloaded.
1851         Fixes #574842.
1852
1853 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
1854
1855         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
1856         works.
1857
1858         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
1859         Fixes #573988.
1860
1861 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
1862
1863         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
1864
1865 2010-01-26  Geoff Norton  <gnorton@novell.com>
1866
1867         * aot-compiler.c: Fix a logic error introduced when guarding against enums
1868         with struct marshalability.
1869
1870 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1871
1872         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
1873         it supports class names as well.
1874
1875         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
1876         needed by the GC map code.
1877
1878         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
1879         flags if needed.
1880
1881         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
1882         if cfg->init_ref_vars is set.
1883
1884         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
1885         cfg->disable_initlocals_op_refs is set.
1886
1887         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
1888         using liveness info if cfg->compute_precise_live_ranges is set.
1889
1890         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
1891         volatile variables correctly. Add comments about the live ranges. Not enabled
1892         yet.
1893
1894 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1895
1896         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
1897         0x2a into them in method prologs.
1898
1899         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
1900
1901 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
1902
1903         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
1904         classes, since llvm is compiled with -fno-rtti.
1905
1906         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
1907
1908         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
1909         llvm does not require it.
1910
1911         * aot-runtime.c (load_method): Print the full name of the last aot method.
1912
1913 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1914
1915         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
1916         thread has not fully started yet.
1917
1918 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1919
1920         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
1921
1922 2010-01-21  Miguel de Icaza  <miguel@novell.com>
1923
1924         * driver.c: Do not abort if LLVM is not supported, print a
1925         warning and add the information to the Mono JIT information.
1926
1927 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1928
1929         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
1930         using explicit null checks.
1931
1932 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
1933
1934         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
1935         related code.
1936
1937         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
1938         () in one place.
1939         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
1940         its no longer needed.
1941
1942         * method-to-ir.c (mono_method_to_ir): Fix a warning.
1943
1944         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
1945         define for platforms still using it (s390). Get rid of the
1946         mono_arch_get_throw_exception_by_name () routines on all other platforms.
1947
1948         * exceptions-x86.c: Rework the throw trampolines so there is only one function
1949         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
1950
1951         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
1952         the caller pushed the arguments.
1953
1954         * mini-llvm.c: Enable throwing exceptions on x86.
1955
1956         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
1957         "Thread (nil) may have been prematurely finalized" messages if this is called
1958         on a thread not registered with the runtime.
1959
1960         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
1961
1962 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1963
1964         * jit-icalls.c (mono_array_new_3): New jit icall.
1965
1966         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
1967
1968         * arrays.cs: Add a test for 3 dimensional arrays.
1969
1970 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1971
1972         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
1973         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
1974         used.
1975
1976         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
1977         thrown on x86.
1978
1979         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
1980
1981         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
1982
1983         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
1984
1985 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
1986
1987         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
1988           HOST_WIN32.  Also including winsock2. to define struct in_addr.
1989
1990         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1991
1992         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1993
1994         Code is contributed under MIT/X11 license.
1995
1996 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1997
1998         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
1999
2000         * branch-opts.c (mono_optimize_branches): Honor the new flag.
2001
2002         * mini.c (mini_method_compile): Set the new flag when running under the
2003         debugger.
2004
2005 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2006
2007         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2008         a ref/noref value + a global pin flag, so parts of stack frames can still be
2009         precisely marked even if they include stuff which needs pinning. Improve logging.
2010         Fix many bugs. Not enabled yet.
2011
2012         * gc-test.cs: Add a few tests.
2013
2014         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2015         the normal -v options. Avoid propagating liveness information through bblocks
2016         which end with a NOT_REACHED opcode.
2017
2018         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2019         after cfg has been freed.
2020
2021 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2022
2023         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2024         if a clause is skipped because it uses the exception object, since it could
2025         have caught the exception.
2026
2027         * exceptions.cs: Add a test.
2028
2029 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2030
2031        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2032
2033         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2034         ICollection<T> wrappers.
2035
2036 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2037
2038         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2039
2040 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2041
2042         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2043         NOMAP32BIT or optimize_for_xen is set.
2044
2045 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2046
2047         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2048         mono_metadata_str_hash () instead.
2049
2050 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2051
2052         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2053         sizeof (void*).
2054
2055         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2056
2057 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2058
2059         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2060         flag is set.
2061
2062         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2063         throwing code correctly.
2064
2065         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2066
2067 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2068
2069         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2070         ftnptrs created by us, handle RGCTX_FETCH correctly.
2071         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2072
2073         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2074         ftnptr added by mono_aot_get_named_code ().
2075
2076 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2077
2078         * mini-arm.c: Fix a few LLVM problems.
2079
2080         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2081
2082 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2083
2084         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2085         AOT compiling.
2086
2087 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2088
2089         * jit.h, method-to-ir.c: added ability to set the policy for
2090         inserting breakpoints from the break IL instruction or the
2091         Debugger.Break () API call.
2092
2093 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2094
2095         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2096         assemblies need to be eagerly loaded.
2097
2098 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2099
2100         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2101
2102 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2103
2104         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2105         an argument which matches any exception.
2106
2107 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2108
2109         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2110         optimization if the called method is gshared and marshalbyref, since gshared
2111         methods can' have wrappers. Fixes #569390.
2112
2113         * generics.cs: Add a test.
2114
2115 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2116
2117         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2118         callable from gdb.
2119
2120 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2121
2122         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2123
2124 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2125
2126         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2127         since it is not supported in win2000.
2128
2129 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2130
2131         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2132         error if loading an assembly fails.
2133         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2134
2135         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2136         if exists.
2137
2138         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2139         compiled methods.
2140
2141         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2142
2143         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2144         is not supported yet.
2145
2146         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2147
2148 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2149
2150         * method-to-ir.c: All types with variant arguments must fallback to the
2151         slow path. This makes cast of variant delegates work.
2152
2153         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2154         argument that is set to TRUE is the returned vtable slot is for a variant
2155         interface. Changed a g_print + g_assert_not_reached to a g_error.
2156
2157         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2158         a similar fashion of generic virtual methods.
2159
2160 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2161
2162         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2163         when cfg is null.
2164
2165         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2166         method using a variance aware function.
2167
2168         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2169
2170 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2171
2172         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2173         do an icall for now.
2174
2175 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2176
2177         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2178         If LLVM decides to set the code model to Large, reset it to Default.
2179
2180 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2181
2182         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2183         stripped binaries as well.
2184
2185 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2186
2187         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2188         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2189
2190         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2191         reg.
2192
2193 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2194
2195         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2196         separate function.
2197
2198         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2199         as the type info to llvm.eh.selector.
2200         (exception_cb): Use the type info for filling out some fields of
2201         MonoJitExceptionInfo like the flags and the exception class. This is needed
2202         because the LLVM produced exception handling clauses might not match the original
2203         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2204
2205         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2206         separate function. Add an extra argument which returns the type infos
2207         corresponding to the exception clauses.
2208
2209         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2210         exception handling clauses.
2211
2212 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2213
2214         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2215         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2216         to fix an AOT case.
2217
2218 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2219
2220         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2221         internal assembly.
2222
2223 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2224
2225         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2226         llvm code.
2227
2228 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2229
2230         * mini.c (mini_method_compile): Verify the method before calling
2231         mono_compile_create_vars as this might crash since it uses method
2232         information.
2233
2234         Fixes #560196.
2235
2236 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2237
2238         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2239         one case if AOTing, since the class might not be a concrete class.
2240
2241 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2242
2243         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2244         functions which are now defined in mempool-internals.h.
2245
2246         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2247
2248         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2249
2250 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2251
2252         * mini.c:
2253         * method-to.ir.c:
2254         * mini-*.c: Properly handle generic enums.
2255
2256         Fixes #566294
2257
2258 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2259
2260         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2261         in a few more places.
2262
2263 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2264
2265         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2266         nullable parameters. Fixes #567351.
2267
2268 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2269
2270         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2271
2272 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2273
2274         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2275         mono_get_generic_context_from_code () call.
2276
2277         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2278
2279 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2280
2281         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2282         needed.
2283
2284 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2285
2286         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2287         mono_method_get_signature returns NULL. Fix #567084
2288
2289 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2290
2291         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2292         instead of once for each module.
2293
2294 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2295
2296         * debugger-agent.c (ss_start): Implement step over for the last sequence
2297         point in methods.
2298
2299         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2300         have the STEP_LOC flag set.
2301
2302         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2303         fails. Fixes #566689.
2304
2305 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2306
2307         * mini.c (mono_add_seq_point): New helper function.
2308         (mono_save_seq_point_info): New function to save sequence point info, extracted
2309         from mini_method_compile ().
2310
2311         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2312
2313         * mini.h (MonoSeqPointInfo): New structure containing information about
2314         the sequence points of a JITted method.
2315         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2316         'bucket' field.
2317
2318         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2319         point information is stored, use a MonoSeqPointInfo structure instead of a
2320         GPtrArray. For each seq point, compute a list of successor seq points.
2321
2322         * debugger-agent.c: Use the successor list to implement step-over more
2323         efficiently: instead of single stepping until a different line/IL offset is
2324         reached, place breakpoints into all successor seq points.
2325
2326         * mini.h: Bump AOT file format version.
2327
2328 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2329
2330         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2331
2332         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2333
2334 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2335
2336         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2337         build.
2338
2339 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2340
2341         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2342         alloca as g_malloc is not signal safe.
2343
2344 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2345
2346         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2347         VALGRIND_DISCARD_TRANSLATIONS.
2348
2349         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2350         checks, they are no longer needed.
2351
2352         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2353         a function into a sigctx which can handle function pointers.
2354
2355         * mini-ppc.c: Implement soft debugger support on ppc64.
2356
2357         * mini-ppc.c: Implement soft debugger support.
2358
2359 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2360
2361         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2362
2363 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2364
2365         * mini.c (mono_get_runtime_build_info): include Mono version in
2366         the returned value.
2367
2368         * driver.c (mono_main): VERSION is now included in the string
2369         returned from mono_get_runtime_build_info()
2370
2371 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2372
2373         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2374         signatures. Fixes #565143.
2375
2376         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2377
2378 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2379
2380         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2381
2382 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2383
2384         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2385         making max stack 10x smaller.
2386
2387 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2388
2389         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2390
2391 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2392
2393         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2394
2395 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2396
2397         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2398         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2399
2400         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2401
2402         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2403
2404         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2405
2406         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2407         the compilation.
2408
2409 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2410
2411         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2412         raise an invalid program exception.   
2413
2414         For other opcodes that we might not handle use a g_warning and
2415         raise the exception.   Beats termination.
2416
2417         Fixes #561724
2418
2419 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2420
2421         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2422
2423         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2424         by merging the LLVM and !MAP_32BIT cases.
2425
2426 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2427
2428         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2429         sigctx being passed in, as we have no CONTEXT available in the APC.
2430
2431         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2432         for now.
2433
2434         Code contributed under MIT/X11 license.
2435
2436 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2437
2438         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2439         in the LLVM backend on AMD64.
2440
2441         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2442         FDE.
2443
2444         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2445
2446         * mini-llvm.c: Export mono_personality for AOT.
2447
2448         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2449
2450         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2451         implicit exception can occur.
2452
2453         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2454         OP_IMPLICIT_EXCEPTION instruction.
2455
2456         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2457
2458         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2459
2460         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2461         inside a protected block.
2462
2463         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2464         trampolines doesn't include the argument.
2465
2466         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2467         trampolines on amd64.
2468
2469         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2470         of RDI.
2471
2472         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2473         disabled for methods with clauses.
2474
2475         * mini-llvm.c: Enable support for catch clauses.
2476
2477         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2478         end of an LLVM compiled finally clause.
2479         (mono_handle_exception_internal): Save the exception handling state in TLS
2480         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2481         resume unwinding from that point.
2482
2483         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2484         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2485         to obtain the addresses of the exception handling regions.
2486
2487         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2488         finally clauses are supported.
2489
2490         * mini.c (mini_method_compile): Add support for LLVM code with exception
2491         handlers.
2492
2493 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2494
2495         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2496         proper size.
2497
2498 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2499
2500         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2501         as a primitive type.
2502
2503 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2504
2505         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2506         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2507         #564000.
2508
2509 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2510
2511         * method-to-ir.c (mini_redirect_call): do not redirect the
2512         InternalAllocateStr internal call if string profiling is enabled.
2513
2514 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2515
2516         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2517         generic methods.
2518
2519         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2520         unwind.h header file.
2521
2522         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2523         newer valgrind versions seems to handle this fine.
2524
2525 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2526
2527         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2528         on the debugger thread.
2529
2530 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2531
2532         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2533
2534         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2535
2536         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2537
2538         * cpu-<ARCH>.md: Make call_handler clob:c.
2539
2540         * mini.c: Reenable SSA for methods with clauses.
2541
2542         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2543         as it causes failures on x86.
2544
2545 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2546
2547         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2548         returns NULL (e.g. a bad assembly).
2549
2550 2009-12-08  Geoff Norton  <gnorton@novell.com>
2551
2552         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2553         stepping out into native code.  There were issues with nested invokes
2554         like .cctors.
2555
2556 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2557
2558         * mini.c (mini_method_compile): Do the disable_llvm checks early
2559         and avoid the LLVM compile pass if the checks fail.
2560
2561         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2562
2563         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2564         LLVM optimizations don't try to remove them.
2565
2566         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2567         different file so the original remains.
2568
2569 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2570
2571         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2572
2573         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2574
2575         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2576         support for non-inline unwind descriptors.
2577
2578 2009-12-07  Geoff Norton  <gnorton@novell.com>
2579
2580         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2581         the interrupt_count slightly differently.  Native threads were never
2582         marked as resumed.
2583
2584 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2585
2586         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2587         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2588         yet generate this info.
2589
2590         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2591
2592         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2593         client can distinguish between intptrs and longs.
2594
2595 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2596
2597         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2598         blob.
2599
2600         * aot-runtime.c (load_function): Update after the change above.
2601
2602         * mini.h: Bump AOT file format version.
2603
2604         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2605         if the delegate class is dynamic.
2606
2607         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2608         in gshared code too using the new rgctx info type
2609         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2610
2611 2009-12-04  Geoff Norton  <gnorton@novell.com>
2612
2613         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2614         we need to track the original suspend count so the thread properly
2615         wakes up in resume_thread.
2616
2617 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2618
2619         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2620         code.
2621
2622         * generics.cs: Add a test.
2623
2624         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2625         is 0. Simplify a lot of code using this.
2626
2627         * mini-trampolines.c (mono_delegate_trampoline): Call
2628         mono_create_static_rgctx_trampoline () before saving the final address in
2629         delegate->method_code, to avoid calling it each time a delegate is first called.
2630
2631         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2632         which need static rgctx trampolines.
2633
2634         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2635         keyed on the method+addr pair, since addr could be either the method addr or
2636         an unbox trampoline in the AOT case. Fixes #560246.
2637
2638 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2639
2640         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2641         place it was called before too.
2642
2643 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2644
2645         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2646         if no security manager is present, to speed up the AOT case. Call
2647         mono_class_vtable () full with raise_on_error == TRUE instead.
2648
2649 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2650
2651         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2652         the local optimization passes can take its result into account. Fixes
2653         #559876.
2654
2655         * exceptions.cs: Add a test.
2656
2657 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2658
2659         This patch is contributed under the terms of the MIT/X11 license
2660
2661         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2662
2663 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2664
2665         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2666
2667         * debugger-agent.c: Rework the handling of stack traces of running threads to
2668         avoid crashes if compute_frames () tries to walk the stack of running thread.
2669
2670         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2671
2672         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2673
2674         * mini.h (StackFrameInfo): Add an 'lmf' field.
2675
2676 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2677
2678         * debugger-agent.c (suspend_current): Always set really_suspended.
2679
2680         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2681
2682         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2683
2684 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2685
2686         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2687         really suspended.
2688
2689 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2690
2691         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2692
2693 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2694
2695         * mini-trampolines.c: Fix MSVC build.
2696
2697 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2698
2699         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2700
2701 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2702
2703         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2704         the instruction following an OP_FCOMPARE is optimized away.
2705
2706 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2707
2708         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2709         emit_autoreg () into this arch-specific function.
2710
2711         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2712         code, it is no longer needed.
2713
2714         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2715
2716         * mini.h: Bump AOT file format version.
2717
2718         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2719         using the sorted_code_offsets array, instead of reading it from the
2720         exception debug info.
2721         (load_method): Call mono_aot_find_jit_info instead of
2722         decode_exception_debug_info ().
2723
2724         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2725         LLVM compiled as a flag.
2726
2727 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2728
2729         * debugger-agent.c (resume_thread): Fix a warning.
2730
2731         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2732         generated.
2733
2734 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2735
2736         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2737         contents to MonoAotFileInfo.
2738
2739 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2740
2741         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2742         Put all binary data into a giant blob, similarly to the way .net assemblies
2743         store binary data. Emit offset tables in a compact form to reduce their size.
2744
2745         * mini.h: Bump AOT file format version.
2746
2747         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2748         places.
2749
2750         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2751         avoid linear searches at runtime.
2752
2753         * aot-runtime.c (find_symbol): Update this to use the hash.
2754
2755         * mini.h: Bump AOT file format version.
2756
2757 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2758
2759         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
2760         container.
2761
2762         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
2763         too.
2764
2765         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
2766         the distribution of got slot types.
2767
2768         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
2769
2770         * method-to-ir.c: Add support for generating explicit null checks.
2771
2772 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2773
2774         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
2775         on a random thread if possible.
2776
2777         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
2778         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
2779         correctly.
2780
2781         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
2782         regs. Pass the real size of the regs array to mono_unwind_frame ().
2783
2784         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
2785         ones instead.
2786
2787 2009-11-24  Geoff Norton  <gnorton@novell.com>
2788
2789         * mini-darwin.c: Work around apple bug rdar://7209349  See
2790         http://openradar.appspot.com/7209349 for details.  Synopsis,
2791         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
2792         never been initialized before.
2793
2794 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2795
2796         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
2797
2798         * mini-arm.c (mono_arm_thumb_supported): New helper function.
2799
2800 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2801
2802         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
2803         OP_SHL_IMM is not 32 bit.
2804
2805 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2806
2807         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
2808
2809 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2810
2811         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
2812         encountered.
2813
2814         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
2815         > 0 since some threads can resume if their resume_count is > 0.
2816         (invoke_method): Avoid reading freed memory.
2817
2818         * debugger-agent.c (process_suspend): Extract the suspend code from
2819         process_single_step_inner () to a separate function. Rework the code to prevent
2820         races between this function and thread interrupts.
2821
2822         * debugger-agent.c (suspend_current): Check the resume_count field instead
2823         of resume_one so suspends+resumes during single threaded invokes work
2824         correctly.
2825
2826 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
2827
2828         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
2829         to make the generated code smaller.
2830
2831         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
2832         sequence generated by recent LLVM versions.
2833
2834         * mini-llvm.c: Add support for a few simple cases which weren't supported
2835         before.
2836
2837         * mini-trampolines.c (mono_magic_trampoline): Don't call
2838         mono_arch_get_vcall_slot () when llvm is enabled.
2839
2840         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
2841
2842         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
2843         into a new function called common_call_trampoline () which is used by the
2844         llvm vcall trampoline as well.
2845
2846         * debugger-agent.c: Implement single threaded invokes.
2847
2848         * debugger-agent.c: Revert change which broke the agent on linux.
2849
2850         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
2851         #557606.
2852
2853         * generics.cs: Add a test.
2854
2855 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
2856
2857         * debugger-agent.c: Fix the cygwin build.
2858
2859 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2860
2861         * cprop.c: Remove this unused file.
2862
2863 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2864
2865         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
2866         #557262.
2867
2868         * basic.cs: Add a test.
2869
2870 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2871
2872         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
2873         in one more place.
2874
2875 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
2876
2877         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
2878         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
2879         it. Use this flag to control llvm related code paths instead of #ifdef
2880         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
2881         AOT code.
2882
2883         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
2884
2885         * mini.h: Bump AOT file format version.
2886
2887         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
2888         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
2889
2890         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
2891         was used as an assembly filter.
2892
2893 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2894
2895         * unwind.c: Fix support for ppc.
2896
2897         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
2898         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
2899
2900 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2901
2902         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
2903         port.
2904         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
2905         added by the ps3 changes.
2906
2907 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2908
2909         * mini-gc.c: Resurrect this, so at least it compiles.
2910
2911         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
2912
2913 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
2914
2915         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
2916         create_event_list () so assembly filters can be used.
2917
2918         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
2919         from the LMF.
2920
2921 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
2922
2923         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
2924         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
2925         is disabled.
2926
2927         * aot-compiler.c (add_generic_instances): Emit instances of common generic
2928         classes for char/bool too.
2929
2930         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
2931
2932         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
2933         used.
2934
2935         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
2936         Fix warnings.
2937
2938 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
2939
2940         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
2941         
2942         Code contributed under MIT/X11 license.
2943
2944 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
2945
2946         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
2947         threads in native code work.
2948
2949         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
2950         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
2951         version.
2952
2953 2009-11-13 Jonathan Chambers <joncham@gmail.com>
2954
2955         * debugger-agent.c: Implementation for Windows platform.
2956
2957         * mini-x86.c: Add support for Windows. Use mono-* synchronization
2958         primitives. Use SEH to implement breakpoints and single stepping.
2959
2960         * mini-x86.h: Enable soft debugger on Windows.
2961
2962         Code contributed under MIT/X11 license.
2963
2964 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2965
2966         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
2967         under XEN. Fixes #522894.
2968
2969         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
2970
2971         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
2972         interface calls in LLVM AOT code.
2973
2974         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
2975         is found.
2976
2977         * mini-llvm.c: Add support for OP_VPHI.
2978
2979         * objects.cs: Add a test.
2980
2981 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2982
2983         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
2984         this is called on the debugger thread.
2985
2986 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
2987
2988         * mini-llvm.c: Add soft-float support.
2989
2990         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
2991         FCALL which returns an R4.
2992
2993         * driver.c (mono_main): Add a missing '\n'.
2994
2995         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
2996         platforms which doesn't support the LLVM IMT trampoline.
2997
2998 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
2999
3000         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
3001
3002         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
3003
3004         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
3005         virtual calls.
3006
3007         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3008
3009 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3010
3011         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3012         Instead of emitting a method_order table, sort the contents of the code_offsets
3013         table and do a binary search in the sorted table. The previous approach doesn't
3014         work with LLVM which emits methods in a arbitrary order.
3015
3016         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3017         in the .eh_frame section in ELF files.
3018
3019         * mini.h: Bump corlib file format version.
3020
3021         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3022
3023         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3024         LDMIA->LDM macro name change.
3025
3026 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3027
3028         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3029         x86.
3030
3031         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3032         SVN.
3033
3034         * aot-compiler.c: Ditto.
3035
3036         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3037         &align to mini_type_stack_size_full ().
3038
3039         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3040
3041         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3042
3043 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3044
3045         * mini-arm.c: Compute the stack space used by arguments using
3046         mini_type_stack_size_full ().
3047
3048 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3049
3050         * optflags-def.h: Remove dead TREEPROP optimization.
3051
3052 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3053
3054         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3055
3056         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3057
3058 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3059
3060         * driver.c (mono_jit_parse_options): New public API function to parse options
3061         as done by the runtime executable.
3062
3063         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3064         when handling named arguments.
3065
3066 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3067
3068         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3069         for passing small vtypes in registers, make the CallInfo structures more
3070         similar to the code on the other platforms.
3071
3072         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3073         the code in the prolog requires it.
3074
3075 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3076
3077         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3078         (koush@koushikdutta.com).
3079
3080         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3081         where the thunk memory should be allocated from. Fixes appdomain unloading
3082         on arm.
3083
3084 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3085
3086         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3087         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3088
3089 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3090
3091         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3092         AOT, as it is not implemented yet.
3093
3094         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3095
3096 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3097
3098         * debugger-agent.c: Fix windows build.
3099
3100 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3101
3102         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3103         after the client connects/disconnects.
3104
3105         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3106         when an exception of a given type is thrown.
3107
3108         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3109         only on an uncaught exception.
3110
3111         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3112
3113         * debugger-agent.c: Add a 'launch' option.
3114
3115 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3116
3117         * debugger-agent.c: Add a 'timeout' option.
3118
3119 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3120
3121         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3122         the JDWP agent.
3123
3124 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3125
3126         * debugger-agent.c (set_breakpoint): Emit a log message.
3127
3128 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3129
3130         * mini-arm.c: Fix the arm build.
3131
3132 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3133
3134         * aot-compiler.c: don't leak the value returned from
3135         mono_type_full_name().
3136
3137 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3138
3139         * debugger-agent.c: defer including mono-mutex.h until we know the
3140         agent is supported.
3141
3142 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3143
3144         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3145         of pthreads directly.
3146
3147         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3148         exception handlers. Pass info argument.
3149
3150         * mini.h: Adjust signatures of soft debugger functions to pass void*
3151         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3152
3153         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3154         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3155         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3156         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3157
3158         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3159
3160         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3161         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3162         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3163         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3164
3165         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3166
3167         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3168
3169         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3170
3171         * mono-semaphore.h: Skeleton implementation for Windows.
3172
3173         Code contributed under MIT/X11 license.
3174
3175 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3176
3177         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3178
3179         Code contributed under MIT/X11 license.
3180
3181 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3182
3183         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3184
3185         Code contributed under MIT/X11 license.
3186
3187 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3188
3189         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3190         debug info to 100 because 10 still slows down gdb too much.
3191
3192         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3193         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3194         them in the wrappers.
3195
3196 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3197
3198         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3199
3200         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3201
3202         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3203         function mono_aot_get_array_helper_from_wrapper ().
3204
3205         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3206         array helper methods.
3207
3208 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3209
3210         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3211         the value was loaded from memory.
3212
3213         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3214         the value was loader from there.
3215
3216         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3217         without constant swizzle.
3218
3219 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3220
3221         * mini-amd64.c: Put soft debugger functions behind a
3222         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3223
3224         * mini-amd64.h: disable the soft debugger in windows.
3225
3226         Code contributed under MIT/X11 license.
3227
3228 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3229
3230         * mini-x86.c: Put soft debugger functions behind a
3231         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3232
3233         Code contributed under MIT/X11 license.
3234
3235 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3236
3237         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3238         to mono_arch_find_jit_info_ext.
3239
3240         Code contributed under MIT/X11 license.
3241
3242 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3243
3244         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3245
3246         * debugger-agent.c: Add support for filtering events by assemblies.
3247
3248         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3249         the agent is not enabled.
3250
3251 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3252
3253         * exceptions-x86.c: hopefully last change to fix the windows build.
3254         This one courtesy of Jonathan Chambers.
3255
3256 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3257
3258         * debugger-agent.c: remove unused function.
3259
3260 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3261
3262         * debugger-agent.c: add #ifdefs for a few header files.
3263         * mini-x86.h: disable the soft debugger in windows.
3264         Step 1 of 2 to make this compile on windows with gcc.
3265
3266 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3267
3268         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3269         as it breaks the build.
3270
3271 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3272
3273         Merge the soft debugger branch.
3274
3275         * debugger-agent.h debugger-agent.c: New files containing the soft
3276         mode debugger module.
3277
3278         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3279         at the appropriate locations.
3280
3281         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3282         opcode.
3283
3284         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3285         enable/disable single stepping.
3286
3287         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3288         which returns all information in a StackFrameInfo structure, and can handle the
3289         LMF frames added by the debugger.
3290
3291         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3292         about an LMF frame.
3293
3294         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3295         walker function which works on a specific thread and passes a StackFrameInfo
3296         structure to its callback.
3297
3298         * mini.c (mini_init): Initialize the debugger agent.
3299
3300         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3301
3302         * mini-ops.h: Add OP_SEQ_POINT opcode.
3303
3304         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3305         arguments to the debugger agent.
3306
3307 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3308
3309         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3310         speed things up.
3311
3312         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3313
3314         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3315
3316         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3317
3318         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3319         if needed.
3320         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3321         sets the IMT argument and makes a virtual call.
3322
3323         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3324
3325 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3326
3327         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3328         the windows build.
3329
3330 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3331
3332         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3333         runtime. Fixes #551228.
3334
3335 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3336
3337         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3338
3339         * basic.cs: Add a test.
3340
3341         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3342         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3343         CONSTRAINED. Fixes #550964.
3344
3345         * generics.cs: Add a test.
3346
3347 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3348
3349         * mini-posix.c (add_signal_handler): Use
3350         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3351
3352 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3353
3354         Contributed under the terms of the MIT/X11 license by
3355         Jerry Maine <crashfourit@gail.com>.
3356
3357         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3358         sse4a for simd intrinsics.
3359
3360         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3361         sse4a for simd intrinsics.
3362
3363 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3364
3365         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3366         instead of inst_p1 which is not the same on ILP32 platforms.
3367
3368 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3369
3370         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3371         not the mscorlib one before calling mono_get_lmf_addr.
3372
3373         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3374         of the ip to the LMF.
3375
3376         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3377         immediate in the op->op_imm optimization.
3378
3379         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3380         understand. VTypes now work, but are not abi compliant, as they are
3381         split into 4 byte parts instead of 8.
3382         (emit_memcpy): Fix the unrolled case to work on the PS3.
3383
3384         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3385
3386         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3387         the default when static linking.
3388
3389         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3390
3391         * aot-compiler.c: Add an autoreg option to automatically register
3392         statically linked aot modules using ELF .ctors.
3393
3394         * genmdesc.pl: Add __ppc64__ to allowed defines.
3395
3396 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3397
3398         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3399         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3400
3401 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3402
3403         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3404
3405 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3406
3407         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3408         which will contain the domain where the method was found.
3409
3410         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3411         mini_jit_info_table_find ().
3412
3413         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3414
3415         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3416
3417 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3418
3419         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3420         set, its not supported yet.
3421
3422 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3423
3424         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3425         iface wrapper is not found.
3426         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3427
3428 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3429
3430         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3431         which have a different name.
3432
3433         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3434         wrappers and Array.GetGenericValueImpl ().
3435
3436         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3437         because of the change above.
3438
3439         * generics.cs: Add a test for full aot + generic array ifaces.
3440
3441 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3442
3443         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3444         that hides the previous one.
3445
3446 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3447
3448         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3449         marshalled. Fixes #541623.
3450
3451 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3452
3453         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3454
3455 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3456
3457         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3458
3459 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3460
3461         * mini-posix.c (sigprof_signal_handler):
3462         Implemented support for building stat call chans in different ways.
3463
3464 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3465
3466         * mini-exceptions.c (mono_find_jit_info):
3467         Also check that a jit info has been found (fixes a profiler crash).
3468
3469 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3470
3471         * mini.c (mono_codegen):
3472         Call mono_profiler_code_buffer_new with correct code address.
3473
3474 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3475
3476         * driver.c (mono_main): Change the date in the copyright.
3477
3478 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3479
3480         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3481         allocator in shared generic code for open classes, because we
3482         can't get those classes' vtables.  We need to make managed
3483         allocators not depend on the vtable at compile-time to solve this.
3484
3485 2009-10-13  Martin Baulig  <martin@ximian.com>
3486
3487         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3488         `const guint8 *trampoline' argument; send both the old and the new
3489         notification.
3490
3491 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3492
3493         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3494         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3495         (can_marshal_struct): Skip structures with auto layout.
3496
3497         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3498
3499 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3500
3501         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3502         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3503         a variable to hold the stack slot used by the int<->float conversion opcodes.
3504
3505         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3506
3507 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3508
3509         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3510         when using full-aot.
3511
3512 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3513
3514         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3515         each instance of Comparer<T>.
3516
3517         * generics.cs: Add a new test.
3518
3519 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3520
3521         * driver.c (parse_debug_options): Add a 'gdb' option.
3522
3523         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3524
3525         * image-writer.c: Add support for emitting the image into a memory buffer.
3526
3527         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3528
3529         * aot-compiler.c: Add support for registering debug info with GDB using the
3530         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3531         MONO_XDEBUG to 'gdb'.
3532
3533 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3534
3535         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3536         gdb mode.
3537
3538 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3539
3540         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3541         can be used to set breakpoints in gdb.
3542
3543         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3544         segment to an absolute address.
3545
3546 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3547
3548         * method-to-ir.c: Use the managed array allocator method if
3549         available.
3550
3551 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3552
3553         * aot-compiler.c : Fix the MSVC builds
3554
3555         Code is contributed under MIT/X11 license.
3556
3557 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3558
3559         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3560         avoid registering 1 symbol file per method with gdb.
3561
3562 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3563
3564         * mini-sparc.c: Fix the handling of enums with base type long.
3565
3566         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3567
3568         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3569         instead of using type->data.klass as the later doesn't work with generics.
3570
3571 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3572
3573         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3574         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3575         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3576         works differently now and we don't handle it in the JIT anymore.
3577
3578         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3579         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3580         the Thread class split.
3581
3582 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3583
3584         * driver.c: Don't run tests with the obsolete treeprop optimization.
3585
3586         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3587         variable volatile. Fixes #541577.
3588
3589         * basic-calls.cs: Add a new test.
3590
3591         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3592
3593 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3594
3595         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3596         work/required with recent iphone sdk versions.
3597
3598         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3599         structures.
3600
3601         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3602         in the VCALL decomposition code.
3603
3604 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3605
3606         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3607
3608         * basic.cs: Add a test.
3609
3610         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3611         generic invokes.
3612
3613         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3614         searches all the domains of the current thread.
3615
3616         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3617
3618 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3619
3620         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3621         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3622
3623         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3624         for non-jit trampolines.
3625
3626         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3627
3628         * aot-compiler.c (add_wrappers): Ditto.
3629
3630         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3631         the size of the param area used by dyn_call to 6 which covers the majority of
3632         methods.
3633
3634         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3635
3636         * mini-arm.c: Implement support for passing/receiving
3637         longs and receiving floats in the dyn_call code.
3638
3639         * mini-amd64.c: Implement support for receiving vtypes in registers in
3640         the dyn_call code.
3641
3642         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3643         the dyn_call code.
3644
3645 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3646
3647         * mini-arm.c (get_call_info): Return more precise information in
3648         ArgInfo->regtype.
3649         (dyn_call_supported): Use the information in CallInfo.
3650
3651         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3652
3653         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3654         code.
3655
3656         * mini-arm.c: Update after the dyn_call api changes.
3657
3658         * mini.c (mini_create_jit_domain_info): Register a destructor function
3659         for the runtime_invoke_hash.
3660
3661         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3662         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3663         this function.
3664         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3665         (dyn_call_supported): Simplify this by using get_call_info ().
3666         (mono_arch_dyn_call_free): New destructor function.
3667
3668         * generics.cs: Remove a printf.
3669
3670         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3671
3672         * mini-arm.c: Add support for enum return values and passing a few arguments
3673         on the stack.
3674         
3675         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3676         dyn invoke.
3677
3678         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3679
3680         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3681         the dynamic invoke wrappers.
3682
3683         * mini-arm.c: Implement OP_DYN_CALL for arm.
3684
3685         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3686         supported by the dynamic runtime invoke wrapper.
3687
3688         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3689         runtime invoke wrapper.
3690
3691         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3692         if possible when running with full-aot.
3693
3694         * mini-ops.h: Add OP_DYN_CALL opcode.
3695
3696         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3697         with dynamic arguments lists similar to libffi.
3698
3699 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3700
3701         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3702         
3703         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3704         to NEWARR.
3705
3706         * iltests.il.in: Add a new test.
3707         
3708 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3709
3710         * aot-compiler.c (add_generic_instances): Add more instances of
3711         GenericEqualityComparer.
3712
3713 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3714
3715         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3716
3717 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3718
3719         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3720         comments on some functions that now can fail.
3721
3722 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3723
3724         * Makefile.am: Add Info.plist to EXTRA_DIST
3725
3726 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3727
3728         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3729         static synchronized wrappers. Fixes #539500.
3730
3731 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3732
3733         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3734         properly.
3735
3736 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3737
3738         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3739         lmf before calling filter clauses as well. Fixes #539550.
3740
3741         * exceptions.cs: Add a test.
3742         
3743 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3744
3745         * aot-compiler.c (add_generic_class): Add instances of
3746         Array.GetGenericValueImpl as well.
3747
3748         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3749         can be tested too.
3750
3751         * generics.cs: Add a fullaot linq test.
3752
3753 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3754
3755         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3756         reg r1 on arm.
3757
3758 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3759
3760         * mini-trampolines.c (mono_delegate_trampoline) : Call
3761           mono_cominterop_get_invoke if the delegate target object
3762           is a COM object.
3763
3764         Code is contributed under MIT/X11 license.
3765
3766 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
3767
3768         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
3769         internal call is defined outside platform code. Reduce code 
3770         duplication with existing [Method|Field]AccessException
3771
3772 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3773
3774         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
3775         if the return value is a small struct passed on regs.
3776
3777 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
3778
3779         * cpu-arm.md mini-arm.c: Remove unused opcodes.
3780
3781         * mini-codegen.c: Enable the cpu description validation for arm.
3782
3783 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
3784
3785         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
3786         test which depends on structs to objects.cs.
3787         
3788         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
3789         require object model related stuff working.
3790
3791         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
3792
3793         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
3794
3795         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
3796         against the instruction metadata in mini-ops.h. amd64 only for now.
3797
3798         * mini-ops.h: Fix some instruction descriptions.
3799
3800         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
3801         unused instructions.
3802
3803 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3804
3805         * exceptions.cs: Add a new test.
3806
3807 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
3808
3809         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
3810
3811 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3812
3813         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
3814         skip empty phi opcodes.
3815         
3816         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
3817         correctly by zero extending after loads. Skip methods containing calls
3818         to the monitor enter/exit trampolines.
3819
3820         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
3821         when calling mono_thread_force_interruption_checkpoint ().
3822
3823         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
3824
3825         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
3826         64 bit thunks.
3827         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
3828
3829         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
3830         bootstrap could run.
3831
3832 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
3833
3834         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
3835
3836 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3837
3838         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
3839         of the method to
3840         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3841         LLVM might be very short.
3842
3843         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
3844         in OP_THROW/RETHROW.
3845
3846         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
3847         alignment on osx.
3848
3849 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3850
3851         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
3852         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3853         LLVM might be very short.
3854
3855 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
3856
3857         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
3858         the alignment for the value of sp.
3859
3860 2009-09-01  Geoff Norton  <gnorton@novell.com>
3861
3862         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
3863         managed wrappers in full aot.
3864
3865 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
3866
3867         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
3868
3869 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
3870
3871         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
3872
3873 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3874
3875         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
3876
3877         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
3878         saved info.
3879
3880         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3881
3882         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
3883         depend on the info MonoMethodHeader which could be missing in IL stripped
3884         assemblies.
3885
3886 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3887
3888         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
3889         they are only 4 byte aligned.
3890
3891 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
3892
3893         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
3894         was done previously, since using SP causes too many problems.
3895
3896         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
3897         frames without a frame pointer works.
3898
3899         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
3900         global register in methods with calls, since the calls can go through
3901         a static rgctx trampoline which doesn't save it.
3902
3903 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
3904
3905         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
3906
3907 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3908
3909         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
3910
3911 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3912
3913         * method-to-ir.c: Fix warnings for uninitialized variables.
3914
3915 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3916
3917         * mini-exceptions.c:
3918         * aot-compiler.c: Fix printf warnings.
3919
3920 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3921
3922         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
3923         Add GetGenericValueImpl<string>.
3924         
3925         * aot-compiler.c (add_generic_instances): Add instances of
3926         GenericEqualityComparer<T> for primitive types. Only emit the array
3927         wrappers into the mscorlib image.
3928
3929 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
3930
3931         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
3932         the methods_loaded array using amodule->info->nmethods.
3933
3934         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
3935         (MONO_AOT_FILE_VERSION): Bump this.
3936
3937         * aot-compiler.c: Emit more generic instances allowing some parts of linq
3938         to work.
3939
3940         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
3941         MonoJitInfo doesn't belong to its methods aot image.
3942
3943 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
3944
3945         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
3946
3947         * mini-arm.c: Fix warnings.
3948         
3949         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
3950
3951         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
3952         supports it.
3953
3954 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
3955
3956         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
3957         avoid clobbering IP.
3958
3959         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
3960         hold the trampoline argument, so its initial value is available during
3961         debugging.
3962
3963 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
3964
3965         * exceptions-arm.c:
3966         * exceptions-hppa.c:
3967         * mini.c:
3968         * exceptions-s390x.c:
3969         * exceptions-mips.c:
3970         * exceptions-ppc.c:
3971         * exceptions-sparc.c:
3972         * exceptions-alpha.c:
3973         * aot-runtime.c:
3974         * mini-trampolines.c:
3975         * exceptions-x86.c:
3976         * exceptions-s390.c: add and use #define's instead of sizeof()
3977         for MonoJitInfo and MonoJitInfoTable.
3978
3979 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3980
3981         * tramp-arm.c:
3982         * tramp-amd64.c:
3983         * tramp-ppc.c:
3984         * tramp-x86.c: use a #define instead of sizeof() for a few
3985         structures that use a zero-length array.
3986
3987 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
3988
3989         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
3990         case when the method is dynamic. Fixes #529238.
3991
3992 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
3993
3994         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
3995         of asserting when a method is JIT compiled in full-aot mode.
3996
3997 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
3998         
3999         Contributed under the terms of the MIT/X11 license by
4000         Jerry Maine <crashfourit@gail.com>.
4001         
4002         * fixed wrong dates in changelog.
4003
4004 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4005         
4006         Contributed under the terms of the MIT/X11 license by
4007         Jerry Maine <crashfourit@gail.com>.
4008
4009         * basic-simd.cs: added test for packed double square root.
4010         * cpu-amd64.md: added opcode info for packed double square root.
4011         * cpu-x86.md: added opcode info for packed double square root.
4012         * mini-ops.h: added IR opcode for packed double square root.
4013         * mini-x86.c: added IR to native translation code for packed double square root.
4014         * mini-amd64.c: removed todo for packed double square root.
4015         * simd-intrinsics.c: added method to IR opcode converstion for
4016         packed double square root.
4017
4018 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4019
4020         Contributed under the terms of the MIT/X11 license by
4021         Jerry Maine <crashfourit@gail.com>.
4022
4023         * mini-amd64.c: Added a change to help tell the difference as 
4024         to what perpose the xmm register is being used--mainly to help
4025         with debuging.
4026         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4027         (one used for special cases) xmm registers for both fp
4028         and simd ops. Added define to turn on new feature in the regalloc
4029         that allows fp and simd ops to share the xmm regs happily.
4030         * codegen.c: Added code to detect for which perpose an xmm reg is
4031         being used (fp or simd) and to translate back and forth to the
4032         correct logical reg bank (fp or simd) for 'spill load's.
4033
4034 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4035
4036         Contributed under the terms of the MIT/X11 license by
4037         Jerry Maine <crashfourit@gail.com>.
4038
4039         * basic-simd.cs: Added tests for stressing the regalloc when running with
4040         16 simd regs and when simd and fp ops share the same reg bank.
4041
4042 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4043
4044         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4045         in shared generic code, we might have to look up the class in the
4046         RGCTX.  If we use the class directly, compute its GC descriptor.
4047
4048 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4049
4050         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4051
4052 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4053
4054         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4055         check for errors. Fixed the case when the class with the Main
4056         method is broken.
4057
4058 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4059
4060         Contributed under the terms of the MIT/X11 license by
4061         Jerry Maine <crashfourit@gail.com>.
4062
4063         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4064
4065 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4066
4067         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4068
4069 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4070
4071         * method-to-ir.c: Fix naming of stelem and ldelem.
4072
4073 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4074
4075         * driver.c (main_thread_handler): Check that the assembly loaded
4076         matches the filename when doing AOT.
4077
4078 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4079
4080         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4081         call it anymore.
4082
4083         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4084         utils/mono-sigcontext.h).
4085
4086         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4087         #ifdef.
4088
4089 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4090
4091         * mini.c (mono_codegen):
4092         Call profiler hook to keep track of method code buffers.
4093
4094 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4095
4096         * method-to-ir.c: Invoke write barriers for the
4097         Interlocked.(Compare)Exchange JIT intrinsics.
4098
4099 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4100
4101         * Makefile.am (version.h): Fix issues when built out of tree.
4102         Remove some redundant 'grep's piped through 'sed's.
4103
4104 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4105
4106         This patch is contributed under the terms of the MIT/X11 license
4107
4108         * mini-ppc.c (mono_arch_output_basic_block):
4109         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4110         for bits 32-47 with signed load/store diplacements for bits
4111         48-63.  Use prefered base/offset order for indexed form.
4112         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4113         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4114         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4115         OP_LOADI2_MEMBASE): Same.
4116         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4117         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4118         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4119         indexed form.
4120         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4121         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4122         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4123         OP_LOADI1_MEMINDEX): Same
4124         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4125         OP_STORER8_MEMINDEX): Same
4126         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4127         computations.
4128         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4129         for bits 32-47 with signed load/store diplacements for bits
4130         48-63.  Use prefered base/offset order for indexed form.
4131
4132 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4133
4134 This patch is contributed under the terms of the MIT/X11 license
4135
4136         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4137         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4138         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4139         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4140         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4141         cfg->stack_usage to avoid size warnings.
4142         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4143         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4144         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4145         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4146         to convert.
4147         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4148         after code varible is initialized.
4149         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4150         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4151         (mono_arch_emit_epilog): 
4152         Move Use ppc_load32 for cfg->stack_usage to avoid size
4153         warnings.
4154
4155 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4156
4157         * method-to-ir.c: The write barrier doesn't do the store anymore,
4158         so we have always to emit it.  Also, emit the wbarrier after the
4159         store.
4160
4161 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4162
4163         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4164         for argument count 3 too.
4165
4166 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4167
4168         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4169         the caller handle the exceptions.
4170         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4171         method. Fixes #524498.
4172
4173 2009-07-22  Geoff Norton  <gnorton@novell.com>
4174
4175         * mini-exceptions.c: Fix build on ia64.
4176
4177 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4178
4179         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4180         barriers.
4181
4182 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4183
4184         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4185         code.
4186
4187 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4188
4189         * basic-simd.cs (Main): Pass args to the test driver.
4190
4191 2009-07-20  Geoff Norton  <gnorton@novell.com>
4192
4193         * mini-x86.h: Fix the x86 version guards to use Apple's
4194         properly defined macros.
4195
4196 2009-07-20  Geoff Norton  <gnorton@novell.com>
4197
4198         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4199         aligned access.
4200
4201 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4202
4203         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4204         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4205         the information which is needed for invokes, so only one locking+hash table
4206         lookup is needed.
4207
4208         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4209         
4210         * aot-compiler.c (add_generic_instances): Emit instances of 
4211         GenericComparer<T> for primitive types.
4212
4213 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4214
4215         * mini-posix.c: Fix linux build.
4216
4217 2009-07-19  Geoff Norton  <gnorton@novell.com>
4218
4219         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4220         mono_gdb_render_native_backtraces
4221         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4222         so we implement the sane semantics to the runtime here
4223         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4224         so we need to call it differently (mono_gdb_render_native_backtraces)
4225         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4226         here for default implementations.
4227         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4228         support Apple's weird syscall (SYS_fork) implementation and not busy
4229         loop in abort() on native crashes on OSX anymore.
4230
4231 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4232
4233         * aot-runtime.c (load_method): Change the handling of the
4234         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4235         are used.
4236
4237         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4238
4239 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4240
4241         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4242         seems to break the aot tests.
4243         
4244         * mini.c (mono_patch_info_equal): Fix the handling of 
4245         MONO_PATCH_INFO_RGCTX_FETCH.
4246
4247 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4248
4249         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4250
4251         * mini.c (mono_patch_info_hash): Fix the handling of 
4252         MONO_PATCH_INFO_INTERNAL_METHOD.
4253         (mono_patch_info_equal): Ditto.
4254
4255 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4256
4257         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4258         in a few places.
4259         
4260         * mini-llvm.c: Add some infrastructure for AOT support.
4261
4262 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4263
4264         * mini-llvm-cpp.c: Update to the latest llvm api.
4265         
4266         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4267         option to false to prevent llvm from installing signal handlers which
4268         trip up the gc.
4269         
4270 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4271
4272         * cpu-x86.md:
4273         * cpu-amd64.md: Revert previous change as those instructions
4274         take 2 separate arguments. Remember to read the arch docs more
4275         carefully next time.
4276
4277 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4278
4279         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4280
4281 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4282
4283         * mini-ppc.c: exploit multiple load/store units if available (rest of
4284         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4285         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4286
4287 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4288
4289         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4290         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4291
4292 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4293
4294         * cpu-x86.md: Fix missing clobbering from trancendental simd
4295         ops.
4296
4297         * cpu-amd64.md: Same.
4298
4299 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4300
4301         Contributed under the terms of the MIT/X11 license by
4302         Jerry Maine <crashfourit@gail.com>.
4303
4304         * basic-simd.cs: Added tests for single and doulble indexers.
4305
4306         * cpu-amd64.md: Added simd opcode information.
4307
4308         * mini-amd64.c: Added IR to native simd generation code.
4309         Added simd register names and function that returns them.
4310
4311         * mini-amd64.h: Added marcos to turn on simd code compilation in
4312         amd64. Added max simd register count marco. Added caller/callee
4313         register mask marcos. Added marcos to use simd register bank.
4314
4315         * mini.h: Added helper marco for shufling dwords and simple
4316         floats.
4317
4318 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4319
4320         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4321
4322         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4323
4324         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4325         the length of the native code as well.
4326
4327         * basic-simd.cs: Add a test for #521662.
4328
4329 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4330
4331         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4332
4333 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4334
4335         * mini.c: Register function for getting the IP from a signal
4336         context with metadata.
4337
4338 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4339
4340         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4341         call a generic class init trampoline if needed. Fixes #519336.
4342
4343         * generics.cs: Add a test.
4344         
4345 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4346
4347         * method-to-ir.c: When doing a call which might be remote from
4348         shared generic code to other shared code with open type arguments,
4349         get the remoting invoke wrapper from the RGCTX and do an indirect
4350         call to it.
4351
4352 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4353
4354         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4355         after the unbox trampoline in the full-aot case.
4356
4357 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4358         
4359         * mini.c: Move initialization of jit_mutex before debugger initialization
4360         
4361         to avoid crashes.
4362         
4363         
4364         * Info.plist: added Info.plist and link flag to enable the mono executable
4365         to access other processes. Requires codesigning of the executable to work.
4366         
4367         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4368         
4369         compile on OS X.
4370         
4371
4372 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4373
4374         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4375
4376 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4377
4378         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4379         when the generic instance is an instantiation of a subclass of the
4380         methods class. Fixes #517166.
4381
4382 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4383
4384         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4385         code.
4386
4387         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4388         AOTed code.
4389
4390         * CMakeLists.txt: Add minimal support for installation.
4391
4392 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4393
4394         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4395         determine whenever a method is directly callable to a separate function.
4396
4397         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4398         needed ones as a result of the previous change.
4399
4400         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4401         type of register arrays.
4402
4403         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4404         type of register arrays.
4405
4406 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4407         
4408         Contributed under the terms of the MIT/X11 license by
4409         Jerry Maine <crashfourit@gail.com>.
4410
4411         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4412
4413 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4414
4415         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4416
4417 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4418
4419         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4420         dump of structure return value. Fix some formatting.
4421         * cpu-s390x.md: Fix lengths of instruction sequences.
4422         * mini-s390.c: Minor formatting changes.
4423
4424 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4425
4426         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4427         Use sigaction on freebsd as well.
4428
4429 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4430
4431         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4432         uses #ifdef on it.
4433         
4434         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4435
4436 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4437
4438         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4439
4440 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4441
4442         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4443
4444 2009-06-20  Martin Baulig  <martin@ximian.com>
4445
4446         * debug-mini.c
4447         (MonoDebuggerThreadFlags): New enum typedef.
4448         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4449         (mono_debugger_thread_created): Added `gpointer func' argument;
4450         initialize the new `thread_flags' field.
4451
4452 2009-06-18  Martin Baulig  <martin@ximian.com>
4453
4454         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4455         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4456
4457         * debug-debugger.c
4458         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4459         flag in `MONO_DEBUGGER__info.runtime_info'.
4460
4461         * driver.c
4462         (mono_main): Call mini_debugger_set_attach_ok() if generics
4463         sharing is disabled.
4464
4465 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4466
4467         * aot-compiler.c (add_wrappers): Fix a warning.
4468
4469         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4470         the ppc load/store macro changes.
4471
4472 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4473
4474         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4475
4476         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4477         not just the got symbol.
4478
4479         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4480         on ppc.
4481
4482         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4483         ppc.
4484         
4485         * aot-compiler.c: Remove some fixmes.
4486
4487         * driver.c (mono_main): Print a helpful message when cross-compiling.
4488
4489         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4490
4491         * method-to-ir.c (initialize_array_data): Do the optimization if the
4492         target byte order is little endian, instead of the host byte order.
4493
4494         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4495         wrappers into the mscorlib image, Emit a unique plt symbol for each
4496         image, emit symbols for plt entries.
4497
4498         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4499         a .size directive.
4500         
4501 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4502
4503         * aot-compiler.c (add_wrappers): Avoid calling 
4504         mono_marshal_get_type_info () since it can assert for some types.
4505
4506         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4507         ldtoken are used inside wrappers.
4508
4509         * helpers.c: Add support for prefixing tools with the arch name.
4510
4511         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4512         quantities when using ilp32.
4513
4514         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4515         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4516
4517         * image-writer.c: Use .long on ilp32.
4518
4519         * aot-compiler.c: Use 32 bit loads on ilp32.
4520         
4521 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4522
4523         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4524
4525         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4526
4527         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4528
4529         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4530         second got slot of every aot image.
4531         
4532         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4533         aot on platforms with function pointers.
4534
4535         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4536         support for aot/full aot on ppc/ppc64.
4537         
4538         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4539         arguments which are needed on ppc.
4540
4541         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4542         argument.
4543
4544         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4545         
4546         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4547
4548         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4549
4550         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4551
4552         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4553
4554 2009-06-17  Geoff Norton  <gnorton@novell.com>
4555
4556         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4557
4558 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4559
4560         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4561         to control whenever the dwarf writer is in xdebug or aot mode.
4562         (emit_class_dwarf_info): Use a separate abbrev for structures without
4563         children.
4564
4565         * aot-compiler.c: Pass the appending parameter to 
4566         mono_dwarf_writer_create ().
4567
4568         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4569         falls through to its next bblock. Fixes #513931.
4570
4571         * iltests.il: Add a test.
4572
4573         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4574         infor even if emit_line is FALSE, as the apple linker seems to require it.
4575
4576         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4577
4578         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4579         gcc does.
4580         (emit_fde): Ditto.
4581
4582 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4583
4584         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4585         mips build.
4586
4587 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4588
4589         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4590         'has_call_handler' fields.
4591
4592         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4593
4594         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4595         first bblock if not needed. Fixes #512790.
4596         
4597 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4598
4599         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4600         
4601         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4602         wrappers.
4603
4604         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4605         remoting-invoke-with-check wrappers, which are not needed when running with
4606         full-aot, since it doesn't support remoting.
4607         
4608 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4609
4610         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4611
4612         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4613         method info, it is not used anymore.
4614
4615         * mini.h: Bump AOT file format version.
4616         
4617         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4618         word smaller.
4619
4620         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4621         change above.
4622         
4623         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4624
4625         * mini.h: Bump AOT file format version.
4626         
4627 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4628
4629         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4630         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4631         iphone.
4632
4633         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4634         of CKFINITE and FBGE for VFP.
4635
4636 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4637
4638         * aot-compiler.c: Don't align code to 16 bytes on arm.
4639         
4640         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4641         before the methods they belong to.
4642
4643         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4644         the full-aot case if possible, since the trampoline will be called right 
4645         away.
4646
4647         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4648         trampolines to 1024 after the change above.
4649
4650         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4651         trampoline to save 8 bytes per trampoline.
4652
4653         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4654         change above.
4655
4656 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4657
4658         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4659
4660 2009-06-08  Martin Baulig  <martin@ximian.com>
4661
4662         * debug-mini.c
4663         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4664         (_mono_debugger_throw_exception): Don't make this static.
4665         (_mono_debugger_unhandled_exception): Likewise.
4666         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4667
4668         * debug-mini.c
4669         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4670         (_mono_debugger_throw_exception): Add function prototype.
4671         (_mono_debugger_unhandled_exception): Likewise.
4672
4673         * mini-exceptions.c
4674         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4675         arg; return the first exception handler if the exception is caught
4676         and we're running inside the debugger.
4677         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4678         improve exception handle inside runtime-invoke, check whether the
4679         exception is actually caught in the method being invoked and not
4680         by the runtime-invoke-wrapper.
4681
4682 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4683
4684         * image-writer.c: Improve support for the osx assembler.
4685
4686         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4687         support them.
4688
4689 2009-06-08  Martin Baulig  <martin@ximian.com>
4690
4691         * debug-mini.c
4692         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4693         (_mono_debugger_throw_exception): Don't make this static.
4694         (_mono_debugger_unhandled_exception): Likewise.
4695         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4696
4697         * debug-mini.c
4698         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4699         (_mono_debugger_throw_exception): Add function prototype.
4700         (_mono_debugger_unhandled_exception): Likewise.
4701
4702         * mini-exceptions.c
4703         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4704         arg; return the first exception handler if the exception is caught
4705         and we're running inside the debugger.
4706         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4707         improve exception handle inside runtime-invoke, check whether the
4708         exception is actually caught in the method being invoked and not
4709         by the runtime-invoke-wrapper.
4710
4711 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4712
4713         * image-writer.c (append_subsection): Don't align subsections of the
4714         debug_line section as a workaround.
4715
4716         * dwarfwriter.c: Emit line number info in the AOT case as well.
4717
4718 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4719
4720         This patch is contributed under the terms of the MIT/X11 license
4721
4722        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4723        code_len <= code_size
4724
4725 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4726
4727         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4728
4729 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4730
4731         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4732         invoke wrappers, we now use trampolines instead.
4733
4734 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4735
4736         * mini-darwin.c: The exception thread must not be registered with
4737         the GC.
4738
4739 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4740
4741         * mini-gc.c: Disable the code because it makes SGen crash.
4742
4743 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4744
4745         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4746         instead of asserting.
4747
4748 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4749
4750         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4751         output file after the code has been compiled.
4752
4753 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4754
4755         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4756
4757 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4758
4759         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
4760         entries distinction to simplify the code.
4761
4762         * mini.h: Bump AOT file format version.
4763         
4764 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
4765
4766         * objects.cs: Fix the signature of one of the tests.
4767
4768         * mini.c (mini_create_ftnptr): New helper function, moved here from
4769         object.c.
4770         (mini_get_addr_from_ftnptr): Ditto.
4771         (mini_init): Install the new helpers.
4772
4773 2009-05-28  Martin Baulig  <martin@ximian.com>
4774
4775         Correctly initialize the debugger when embedding Mono.
4776
4777         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
4778         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
4779         see documentation in mini_debug_running_inside_mdb().
4780
4781         * debug-debugger.c
4782         (mini_debug_running_inside_mdb): New function to check whether
4783         we're running inside mdb.
4784
4785         * mini.c (mini_init): Call mini_debugger_init() if we're running
4786         inside the debugger.
4787
4788         * driver.c (mono_main): Moved the call to mini_debugger_init()
4789         into mini_init() to make this work when embedding Mono.
4790
4791         * debug-debugger.c (mini_debugger_init): Warn about duplicate
4792         calls to mini_debugger_init().
4793
4794         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
4795         mono_debugger_main() -> mini_debugger_main() and put them inside a
4796         `MONO_DEBUGGER_SUPPORTED' conditional.
4797
4798 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
4799
4800         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
4801         this is no longer in use.
4802         * mini.h: Same.
4803
4804 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
4805
4806         * mini-sparc.c (add_outarg_load): Fix the sparc build.
4807
4808         * aot-compiler.c (emit_method_code): Always write out C style symbols for
4809         methods.
4810
4811 2009-05-27  Martin Baulig  <martin@ximian.com>
4812
4813 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4814
4815         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
4816         long_conv_to_r_un to 64 bits.
4817
4818         * cpu-x86.md: Increase the instruction size due to the changes.
4819
4820         * iltests.il.in: Add regression test.
4821
4822         Fixes #467201.
4823
4824 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4825
4826         * objects.cs: Move the previous test from basic.cs to here.
4827
4828 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4829
4830         * basic.cs: Add regression test for #506915.
4831
4832 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4833
4834         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
4835         optimization we must check the bb of the first byte of stobj as
4836         it's the only one set in cil_offset_to_bb.
4837
4838         Fixes #506915.  
4839
4840 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
4841
4842         * image-writer.c: Fix pointer directive on ppc64.
4843
4844 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
4845
4846         * image-writer.c (asm_writer_emit_section_change): Avoid using
4847         .bss subsections on ppc too.
4848
4849 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
4850
4851         * image-writer.c: Fix the definition of TARGET_ASM_....
4852         
4853         * image-writer.c: Fix the emission of assembler directives in the last
4854         change.
4855
4856         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
4857         exception throwing code to accomodate ppc64.
4858
4859         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
4860         size to work on ppc64 too.
4861
4862         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
4863         too.
4864
4865         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
4866         the assembler dialect instead of using platform specific defines.
4867
4868 2009-05-22  Geoff Norton  <gnorton@novell.com>
4869
4870         * mini-arm.c (get_call_info): If a structure is split between the stack
4871         and argument registers, we should not advance the stack pointer by the entire
4872         native size, but just by the amount that spilled.
4873
4874 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
4875
4876         * mini-arm.c (get_call_info): Handle structures with alignment requirements
4877         correctly.
4878
4879 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4880
4881         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
4882         wrappers normally.
4883         
4884         * aot-compiler.c (add_extra_method): Fix up the collection of extra
4885         methods so wrapper don't get added twice.
4886         (add_generic_instances): Don't add methods of arrays.
4887
4888         * generics.cs: Mark one test as !FULLAOT.
4889
4890 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4891
4892         * mini-x86.c (emit_move_return_value): Remove unused vars.
4893
4894 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4895
4896         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
4897         decomposing 8 bytes structs into a LCALL.
4898
4899         * mini-x86.c (emit_move_return_value): We no longer push the vtype
4900         pointer for where to store the returned regs.
4901
4902         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
4903         state the concern.
4904
4905         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
4906
4907 2009-05-20  Miguel de Icaza  <miguel@novell.com>
4908
4909         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
4910         without getenv.
4911
4912 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4913
4914         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
4915
4916         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
4917         generics.
4918
4919 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
4920
4921         * local-propagation.c (mono_local_cprop): Avoid local propagation
4922         across paired add/sub if the first instruction dest reg is it's
4923         source reg. For example:
4924
4925         int_add_imm R12 <- R12 [1] clobbers: 1
4926         int_sub_imm R42 <- R12 [1] clobbers: 1
4927
4928         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
4929         maintain the math identify.
4930
4931         Fixes #505375.
4932
4933 2009-05-20  Andreia Gaita  <avidigal@novell.com>
4934
4935         * Makefile.am: avoid going on the network just to get the revision,
4936         use git log instead
4937
4938 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
4939
4940         Fixed estimate for short branches on amd64 (they were off mark, and
4941         enabling call prolog-epilog instrumentations caused assertions).
4942         * mini.h (struct MonoBasicBlock): added max_length field to hold the
4943         estimate for the maximum length of this basic block.
4944         * mini-amd64.c:
4945         - mono_arch_emit_prolog: compute max_length for each basic block
4946           (instead of max_offset), and inflate size estimate also for entry bb
4947           in case of code instrumentation.
4948         - mono_arch_output_basic_block: get rid of "cpos" (the current
4949           estimated "position" in the code), and always use "offset" instead,
4950           which is accurate; at the beginning of the function quickly recompute
4951           max_offset for all the remaining blocks, starting from the current
4952           cfg->code_len (which is correct, and not estimated) and using the
4953           estimated block lengths computed previously.
4954
4955 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
4956
4957         * exceptions-ppc.c: Remove the caching from the trampoline creation 
4958         functions, it is already done in the caller.
4959
4960         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
4961
4962         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
4963         MONO_ARCH_GSHARED_SUPPORTED define.
4964
4965         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
4966
4967         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
4968         function.
4969
4970 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
4971
4972         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
4973         call to mono_marshal_get_rgctx_invoke ().
4974
4975         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
4976         mono_marshal_get_static_rgctx_invoke (), all platforms which support
4977         gshared use the static rgctx trampolines now.
4978         
4979         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
4980         platform supports it.
4981
4982 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4983
4984         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
4985
4986         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
4987
4988 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4989
4990         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
4991
4992         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
4993         for ppc.
4994
4995 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
4996
4997         Made it possible for mono_arch_instrument_epilog to preserve
4998         argument registers, otherwise instrumenting the "epilogue" before
4999         a tail call would clobber them.
5000         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
5001         if like mono_arch_instrument_epilog but with an additional parameter
5002         that states if argument registers must be preserved.
5003         * mini.c: implemented mono_arch_instrument_epilog as a call to
5004         mono_arch_instrument_epilog_full without asking to preserve argument
5005         registers (this makes the existing code work as usual).
5006         * mini-amd64.c:
5007         - mono_arch_instrument_epilog: add parameter to transform it into
5008         mono_arch_instrument_epilog_full, and preserve argument registers
5009         when required.
5010         - mono_arch_output_basic_block, OP_TAILCALL case: call
5011         mono_arch_instrument_epilog_full.
5012         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5013         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5014         only transformed mono_arch_instrument_epilog into
5015         mono_arch_instrument_epilog_full.
5016
5017 2009-05-15  Geoff Norton  <gnorton@novell.com>
5018
5019         * mini-darwin.c: This works on arm now.
5020
5021 2009-05-14  Geoff Norton  <gnorton@novell.com>
5022
5023         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5024         embedding api.
5025
5026 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5027
5028         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5029         label names.
5030
5031         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5032         wrappers during full aot mode correctly.
5033
5034         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5035         methods correctly.
5036
5037         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5038         mono_metadata_type_hash ().
5039
5040 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5041
5042         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5043         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5044         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5045         Removed MONO_INST_BRLABEL from the instruction flags, and the
5046         remaining code that used it, because we do not support branches inside
5047         basic blocks (and branch target labels) anymore.
5048         * Makefile.am: As part of the above cleanup, remove reference to
5049         BURG files which don't exist anymore.
5050
5051 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5052
5053         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5054         osx.
5055
5056         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5057         to use mono_arch_throw_corlib_exception.
5058
5059         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5060         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5061
5062         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5063         domain mempool.
5064
5065         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5066
5067         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5068         for the got to make debugging easier and to avoid confusing it with the
5069         system got.
5070         
5071         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5072         method so a breakpoint can be set when using gdb.
5073
5074 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5075
5076         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5077         on mono_method_get_imt_slot ().
5078
5079         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5080         num_decodes variables.
5081
5082         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5083         change as it doesn't seem to work.
5084         
5085         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5086         wrappers.
5087
5088 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5089
5090         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5091         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5092
5093         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5094         builder when using full aot.
5095
5096         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5097         here, it is already handled.
5098         
5099         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5100         correctly for IMT.
5101
5102         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5103
5104         * mini-arm.h: Enable IMT for full aot.
5105         
5106         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5107         arch doesn't support it.
5108
5109         * mini.c (mini_init): Don't disable IMT for full aot if the
5110         architecture supports it.
5111
5112         * mini.h (MonoAotTrampoline): New enum containing the different types
5113         of 'numerous' trampolines.
5114         (MONO_AOT_FILE_VERSION): Bump this.
5115
5116         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5117         static rgctx trampolines. Add support for full-aot IMT thunks.
5118
5119         * mini-amd64.h: Enable IMT for full aot.
5120
5121         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5122         to exclude tests belonging to a category.
5123
5124         * generics.cs: Mark some tests with a !FULLAOT category.
5125
5126         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5127         generics tests.
5128
5129 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5130
5131         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5132         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5133         (emit_plt): Fix a warning.
5134
5135 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5136
5137         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5138         back into aot-compiler.c to a place where the other functions shared by
5139         the runtime and aot compiler are.
5140         
5141         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5142         as done previously, instead of in MonoAotFileInfo, since pointers might have
5143         alignment requirements.
5144
5145         * mini.h: Bump AOT file format version.
5146
5147 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5148
5149         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5150         that is used at runtime from the aot-compiler.c, this makes it
5151         work on setups that remove the AOT compiler from the output
5152         image. 
5153
5154 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5155
5156         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5157         PPC.
5158
5159         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5160
5161         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5162
5163         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5164         stuff to mono_arch_decompose_long_opts ().
5165         (mono_decompose_opcode): Remove some dead code.
5166
5167 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5168
5169         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5170         cmethod can be null for quite a some reasons.
5171
5172 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5173
5174         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5175
5176 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5177
5178         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5179
5180 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5181
5182         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5183         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5184         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5185         calls returning structures by addr on amd64.
5186
5187         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5188
5189         * iltests.il.in: Restructure the tail call tests a bit.
5190         
5191 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5192
5193         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5194         for virtual methods too.
5195
5196 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5197
5198         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5199         due to regression in verifying System.dll.
5200
5201 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5202
5203         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5204         in dynamic methods.
5205
5206         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5207         instances.
5208
5209         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5210         g_str_hash () which can change.
5211
5212         * driver.c (mini_regression): Disable optimizations not supported by
5213         the cpu. Fixes #500019.
5214
5215         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5216         build.
5217
5218 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5219
5220         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5221         to the latest LLVM code.
5222
5223 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5224
5225         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5226
5227 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5228
5229         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5230         x86/amd64.
5231
5232         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5233         no longer saving offsets, so just save the patch types along with the other
5234         info.
5235         * aot-runtime.c (load_patch_info): Update after the changes to 
5236         encode_patch_list ().
5237         (decode_got_entry): Removed, merged into load_patch_info ().
5238         (is_shared_got_patch): Removed, call the same function from
5239         aot-compiler.c.
5240
5241         * mini.h: Bump aot file format version.
5242         
5243         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5244         half-finished no-dlsym code.
5245
5246         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5247         option.
5248
5249         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5250         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5251
5252 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5253
5254         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5255         buffer length to work with AOT code.
5256
5257         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5258         ldfld/stfld opcodes.
5259
5260         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5261         as it is not used.
5262
5263         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5264
5265         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5266
5267         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5268         LLVM API.
5269
5270         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5271         if needed. Don't decompose long operations when using llvm.
5272
5273 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5274
5275         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5276         PAGESIZE constant.
5277
5278         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5279
5280 2009-05-03  Martin Baulig  <martin@ximian.com>
5281
5282         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5283         mono_debugger_insert_method_breakpoint() since the class init
5284         handler we're inserting at the top of the method already gives us
5285         a notification.
5286
5287 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5288
5289         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5290         to mono_arch_decompose_long_opts () for x86 and arm.
5291
5292 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5293
5294         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5295         TARGET_AMD64 here.
5296
5297 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5298
5299         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5300         JIT code.
5301
5302 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5303
5304         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5305         number of trampolines used in full-aot mode.
5306
5307         * aot-compiler.c: Add an ntrampolines option to set the number of 
5308         trampolines emitted in full-aot mode.
5309
5310 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5311
5312         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5313         a volatile load. Get rid of get_tempname (), llvm assigns names
5314         automatically.
5315
5316         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5317         builder function.
5318
5319         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5320         a value.
5321
5322         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5323         level 1.
5324
5325         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5326         to the same register as a fixed sreg2. Fixes #497271.
5327
5328         * iltests.il.in: Add a new test.
5329
5330 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5331
5332         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5333         stack, since pushes complicate exception handling.
5334
5335         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5336         the stack if they are passed using moves.
5337
5338         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5339
5340         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5341         when using llvm.
5342
5343         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5344         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5345         of FMOVE if it is an R4.
5346
5347 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5348
5349         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5350
5351         * mini.h (LLVMCallInfo): New structure to store calling convention 
5352         information for the LLVM back end similar to the CallInfo structures in 
5353         the back-ends.
5354
5355         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5356         call information in a format usable by LLVM.
5357         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5358
5359         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5360         mono_llvm_emit_call () when compiling using LLVM.
5361
5362         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5363         comments to all functions. Fix memory leaks. Add a public init/cleanup
5364         function.
5365
5366         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5367
5368         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5369         mono_array_new_va () jit icall.
5370         
5371 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5372
5373         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5374         multiple machine description files to be specified.
5375         * mini-ops.h: fixes for cross-compilation.
5376
5377 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5378
5379         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5380         some porting work.
5381
5382 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5383
5384         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5385         to prevent asserts in various passes. Fixes #497220.
5386
5387 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5388
5389         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5390         a racy assert.
5391
5392         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5393         table to avoid duplicates.
5394
5395         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5396         
5397         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5398         option is used.
5399
5400 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5401
5402         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5403         is for method or field access.
5404
5405 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5406
5407         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5408         a Value to stdout.
5409
5410         * mini-llvm.c (mono_llvm_emit_method): Use it.
5411         
5412         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5413         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5414         on volatile values.
5415
5416         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5417         synchronized methods.
5418
5419         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5420
5421         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5422
5423         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5424         OP_LOADI8_MEM.
5425
5426         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5427         allowing some options to be set dynamically.
5428
5429 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5430
5431         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5432         unconditional branch.
5433
5434         * mini.h (MonoTrampolineType): Add new trampoline type 
5435         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5436         compiled code.
5437
5438         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5439         function.
5440
5441         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5442         creation function.
5443
5444         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5445         is enabled. Instead, use the llvm vcall trampoline.
5446         
5447         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5448
5449         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5450         
5451         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5452         functions.
5453
5454         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5455         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5456
5457         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5458         OP_IA64_CSET opcode.
5459
5460         * mini.c: Fix a warning.
5461
5462         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5463         THROW to the appropriate llvm type.
5464
5465 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5466
5467         * mini.c (mini_method_compile): Add statistics for methods JITted
5468         with/without LLVM.
5469
5470 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5471
5472         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5473         OP_IA64_CMP_<cond>_IMM opcodes.
5474
5475 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5476
5477         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5478         corlib exceptions.
5479
5480         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5481         correctly.
5482
5483         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5484         GENERICINST.
5485
5486 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5487
5488         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5489
5490 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5491
5492         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5493         support.
5494
5495         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5496         rgctx invoke trampolines for x86.
5497
5498         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5499         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5500         (mono_arch_get_vcall_slot): Simplify this.
5501
5502 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5503
5504         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5505         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5506
5507 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5508
5509         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5510         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5511
5512         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5513
5514         * liveness.c (visit_bb): Remove a needless assert.
5515
5516 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5517
5518         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5519         full aot support to the arch specific code.
5520
5521         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5522
5523         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5524
5525         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5526         
5527         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5528         collect information about the delegate invoke impl trampolines.
5529
5530         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5531         to save trampolines during full-aot mode.
5532
5533         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5534         creation function which returns a trampoline which sets the rgctx
5535         argument.
5536         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5537         wrapper if possible.
5538         (mono_delegate_trampoline): Ditto.
5539
5540         * mini.c (mono_jit_runtime_invoke): Ditto.
5541
5542         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5543         
5544         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5545
5546         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5547         
5548 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5549
5550         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5551         just setting the opcode to OP_NOP.
5552
5553 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5554
5555         * mini.c (mini_method_compile): Put the last change inside an 
5556         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5557         
5558         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5559         and extend live ranges to cover the whole method when using xdb.
5560
5561         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5562         do it in the trampolines.
5563
5564         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5565         needed.
5566
5567         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5568         
5569         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5570         call code in full-aot mode since IMT is disabled there.
5571         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5572         new JIT no longer has that restriction.
5573
5574         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5575
5576         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5577         a more compact format.
5578         (mono_aot_wrapper_name): New function to return a unique name for a
5579         wrapper method, also used by the AOT runtime.
5580
5581         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5582         aot-compiler.c.
5583
5584         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5585         when a ICollection<T> etc is encountered.
5586         (add_generic_instances): Process method arguments/locals too.
5587         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5588         trampoline names.
5589
5590         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5591         
5592 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5593
5594         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5595
5596         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5597
5598         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5599         representing the result of the decomposition. Nullify instructions
5600         instead of setting them to OP_NOP since nops can't have registers
5601         set.
5602
5603 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5604
5605         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5606         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5607         info. Strip 'mapping symbols' on ARM.
5608
5609         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5610         
5611         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5612         this with the native genmdesc.
5613
5614 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5615
5616         * aot-runtime.c:  Fixing the MSVC build.
5617
5618         Code is contributed under MIT/X11 license.
5619
5620 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5621
5622         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5623         JITted code depends on it.
5624
5625 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5626
5627         * aot-compiler.c: Use new MonoGenericParam accessors.
5628
5629 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5630
5631         Reduce memory usage and improve correctness wrt MonoGenericParam
5632         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5633         handing.  Avoid allocating MonoGenericParams, but use the ones in
5634         the container itself.
5635
5636 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5637
5638         * tasklets.c: Return exceptions in the out argument.
5639
5640 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5641
5642         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5643         opcode. Use pointer types in more places instead of casting them to 
5644         integers.
5645
5646         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5647         optimizations.
5648         (mono_llvm_optimize_method): New helper function to optimize a method.
5649
5650         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5651         widening code so it could be called from more places.
5652         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5653         code paths in the call opcodes.
5654
5655 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5656
5657         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5658
5659 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5660
5661         * dwarfwriter.c: Use _ to separate class name 
5662         components as gdb can't handle '.'. Represent reference variables
5663         as 'class <NAME>&'.
5664         
5665         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5666
5667         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5668         
5669         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5670
5671         * gc-test.cs: New file with GC stack marking tests.
5672         
5673         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5674         negative numbers for vfp.
5675
5676         * basic-float.cs: Add a test.
5677         
5678 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5679
5680         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5681
5682 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5683
5684         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5685         part of tasklet/continuation support.
5686
5687 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5688
5689         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5690         amd64 opcodes inside an ifdef.
5691
5692         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5693         of complex types.
5694         
5695         * dwarfwriter.c (emit_type): Emit the class info for classes.
5696
5697 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5698
5699         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5700
5701         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5702
5703         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5704
5705         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5706
5707 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5708
5709         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5710
5711         * mini-llvm.c: Update comments.
5712
5713         * mini.h (COMPILE_LLVM): New macro.
5714
5715         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5716
5717         * ssa.c (mono_ssa_compute): Ditto.
5718         
5719         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5720         the unwind ops from a DWARF FDE.
5721
5722         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5723         methods by extracting the dwarf unwind ops from the unwind info generated
5724         by LLVM.
5725         
5726         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5727         calls.
5728
5729         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5730         addressing modes.
5731
5732 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5733
5734         * Makefile.am (llvm_sources): Enable this.
5735
5736         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5737         failing back to the JIT if something cannot be handled.
5738
5739         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5740         compiling with LLVM.
5741
5742         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5743         compiling with LLVM.
5744
5745         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5746         compiling with LLVM.
5747
5748         * mini-ops.h: Add a few opcodes needed by LLVM.
5749
5750         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5751         has no unwind info.
5752
5753         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5754         backend.
5755
5756         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5757
5758         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5759
5760 2009-04-01  Mark Probst  <mark.probst@gmail.com>
5761
5762         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
5763         ridiculously large methods.
5764
5765 2009-03-31  Martin Baulig  <martin@ximian.com>
5766
5767         * debug-debugger.c (debugger_remove_breakpoint): Call
5768         mono_debugger_remove_class_init_callback ().
5769
5770 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
5771
5772         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
5773         right before emitting code, not at the start.
5774
5775         * mini.c (mono_postprocess_patches): Extract this into a separate function
5776         from mono_codegen ().
5777
5778         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
5779         byref types correctly.
5780
5781 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
5782
5783         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
5784         by the last change.
5785
5786 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
5787
5788         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
5789         indirect calls, this avoids problems where get_vcall_slot () would get
5790         confused by the native code for the instruction preceeding the call.
5791         (mono_arch_get_vcall_slot): Simplify this.
5792         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
5793
5794         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
5795         register allocator now seems to depend on them instead of the data in
5796         cpu-<ARCH>.md.
5797
5798         * mini.c (mini_method_compile): Throw the correct type of exception if
5799         mono_method_get_header () fails because of a loading error.
5800
5801 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
5802
5803         * mini.c (mini_method_compile): Clear the loader error if the method
5804         header cannot be decoded.
5805
5806         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
5807         interface methods on proxies correctly.
5808
5809         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
5810         this argument for vtype methods. Add precise liveness info for arguments.
5811
5812         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
5813         LIVERANGE_START/END opcodes.
5814
5815         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
5816         for arguments and values in registers.
5817
5818 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
5819
5820         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
5821         return a valuetype. Fixes #487518.
5822
5823         * iltests.il: Add a test.
5824         
5825         * aot-compiler.c: Use mono_thread_create () to create helper threads.
5826
5827         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
5828         closed over a null reference correctly.
5829
5830 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
5831
5832         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
5833
5834 2009-03-25  Mark Probst  <mark.probst@gmail.com>
5835
5836         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
5837         allocated to the same registers as fixed sregs.
5838
5839 2009-03-24  Mark Probst  <mark.probst@gmail.com>
5840
5841         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
5842         ATOMIC_CAS_IMM ops.
5843
5844         * method-to-ir.c: Handle more cases for
5845         Interlocked.CompareExchange.
5846
5847         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
5848         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
5849         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
5850
5851 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
5852
5853         * aot-runtime.c (decode_method_ref): Fix a warning.
5854
5855         * unwind.c (mono_unwind_frame): Ditto.  
5856
5857 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5858
5859         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
5860         (mono_compile_assembly): Enable the binary writer for full-aot as well.
5861
5862         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
5863         fix the handling of large values in the ALU_PC_G0_NC relocation.
5864
5865 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5866
5867         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
5868
5869 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5870
5871         * method-to-ir.c (mono_spill_global_vars): Support for ternary
5872         ops.
5873
5874 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5875
5876         * method-to-ir.c: MINI_OP3 needs a comma.
5877
5878         * method-to-ir.c, mini.h, mini.c: Remove
5879         mono_init_op_sreg_counts ().
5880
5881 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5882
5883         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
5884         OP_JMP.
5885         
5886         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
5887         assertion.
5888
5889         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
5890
5891         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
5892         code somewhat.
5893
5894 2009-03-21  Mark Probst  <mark.probst@gmail.com>
5895
5896         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
5897         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
5898         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
5899         operations.
5900
5901 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
5902
5903         * driver.c: Change location of gc_wrapper.h.
5904
5905         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
5906         inside finally clauses correctly. Fixes #485721.
5907
5908         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
5909         after the change above.
5910
5911         * exceptions.cs: Add a test.
5912         
5913 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5914
5915         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
5916
5917         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
5918         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
5919         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
5920
5921         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
5922         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
5923
5924 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
5925
5926         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
5927         Simplify logic for ensure_method_is_allowed_to_call_method. 
5928         Handle wrappers on callers.
5929
5930 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5931
5932         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
5933         them don't run yet.
5934
5935         * basic-simd.cs: Fix the names of some test methods.
5936
5937 2009-03-18  Geoff Norton  <gnorton@novell.com>
5938
5939         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
5940
5941 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
5942
5943         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
5944
5945 2009-03-17  Jb Evain  <jbevain@novell.com>
5946
5947         * driver.c: remove now uneeded call to mono_gc_base_init before
5948         mono_profiler_load.
5949
5950 2009-03-17  Jb Evain  <jbevain@novell.com>
5951
5952         * dwarfwriter.c (token_handler): handle more cases.
5953
5954 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
5955
5956         * method-to-ir.c: Remove more dead code (that was required only
5957         because of method_is_safe). Fix compiler warnings.
5958
5959 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
5960
5961         * method-to-ir.c: Remove unneeded/useless method_is_safe
5962         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
5963
5964 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
5965
5966         * mini.c (mini_method_compile): Print the method been compiled with
5967         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
5968         for people not familiar with the runtime.
5969
5970 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
5971
5972         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
5973         a managed object which is later put into a GList. Return its class instead.
5974
5975         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
5976         stack slots when using sgen.
5977
5978 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
5979
5980         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
5981
5982 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
5983
5984         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
5985         > so it works on the first vreg as well.
5986
5987 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
5988
5989         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
5990         trigger randomly.
5991
5992         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
5993         
5994         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
5995         implement GArray.
5996
5997 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
5998
5999         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
6000         native->IL offset mapping.
6001
6002 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
6003
6004         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
6005
6006         * basic.cs: Add a test.
6007
6008 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6009
6010         * mini-x86.c (mono_arch_output_basic_block): Use different
6011         registers in case the ones we want to overwrite are used by the
6012         other operand.  Fixes regression in #480807.
6013
6014 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6015
6016         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6017
6018         * dwarfwriter.c (emit_line_number_info): The line number info for
6019         IL code was off by one. Fix that.
6020
6021         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6022         stack.
6023
6024 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6025
6026         Contributed under the terms of the MIT/X11 license by Steven
6027         Munroe <munroesj@us.ibm.com>.
6028
6029         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6030         Fixes #483462.
6031
6032 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6033
6034         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6035         as well.
6036
6037 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6038
6039         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6040         the delegate ctor handling code. Fixes #482638.
6041         
6042         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6043         #481458.
6044
6045         * iltests.il.in: Add a test.
6046         
6047         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6048         mini-posix.c.
6049
6050 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6051
6052         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6053         is shared generic code, return the trampoline, even if the method
6054         has already been compiled.  Fixes #479763.
6055
6056         * mini.c, mini.h: New function
6057         mono_jit_find_compiled_method_with_jit_info() which is the same as
6058         mono_jit_find_compiled_method() but also returns the jit info.
6059
6060 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6061
6062         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6063         for methods which actually have one.  For all other methods, make
6064         sure the this argument var is live the whole method.
6065
6066         * mini.c (mini_method_compile): Every shared method has a
6067         this/vtable/mrgctx info.  Fixes #480807.
6068
6069 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6070
6071         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6072         generic/imt thunks where some entries branch through the vtable,
6073         while other entries branch directly.
6074
6075 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6076
6077         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6078
6079         * mini-windows.c: Ditto.
6080         
6081         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6082         ctors.
6083
6084 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6085
6086         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6087         down an assert.
6088
6089 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6090
6091         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6092         #481403.
6093
6094 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6095
6096         * exceptions-x86.c: Include debug-mini.h - fixes build.
6097
6098 2009-03-04  Martin Baulig  <martin@ximian.com>
6099
6100         * debug-mini.c: Clean up the exception API and add documentation.
6101         (mono_debugger_handle_exception): New public method; this is
6102         called when throwing an exception or encountering an unhandled one.
6103         (mono_debugger_call_exception_handler): Formerly known as
6104         mono_debugger_handle_exception(); this is used to tell the
6105         debugger that we're about to invoke an exception handler.
6106
6107 2009-03-04  Martin Baulig  <martin@ximian.com>
6108
6109         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6110         ../metadata/mono-debug-debugger.c; save and reset exception state.
6111
6112 2009-03-02  Martin Baulig  <martin@ximian.com>
6113
6114         * debug-mini.c: Moved the debugger exception handling here from
6115         ../metadata/mono-debug-debugger.c.
6116
6117         * debug-mini.h
6118         (MonoDebuggerExceptionAction): New exception typedef.
6119
6120         * debug-mini.c
6121         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6122
6123         * exceptions-amd64.c
6124         (mono_amd64_throw_exception): Use the new debugger exception
6125         handling code.
6126
6127         * mini-exceptions.c
6128         (mono_handle_exception_internal): Don't call
6129         mono_debugger_unhandled_exception() here.
6130
6131 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6132
6133         * mini.c aot-compiler.c: Update after the changes to 
6134         mono_marshal_get_runtime_invoke ().
6135
6136         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6137         Virtual generic methods might not have method->slot set, work around
6138         that.
6139
6140         * generics.cs: Add a test.
6141
6142 2009-03-02  Geoff Norton  <gnorton@novell.com>
6143
6144         * mini.c:
6145         * driver.c: Allow signal chaining of SIGFPE as well.
6146
6147 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6148
6149         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6150         this since it now receives the method not its generic context in the
6151         IMT reg.
6152
6153         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6154         generic/imt thunks where some entries branch through the vtable, while
6155         other entries branch directly.
6156
6157         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6158
6159         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6160         support for interface methods as well.
6161
6162         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6163         using the normal IMT thunks.
6164
6165         generics.cs: Add new tests.
6166         
6167         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6168         the generic inst to the generic imt thunks. This fixes AOT support, 
6169         improves consistency with the normal IMT thunks, and makes it easier to
6170         add support for interface generic virtual methods later.
6171
6172         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6173         
6174 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6175
6176         * driver.c (mono_set_signal_chaining): New public API function to enable
6177         signal chaining on POSIX platforms.
6178
6179         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6180         (si@lindenlab.com) to implement signal chaining. The original patch was
6181         contributed under the MIT X/11 license:
6182         https://bugzilla.novell.com/show_bug.cgi?id=318894
6183
6184 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6185
6186         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6187         too until it can be made to run on amd64.
6188
6189 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6190
6191         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6192         to  get_generic_context_from_code () + get_call_info () if possible.
6193
6194 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6195
6196         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6197         suspend-on-sigsegv functionality.
6198
6199         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6200         to suspend when a native SIGSEGV is received. This is useful for debugging
6201         crashes which don't happen under gdb, since a live process contains more
6202         information than a core file.
6203
6204         * mini-exceptions.c (mono_print_thread_dump): Use 
6205         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6206
6207         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6208
6209         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6210         
6211         * basic-float.cs: Disable the tests which currently fail on amd64.
6212
6213         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6214         value to mono_arch_patch_callsite () to fix crashes.
6215         
6216         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6217
6218 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6219
6220         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6221         nop code by patching the call address to point to the nullified class init
6222         trampoline, as the former does not seem to be safe on SMP machines.
6223
6224 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6225
6226         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6227         they were wrong.
6228
6229 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6230
6231         * basic-float.cs basic-calls.cs: Fix warnings.
6232
6233 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6234
6235         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6236         correct frame pointer in the LMF.  Should fix #478394.
6237
6238 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6239
6240         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6241
6242         * image-writer.c: Make the binary writer less verbose.
6243
6244 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6245
6246         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6247         are called from runtime invoke wrappers.
6248
6249 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6250
6251         * cpu-ppc.md (store_memindex): Increase the size of this.
6252
6253 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6254
6255         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6256
6257         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6258
6259         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6260         OP_LCONV_TO_R_UN.
6261
6262         Last fix for of #467201.
6263
6264
6265 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6266
6267         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6268
6269         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6270         and long_conv_to_r8_2:
6271
6272         Fixed part of #467201.
6273
6274 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6275
6276         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6277
6278         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6279         conversion to 32 bits.
6280
6281         * cpu-x86.md: Increase the size of int_conv_to_r4.
6282
6283         * basic-float.cs: Add a test for this.
6284
6285         Fixed part of #467201.
6286
6287 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6288
6289         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6290
6291         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6292         conversion to 64 bits.
6293
6294         * basic-float.cs: Add a test for this.
6295
6296         Fixed part of #467201.
6297
6298 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6299
6300         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6301
6302         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6303         This behavior is compatible with MS.
6304
6305         * iltest.il.in: Add a test for this.
6306
6307         Fixed part of #467201.
6308
6309 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6310
6311         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6312
6313         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6314         change the precision of the value.
6315
6316         * cpu-x86.md: Define len for float_conv_to_r4.
6317
6318         * basic-float.cs: Add a test for this.
6319
6320         Fixed part of #467201.
6321
6322 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6323
6324         * mini.c: Adjust locking order to the new semantics where the loader lock
6325         comes first.
6326
6327 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6328
6329         * aot-runtime.c:
6330         * mini-amd64.c:
6331         * mini-arm.c:
6332         * mini-ia64.c:
6333         * mini-mips.c:
6334         * mini-ppc.c:
6335         * mini-sparc.c:
6336         * mini-trampolines.c:
6337         * mini-x86.c:
6338         * mini.c:
6339         * tramp-alpha.c:
6340         * tramp-amd64.c:
6341         * tramp-arm.c:
6342         * tramp-hppa.c:
6343         * tramp-ia64.c:
6344         * tramp-mips.c:
6345         * tramp-ppc.c:
6346         * tramp-s390.c:
6347         * tramp-s390x.c:
6348         * tramp-sparc.c:
6349         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6350
6351 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6352
6353         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6354         as it is incorrect.
6355
6356 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6357
6358         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6359         for cctors if needed.
6360
6361 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6362
6363         * mini-ppc.c: Fix build on Darwin.
6364
6365 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6366
6367         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6368         version instead of 3 as valgrind doesn't like version 3.
6369
6370         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6371
6372         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6373         usable for hashing methods.
6374         (emit_extra_methods): Use the new hash to avoid putting every method in the
6375         same hash bucket.
6376
6377         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6378
6379         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6380         whenever a method ref could match a method.
6381         
6382         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6383         test to fail.
6384         
6385         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6386         methods refs.
6387
6388         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6389
6390         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6391         the encoding buffer.
6392
6393         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6394         mono_method_get_header () on inflated methods as an optimization.
6395
6396 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6397
6398         * ssa.c (fold_ins): Fix another crash if the instruction following the
6399         switch was optimized away.
6400
6401 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6402
6403         Contributed under the terms of the MIT/X11 license by Steven
6404         Munroe <munroesj@us.ibm.com>.
6405
6406         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6407
6408 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6409
6410         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6411         around the mono_domain_alloc calls, it is now done by the functions
6412         themselves.
6413
6414         * aot-compiler.c (compile_method): Only add wrappers referenced by
6415         the method if compiling with full AOT.
6416         (mono_compile_assembly): Error out if --aot=full is specified on
6417         a platform where it is not supported.
6418
6419         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6420         on ARM too.
6421
6422         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6423         AOT support.
6424
6425         * aot-runtime.c (load_named_code): Handle 
6426         mono_arm_throw_exception_by_token.
6427
6428         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6429
6430         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6431         unaligned.
6432
6433         * Makefile.am (fullaotcheck): Exit if a test fails.
6434
6435         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6436         on ARM.
6437         (mono_compile_assembly): Handle the assembler failing.
6438
6439         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6440         accepting subsections of .bss.
6441
6442         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6443         was optimized away.
6444
6445         * aot-compiler.c: Remove some unused includes.
6446         
6447         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6448         now in MonoImageWriter.
6449
6450         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6451         code sequence which matches a non-virtual call. Fixes #472654.
6452
6453 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6454
6455         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6456         xdebug code.
6457         
6458         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6459         use the image/dwarf writers directly.
6460
6461         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6462         field.
6463
6464         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6465         MonoDwarfWriter.
6466
6467         * image-writer.h: Fix some typos.
6468
6469         * dwarfwriter.h dwarfwriter.c: New files.
6470         
6471         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6472         separate module.
6473
6474         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6475         argument to return unwind info.
6476
6477         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6478
6479         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6480         
6481         * aot-runtime.c (decode_method_ref): Add a case for 
6482         MONO_AOT_METHODREF_WRAPPER_NAME.
6483
6484         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6485         for AOT.
6486
6487         * aot-compiler.c (encode_method_ref): Use the new constants.
6488
6489         * aot-runtime.c (decode_method_ref): Ditto.
6490
6491         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6492         be compiled, not the icall itself.
6493
6494 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6495
6496         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6497         using decode_method_ref ().
6498
6499         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6500         convert it to an in32. Fixes #475859.
6501
6502         * arrays.cs: Add a test.
6503
6504 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6505
6506         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6507         OP_LCONV_TO_U2.
6508
6509         * basic-long.cs: Add a test.
6510
6511 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6512
6513         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6514         remove the frame pointer in leaf methods which don't receive any
6515         arguments, don't throw exceptions and don't do dynamic stack
6516         allocations.
6517
6518 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6519
6520         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6521         the fail_tramp changes. Hopefully fixes #475132.
6522
6523 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6524
6525         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6526         instead of mono_metadata_signature_dup_full.
6527
6528 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6529
6530         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6531         for processing jump tables. Fixes #473787.
6532
6533 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6534
6535         * mini-generic-sharing.c: mini_method_get_context() just calls
6536         mono_method_get_context_general() now.
6537
6538         * mini.c, mini.h: Moved get_object_generic_inst(),
6539         construct_object_context_for_method() and
6540         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6541
6542 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6543
6544         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6545         basic block fell through to its successor bblock without a branch. Fixes
6546         #474718.
6547
6548         * iltests.il.in: Add a test.
6549         
6550         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6551         (can_encode_patch): We can now handle arrays of generic parameters and
6552         array methods.
6553
6554         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6555
6556         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6557         the AOT file to avoid some #ifdefs in aot-runtime.c
6558
6559         * mini.h: Bump AOT file format version.
6560
6561 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6562
6563         * Makefile.am (fullaotcheck): Make this run the tests.
6564
6565         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6566
6567 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6568
6569         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6570         individually.  Fixes #473482.
6571
6572 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6573
6574         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6575
6576 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6577
6578         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6579         (mono_compile_assembly): Hush compile warnings about
6580         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6581         code path.
6582
6583 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6584
6585         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6586
6587         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6588
6589         * aot-compiler.c: Fix arm support.
6590
6591         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6592         img_writer_emit_unset_mode () function.
6593
6594         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6595         (mono_unwind_get_dwarf_pc_reg): Ditto.
6596
6597         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6598         Move almost all platform specific code to a set of arch_ functions, 
6599         and document them to ease porting.
6600         
6601         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6602
6603         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6604
6605         * aot-compiler.c: Extract the image writing functionality into a separate
6606         module to reduce the size of this file.
6607
6608 2009-02-09  Geoff Norton  <gnorton@novell.com>
6609
6610         * mini-s390.c: Fix the signature of emit_sig_cookie.
6611
6612 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6613
6614         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6615
6616         * aot-runtime.c (is_shared_got_patch): Ditto.
6617
6618         * aot-runtime.c (load_named_code): Cope with the fact that 
6619         decode_got_entry () won't decode the patch fully if its corresponding got
6620         entry is already filled.
6621         
6622         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6623         Initialize *ji.
6624         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6625
6626         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6627         as the moving pointer instead of 'buf' for consistency with the rest of the
6628         codebase.
6629         (mono_arch_create_monitor_exit_trampoline): Ditto.
6630
6631         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6632         generic_class_init trampolines.
6633         (add_generic_class): Extract some code from add_generic_instances () into a
6634         separate function so it can be called from other places too.
6635         (compile_method): Call add_generic_class () for the classes of inflated methods
6636         referenced by the method.
6637         (can_encode_patch): Allow references to generic parameters.
6638
6639         * aot-runtime.c: Add support the patches required by the new trampolines.
6640         
6641         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6642         support.
6643
6644         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6645         full-aot support.
6646
6647         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6648         this from get_throw_pending_exception, make the signature full aot compatible.
6649
6650         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6651
6652         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6653
6654         * exceptions.cs: Add a test.
6655
6656 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6657
6658         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6659         use the DWARF_DATA_ALIGN constant instead.
6660
6661         * exception-<ARCH>.c: Update after the above change.
6662
6663         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6664         dwarf unwinder.
6665
6666         * mini-arm.c: Enable the dwarf unwinder.
6667
6668         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6669         instead of mono_class_setup_vtable ().
6670
6671 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6672
6673         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6674         dwarf unwinder.
6675
6676         * mini-x86.h: Enable the dwarf unwinder.
6677
6678 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6679
6680         Fix mcs/tests/test-7.cs
6681         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6682         2009-02-03.
6683
6684 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6685
6686         * mini.c (print_jit_stats): Remove some unused statistics.
6687
6688 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6689
6690         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6691
6692 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6693
6694         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6695         the method we get from mono_object_get_virtual_method() because
6696         that function does it properly, now.
6697
6698 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6699
6700         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6701         opcodes. Fixes #472775.
6702
6703 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6704
6705         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6706         fact that mono_find_jit_info() sometimes returns the context
6707         corresponding to the jit info in new_ctx.  Fixes #472600.
6708
6709 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6710
6711         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6712         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6713         klass->enum_basetype directly.
6714
6715         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6716         enum subtypes.
6717
6718         * unwind.c: Avoid 0 sized arrays.
6719
6720 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6721
6722         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6723         size on systems with 64k pages. Fixes #471389.
6724
6725 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6726
6727         Contributed under the terms of the MIT/X11 license by Steven
6728         Munroe <munroesj@us.ibm.com>.
6729
6730         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6731         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6732         necessary.
6733
6734 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6735
6736         Contributed under the terms of the MIT/X11 license by Steven
6737         Munroe <munroesj@us.ibm.com>.
6738
6739         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6740         comparison fix.
6741
6742         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6743         The trampoline can be longer on PPC64.
6744
6745 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6746
6747         Contributed under the terms of the MIT/X11 license by Steven
6748         Munroe <munroesj@us.ibm.com>.
6749
6750         * mini-ppc.c: Compiler warning fixes and trivial code
6751         simplifications.
6752
6753 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6754
6755         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6756         ins->dreg which could be a hardware register, not a vreg.
6757
6758         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6759         
6760         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
6761         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
6762
6763         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
6764         
6765         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
6766         ->dreg, that is not the vreg we are looking for.
6767
6768         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
6769
6770         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
6771         LIVERANGE_END.
6772
6773         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
6774         strange crashes.
6775
6776 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6777
6778         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
6779
6780         * aot-compiler.c (emit_line_number_info): Fix line number emission when
6781         the line diff is 0.
6782
6783         * aot-compiler.c: Add xdebug support on x86.
6784
6785         * unwind.c: Add x86 support.
6786         
6787         * aot-compiler.c (emit_exception_debug_info): Control the emission of
6788         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
6789
6790         * mini.c (mini_method_compile): Ditto.
6791         
6792         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
6793         the variable index.
6794
6795         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
6796         which mimic .push_section/.pop_section in GAS.
6797         
6798         * aot-compiler.c: Emit precise live range information for variables.
6799
6800         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
6801
6802         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
6803         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
6804         them.
6805
6806         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
6807         the live ranges of variables.
6808
6809         * mini.h (struct MonoMethodVar): Add two fields containing the live range
6810         of the variable in terms of native offsets.
6811
6812 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
6813
6814         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
6815         
6816 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6817
6818         Contributed under the terms of the MIT/X11 license by Steven
6819         Munroe <munroesj@us.ibm.com>.
6820
6821         * exceptions-ppc.c (restore_regs_from_context): Correct operand
6822         order (offset then base reg) for ppc_load_multiple_regs.
6823         (emit_save_saved_regs) Correct operand order for
6824         ppc_store_multiple_regs.
6825         (mono_arch_get_call_filter): Correct operand order for
6826         ppc_load_multiple_regs.
6827
6828         * mini-ppc.c (emit_memcpy): Fix operand order for
6829         ppc_load_reg_update and ppc_store_reg_update.
6830         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
6831         (mono_arch_emit_epilog): Correct operand order for
6832         ppc_load_multiple_regs.
6833
6834         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
6835         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
6836
6837 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6838
6839         * cpu-ppc64.md: Fixed storer4_memindex length.
6840
6841 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
6842
6843         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
6844         line number info.
6845         
6846         * aot-compiler.c (emit_line_number_info): Optimize this.
6847
6848 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
6849
6850         * aot-compiler.c: Disassemble tokens in the IL disassembly.
6851         
6852         * aot-compiler.c: Add debug info for methods without debug info by
6853         emitting an IL file and having the line number info referencing that file.
6854
6855         * aot-compiler.c: Optimize the size of the generated line number info.
6856
6857         * aot-compiler.c: Emit line number info in xdebug mode.
6858
6859         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
6860         million arguments.
6861
6862 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
6863
6864         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
6865
6866         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
6867         is used.
6868
6869 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6870
6871         * basic-calls.cs: Test for the weird crash found on arm.
6872         
6873 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6874
6875         * cpu-arm.md: Increase the size of storer8_membase_reg and
6876         loadr8_membase_reg to 24 bytes to accomodate the extra add.
6877
6878         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
6879         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
6880         reg to LR otherwise we'll be loading/storing from just the offset.
6881
6882 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6883
6884         Question: if we are storing gint32's inside the "*native_offset",
6885         should we change the signature to "gint32 *native_offset" to
6886         ensure that we do not have type definition problems?
6887         
6888         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
6889         an int * as this is what the other function expects, causes
6890         problems with Freescale's compiler that defined int32_t to be a
6891         long and makes int incompatible 
6892
6893 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6894
6895         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
6896         filename conflict with bjam.
6897
6898 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6899
6900         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
6901         as it might use decomposed ops.
6902
6903 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6904
6905         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
6906
6907         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
6908         is defined.
6909
6910         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
6911
6912         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
6913         offsets.
6914
6915         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
6916         way registers are stored in MonoContext on arm.
6917
6918         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
6919         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
6920
6921         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
6922
6923         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
6924
6925         * mini.c (mini_init): Register mono_isfinite.
6926
6927         * jit-icalls.c (mono_isfinite): New jit icall.
6928
6929         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
6930         
6931         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
6932         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
6933         the parent frame.
6934
6935 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6936
6937         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
6938         separate frame and stack pointers, so we must use FP to find the register
6939         spill area.
6940         The FP reg is retrieved from the MonoContext::regs array.
6941
6942 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6943
6944         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
6945         as FPA requires it.
6946
6947 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6948
6949         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
6950         return R4 and R8 when not running under softfloat.
6951
6952         Fixes basic-calls.exe
6953
6954 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6955
6956         * mini-arm.c: Implement some overflow opcodes.
6957
6958 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6959
6960         * ssa.c: handle another alloca.h
6961
6962         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
6963         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
6964         MONO_ARCH_USE_SIGACTION. 
6965
6966         * aot-runtime.c, mini-exceptions.c: Replace platform define with
6967         capability defines.
6968
6969         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
6970
6971         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
6972         PPC targets as sigaction does not exist on all platforms, define
6973         this on a per-platform basis.
6974
6975         Instead of erroring out if the platform is not defined, include
6976         mini-ppc-os.h, and expect that the OS specific setting provides
6977         the required information.   
6978
6979 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6980
6981         * aot-compiler.c: Fix --enable-minimal=aot.
6982
6983 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6984
6985         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
6986         previous change.
6987
6988 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
6989
6990         * exceptions-arm.c: Fix warnings.
6991
6992         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
6993         ARM.
6994
6995         * mini-x86.c: Fix --enable-minimal=jit build.
6996
6997         * mini.c: Really fix --enable-minimal=jit build.
6998         
6999         * mini.c (construct_object_context_for_method): Move this outside
7000         the DISABLE_JIT block to fix the --enable-minimal=jit build.
7001
7002         "Backported" of r124984 from 2.0 branch.
7003         
7004         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
7005
7006         "Backport" of r124977 + r124978 from 2.0 branch.
7007         
7008         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7009         to avoid calling mono_exception_from_token () from the throw trampoline.
7010         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7011         for throwing corlib exceptions, this fixes full-aot support for corlib
7012         exceptions.
7013
7014         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7015
7016 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7017
7018         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7019         part of the changes to split the code in mini into operating
7020         system specific files.
7021
7022         This patch was done by copying mini.c to the respective files to
7023         preserve SVN history.
7024
7025 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7026
7027         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7028
7029 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7030
7031         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7032         remoting-invoke-with-check wrappers of shared methods.
7033
7034         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7035
7036 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7037
7038         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7039         optimization if the top of stack is the last instruction in the
7040         bblock.  Otherwise it might have been used after its definition.
7041         Fixes #469742.
7042
7043 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7044
7045         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7046         method as well when get_vcall_slot () fails to match a code sequence.
7047
7048         * mini-arm.c: Fix the android build, which doesn't have
7049         __aeabi_read_tp.
7050
7051 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7052
7053         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7054         the s390x build.
7055
7056 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7057
7058         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7059
7060 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7061
7062         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7063         and put its id into jinfo->used_regs. This is only used on amd64,
7064         which is currently the only platform generating unwind info.
7065
7066         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7067         the dwarf unwinder. This is required to correctly handle async exceptions
7068         like thread abort and stack overflows, which can happen while a method
7069         is in the middle of its prolog or epilog.
7070         
7071         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7072         the unwind info belonging to an AOTed method.
7073
7074         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7075         into cfg->unwind_ops.
7076         
7077         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7078
7079         * mini.c (mini_init): Call mono_unwind_init ().
7080         (mini_cleanup): Call mono_unwind_cleanup ().
7081
7082         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7083         unwind info to be shared between methods.
7084
7085         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7086         saved in the LMF.
7087
7088         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7089         get_throw_pending_exception () to avoid initialization races.
7090
7091         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7092         mono_arch_exceptions_init () function.
7093
7094         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7095
7096 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7097
7098         * mini.c (mono_get_domain_intrinsic): New helper function.
7099         (mono_get_thread_intrinsic): Ditto.
7100
7101         * mini-arm.c mini-ia64.c: Use the new helper functions.
7102         
7103         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7104         the last constrained_call change, since it is needed in the non-AOT
7105         case as well.
7106
7107         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7108         
7109         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7110         mono_get_lmf_addr () on arm eabi linux.
7111
7112 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7113
7114         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7115         code sequence which matches a non-virtual call.
7116
7117 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7118
7119         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7120         stack pointer (r1).
7121
7122 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7123
7124         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7125         runtime-invoke wrappers, since they are also shared based on signature.
7126
7127 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7128
7129         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7130         info from the (correct) context.
7131
7132 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7133
7134         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7135         
7136         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7137         using dwarf unwinding info. Not yet used.
7138
7139         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7140
7141 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7142
7143         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7144         descriptors.
7145
7146         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7147         special case and handle mono_arch_delegate_invoke_impl() returning
7148         function descriptors.
7149
7150         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7151         trampolines return function descriptors, too.
7152
7153 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7154
7155         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7156         out_of_line optimization.
7157
7158 2009-01-21  Martin Baulig  <martin@ximian.com>
7159
7160         * mini.h
7161         (MonoCompile): Added `disable_deadce_vars' to disable removing
7162         unused variables.
7163
7164         * mini.c
7165         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7166         inside the debugger.
7167
7168         * liveness.c (mono_analyze_liveness): Don't remove any unused
7169         variables if `cfg->disable_deadce_vars' is set.
7170
7171 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7172
7173         * method-to-ir.c: Only apply exception constructor optimization if
7174         the the method actually belongs to an exception class.  Fixes
7175         #467456.
7176
7177 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7178
7179         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7180         change inside a #ifdef __mono_ppc64__.
7181
7182         * aot-compiler.c (compile_method): Remove the previous limitation.
7183
7184         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7185         on type variables in AOTed code.
7186         
7187         * aot-compiler.c (compile_method): Skip generic methods having type 
7188         constraints on their generic parameters.
7189
7190         * aot-compiler.c (compile_method): Check for methods which cannot be
7191         encoded inside RGCTX_FETCH patches as well.
7192
7193         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7194         build.
7195
7196 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7197
7198         * method-to-ir.c: Force the vtable variable in shared generic code
7199         for the case that they might show up on a stack trace where they
7200         are needed.
7201
7202         * mini-exceptions.c: Save and use generic sharing info as well as
7203         IP in stack traces to resolve shared generic instantiations.
7204
7205 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7206
7207         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7208         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7209
7210 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7211
7212         * method-to-ir.c: Do generic sharing for array constructors.
7213
7214 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7215
7216         * mini-exceptions.c (mono_print_thread_dump): Add information
7217         about the thread state using wapi_current_thread_desc.
7218
7219 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7220
7221         * basic-simd.cs: Tests for the new constructors. 
7222
7223 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7224
7225         * mini-ops.h: Added OP_EXPAND_*
7226
7227         * cpu-x86.md: Same.
7228
7229         * mini-x86.c (mono_arch_output_basic_block): Same.
7230         
7231         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7232
7233 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7234
7235         * iltests.il.in: Add a test for #467385.
7236
7237 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7238
7239         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7240         thread been cleaned up is not the same currently in execution.
7241
7242         Fixes appdomain-unload crashes on windows, osx and linux variants
7243         without the __thread keyword.
7244
7245 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7246
7247         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7248         (koush@koushikdutta.com). Implement this for android.
7249
7250         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7251         begins with a digit.
7252
7253         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7254         mono_marshal_get_write_barrier ().
7255
7256 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7257
7258         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7259         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7260         that pass them on a register pair.
7261
7262         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7263         test was crashing due to that.
7264
7265 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7266
7267         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7268         trampoline code. Include ucontext.h only if available.
7269
7270 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7271
7272         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7273         and doesn't check whether it's sharable, like it was before
7274         removing the shared generics hash.  This brings IronPython
7275         performance back to what it was before that change.
7276
7277 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7278
7279         * method-to-ir.c: Handle delegate invocation optimization earlier,
7280         otherwise it would be handled (much more slowly) by the
7281         final/sealed optimization.
7282
7283 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7284
7285         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7286         domain is not set. Fixes #465864.
7287
7288 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7289
7290         * method-to-ir.c: Don't stop sharing of generic methods with catch
7291         clauses - we already handle those.
7292
7293 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7294
7295         * mini.c, mini.h: lookup_generic_method() is now
7296         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7297         making the shared_generics_hash obsolete.
7298
7299 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7300
7301         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7302         use the red zone.  Make room on the stack first and then use it,
7303         not the other way around.
7304
7305 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7306
7307         * mini.c (mini_init): Call mono_xdebug_init ().
7308
7309         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7310
7311 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7312
7313         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7314
7315         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7316         trampolines.
7317
7318         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7319         debug+unwind info for trampolines.
7320
7321         * mini.c (mono_create_unwind_op): New helper function.
7322
7323         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7324
7325 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7326
7327         * aot-compiler.c: Fix the build.
7328
7329 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7330
7331         * Makefile.am: Update dtrace-prelink.sh location.
7332
7333 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7334
7335         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7336         optimization. Fixes #464520.
7337
7338 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7339
7340         * mini-amd64.c : Adding code to save/restore non-volatile registers
7341            on Winx64.
7342
7343         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7344           registers on Winx64.
7345
7346         Contributed under MIT/X11 license.
7347
7348 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7349
7350         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7351         __GNUC_MINOR__ which can break when the major version changes.
7352
7353 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7354
7355         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7356
7357 2009-01-07  Geoff Norton  <gnorton@novell.com>
7358
7359         * helpers.c:  Allow mono -v -v -v to work on darwin.
7360
7361 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7362
7363         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7364           pattern. 
7365
7366         Contributed under MIT/X11 license.
7367
7368 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7369
7370         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7371         instead of directly accessing type->data.klass. Fixes #462016.
7372         (mono_allocate_stack_slots_full): Ditto.
7373
7374         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7375         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7376
7377         * aot-compiler.c (emit_plt): Fix ARM build.
7378
7379 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7380
7381         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7382         
7383         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7384         change.
7385
7386         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7387         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7388         #463357.
7389
7390         * iltests.il.in: Add a regression test.
7391
7392 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7393
7394         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7395
7396 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7397
7398         * basic-simd.cs: Add a regression test for #462457.
7399
7400 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7401
7402         * mini-ops.h: Add a definition of XPHI.
7403
7404         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7405
7406         * ssa.c (op_phi_to_move): Handle XPHI.
7407
7408         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7409
7410         Fixes #462457
7411
7412 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7413
7414         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7415
7416 2008-12-31  Geoff Norton  <gnorton@novell.com>
7417
7418         * mini-ppc.c: The prolog size allocated can be too small for darwin
7419         ppc32 under certain circumstances.  Also fix a small logic bug.
7420
7421 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7422
7423         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7424         while loading AOT methods.
7425
7426         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7427         since only the former is nulled out after a successful cast. This prevents
7428         crashes with rethrown exceptions when using --debug=casts.
7429
7430 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7431
7432         * mini.h: New macro for checking whether a method is final,
7433         i.e. whether the method or its class is marked final.
7434
7435         * method-to-ir.c: Use the new macro for all final-checks
7436         consistently.  Fixes the crash in the System.ServiceModel tests.
7437
7438 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7439
7440         * mini-exceptions.c (get_exception_catch_class): Corrected another
7441         overly strict assertion.
7442
7443 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7444
7445         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7446         Clobbering it is not allowed because the caller might use it as
7447         the vtable register in the interface call.
7448
7449 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7450
7451         * mini-exceptions.c (get_exception_catch_class): Corrected an
7452         overly strict assertion.
7453
7454 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7455         
7456         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7457
7458         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7459
7460         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7461
7462         * cpu-mips.md: correct lengths for certain long_ opcodes.
7463
7464         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7465
7466         * 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().
7467         
7468 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7469
7470         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7471         
7472 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7473         
7474         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7475         
7476 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7477
7478         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7479         next basic block.
7480         
7481 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7482
7483         * 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
7484
7485         * 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)
7486         
7487 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7488         
7489         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7490         
7491 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7492
7493         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7494         gshared code. Fixes #458947.
7495
7496         * generics.cs: Add a test.
7497
7498 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7499         
7500         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7501         
7502         * mini-mips.c: first pass n32 code generation.
7503
7504         * mini-mips.h: datatypes and defines for n32 support.
7505
7506         * exceptions-mips.c: first pass n32 code generation.
7507         
7508         * tramp-mips.c: first pass n32 code generation.
7509         
7510         * cpu-mips.md: add long_ opcodes.
7511         
7512 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7513
7514         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7515
7516         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7517         
7518         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7519         
7520         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7521
7522         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7523
7524         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7525
7526         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7527
7528         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7529
7530         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7531
7532 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7533
7534         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7535
7536 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7537
7538         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7539
7540 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7541
7542         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7543         descriptors for helper functions directly in front of the code.
7544
7545 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7546
7547         * method-to-ir.c: Removed an unnecessary assertion.
7548
7549 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7550
7551         * method-to-ir.c: Merge SGEN changes from the old JIT.
7552
7553 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7554
7555         * driver.c (compile_all_methods_thread_main): Handle failure of
7556         mono_get_method ().
7557
7558 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7559
7560         * mini-ppc.c: Merged with mini-ppc64.c.
7561
7562         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7563
7564         * Makefile.am: Use the same sources for PPC and PPC64.
7565
7566         * mini-ppc64.c: Removed.
7567
7568 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7569
7570         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7571         code to mono_bb_is_fall_through.
7572         
7573         * branch-opts.c (mono_remove_critical_edges): Same.
7574
7575 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7576
7577         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7578         expect that an OP_BR_REG will be there.
7579
7580 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7581
7582         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7583         for the many branch ops. The original check miss OP_BR_REG.
7584
7585         Fixes #457574.
7586         
7587 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7588
7589         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7590
7591 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7592
7593         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7594         while holding the aot lock.
7595
7596 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7597
7598         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7599         
7600 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7601
7602         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7603           to release all runtime callable wrappers held by the runtime.
7604
7605         Contributed under MIT/X11 license.
7606
7607 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7608
7609         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7610           for Winx64.
7611
7612         Contributed under MIT/X11 license.
7613
7614 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7615
7616         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7617         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7618
7619 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7620
7621         * cpu-mips.md: fix ckfinite length
7622
7623         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7624         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7625         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7626         
7627 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7628
7629         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7630         
7631 2008-12-08  Geoff Norton  <gnorton@novell.com>
7632
7633         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7634         size by 8 bytes as well.
7635
7636 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7637
7638         * basic-simd.cs: Fix method names for Vector16b.
7639         
7640 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7641
7642         * basic-simd.cs: Fix method names for Vector16sb.
7643
7644 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7645
7646         * basic-simd.cs: Fix method names for Vector8us.
7647         
7648 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7649
7650         * basic-simd.cs: Fix method names for Vector8s.
7651         
7652 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7653
7654         * basic-simd.cs: Fix method names for Vector4ui.
7655
7656 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7657
7658         * basic-simd.cs: Fix method names for Vector2l.
7659
7660 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7661
7662         * basic-simd.cs: Fix method names for Vector2d.
7663
7664 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7665
7666         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7667         that are extension methods.
7668
7669 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7670
7671         * basic-simd.cs: Fix method names for Vector4f.
7672
7673 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7674
7675         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7676         as such. Fixes #456669.
7677
7678 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7679
7680         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7681         
7682 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7683
7684         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7685         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7686         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7687         (mips_adjust_stackframe): handle FP spills
7688                 
7689         * mini-ops.h: add mips_mtc1_s2
7690         
7691         * cpu-mips.md: add mips_mtc1_s2
7692         
7693 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7694
7695         * unwind.c: New file, move the unwind info encoding functions here from
7696         aot-compiler.c, so they could be used at runtime too.
7697
7698 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7699
7700         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7701         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7702         
7703 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7704
7705         * mini-mips.c: cleanup warnings
7706         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7707         (mips_adjust_stackframe): handle case of taking the address of stack locals
7708         
7709 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7710
7711         * aot-compiler.c: Implement a few functions missing from the asm writer.
7712         (emit_method_code): Only write symbols for methods when using the bin
7713         writer, since the assembler can't deal with the characters in our method
7714         names.
7715
7716         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7717
7718         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7719         call.
7720
7721         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7722         a bit to also restore %rax.
7723
7724 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7725
7726         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7727
7728 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7729
7730         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7731         arguments.
7732
7733 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7734
7735         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7736
7737         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7738         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7739
7740         * exceptions-ppc64.c: Removed.
7741
7742         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7743
7744 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7745
7746         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7747         tramp-ppc64.c.
7748
7749         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7750
7751         * tramp-ppc64.c: Removed.
7752
7753 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7754
7755         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7756         the TYPESPEC table.
7757
7758 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7759
7760         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
7761
7762         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
7763         mini-ppc.h instead of mini-ppc64.h.
7764
7765         * mini-ppc64.h: Removed.
7766
7767 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7768
7769         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
7770         
7771         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
7772         
7773 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7774
7775         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
7776         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
7777         code easier.
7778
7779 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7780
7781         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
7782
7783 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7784
7785         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
7786
7787 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7788
7789         * basic-simd.cs: Tests for operator == and != on Vector4f.
7790
7791 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7792
7793         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
7794
7795         * simd-intrinsics.c: Kill useless enum.
7796
7797 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7798
7799         * cpu-mips.md: add long_conv_to_ovf_i4_2
7800         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
7801
7802 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7803
7804         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
7805         
7806         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
7807
7808 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7809
7810         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
7811         
7812 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7813
7814         * basic-simd.cs: Add tests for new methods.
7815
7816 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7817
7818         * simd-intrinsics.c: Add support for operator == and !=
7819         on Vector4(u)i.
7820
7821         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
7822
7823 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7824
7825         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
7826
7827 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
7828
7829         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
7830
7831         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
7832         MONO_PATCH_INFO_ICALL_ADDR.
7833
7834         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
7835
7836         * aot-compiler.c: Resurrect full-aot support.
7837
7838 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7839
7840         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
7841         
7842 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7843
7844         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
7845         
7846 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
7847
7848         * basic-simd.cs: Fix tests to work under ppc.
7849         Remove tests for methods that will be removed.
7850
7851 2008-12-03  Mark Probst  <mark.probst@gmail.com>
7852
7853         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
7854         generic type (via a typedef or typeref) correctly.
7855
7856 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
7857
7858         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
7859         diagnose an assertion failure.
7860
7861 2008-12-02  Mark Probst  <mark.probst@gmail.com>
7862
7863         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
7864         Fix trampoline size.
7865
7866         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
7867         conversion opcodes are implemented natively instead via emulation.
7868
7869 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7870
7871         * cpu-mips.md: remove mips_xori
7872
7873         * mini-ops.h:  remove mips_xori
7874
7875         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
7876
7877         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
7878         
7879         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
7880         
7881 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7882
7883         * cpu-mips.md: fix instruction lengths.
7884
7885         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
7886
7887         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
7888
7889         * mini-ops.h: fix slti / sltiu op profiles.
7890         
7891 2008-12-02  Martin Baulig  <martin@ximian.com>
7892
7893         * method-to-ir.c (mono_method_to_ir): Disable debugging
7894         information for the init locals block to make the debugger stop
7895         after all locals have been initalized.
7896
7897 2008-12-02  Martin Baulig  <martin@ximian.com>
7898
7899         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
7900         running inside the debugger.
7901
7902 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
7903
7904         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
7905         is enabled.
7906
7907         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
7908         alu->alu imm optimization which only shows if deadce is disabled.
7909
7910         * aot-compiler.c: Rename the function names for the binary and asm writers
7911         so they can coexist in the same process. Rework the xdebug code to use the
7912         asm writer. This avoids the need to call into the runtime to dump the
7913         debugging info. Add more debugging info for types.
7914
7915         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
7916
7917         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
7918         cpu description tables, they can't occur in cpu-<ARCH>.md.
7919
7920         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
7921         the stack in CEE_LDFLDA. Fixes #450542.
7922
7923         * generics.cs: Add a new test.
7924
7925 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7926
7927         * mini-ops.h: updated MIPS opcodes
7928         * mini-mips.c: decompose long opts
7929         * mini-mips.h: decompose long opts
7930         
7931 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
7932
7933         * cpu-mips.md: fix length on int_rem_un
7934         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
7935         
7936 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
7937
7938         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
7939
7940         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
7941
7942 2008-11-29  Martin Baulig  <martin@ximian.com>
7943
7944         * mini-exceptions.c (mono_handle_native_sigsegv): Check
7945         mono_debug_using_mono_debugger() in addition to the
7946         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
7947
7948 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7949
7950         * mini-ops.h: updated more MIPS opcodes
7951         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
7952         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
7953         
7954 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7955
7956         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
7957
7958 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7959
7960         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
7961         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
7962         * mini-ops.h: correct selected mips opcode entries
7963         
7964 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7965
7966         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
7967         make them work.
7968
7969 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7970
7971         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
7972
7973 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7974
7975         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
7976         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
7977         * mini-mips.h: disable IMT
7978         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
7979         
7980 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7981
7982         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
7983
7984 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7985
7986         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
7987
7988 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
7989
7990         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
7991         consistency.
7992
7993 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7994
7995         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
7996         for Set/GetVector aligned versions.
7997
7998 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7999
8000         * basic-simd.cs: Add tests for Get/SetVector.
8001
8002 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8003
8004         * mini.c: Removed g_slist_append_mempool().  Now in
8005         metadata/mempool.c.
8006
8007 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8008
8009         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8010         size properly and make the bounds check optional.
8011
8012         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8013         for SetVector and IsAligned.
8014
8015 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8016
8017         * mini.c: Remove unused mono_normalize_opcodes () function.
8018
8019 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8020
8021         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8022         using the new atomic add ops now.
8023
8024         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8025         add.
8026
8027 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8028
8029         * mini-ppc64.c: Several fixes.
8030
8031 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8032
8033         * cpu-mips.md: added jump_table
8034         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8035
8036 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8037
8038         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8039
8040 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8041
8042         * mini-ops.h: corrected a handful of MIPS opcodes.
8043
8044 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8045
8046         * aot-compiler.c: MIPS to use ELF writer
8047
8048 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8049
8050         * mini-codegen.c: remove MIPS specific assert.
8051
8052 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8053
8054         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8055         fixes.  PPC64 now passes most of the runtime regressions.
8056
8057 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8058
8059         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8060         volatile intervals a bit.
8061
8062 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8063
8064         * basic-long.cs: New test case.
8065
8066 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8067
8068         * mini.c (mini_method_compile): Disable globalra for large methods for 
8069         now.
8070
8071         * regalloc2.c (order_moves): Add fp support.
8072
8073         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8074         source bblock ends with an OP_BR_REG.
8075
8076         * ratests.cs: Add a new test.
8077
8078 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8079
8080         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8081         sharing.  PPC64 now passes generics.exe.
8082
8083 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8084
8085         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8086
8087 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8088
8089         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8090         memory when mono_jit_info_table_find () can't find the method in the
8091         LMF case.
8092
8093         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8094         AOTed code too.
8095         
8096         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8097         writer too.
8098
8099 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8100
8101         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8102         Several fixes.  PPC64 now runs exceptions.exe and
8103         devirtualization.exe.
8104
8105 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8106
8107         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8108         arrays.exe and basic-math.exe.
8109
8110 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8111
8112         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8113         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8114
8115 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8116
8117         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8118
8119 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8120
8121         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8122
8123         * ir-emit.h: Move macros from method-to-ir.c to here.
8124
8125 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8126
8127         * mini-ops.h: Correct the long simd ops to use LREG.
8128
8129 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8130
8131         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8132         
8133         * mini-ops.h: Correct the dreg type of a few long opcodes.
8134
8135         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8136         Add netbsd support.
8137
8138 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8139
8140         * mini-ppc.c: remove negative stack references in epilog
8141         for platforms that don't support the red zone.
8142
8143 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8144
8145         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8146         point regs.  Now PPC64 passes basic-calls.exe.
8147
8148 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8149
8150         * basic-simd.cs: Add tests for accessors of Vector2l.
8151
8152 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8153
8154         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8155
8156         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8157         
8158         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8159
8160 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8161
8162         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8163         PPC64 passes basic-long.exe.
8164
8165 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8166
8167         * decompose.c: Decompose carry and overflow add on PPC64 like on
8168         other 64 bit archs.  Don't decompose sub at all on PPC64.
8169
8170         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8171         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8172         basic-long.exe.
8173
8174 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8175
8176         * basic-simd.cs: Add tests for accessors of Vector2d.
8177
8178 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8179
8180         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8181
8182         * cpu-x86.md: Same.
8183
8184         * mini-x86.c (mono_arch_output_basic_block): Same.
8185         
8186         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8187
8188 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8189
8190         * basic-simd.cs: Add tests for accessors of Vector4f.
8191
8192 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8193
8194         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8195
8196         * cpu-x86.md: Same.
8197
8198         * mini-x86.c (mono_arch_output_basic_block): Same.
8199         
8200         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8201
8202 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8203
8204         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8205
8206 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8207
8208         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8209
8210         * cpu-x86.md: Same.
8211
8212         * mini-x86.c (mono_arch_output_basic_block): Same.
8213         
8214         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8215
8216 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8217
8218         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8219
8220 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8221
8222         * simd-intrinsics.c: Enable setters for Vector16sb.
8223
8224 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8225
8226         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8227
8228         * cpu-x86.md: Same.
8229
8230         * mini-x86.c (mono_arch_output_basic_block): Same.
8231         
8232         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8233
8234 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8235
8236         * simd-intrinsics.c: Implement setter for Vector8us.
8237
8238 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8239
8240         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8241         for dead variables.
8242
8243 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8244
8245         * mini-ppc.c: remove references to the red zone in the prolog
8246         (for systems that don't support it).
8247
8248 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8249
8250         * cpu-ppc64.md: Fixed a few instruction lengths.
8251
8252         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8253         now.
8254
8255 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8256
8257         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8258         basic.exe now.
8259
8260 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8261
8262         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8263
8264 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8265
8266         * mini-ops.h: Added OP_INSERT_I2.
8267
8268         * cpu-x86.md: Same.
8269
8270         * mini-x86.c (mono_arch_output_basic_block): Same.
8271         
8272         * simd-intrinsics.c: Implement setter for Vector8s.
8273
8274         * simd-methods.h: Add the names of get setters of Vector8s.
8275
8276 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8277
8278         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8279         
8280         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8281         parameters.
8282
8283         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8284
8285 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8286
8287         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8288         for PPC64.  An empty program runs now.
8289
8290 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8291
8292         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8293
8294         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8295         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8296         info for JITted code is emitted into a shared library, loadable into gdb.
8297
8298 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8299
8300         * Makefile.am: Changes to build PPC64.
8301
8302         * mini-arch.h: Include mini-ppc64.h on PPC64.
8303
8304 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8305
8306         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8307         in PPC code up to r119147.
8308
8309 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8310
8311         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8312         cpu-ppc64.md: Changes for PPC64.
8313
8314         Based on code submitted by andreas.faerber@web.de at
8315         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8316         X11/MIT license.
8317
8318 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8319
8320         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8321         cpu-ppc64.md: Copied from the corresponding PPC files from
8322         r118846.
8323
8324 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8325
8326         * mini-ops.h: Added OP_ROUND.
8327
8328         * cpu-x86.md: Added round.
8329
8330         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8331
8332         * basic-math.cs: Added test_0_round to test rounding.
8333
8334         Contributed under MIT/X11 license.
8335
8336 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8337
8338         * aot-compiler.c : Fix the Winx64 build.
8339
8340         Contributed under MIT/X11 license.
8341
8342 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8343
8344         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8345         in OP_EXTRACT_R8 to avoid possible stack corruption.
8346
8347 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8348
8349         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8350
8351         * cpu-x86.md: Added extract_r8.
8352
8353         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8354         
8355         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8356         a couple of OP_EXTRACT_I4.
8357
8358         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8359
8360         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8361
8362 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8363
8364         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8365         and not 4.1. 
8366
8367 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8368
8369         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8370         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8371
8372         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8373         are not needed any more.
8374
8375         * mini.h: Remove the unused INS_LIST macros.
8376
8377         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8378         longer needed.
8379
8380         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8381         ir-emit.h.
8382
8383         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8384         mono_alloc_ireg () instead.
8385
8386         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8387         macros.
8388
8389         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8390         on amd64.
8391
8392         * aot-runtime.c (load_aot_module): Disable AOT when running under
8393         CAS.
8394
8395         * mini-amd64.h: Change the monitor fastpath defines to check for
8396         !PLATFORM_WIN32 so they work on *bsd too.
8397
8398         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8399
8400         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8401
8402         * mini.h (MonoCompile): Remove new_ir flag.
8403
8404         * regalloc.h regalloc.c: Remove unused code.
8405
8406         * cpu-*.md: Remove more unused opcodes.
8407
8408         * simple-cee-ops.h simple-mini-ops.h: Removed.
8409
8410         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8411         
8412 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8413
8414         * aliasing.h: Removed.
8415
8416         * *.c: Remove references to aliasing.h and inssel.h.
8417
8418         * mini.c: Remove additional unused functions.
8419
8420         * mini-ops.h cpu-*.md: Remove unused opcodes.
8421
8422 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8423
8424         Remove the old JIT code.
8425
8426         * inssel*.brg: Removed.
8427
8428         * ssa.c abcremoval.c aliasing.c: Removed.
8429
8430         * ssa2.c: Renamed to ssa.c.
8431
8432         * abcremoval2.c: Renamed to abcremoval.c.
8433
8434         * *.c: Removed all !cfg->new_ir code.
8435
8436         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8437         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8438
8439         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8440         
8441 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8442
8443         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8444         to simplify the code and cut back on the number of global symbols in the AOT
8445         file.
8446         
8447         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8448
8449 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8450
8451         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8452         with the got/got_info tables.
8453
8454         * mini.h: Bump AOT file format version.
8455         
8456         * unwind.h: New file, contains definitions for stack unwinding.
8457
8458         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8459         to cfg->unwind_ops.
8460         
8461         * aot-compiler.c: Generalize the emitting of unwind information to use the
8462         information in cfg->unwind_ops.
8463
8464         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8465
8466         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8467         AOT method frames. Enable writing symbols for methods by default.
8468
8469 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8470
8471         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8472         and make it work with vectors of element sizes 1, 2 and 4.
8473
8474         * simd-intrinsics.c: Enable getter for all vectors with element size
8475         1, 2 or 4.
8476
8477         * simd-methods.h: Add the names of other getters.
8478
8479         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8480
8481         * cpu-x86.md: Same.
8482
8483         * mini-x86.c: Same.
8484
8485 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8486
8487         * mini-ppc.h: portability fix.
8488
8489 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8490
8491         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8492         buggy and will overwrite it.
8493
8494 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8495
8496         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8497         Use it to emit local symbols for all methods so AOTed methods show up with
8498         their full name in gdb/valgrind output.
8499
8500 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8501
8502         * mini-ppc.c: portability fixes.
8503
8504 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8505
8506         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8507         entries out of the if (!generic_shared...) code so it is always done.
8508         (mono_class_init_trampoline): Do the patching when running under valgrind
8509         too, newer versions of valgrind have no problems with it.
8510
8511 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8512
8513         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8514         further sections.
8515
8516 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8517
8518         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8519         filters.
8520
8521 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8522
8523         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8524
8525 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8526
8527         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8528
8529         * cpu-x86.md: Same.
8530
8531         * mini-x86.c: Same.
8532
8533         * simd-intrinsics.c: Same.
8534
8535 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8536
8537         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8538
8539 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8540
8541         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8542         to work with more Vector types.
8543
8544 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8545
8546         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8547         store the elemens directly instead of using and intermediate.
8548
8549 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8550
8551         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8552
8553         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8554         to preserve %eax for aot plt trampolines.
8555
8556         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8557         (encode_method_ref): Flag synchronized methods so they won't go through
8558         the AOT trampoline.
8559
8560         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8561         wrappers.
8562
8563         * cpu-ia64.md (jmp): Increase max length.
8564
8565 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8566
8567         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8568         open generic classes.
8569
8570         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8571
8572         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8573         box+brtrue optimization since it causes test failures on x86.
8574
8575 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8576
8577         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8578
8579         * cpu-x86.md: Same.
8580
8581         * mini-x86.c: Same.
8582
8583         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8584         for simd ctor values. 
8585
8586         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8587         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8588
8589 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8590
8591         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8592         LogicalRightShift.
8593
8594         * simd-instrincs.c: Same.
8595
8596         * basic-simd.cs: Same.
8597
8598 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8599
8600         * ratests.cs: Add more tests.
8601
8602         * regalloc2.c (add_spill_code): Handle more corner cases.
8603
8604 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8605
8606         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8607         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8608         both the source an destination of an instruction.
8609
8610 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8611
8612         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8613         wapihandles.c: more portability changes.
8614
8615 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8616
8617         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8618         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8619         safe to execute in a signal handler and the kernel provides better
8620         the info in /proc/self/smaps. Avoid the assert on sigaction during
8621         cleanup.
8622
8623 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8624
8625         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8626         do the bblock linking hack if it is actually needed.
8627
8628         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8629         up linking.
8630
8631         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8632         crash problem is fixed.
8633
8634         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8635         bblocks.
8636
8637         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8638         for catch clauses.
8639         (mini_method_compile): Set the starting value of next_vreg to 
8640         MAX_IREGS + MAX_FREGS when using globalra.
8641
8642         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8643         filter clauses with BB_EXCEPTION_HANDLER.
8644
8645         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8646
8647 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8648
8649         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8650         space for stdcall.  Fixes regressions on Win32.
8651
8652 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8653
8654         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8655         bblocks.
8656         (linear_scan): Remove an assert which doesn't seem to be needed.
8657
8658         * local-propagation.c (mono_local_deadce): Avoid a call to
8659         MONO_DELETE_INS which would screw up the instruction linking.
8660
8661         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8662
8663         * regalloc2.c: Upgrade to work the current JIT code.
8664
8665 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8666
8667         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8668         case.
8669
8670         * aot-runtime.c: Remove some dead code.
8671
8672         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8673         consistency.
8674         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8675
8676         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8677         trampolines using sscanf since atoi doesn't work on large unsigned values.
8678
8679         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8680         Initialize code_size.
8681
8682 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8683
8684         * method-to-ir.c (mini_emit_inst_for_method): Make
8685         Interlocked.CompareExchange work for Int arguments on 32 bit
8686         archs, as well.
8687
8688 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8689
8690         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8691
8692 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8693
8694         * main.c Fix MSVC build.
8695
8696         Contributed under MIT/X11 license.
8697
8698 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8699
8700         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8701         alignment larger than 8 bytes are aligned correctly, too.
8702
8703         * mini.c: Honor the min_align field of MonoClass when laying out
8704         the stack.
8705
8706 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8707
8708         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8709
8710         * aot-compiler.c (emit_plt): Fix a warning.
8711         
8712         * aot-compiler.c: Implement ARM support in the binary writer.
8713
8714 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8715
8716         * basic-simd.cs: Add test for getter with byref arg.
8717         Fix the naming of a few tests.
8718         Add missing checks to a test.
8719
8720 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8721
8722         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8723
8724         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8725         most of the full-aot support for monitor enter/exit trampolines.
8726
8727         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8728         enter/exit trampoline creation functions.
8729
8730         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8731         make dist.
8732
8733 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8734
8735         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8736         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8737         implement the needed functionality without adding crap to the runtime.
8738
8739 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8740
8741         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8742         non-x86 builds.
8743
8744         * mini.c (mono_build_date): New global version holding the build date in
8745         string format.
8746         
8747         * Makefile.am (buildver.c): Generate a file containing the build date.
8748
8749         * main.c: Set the build date from the generated file.
8750
8751         * mini.c (mono_get_runtime_build_info): New helper function returning build
8752         information in a string format.
8753         
8754         * driver.c (mono_main): Print the build date in --version.
8755
8756         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8757         file when the bind-to-runtime-version option is used.
8758
8759 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8760
8761         * simd-intrinsics.c: Fix bug when using getters and byref args. 
8762
8763 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8764
8765         * simd-methods.h: Rename prefetch methods.
8766
8767         * simd-intrinsics.c: Same.      
8768
8769 2008-11-05  Mark Probst  <mark.probst@gmail.com>
8770
8771         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
8772         sizes.
8773
8774 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8775
8776         * aot-compiler.c: Use the bundled elf header files instead of depending on
8777         the system one.
8778         
8779         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
8780         mempool.
8781
8782         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
8783         on every call.
8784
8785 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
8786
8787         * cpu-x86.md: Add store nta ops.
8788
8789         * mini-ops.h: Same.
8790
8791         * mini-x86.c: Same.
8792
8793         * mini.h: Add an enum for simd prefetch modes.
8794
8795         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
8796         of store. Use the changed code to support store nta.
8797
8798         * simd-intrinsics.c: Add prefetch ops for all vector types.
8799
8800 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8801
8802         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
8803         threads.
8804         
8805         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
8806         names.
8807
8808         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
8809         trampolines.
8810
8811 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8812
8813         * mini-x86.c: Fixed commit.
8814
8815 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8816
8817         * aot-compiler.c (emit_plt): Align the plt section only on x86.
8818
8819 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8820
8821         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
8822         and MONITOR_EXIT, for the ASM fastpaths.
8823
8824         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
8825         available.
8826
8827         * mini.c, patch-info.h: Signature and patch infos for
8828         Monitor.Enter/Exit trampolines.
8829
8830         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
8831
8832         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
8833         Monitor.Enter/Exit ASM fastpath for Linux.
8834
8835 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8836
8837         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
8838
8839         * objects.cs: Add a new test.
8840         
8841         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
8842
8843         * aot-runtime.c (load_method): Run class initialization in the PLT case even
8844         if MONO_LOG_LEVEL is set.
8845
8846         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
8847
8848         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
8849
8850         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
8851         
8852         * aot-compiler.c: Change the relocation code to use virtual addresses instead
8853         of file offsets. Align the sections belonging to the data segment to 
8854         PAGESIZE.
8855
8856 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8857
8858         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
8859         elf.h. Port it to amd64.
8860
8861 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8862
8863         * driver.c: Enable SIMD by default.
8864
8865 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8866
8867         * cpu-x86.md: Add prefetch op.
8868
8869         * mini-ops.h: Same.
8870
8871         * mini-x86.c: Same.
8872
8873         * mini.h: Add an enum for simd prefetch modes.
8874
8875         * simd-methods.h: Add prefetch function names.
8876
8877         * simd-intrinsics.c: Add prefetch ops for all vector types.
8878
8879 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8880
8881         * aot-compiler.c (emit_bytes): Speed this up a little.
8882
8883 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
8884
8885         * aot-compiler.c: Add JIT time etc. statistics.
8886         
8887         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
8888
8889         * mini.h (MonoCompile): Add 'got_offset' field.
8890
8891         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
8892         method_got_offsets array.
8893
8894         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
8895         wrappers.
8896
8897         * aot-compiler.c (compile_method): Add generic method instances referenced
8898         by the method to the list of methods to be compiled, this is required so if
8899         A<T> references B<T>, and another assembly references A<int>, then it will
8900         also get a copy of B<int>.
8901
8902         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
8903         when checking for monitor enter/exit.
8904
8905 2008-10-30  Mark Probst  <mark.probst@gmail.com>
8906
8907         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
8908         for Monitor.Enter and Monitor.Exit if enabled.
8909
8910         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
8911         Solaris.
8912
8913 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
8914
8915         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
8916         of an OP_MOVE. Fixes #440046.
8917
8918         * basic-long.cs: Add a new test.
8919
8920 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8921
8922         * mini.h: Add synchronization note for the managed counter-part.
8923
8924         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
8925         returns the simd caps of the current cpu.
8926
8927 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8928
8929         * basic-simd.cs: Remove Console.WriteLine.
8930
8931 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8932
8933         * basic-simd.cs: New tests for Vector2ul.
8934
8935 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8936
8937         * simd-intrinsics.c: Add new vector type Vector2ul.
8938
8939 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8940
8941         * basic-simd.cs: New tests for Vector2l.
8942
8943 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8944
8945         * cpu-x86.md: Add long version of most packed int ops.
8946
8947         * mini-ops.h: Same.
8948
8949         * mini-x86.h: Same.
8950
8951         * simd-intrinsics.c: Add new vector type Vector2l.
8952
8953 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8954
8955         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
8956
8957         * simd-methods.h: Remove SN_op_BitwiseXor.
8958
8959 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8960
8961         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
8962         alignment.
8963
8964 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8965
8966         * basic-simd.cs: Test for Vector2d.
8967
8968         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
8969         value.
8970
8971 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8972
8973         * cpu-x86.md: Add double version of all packed float ops.
8974
8975         * mini-ops.h: Same.
8976
8977         * mini-x86.h: Same.
8978
8979         * simd-intrinsics.c: Add new vector type Vector2d.
8980
8981         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
8982
8983         * simd-methods.h: Add Duplicate.
8984
8985 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8986
8987         * basic-simd.cs: Test for packing with signed saturation.
8988
8989 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8990
8991         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
8992         found in the TYPESPEC table.
8993
8994 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
8995
8996         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
8997         too.
8998
8999         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9000
9001         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
9002         instead of the RVA, since the RVA can be changed by tools like the cil 
9003         stripper.
9004
9005         * method-to-ir.c (mono_method_to_ir2): Ditto.
9006
9007         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9008         (deserialize_variable): Ditto.
9009
9010 2008-10-25  Martin Baulig  <martin@ximian.com>
9011
9012         * debug-mini.c (write_variable): Use
9013         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9014
9015 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9016
9017         * cpu-x86.md: Add unsigned variants of packd and packw.
9018
9019         * mini-ops.h: Same.
9020
9021         * mini-x86.h: Emit the right instruction for packd and packw.
9022         Add unsigned variants of packd and packw.
9023
9024         * simd-intrinsics.c: Packd and packw were used in place of their
9025         unsigned variants. Change that.
9026         Add intrinsics for (Signed)PackWithSignedSaturation.
9027
9028         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9029
9030 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9031
9032         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9033
9034 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9035
9036         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9037
9038         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9039
9040         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9041         sse instructions.
9042
9043         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9044
9045 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9046
9047         * method-to-ir.c, mini.c: Special casing for the synchronized
9048         wrapper for the ldtoken+GetTypeFromHandle case.
9049
9050 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9051
9052         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9053
9054         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9055         created/split bblocks.
9056
9057 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9058
9059         * mini-ops.h: Add packed signed mul high.
9060         
9061         * cpu-x86.md: Same.
9062
9063         * mini-x86.c (mono_arch_output_basic_block): Same.
9064
9065         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9066
9067         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9068
9069 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9070
9071         * basic-simd.cs: Tests for Vector16sb.
9072
9073 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9074
9075         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9076
9077 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9078
9079         * mini-ops.h: Add packed signed min, max and compare greater.
9080         
9081         * cpu-x86.md: Same.
9082
9083         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9084         saturation.
9085
9086         * simd-methods.h: Add CompareGreaterThan.
9087
9088         * simd-methods.h: Remove CompareEquals.
9089
9090         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9091
9092         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9093
9094         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9095         CompareEqual.
9096
9097 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9098
9099         * basic-simd.cs: Fix tests due to change in the API.
9100
9101 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9102
9103         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9104
9105 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9106
9107         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9108
9109         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9110         inst_offset as this has invalid values for LDADDR.
9111
9112 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9113
9114         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9115
9116         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9117
9118 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9119
9120         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9121         for accessing field->data.
9122
9123 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9124
9125         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9126
9127 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9128
9129         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9130
9131         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9132
9133 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9134
9135         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9136         from the cfg mempool.
9137
9138 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9139
9140         * basic-simd.cs: Tests for new methods in Vector8us.
9141
9142 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9143
9144         * mini-ops.h: Add multiply and store high.
9145         
9146         * cpu-x86.md: Same.
9147
9148         * mini-x86.c (mono_arch_output_basic_block): Same.
9149
9150         * simd-methods.h: Same.
9151
9152         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9153         and CompareEqual.
9154
9155 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9156
9157         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9158         mono_class_setup_vtable ().
9159
9160         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9161         mono_class_get_vtable_entry () for accessing klass->vtable.
9162
9163         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9164
9165         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9166         found.
9167
9168         * method-to-ir.c (mono_save_token_info): Don't save references made from
9169         wrappers.
9170
9171         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9172         of generic instances.
9173
9174         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9175
9176 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9177
9178         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9179         OP_JMP depends on the method signature.  Calculate it properly.
9180
9181 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9182         
9183         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9184         called directly.
9185
9186         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9187         instances.
9188         (emit_extra_methods): Add another table mapping method indexes to 
9189         offsets in the extra_method_info table.
9190
9191         * mini.h: Bump AOT file format version.
9192         
9193         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9194         and mono_aot_get_method_from_token () into one function.
9195
9196 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9197
9198         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9199         separate counter.
9200
9201 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9202
9203         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9204         methods.
9205
9206         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9207         disable_aot.
9208
9209         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9210
9211         * mini.h: Bump aot file format version.
9212
9213         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9214         AOT file can contain native code for methods which are not in the METHOD
9215         table. Generate code for non-sharable generic instances of generic methods
9216         found in the METHODSPEC table.
9217         
9218         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9219         encoding generic type handles.
9220
9221         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9222         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9223
9224         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9225         macros + MONO_ADD_INS.
9226
9227         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9228         context as well.
9229
9230         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9231
9232         * mini.h: Bump aot file format version.
9233
9234         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9235
9236 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9237
9238         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9239         platforms, with definable stack alignment value.  Set to 16 now
9240         for all platforms.
9241
9242         * mini.c, mini.h, driver.c: Command line option for disabling
9243         stack alignment.
9244
9245 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9246
9247         * basic-simd.cs: Tests for new methods in Vector4ui.
9248
9249 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9250
9251         * mini-ops.h: Add packed int shuffle.
9252         
9253         * cpu-x86.md: Same.
9254
9255         * mini-x86.c (mono_arch_output_basic_block): Same.
9256
9257         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9258         extract mask, max, min, shuffle.
9259
9260         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9261
9262 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9263
9264         * basic-simd.cs: Tests for new methods in Vector8us.
9265
9266 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9267
9268         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9269         RuntimeTypeHandle, not a TypedReference.
9270
9271 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9272
9273         * simd-intrinsics.c: remove relocations.
9274
9275 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9276
9277         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9278         optimizations from the x86 backend.
9279
9280 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9281
9282         * simd-methods.h, simd-intrinsics.c: debloat method names and
9283         prepare for no relocations.
9284
9285 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9286
9287         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9288         
9289         * cpu-x86.md: Same.
9290
9291         * mini-x86.c (mono_arch_output_basic_block): Same.
9292
9293         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9294         extract mask, max, min and sum of absolute differences.
9295
9296         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9297         method name.
9298
9299 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9300
9301         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9302         Renamed one test for consistency.
9303
9304 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9305
9306         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9307         fix to the code that deal with other blocks.
9308
9309 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9310
9311         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9312
9313 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9314
9315         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9316         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9317         able to process the source reg.
9318
9319 2008-10-16  Martin Baulig  <martin@ximian.com>
9320
9321         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9322
9323         * inssel.brg: Add `OP_HARD_NOP'.
9324
9325         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9326
9327         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9328         `OP_HARD_NOP' instruction when running inside the debugger.
9329
9330         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9331         `OP_HARD_NOP' instruction when running inside the debugger.
9332
9333 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9334
9335         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9336         now works. The issue with the regalloc tripping up no longer
9337         happens.
9338
9339         * simd-intrinsics.c (load_simd_vreg): Same.
9340
9341 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9342         
9343         * basic-simd.cs: Tests for new Vector8ui methods.
9344
9345 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9346
9347         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9348         only for type. This fixes crashes where MonoInst::klass is checked
9349         for ops of type != VTYPE or OBJ.
9350
9351         * simd-intrinsics.c (load_simd_vreg): Same.
9352
9353 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9354
9355         * mini-ops.h: Add ops for packed shuffle/max/avg and
9356         extract mask.
9357         
9358         * cpu-x86.md: Same.
9359
9360         * mini-x86.c (mono_arch_output_basic_block): Same.
9361
9362         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9363         extract mask.
9364
9365         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9366         to emit extract mask op.
9367
9368         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9369         to emit word shuffles.
9370
9371 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9372
9373         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9374         the largest alignment needed by a variable, but at least
9375         sizeof(gpointer).
9376
9377 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9378
9379         * basic-simd.cs: Tests for the fixes in the last commit.
9380
9381 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9382
9383         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9384         no longer handles STACK_PTR input.
9385
9386         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9387
9388         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9389         get_simd_vreg   but handles STACK_PTR input.
9390
9391         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9392         as the input can be an arbitrary pointer.
9393
9394         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9395         LDADDR local optimization directly otherwise use a store op.
9396
9397 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9398
9399         * basic-simd.cs: Tests for dup low and dup high.
9400
9401 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9402
9403         * mini-ops.h: Add dup low and dup high ops.
9404         
9405         * cpu-x86.md: Same.
9406
9407         * mini-x86.c (mono_arch_output_basic_block): Same.
9408
9409         * simd-intrinsics.c (vector4f_intrinsics): Same.
9410
9411 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9412
9413         * basic-simd.cs: Tests for recently added functionality.
9414
9415 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9416
9417         * mini-ops.h: Add remaining sse1 fp ops.
9418         
9419         * cpu-x86.md: Add remaining sse1 fp ops.
9420
9421         * mini-x86.c (mono_arch_output_basic_block): Same.
9422
9423         * mini.h: Add enum for simd FP compare conditions.
9424
9425         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9426
9427         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9428         so the backed can generate the appropriate op.
9429
9430 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9431         This patch squeese one more byte from the SimdIntrinsc struct.
9432
9433         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9434         a a shift amount intead of simply or'ing it.
9435
9436         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9437
9438         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9439         byte so we can have an aditional flags field without increasing struct size.
9440
9441         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9442         against the simd_supported_versions bitmask.
9443
9444         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9445
9446 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9447
9448         * mini.c: remove rawbuffer code (the only use here is unsafe because
9449         it takes locks during signal handling and the kernel now provides much
9450         better info in proc/pid/smaps these days).
9451
9452 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9453
9454         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9455         OP_X86_PUSH_OBJ. Fixes #434620.
9456
9457         * objects.cs: Add a test.
9458         
9459 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9460
9461         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9462         that the packuswb/packusdw don't work with unsigned numbers for what
9463         would be negative numbers in signed format.
9464
9465         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9466         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9467
9468         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9469
9470         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9471
9472         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9473
9474         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9475
9476         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9477         add more ops.
9478
9479         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9480         version as the enum in mini.h.
9481
9482         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9483         for sse3 ops, check the simd_version field if present. This way the code
9484         works with all versions of sse.
9485
9486 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9487
9488         * simd-intrinsics.c: Fixed intrinsic name typo.
9489
9490         * mini.h: Added missing simd exported function.
9491
9492         * basic-simd.cs: Added tests for Vector4ui.
9493         Fixed broken test for Vector16b.
9494
9495 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9496
9497         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9498         the max length to 64.
9499
9500 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9501
9502         * method-to-ir.c: Only do the fast virtual generic method call for
9503         non-wrapper methods.
9504
9505         * mini.h, mini-trampolines.c: The new generic virtual remoting
9506         trampoline handles virtual method calls via the vtable (as done by
9507         the fast virtual generic method calls) to remoting proxies.
9508
9509         * mini.c (mono_jit_create_remoting_trampoline): For generic
9510         methods reate a generic virtual remoting trampoline.
9511
9512         * mini-amd64.h: Enable fast virtual generic method calls again.
9513
9514 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9515
9516         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9517         restore registers when doing tail calls.
9518
9519 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9520
9521         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9522         Vector4ui.
9523
9524 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9525
9526         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9527
9528 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9529
9530         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9531
9532 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9533
9534         * basic-simd.cs: Retrofit for API changes.
9535
9536 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9537
9538         * mini-ppc.c: Handle integer stack arguments for tail calls.
9539
9540 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9541
9542         * optflags-def.h: Removed sse3 optimization.
9543
9544         * driver.c: Same.
9545
9546         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9547         sse3.
9548
9549         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9550
9551         * mini.h: Added enumeration with simd versions.
9552
9553         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9554         for detecting SSE3.
9555
9556         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9557
9558         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9559
9560 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9561
9562         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9563
9564         * basic-simd.cs: Fixed test naming.
9565
9566 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9567
9568         * mini-ops.h: Added ops for packed and saturated math, shifts
9569         and packing/unpacking.
9570
9571         * cpu-x86.md: Added descriptors for the above ops.
9572
9573         * mini-x86.c: Added code to emmit the above ops.
9574
9575         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9576
9577 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9578
9579         * aot-compiler.c (compile_method): Enable AOT for generic code.
9580
9581         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9582
9583 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9584
9585         * mini.c: add a workaround for a common screwup that ends up blamed
9586         to mono (other processes blocking signal delivery).
9587
9588 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9589
9590         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9591         in the LDFLD/STFLD opcodes. Fixes #432673.
9592
9593         * iltests.il.in: Add a new test.
9594
9595 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9596
9597         * mini-arm.c: attach the thread in unmanaged->managed transitions
9598         using delegates (bug #433148).
9599
9600 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9601
9602        * basic-simd.cs: Use new ShuffleSel constants.
9603
9604 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9605
9606         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9607
9608         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9609         only disable simd intrinsics if no sse2 is detected.
9610
9611         * optflags-def.h: Added sse3.
9612
9613         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9614         is disabled.
9615
9616 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9617
9618         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9619         when adding delegate-invoke wrappers.
9620
9621 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9622
9623         * Makefile.am: Reenable the simd tests.
9624
9625 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9626
9627         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9628           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9629           other vreg is allocated to that hreg.
9630
9631         Contributed under MIT/X11 license.
9632
9633 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9634
9635         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9636         yet checked in.
9637
9638 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9639
9640         * basic-simd.cs: New test suite for SIMD intrinsics.
9641
9642         * Makefile.am: Added new tests.
9643
9644 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9645
9646         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9647
9648         * mini-ops.h: Same.
9649
9650         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9651
9652         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9653         using SSE2 aware opcodes.
9654
9655         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9656         is enabled, this code path is only reachable if conversion ops are emmited after
9657         mono_method_to_ir.
9658
9659         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9660
9661         This optimization saves 6 bytes per conversion against the old version.
9662
9663 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9664
9665         * aot-compiler.c (compile_method): Don't skip methods referencing 
9666         generic methods without a corresponding entry in token_info_hash, since
9667         encode_method_ref () can handle all generic methods now.
9668
9669         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9670         generic context is set.
9671         
9672         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9673         generic sharing of LDTOKEN.
9674
9675 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9676
9677         * mini-amd64.h: Temporarily disabled fast virtual generic method
9678         calls because it breaks the System.Runtime.Remoting tests.
9679
9680 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9681
9682         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9683
9684         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9685         so inlining actually works.
9686         (check_inline_caller_method_name_limit): Ditto.
9687
9688 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9689
9690         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9691         64 bit safety (from Olaf Hering and Andreas Farber).
9692
9693 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9694         
9695         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9696         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9697         unused virtual call support code.
9698
9699         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9700         
9701         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9702         which can't use aot trampolines.
9703         (decode_patch): Don't create aot trampolines for methods which can't use
9704         them.
9705
9706         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9707         use aot trampolines.
9708
9709         * mini.h: Bump AOT image format version.
9710         
9711 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9712
9713         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9714         to save_token_info () since cmethod is inflated for constrained calls.
9715
9716         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9717
9718 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9719
9720         * Makefile.am: Add build rules for ppc64.
9721         This avoids the build failing at pedump with unresolved symbols
9722         due to lack of arch_sources. Instead it will now fail earlier
9723         due to lack of cpu-ppc64.md.
9724
9725         Contributed under MIT/X11 license.
9726
9727 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9728
9729         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9730         tail calls.
9731
9732         * iltests.il.in: Add test case for tail call with many arguments.
9733
9734 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9735
9736         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9737         to the fast virtual generic method code until the aot case is fixed.
9738
9739 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9740
9741         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9742
9743 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9744
9745         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9746         thunks.
9747
9748 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9749         
9750         * simd-intrinsics.c: Forgot to add this one.
9751
9752         * mini-codegen.c: Fix macro in case SIMD is not supported.
9753
9754 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9755         
9756         This patch land initial JIT support for simd intrinsics.
9757
9758         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9759
9760         * Makefile.am: Added simd-intrinsics.c
9761
9762         * simd-intrinsics.c: New file with simd instrinsic related
9763         code.
9764
9765         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
9766
9767         * cpu-x86.md: Add simd related instructions.
9768
9769         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
9770
9771         * driver.c: Added two new --regression variants.
9772
9773         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
9774
9775         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
9776
9777         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
9778         extract some complicated logic to helper functions.
9779
9780         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
9781
9782         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
9783
9784         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
9785         the specialized simplification pass.
9786
9787         * method-to-ir.c (mono_spill_global_vars): Use new macro.
9788
9789         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
9790
9791         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
9792         table.
9793
9794         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
9795         if MONO_ARCH_NEED_SIMD_BANK is defined.
9796
9797         * mini-ops.h: Added the new simd ops.
9798
9799         * mini-x86.c: Added mono_arch_xregname.
9800
9801         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
9802
9803         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
9804
9805         * mini-x86.h: Define simd related MONO_ARCH macros.
9806
9807         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
9808
9809         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
9810
9811         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
9812         MONO_CLASS_IS_SIMD to deal with simd related IR.
9813
9814         * mini.h (MonoInst): Added spill_var to the backend union.
9815
9816         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
9817
9818         * mini.h: Added forward declarations of the new simd fuctions.
9819
9820         * optflags-def.h: Added new optimization names SIMD.
9821
9822         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
9823
9824         * regalloc.h: Added support for working with 3 register banks.
9825
9826         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
9827
9828         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
9829
9830 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
9831
9832         * mini-exceptions.c: remove 64 bit related ifdef clutter.
9833
9834 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9835
9836         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
9837         instead of one on 64 bit systems.
9838
9839         * method-to-ir.c: Remove unused includes.
9840
9841 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
9842
9843         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
9844         cfg->used_int_regs, since the two are different on arm.
9845
9846 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9847
9848         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
9849         mono_method_get_vtable_index() to get the vtable index.
9850
9851 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9852
9853         * method-to-ir.c (mono_method_to_ir2): Don't create native
9854         wrappers for array methods, because they're never called (and if
9855         they were called they wouldn't work).
9856
9857 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9858
9859         * method-to-ir.c (mono_method_to_ir2): Array methods are
9860         special-cased and must not be invoked indirectly via the (M)RGCTX
9861         when generic sharing is turned on.  Fixes #431413.
9862
9863 2008-10-01  Mark Probst  <mark.probst@gmail.com>
9864
9865         * method-to-ir.c: When generic sharing is active, call
9866         non-interface virtual generic methods via the standard trampoline.
9867
9868         * mini-trampolines.c: Handle virtual generic shared methods.
9869
9870         * mini.h, mini-x86.c, mini-x86.h: New argument for
9871         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
9872         method thunks and which is the trampoline to call if the lookup
9873         fails.  Enable the virtual generic method thunk for x86.
9874
9875         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
9876         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
9877         argument but assert that it's NULL, because these archs don't yet
9878         implement the virtual generic method thunk.  Changes in the IMT
9879         thunk data structures.
9880
9881 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
9882
9883         * aot-compiler.c (emit_globals): Avoid invalid characters in
9884         the static linking symbol.
9885
9886         * objects.cs: Add a test for the range check optimization. Fix warnings.
9887
9888         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
9889         optimization from the current JIT.
9890
9891         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
9892         later in decompose_array_access_opts () to allow more optimizations.
9893
9894         * method-to-ir.c (mono_handle_soft_float): Rename this to 
9895         mono_decompose_soft_float () for consistency.
9896
9897         * mini-ops.h: Fix arguments of OP_STRLEN.
9898
9899         * method-to-ir.c (save_cast_details): Extract the cast details saving code
9900         into a separate function.
9901         (reset_cast_details): Ditto.
9902         (handle_unbox): Save cast details. Fixes #431254.
9903
9904         * method-to-ir.c: Remove some obsolete FIXMEs.
9905
9906 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9907
9908         * ir-emit.h (alloc_dreg): Write a warning before crashing.
9909
9910 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9911
9912         * mini-codegen.c: More work on macros to make them
9913         ready for multiple regbanks.
9914
9915 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9916
9917         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
9918
9919         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
9920
9921 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9922
9923         * mini-codegen.c (mono_spillvar_offset): Proper support for
9924         multiple regbanks.
9925
9926 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9927
9928         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
9929         the stack overflow changes.
9930
9931 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9932
9933         * mini-codegen.c: Make all bank macros depend on reg_bank.
9934
9935         * mini-codegen.c (mono_local_regalloc): Make free mask
9936         initialization regbank aware.
9937
9938 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9939
9940         * mini-codegen.c (mono_local_regalloc): Extract callee
9941         mask selection to a function and make it regbank aware.
9942
9943 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9944
9945         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
9946         code to deal with many regbanks.
9947
9948 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9949
9950         * mini-codegen.c: More fp->regbank changes.
9951
9952 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9953
9954         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
9955         of a hardcoded constant.
9956
9957 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9958
9959         * method-to-ir.c (type_from_stack_type): Fix typo.
9960
9961 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
9962
9963         * mini-ia64.c (emit_move_return_value): Convert float return values to
9964         double.
9965
9966         * objects.cs: Add a new test.
9967         
9968         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
9969         VARARG methods to fix an assert later.
9970
9971         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
9972         end so it at least compiles.
9973
9974 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9975
9976         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
9977
9978 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
9979
9980         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
9981         optimization to a new function (emit_optimized_ldloca_ir) and enable
9982         it for both ldloca and ldloca_s.
9983
9984 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9985
9986         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
9987         gshared CASTCLASS code.
9988
9989         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
9990         amd64, where the libc stack unwinder encounters stack frames referring to
9991         native code in unmapped memory.
9992
9993         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
9994         sharing.
9995
9996         * generics.cs: Add new test.
9997
9998 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
9999
10000         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
10001         add a check that one of the ARM_FPU_ constants is defined.
10002
10003         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
10004         
10005         * mini-exceptions.c: Fix build on non-altstack platforms.
10006
10007         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10008         sharing of vtypes.
10009
10010         * ir-emit.h: Add a comment to NEW_PCONST.
10011
10012         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10013
10014         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10015
10016         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10017         after the changes to MonoJitDomainInfo.
10018
10019 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10020
10021         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10022
10023 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10024
10025         * mini-ppc.c: Compiler warning fixes.
10026
10027 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10028
10029         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10030         for pinvokes.
10031
10032 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10033
10034         * exceptions-ppc.c, mini-ppc.h: Compile
10035         mono_arch_handle_altstack_exception() on Darwin, too.
10036
10037 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10038
10039         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10040         work on archs which don't have generic sharing implemented, only
10041         without the vtable_arg.
10042
10043 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10044
10045         * mini.c: Added comment explaining why delegate ctor icall
10046         wrappers are compiled.
10047
10048 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10049
10050         * mini.c: Don't produce trampolines to delegate ctor icall
10051         wrappers but compile them upfront.
10052
10053 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10054
10055         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10056         runtime-set function when going back to managed code. Currently this
10057         is used to set back the protection on the soft ovf pages and/or to
10058         throw the stack overflow exception that happened in unmanaged code.
10059
10060 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10061
10062         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10063         runtime-set function when going back to managed code. Currently this
10064         is used to set back the protection on the soft ovf pages and/or to
10065         throw the stack overflow exception that happened in unmanaged code.
10066
10067 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10068
10069         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10070         the support code for restoring stack protection after stack overflows
10071         that happen in unmanaged code. Don't set the exec permission on the
10072         soft overflow area.
10073
10074 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10075
10076         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10077         delegate->method_ptr is set. Fixes #428054.
10078
10079 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10080
10081         * tests.cs: Rename to ratests.cs.
10082
10083         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10084         emit_get_rgctx_... functions.
10085
10086 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10087
10088         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10089
10090 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10091
10092         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10093         before asserting that method is sharable.
10094
10095 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10096
10097         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10098         whether method needs a static RGCTX wrapper used instead of
10099         complex conditions.
10100
10101         * generic-sharing.c, mini.h: A few functions moved to
10102         metadata/generic-sharing.c.
10103
10104 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10105
10106         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10107         Generic code sharing for value types, which essentially means
10108         treating value type methods like static methods.  The RGCTX is
10109         passed in the same way.
10110
10111 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10112
10113         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10114         opcode when creating multi-dimensional arrays of open types.
10115
10116         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10117         open generic types.
10118
10119         * generics.cs: Add a test.
10120
10121         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10122
10123 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10124
10125         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10126
10127         * mini.c (mini_method_compile): Set it when running under the debugger. 
10128
10129         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10130         vreg optimization if the flag is set.
10131
10132         * driver.c (mono_main): Add --attach= option to pass options to
10133         the attach agent.
10134
10135         * mini.c (sigquit_signal_handler): Start the attach agent.
10136
10137         * ssapre.c: Disable this to save space since it is not yet ported to
10138         linear IR.
10139
10140         * regalloc2.c: Disable this to save space.
10141
10142         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10143
10144 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10145
10146         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10147         the -v option useful again.
10148
10149 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10150
10151         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10152         --break-at-bb.
10153
10154         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10155         arrays of arrays. Fixes #428406.
10156
10157         * method-to-ir.c (mini_emit_castclass): Ditto.
10158
10159         * objects.cs: Add new test.
10160         
10161 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10162
10163         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10164         was wrong at it choked against target_type_is_incompatible for byref types.
10165
10166 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10167
10168         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10169         places.
10170
10171 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10172
10173         * mini-exceptions.c: update a few more exceptions-related counters.
10174
10175 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10176
10177         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10178         new functions to allocate from persistent mempools.
10179
10180 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10181
10182         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10183         multiple register banks in the future.
10184
10185         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10186
10187 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10188
10189         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10190
10191         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10192
10193         * mini.h: Export type_to_eval_stack_type.
10194
10195         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10196         is only ins->klass of byref types.
10197
10198 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10199
10200         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10201         (mini_emit_memcpy2): Ditto.
10202
10203         * mini-amd64.c: Fix a warning.
10204
10205 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10206
10207         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10208         linking.
10209
10210 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10211
10212         * method-to-ir.c: Extract stloc micro-optimization to a
10213         function and apply it to all cases.
10214
10215 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10216
10217         * method-to-ir.c: Don't fail generic code sharing in cases we
10218         already support.
10219
10220 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10221
10222         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10223
10224 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10225
10226         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10227         implementation.
10228
10229 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10230
10231         * trace.c: make tracing more useful and correct, with per-thread
10232         id and indent info.
10233
10234 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10235
10236         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10237         doing a method call and the argument is an R4.
10238
10239 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10240
10241         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10242         generic methods.
10243
10244 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10245
10246         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10247
10248 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10249
10250         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10251         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10252
10253 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10254
10255         * driver.c: Add a --agent argument (not supported yet) to load managed
10256         agent assemblies before loading the main assembly, similarly to how the
10257         Java VM handles agents.
10258
10259 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10260
10261         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10262         function to do stack layout of local variables.
10263
10264 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10265
10266         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10267         calculation.
10268
10269 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10270
10271         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10272         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10273         JIT if DISABLE_JIT is defined.
10274
10275         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10276         defined.
10277
10278 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10279
10280         * iltests.il.in: Disable the fconv test on PPC (the result is
10281         undefined according to ECMA).
10282
10283 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10284
10285         * iltests.il.in: Enable tail call tests for PPC.
10286
10287         * mini.h: Add variable for storing incoming valuetype argument
10288         addresses for tail calls.
10289
10290         * mini-ppc.c: Implement valuetype arguments and return values for
10291         tailcalls on Linux.
10292
10293 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10294
10295         * mini-ppc.c: Partially implement tail calls (struct arguments and
10296         return values not supported).
10297
10298         * method-to-ir.c: Enable tail calls on PPC.
10299
10300 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10301
10302         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10303         runtime-invoke wrappers to work around the problem of them getting
10304         assigned to a random class.
10305
10306         * aot-runtime.c (mono_aot_get_method): Ditto.
10307         
10308 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10309
10310         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10311         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10312
10313 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10314
10315         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10316         until they're implemented properly.
10317
10318         * exceptions-ppc.c: Use arch-independent exception-handling code
10319         instead of custom one.
10320
10321         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10322         for Linear IR.
10323
10324         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10325
10326         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10327         applies when __powerpc__ is defined.
10328
10329 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10330
10331         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10332         methods to their code to avoid computing the full name of wrappers and
10333         doing a lookup in a string hash table.
10334
10335 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10336
10337         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10338         we identify bblocks before method_to_ir () is ran.
10339
10340         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10341         Also avoid optimizing branches pointing to themselves.
10342
10343         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10344
10345 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10346
10347         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10348
10349 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10350
10351         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10352         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10353         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10354         'buf'.
10355
10356         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10357         jumped to the same entry in plt_jump_table.
10358
10359 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10360
10361         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10362         dynamic images.
10363
10364 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10365
10366         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10367         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10368         #421807.
10369
10370 2008-08-29  Geoff Norton  <gnorton@novell.com>
10371
10372         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10373         segment, and doesn't properly handle .space as .text.  Fixes
10374         AOT Mach/ARM
10375
10376 2008-08-29  Geoff Norton  <gnorton@novell.com>
10377
10378         * mini.c: Disable the mach exception handler when running on 
10379         ARM
10380
10381 2008-08-29  Geoff Norton  <gnorton@novell.com>
10382
10383         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10384         globals on Darwin/ARM
10385
10386 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10387
10388         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10389         since too many things depend on it. Instead, call 
10390         mono_runtime_set_no_exec ().
10391         
10392         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10393         the new JIT.
10394
10395         * aot-compiler.c: Add an 'asm-only' AOT option.
10396
10397         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10398                 
10399         * aot-compiler.c (compile_method): Disable gshared support for now as it
10400         doesn't yet work.
10401
10402 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10403
10404         * mini-amd64.h : Fix a compiler warning.
10405
10406         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10407           Changed to use a callback function to retrieve the unwind info.
10408           This avoids problems observed when code blocks were removed by
10409           unloading an app domain.
10410
10411         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10412           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10413           to work properly.
10414
10415         Contributed under MIT/X11 license.
10416
10417 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10418
10419         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10420           case to keep the stack aligned to 8.
10421
10422         Contributed under MIT/X11 license.
10423
10424 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10425
10426         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10427         avoid repeated linear searches.
10428
10429 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10430
10431         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10432         methods it can't handle.
10433         
10434         * aot-compiler.c (add_method): Avoid adding a method twice.
10435         (add_wrappers): Add runtime invoke wrappers for all methods.
10436
10437         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10438         function to create an aot-compatible version of this trampoline.
10439
10440         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10441
10442 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10443
10444         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10445
10446         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10447         with a generic sharing failure.
10448
10449         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10450
10451         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10452         CEE_RETHROW. Fixes #419634.
10453
10454         * mini.c (mono_method_to_ir): Ditto.
10455
10456         * exceptions.cs: Add a new test.
10457         
10458         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10459         to mono_type_stack_size_internal () since some callers might not pass in
10460         an rgctx.
10461
10462         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10463         instrument_prolog. Fixes #419878.
10464
10465         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10466         doubles in soft float mode volatile.
10467
10468 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10469
10470         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10471
10472         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10473         to handle soft float correctly.
10474
10475         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10476         the fast path.
10477
10478         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10479
10480         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10481         to sp, since the generics catch code requires it.
10482
10483         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10484         copying.
10485
10486         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10487         mono_arch_emit_imt_argument ().
10488
10489         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10490
10491         * mini-arm.c tramp-arm.c: Generic sharing updates.
10492
10493 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10494
10495         * mini-arm.c: Fix the arm build.
10496
10497         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10498         handling enums, generic instances and generic sharing.
10499         (mini_type_stack_size_full): Ditto.
10500
10501         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10502         
10503         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10504
10505         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10506
10507         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10508         trampolines.
10509
10510         * mini-arm.c: Various small generic sharing changes.
10511
10512         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10513         this for x86.
10514         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10515         custom code.
10516
10517         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10518         helper function to return a generic class init trampoline.
10519
10520         * method-to-ir.c mini.c: Use it.
10521         
10522         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10523         arch-specfic function to return a generic class init trampoline.
10524
10525         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10526         the GENERIC_CLASS_INIT custom code.
10527
10528         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10529         a fatal error, not a sharing failure.
10530
10531         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10532         needed.
10533
10534         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10535         trampoline argument from MONO_ARCH_VTABLE_REG.
10536
10537         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10538         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10539         argument, and pass the vtable in VTABLE_REG.
10540
10541         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10542         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10543         argument, and pass the vtable in VTABLE_REG.
10544         (mono_arch_create_trampoline_code_full): Remove some special casing for
10545         the rgctx fetch trampoline.
10546
10547         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10548         Fixes #419273.
10549
10550         * iltests.il: Add a test for it.
10551
10552 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10553
10554         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10555
10556         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10557         no longer needed.
10558
10559         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10560         use mono_jit_info_table_find () to avoid recursion.
10561         (mono_delegate_trampoline): Add a sync wrapper here.
10562
10563         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10564         here.
10565
10566         * mini.c (mono_method_to_ir): Ditto.
10567         
10568         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10569         add_sync_wrapper argument. Don't add a sync wrapper here.
10570         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10571
10572         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10573         
10574 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10575
10576         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10577           of nonvolatile registers back from MonoContext to CONTEXT.
10578
10579         Contributed under MIT/X11 license.
10580
10581 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10582
10583         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10584           arguments on Winx64 there are only 4 argument registers.  For this
10585           logic to work the last argument must be pulled from the stack.  
10586
10587         Contributed under MIT/X11 license.
10588
10589 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10590
10591         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10592
10593         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10594         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10595         encode/decode_method_ref ().
10596
10597         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10598
10599         * aot-runtime.c (decode_patch): Ditto.  
10600
10601         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10602         MONO_PATCH_INFO_METHOD.
10603
10604         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10605         MonoGenericJitInfo.
10606
10607         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10608         MonoGenericJitInfo.
10609
10610         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10611
10612         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10613         one from the caller.
10614
10615         * aot-runtime.c (decode_generic_inst): New function to decode and
10616         return a interned generic inst.
10617         (decode_klass_ref): Use it.
10618         (decode_method_ref): Ditto.
10619
10620         * aot-compiler.c (emit_exception_debug_info): Save 
10621         jinfo->has_generic_jit_info too.
10622
10623 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10624
10625         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10626
10627         * iltests.il.in: Add a test for fconv_to_i.
10628
10629         * liveness.c: Disable the liveness2 pass for now to save space.
10630
10631         * regalloc2.c: Include mempool-internals.h to fix warnings.
10632
10633         * aot-compiler.c (encode_method_ref): Encode the context of generic
10634         instance methods.
10635
10636         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10637         the context saved in the aot file.
10638
10639         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10640
10641         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10642
10643         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10644         volatile so they won't be optimized away.
10645
10646 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10647
10648         * ssa.c:
10649         * ssa2.c:
10650         * mini.c:
10651         * regalloc2.c:
10652         * dominators.c: Remove duplicated functions that now are in
10653         mempool-internals.h.
10654
10655 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10656
10657         * aot-compiler.c: Fix warnings.
10658
10659         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10660
10661         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10662
10663         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10664         as the patch type.
10665
10666         * mini.c (mono_resolve_patch_target): Ditto.
10667         
10668         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10669         (encode_klass_ref): Add support for encoding VARs/MVARs.
10670
10671         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10672
10673         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10674         the handling of the got entries into a separate 'decode_got_entry' function.
10675         Add support for RGCTX_FETCH.
10676
10677         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10678         clobbered by the trampoline code.
10679
10680         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10681         not clobbered by the indirect calling code.
10682
10683 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10684
10685         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10686         to fix the build.
10687
10688 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10689
10690         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10691         signature using the compilation mempool otherwise we would leak it.
10692
10693 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10694
10695         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10696         mono_emit_abs_call ().
10697
10698         * patch-info.h: Add GENERIC_CLASS_INIT.
10699
10700         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10701
10702         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10703         as their target as a near call.
10704
10705         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10706         ABS handling code.
10707         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10708
10709         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10710         call to a runtime function described by a patch.
10711
10712         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10713         mono_emit_abs_call, this has the advantage that the ABS handling code in
10714         mono_codegen () can handle them both, and can handle other stuff in the
10715         future without additional code.
10716
10717         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10718         entry.
10719         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10720         abs addresses.
10721
10722         * mini.h: Add missing bblock related prototypes.
10723
10724         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10725         reverse_inst_list_len fields.
10726
10727         * mini.c: Refactor this file a bit by moving branch optimizations to 
10728         branch-opts.c.
10729
10730         * method-to-ir.c: Merge generic sharing changes missed earlier.
10731
10732         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10733
10734         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10735         shared patches. Process METHODCONST as a shared patch.
10736
10737         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10738         as it crashes on the 2.0 mscorlib.
10739
10740         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10741         to cause crashes.
10742         
10743         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10744         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10745         by IMT.
10746
10747         * aot-compiler.c: Reorganize the got handling code to be a bit more
10748         understandable.
10749
10750 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10751
10752         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10753         mono_patch_info_equals/hash, and use it to massively simplify
10754         get_plt_index ().
10755
10756         * mini.c (mono_patch_info_hash): Simplify this and add support for
10757         more patch types.
10758
10759         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
10760
10761         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
10762         handling code, since an offset is not enough to identify a trampoline.
10763
10764         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
10765
10766 2008-08-17  Mark Probst  <mark.probst@gmail.com>
10767
10768         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
10769
10770         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
10771
10772         * mini-ops.h: Argument and result types for OVF_CARRY ops.
10773
10774         * decompose.c: PPC decompositions for various ops.
10775
10776         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
10777
10778 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10779
10780         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
10781         call the generic trampoline code using a call, instead of a jump, to
10782         remove some special casing from the generic trampoline code.
10783
10784         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
10785         (mono_codegen): Ditto.
10786
10787         * aot-compiler.c aot-runtime.c: Ditto.
10788
10789         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
10790
10791         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
10792         helper function to find the offset corresponding to a lazy fetch trampoline.
10793
10794         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
10795         when doing generic sharing.
10796
10797         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
10798         places.
10799         
10800         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
10801         mini-trampolines.c to be with the other trampoline creation functions.
10802
10803         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
10804         as it is equal to method->signature in most cases, add a 
10805         mono_emit_method_call_full variant which takes a signature and an imt
10806         argument as well.
10807
10808 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10809
10810         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
10811         to this function, since it could be computed easily from the method 
10812         argument.
10813         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
10814         more.
10815
10816         * method-to-ir.c mini.c: Remove references to 
10817         compile_generic_method_wo_context.
10818
10819         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
10820         generic method calls.
10821         
10822         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
10823         dimensional non-szarrays.
10824
10825         * mini.c (mini_init): Register mono_array_new_1.
10826
10827         * jit-icalls.c (mono_array_new_1): New jit icall.
10828
10829         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
10830         pointing to the method.
10831
10832         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
10833         method addresses belonging to METHOD_JUMP patches in the 
10834         jump_target_got_slot_hash.
10835         (mono_aot_load_method): Ditto.
10836
10837         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
10838         METHOD_JUMP patches.
10839
10840         * mini.c (mini_create_jit_domain_info): New helper function which 
10841         initializes/frees domain->runtime_info.
10842         (mini_free_jit_domain_info): Ditto.
10843         (mini_init): Install the domain hook functions with the runtime.
10844
10845         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
10846         information maintained by the JIT.
10847
10848         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
10849         insertion into jump_table_hash into mono_codegen (), also implement proper
10850         locking.
10851
10852         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
10853         tail calls, it is already done by the aot code.
10854         
10855         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
10856         mechanism on amd64.
10857
10858         * iltests.il.in: Make the jmp test a bit more complex.
10859
10860         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
10861         generic instances which doesn't have a token.
10862
10863         * aot-runtime.c (decode_method_ref): Ditto.
10864         
10865         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
10866         can handle this case now.
10867         (handle_box): Ditto.
10868
10869 2008-08-15  Geoff Norton  <gnorton@novell.com>
10870
10871         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
10872         debugging check.
10873
10874 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10875
10876         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
10877         calling generic methods.
10878
10879         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
10880
10881         * aot-runtime.c (decode_patch_info): Ditto.
10882
10883         * mini.c (mono_resolve_patch_target): Ditto.
10884         
10885         * patch-info.h: Add METHOD_RGCTX.
10886
10887         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
10888
10889 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
10890
10891         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
10892         arguments in registers.
10893
10894         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
10895         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
10896
10897         * mini.c (mini_method_compile): Abort aot compilation for generic
10898         methods if generic sharing is disabled.
10899         
10900         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
10901         an mrgctx.
10902
10903         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
10904         requiring an mrgctx.
10905
10906         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
10907         store instructions when converting a vcall to a normal call.
10908
10909         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
10910         mono_arch_find_jit_info.
10911
10912 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
10913
10914         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
10915         avoid calling mono_method_full_name () for every method even if the
10916         env var is not set.
10917         (check_inline_caller_method_name_limit): Ditto.
10918
10919 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10920
10921         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
10922         assemblies in one run.
10923
10924         * aot-compiler.c (mono_compile_assembly): Only print out a count of
10925         skipped methods if it is not 0.
10926
10927         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
10928
10929 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10930
10931         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
10932           MONO_ARCH_HAVE_UNWIND_TABLE.
10933
10934         Contributed under MIT/X11 license.
10935
10936 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10937
10938         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
10939           from default optimizaton list on Winx64.
10940
10941         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
10942
10943         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
10944           the LMF from the MonoJitTlsData structure.
10945
10946         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
10947
10948         Contributed under MIT/X11 license.
10949
10950 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10951
10952         * mini.c (sigsegv_signal_handler): Fix the build.
10953
10954         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
10955         assembly->aot_module.
10956
10957         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
10958         hash table. This simplifies and speeds up a lot of code, and fixes support
10959         for .netmodules.
10960
10961         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
10962         with the runtime.
10963
10964         * mini-exceptions.c: Ditto.
10965         
10966         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
10967         'native_offset' argument, since these are computed in the 
10968         mono_find_jit_info () function.
10969
10970         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
10971         is used by exceptions-ppc.c.
10972
10973         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
10974         mono_arch_find_jit_info ().
10975         
10976         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
10977         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
10978         generic code in mini-exceptions.c.
10979
10980 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
10981
10982         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
10983
10984         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
10985         
10986         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
10987         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
10988         called while holding the loader lock. Fixes #415608.
10989         (mono_aot_get_method_from_token_inner): Ditto.
10990
10991 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
10992
10993         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
10994         to reduce differences between this and the generic implementation in
10995         mini-exceptions.c.
10996         (ves_icall_get_frame_info): Ditto.
10997
10998         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
10999
11000         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
11001         longer neccesarry.
11002
11003         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
11004         mono_arch_get_call_filter () and make it non-static, for consistency with the
11005         other architectures.
11006
11007 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11008
11009         * mini.c:
11010         * local-propagation.c:
11011         * mini-x86.c: Correct the name of arch defines.
11012
11013 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11014
11015         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11016         NO_EMULATE_LONG_SHIFT_OPS define.
11017
11018 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11019
11020         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11021         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11022
11023         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11024         MACH fixes. Merged from the 2.0 branch.
11025
11026         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11027
11028         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11029         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11030
11031         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11032
11033         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11034         mono_marshal_get_native_wrapper () signature changes.
11035
11036 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11037
11038         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11039         conversion bug under arm.
11040
11041 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11042
11043         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11044
11045         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11046         with overflow checking.
11047
11048 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11049
11050         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11051         to the genmdesc.pl file
11052
11053 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11054
11055         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11056         arg_array in the soft-float versions of the LOAD/STORE macros.
11057
11058         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11059         implementation.
11060
11061         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11062
11063 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11064
11065         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11066         a float HFA. Fixes #413621.
11067
11068 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11069
11070         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11071         frame_size to args_size. Fixes build.
11072
11073 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11074
11075         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11076         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11077
11078         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11079         the stack are not unaligned. Fixes #413247.
11080         
11081 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11082
11083         * mini.c: update jitted methods performance counters.
11084
11085 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11086
11087         * mini-exceptions.c: increase the exceptions thrown performance
11088         counter in mono_handle_exception ().
11089
11090 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11091
11092         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11093         can work with netmodules.
11094
11095 2008-07-28  Geoff Norton  <gnorton@novell.com>
11096
11097         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11098         regression tests.
11099
11100 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11101
11102         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11103         correct place.
11104
11105 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11106
11107         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11108           The float param registers and other param registers must be the 
11109           same index on Windows x64.
11110
11111         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11112           ArgValuetypeAddrInIReg argument case.  Setting the argument
11113           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11114
11115         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11116           variable computed above as the copy length for arguments of storage
11117           type ArgValuetypeAddrInIReg.
11118
11119         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11120           ArgValuetypeAddrInIReg argument case.  This case will rely on
11121           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11122
11123         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11124           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11125           jump and tail call instructoins as they do not follow the typical call behavior.
11126
11127         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11128           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11129           local variable and pass the local variable by reference to the called method.
11130
11131         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11132           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11133           of a struct is passed in a register it must be saved with the other
11134           volatile argument on the stack.
11135
11136         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11137           frame pointer the stack adjustment value must be saved to the unwind 
11138           info structure.
11139
11140         Contributed under MIT/X11 license.
11141
11142 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11143
11144         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11145         which got lost in the merge.
11146
11147 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11148
11149         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11150         build.
11151
11152         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11153         
11154         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11155         icalls, since they won't be patched.
11156
11157         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11158         different code sequence when running under valgrind to prevent some valgrind
11159         errors.
11160
11161         * iltests.il.in: Add new regression test.
11162
11163         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11164         end with a throw.
11165
11166         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11167         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11168
11169         * iltests.il.in: Add new test.
11170
11171         * aot-compiler.c: Fix some warnings.
11172
11173         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11174         Fixes #412494.
11175
11176 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11177
11178         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11179         (mini_usage_jitdeveloper): Add a missing --wapi option.
11180
11181 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11182
11183         * mini-codegen.c: Simplify the is_fp macros.
11184         (free_up_ireg): Remove, use free_up_reg instead.
11185         (free_up_reg): Fix the fp case.
11186
11187 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11188
11189         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11190         lowered earlier.
11191
11192         * exceptions-x86.c: Merge some changes which seemed to have got lost
11193         in the linear-ir merge.
11194
11195         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11196
11197         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11198         long vreg volatile even if the variable was already created.
11199
11200         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11201         volatile variables.
11202
11203 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11204
11205         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11206
11207         * mini.c (mono_jit_compile_method_inner): Add support for 
11208         MONO_EXCEPTION_BAD_IMAGE.
11209
11210         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11211         mini_method_get_context () returns NULL. Fixes #356531.
11212
11213         * mini.c (mono_method_to_ir): Ditto.
11214         
11215         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11216         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11217
11218 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11219
11220         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11221         in the LDFTN implementation.
11222
11223 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11224
11225         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11226         code, patch calls to icalls, too, even if they're not in the
11227         shared generic code hash.  Fixes #411962.
11228
11229 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11230
11231         * cpu-x86.md: Increase the length of the fcall opcodes.
11232
11233         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11234         calls returning floats.
11235
11236         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11237         on NEWARR.
11238         
11239         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11240         missed earlier.
11241
11242         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11243         into the domain->method_code_hash.
11244
11245         * aot-compiler.c: Fix win32 build.
11246
11247         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11248         
11249         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11250         gshared NEWARR implementation.
11251
11252         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11253
11254         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11255         can be used outside of method_to_ir.
11256
11257         * mini.h (MonoCompile): Add arg_types field.
11258
11259         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11260         
11261         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11262         the values of the local arg_array and param_types array.
11263
11264 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11265
11266         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11267         got accesses might only get generated later when NEWOBJ is decomposed.
11268         
11269         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11270         looking up the native code of the target method when a delegate is called
11271         for the first time.
11272
11273         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11274         optimization.
11275
11276         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11277
11278         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11279         AOT work on platforms without a working dlsym implementation.
11280
11281         * mini.h: Bump AOT image format version.
11282         
11283 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11284
11285         * mini-exceptions.c: Free a MonoType with
11286         mono_metadata_free_type() instead of g_free().
11287
11288         * aot-runtime.c: Free a MonoType.
11289
11290 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11291
11292         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11293         optimization.
11294
11295         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11296         fp stack on x86.
11297
11298 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11299         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11300         profiler hook.
11301
11302 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11303
11304         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11305         NEWOBJ calls on valuetypes.
11306
11307         * iltests.il.in: Add new test.
11308
11309         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11310
11311 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11312
11313         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11314         is no longer needed.
11315
11316         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11317         non register sized integer arguments.
11318         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11319         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11320         emit_memcpy2 ().
11321
11322         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11323         CEE_MONO_RETOBJ.
11324         
11325         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11326         two a binop with different sized arguments is emitted.
11327
11328         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11329         instruction in the ins==NULL case.
11330
11331 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11332
11333         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11334
11335         * mini-x86.c: Fix osx build.
11336
11337         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11338         opcodes as well.
11339
11340         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11341         instruction for non int sized variables.
11342
11343         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11344         implementation.
11345
11346 2008-07-23  Robert Jordan  <robertj@gmx.net>
11347
11348         * method-to-ir.c: Fix MSVC build.
11349
11350 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11351
11352         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11353         a non int sized type, widen it to an int since newer versions of gcc seem to
11354         generate code which needs this.
11355
11356         * ssa2.c abcremoval2.c: Fix warnings.
11357
11358         * *: Merge the Linear IR branch.
11359
11360         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11361         the ChangeLog file there describes all the changes done over the years. 
11362         Further documentation can be found at www.mono-project.com/Linear_IL.
11363
11364 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11365
11366         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11367           The float param registers and other param registers must be the 
11368           same index on Windows x64.
11369
11370         Contributed under MIT/X11 license.
11371
11372 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11373
11374         * mini.c: Make the previous fix GC safe.
11375
11376 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11377
11378         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11379
11380 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11381
11382         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11383           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11384           ArgValuetypeAddrInIReg instead.
11385
11386         Contributed under MIT/X11 license.
11387
11388 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11389
11390         * mini-codegen.c (get_register_spilling): Fix a warning.
11391
11392 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11393
11394         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11395         for types which the initialization fails. Raises the provided exception
11396         at the right stop after cleanup.
11397
11398 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11399
11400         * aot-compiler.c: Free most of the memory allocated during compilation.
11401
11402         * mini.c (mini_parse_debug_options): Fix a leak.
11403         
11404         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11405         during aot compilation.
11406
11407 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11408
11409         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11410         it has too much register pressure.
11411
11412 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11413
11414         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11415
11416 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11417
11418         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11419         on x86.
11420
11421         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11422         on amd64 similar to the way it is done on arm.
11423
11424         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11425
11426         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11427         consistency, normalize error messages, avoid loading aot-only modules in
11428         normal mode.
11429
11430         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11431         for consistency.
11432
11433         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11434
11435 2008-07-11  Martin Baulig  <martin@ximian.com>
11436
11437         * debug-debugger.h
11438         (MonoDebuggerInfo): Add `interruption_request'.
11439
11440 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11441
11442         * aot-compiler.c (emit_plt): Remove some dead code.
11443
11444         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11445
11446         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11447         return the plt info offset belonging to a given plt entry.
11448
11449         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11450         mono_aot_get_plt_info_offset.
11451         
11452         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11453         similar to the amd64 code by makeing jumps through a separate jump table 
11454         instead of embedding the jump addresses into the code.
11455
11456 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11457
11458         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11459         method.
11460
11461 2008-07-10  Martin Baulig  <martin@ximian.com>
11462
11463         * mini.c (mini_method_compile): Disable generics sharing when
11464         running in the debugger.
11465
11466 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11467
11468         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11469
11470         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11471         the local register allocator from running out of registers on x86 when 
11472         using aot.
11473
11474 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11475
11476         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11477         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11478         C4146.
11479
11480         Contributed under MIT/X11 license.
11481
11482 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11483
11484         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11485         speed up the assembler.
11486
11487 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11488
11489         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11490         support.
11491
11492         * mini.c: Move the soft float handling macros a bit earlier, add 
11493         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11494         place.
11495
11496         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11497
11498         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11499         read-only to help catch code allocation requests.
11500         
11501         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11502         and turn it off when using --aot-only or when compiling with --aot=full.
11503
11504         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11505         jump table for switches from the normal domain mempool, not the code
11506         manager.
11507
11508         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11509         unbox trampoline which handles aot-only mode too.
11510
11511         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11512         an AOTed unbox trampoline.
11513
11514         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11515
11516 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11517
11518         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11519         ""
11520
11521         Contributed under MIT/X11 license.
11522
11523 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11524
11525         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11526           the unwind information for the method at the end of the allocated block.
11527           
11528         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11529           MonoCompileArch to hold the unwind info for SEH on Winx64
11530         
11531         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11532           frame pointer info for the method being compiled.
11533           
11534         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11535           the call to mono_exception_from_token.
11536           
11537         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11538           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11539           information is stored a the end of the method block because it is all 32-bit offset based.
11540
11541         Contributed under MIT/X11 license.
11542
11543 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11544
11545         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11546
11547         * wapihandles.c: Fix warnings.
11548
11549         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11550         mode.
11551
11552         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11553         mono_jit_compile_method in aot-only mode since that calls the type 
11554         initializer.
11555         
11556         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11557         get_delegate_invoke_impl in aot-only mode.
11558
11559         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11560
11561 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11562
11563         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11564
11565         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11566         is on by default.
11567
11568         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11569
11570         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11571         init trampoline from the AOT file as well.
11572
11573         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11574         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11575         code.
11576
11577         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11578         mono_init.
11579
11580         * exceptions-amd64.c: Add _full variants for the remaining exception code
11581         creation functions as well, allow emission of relocatable code, remove
11582         caching since that is now done by the caller.
11583
11584         * mini-exceptions.c: Add _full variants for the remaining exception code
11585         creation functions as well, add aot-only support.
11586
11587         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11588         if we can determine a proper token for them.
11589         (add_wrappers): Add a few more wrappers.
11590         (emit_method_code): Remove some dead code.
11591         (emit_trampolines): Emit exception code too.
11592
11593         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11594
11595         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11596         mono_array_new_va which avoids varargs.
11597
11598         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11599
11600         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11601         mono_arch_create_specific_trampoline () in all places.
11602
11603         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11604         a bit so it can be used for other things as well.
11605         
11606         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11607         on demand as well.
11608
11609         * exceptions-amd64.c: Rename the caching from the exception code creation
11610         functions, it is done by the caller instead.
11611         
11612         * exceptions-amd64.c: Change the signature of the exception code creation 
11613         functions to allow the creation of relocatable code later.
11614
11615         * mini-exceptions.c: Add a set of functions to query the various 
11616         runtime-generated exception functions.
11617
11618         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11619         mono_arch_.. () functions.
11620         
11621 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11622
11623         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11624
11625         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11626
11627         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11628         (mini_get_vtable_trampoline): Ditto.
11629
11630         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11631         code in the AOT case by returning the code size and a list of relocations to
11632         the caller.
11633
11634         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11635
11636 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11637
11638         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11639           clean the stack.
11640
11641         Contributed under MIT/X11 license.
11642
11643 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11644
11645         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11646         so the buffer size can be computed correctly. Fixes #404735.
11647
11648         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11649         normally as cfg->debug_info is already freed.
11650
11651 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11652
11653         * mini-amd64.c: For calls returning vtypes in registers, don't store
11654         the return address on the stack, instead allocate a separate local for
11655         it. Fixes #404729.
11656
11657 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11658
11659         * mini-trampolines.c, mini.h: Add an argument to
11660         mono_create_jit_trampoline_in_domain() for turning off the adding
11661         of the sync wrapper.
11662
11663         * mini.c: Use the JIT trampoline without sync instead of
11664         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11665         be patched.
11666
11667 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11668
11669         * driver.c: Turn on GSHARED optimization by default.
11670
11671 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11672
11673         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11674         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11675
11676         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11677         create a variant of the generic trampoline code callable from AOTed trampolines.
11678
11679         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11680         trampoline code callable from AOTed trampolines.
11681
11682         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11683
11684 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11685
11686         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11687         pass-through manner.
11688
11689         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11690         and don't fail sharing for them anymore.
11691
11692         * mini-exceptions.c: Handle exceptions in shared generic methods.
11693
11694         * generic-sharing.c: When checking the context of a generic
11695         method, also check its class's context.  Don't treat wrappers as
11696         sharable.
11697
11698         * mini-trampolines.c: Some code factored out to
11699         metadata/generic-sharing.c.  Handle the MRGCTX case.
11700
11701         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11702         we must deal with the method being of another instantiation of the
11703         class.  Add static rgctx invoke wrappers to generic methods.
11704
11705 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11706
11707         * mini.c: Provide all jit infos of generic shared methods with a
11708         generic jit info.
11709
11710         * mini-exceptions.c: Handle the new situation that a generic info
11711         might be available, but not info about the this/vtable/mrgctx
11712         variable.
11713
11714 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11715
11716         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11717         generic methods.
11718
11719 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11720
11721         * dominators.c (check_dominance_frontier): Fix a warning.
11722
11723         * mini.h: Add some missing prototypes.
11724
11725         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11726
11727         * driver.c (mono_jit_init_version): Correct the comments since the first
11728         argument should be the name of the root domain, not a filename.
11729
11730         * aot-runtime.c (make_writable): Error out if this is called while running
11731         with --aot-only.
11732         (load_aot_module): Ditto.
11733
11734         * aot-compiler.c: Really fix the computation of method indexes.
11735
11736         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11737         optimizations as this is no longer called frequently.
11738
11739         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11740         method and the invoke impl code and pass it to the delegate trampoline instead of
11741         just the delegate class.
11742
11743 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11744
11745         * aot-compiler.c: Fixup the computation of method indexes.
11746         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11747         the method builder infrastructure.
11748
11749         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11750         has no header.
11751
11752         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11753         mode, load the method right away instead of creating a trampoline.
11754
11755         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11756
11757         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11758         some checks a bit.
11759
11760 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11761
11762         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
11763         (mono_aot_load_method): Use method_index instead of method->token.
11764
11765         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
11766         can handle icalls etc. properly.
11767
11768         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11769
11770         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
11771
11772         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
11773         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
11774         JIT_ICALL_ADDR patch type.
11775
11776         * patch-info.h: Add JIT_ICALL_ADDR patch type.
11777
11778         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
11779         request flag.
11780         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
11781
11782         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
11783
11784 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11785
11786         * mini.c: Use domain->jit_code_hash_lock for controlling access to
11787         domain->jit_code_hash.
11788
11789 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11790
11791         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
11792
11793 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11794
11795         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
11796         get_this_arg_from_call, let it compute it when needed.
11797
11798         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
11799         gsctx from code only when needed.
11800
11801         * mini-trampolines.c (get_generic_context): Rename this to 
11802         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
11803         it can be called by the arch backends.
11804
11805         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
11806
11807 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
11808
11809         * driver.c (mono_main): Add experimental --aot-only command line option.
11810
11811         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
11812         set.
11813
11814 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
11815
11816         * driver.c (DllMain): Remove mono_module_handle.
11817
11818         Contributed under MIT/X11 license.
11819
11820 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
11821
11822         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
11823         for emitting methods which are not in the source assembly. Detect and report
11824         failure of assembling+linking.
11825         
11826         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
11827
11828         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
11829
11830 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
11831
11832         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
11833
11834 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11835
11836         * mini.h: Remove some obsolete prototypes.
11837
11838         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
11839
11840 2008-06-24  Mark Probst  <mark.probst@gmail.com>
11841
11842         * mini.c (get_object_generic_inst): Variable-sized arrays are not
11843         supported by Visual Studio, so use alloca().
11844
11845 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
11846
11847         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
11848         Fixes #402585.
11849
11850 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11851
11852         * mini.c: Fail sharing of a generic method if it contains an open
11853         catch clause (because we don't pass MRGCTXs yet).
11854
11855 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11856
11857         * mini.c: When compiling a method with generic sharing, insert the
11858         method instantiated with an all-Object generic context into the
11859         jit info table, instead of the context of the first instantiation
11860         of the method we happen to compile.
11861
11862 2008-06-18  Martin Baulig  <martin@ximian.com>
11863
11864         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
11865         `major_version' and `minor_version'.
11866
11867 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11868
11869         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
11870         mono_method_is_generic_sharable_impl() takes an additional
11871         argument specifying whether to treat type variables as reference
11872         types.
11873
11874 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11875
11876         * mini.h: Removed obsolete prototypes.
11877
11878 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11879
11880         * mini.c: Don't fail generic sharing for initobj and sizeof - we
11881         already handle them.
11882
11883 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11884
11885         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
11886         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
11887         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
11888         tramp-x86.c: Added a MonoGenericContext* argument to
11889         mono_arch_get_unbox_trampoline() so that it can call other
11890         functions which require it.
11891
11892 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11893
11894         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
11895         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
11896         mono_arch_get_this_arg_from_call() takes a
11897         MonoGenericSharingContext* as well.
11898
11899 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11900
11901         * mini.c: Factor out code for emitting unbox into emit_unbox() and
11902         implement generic sharing of unbox.
11903
11904 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11905
11906         * mini.c: Don't compute the vtable to determine whether a field is
11907         special static, because it might not work for open types.
11908
11909 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11910
11911         * mini.c: Removed the unused token_type and token_source arguments
11912         from get_runtime_generic_context_ptr().
11913
11914 2008-06-17  Marek Habersack  <mhabersack@novell.com>
11915
11916         * mini.c (ADD_BINOP): fix the build
11917
11918 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
11919
11920         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
11921         a widening op.
11922
11923 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11924
11925         * mini.h: Removed class relations enum that's not used anymore.
11926
11927 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11928
11929         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
11930
11931         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
11932         the lazy fetch trampoline access code.
11933
11934 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11935
11936         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
11937
11938 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11939
11940         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
11941
11942         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
11943
11944         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
11945
11946 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11947
11948         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
11949         intrinsics.
11950
11951         * mini-ops.h: Add MIN/MAX_UN opcodes.
11952
11953         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
11954         intrinsics.
11955
11956         * basic-math.cs: Add more min/max tests.
11957
11958         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11959
11960 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11961
11962         * mini.c: Small fix in the prologue of emit_castclass.
11963
11964 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11965
11966         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11967
11968         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
11969         do not work even for unsigned types. Fixes #400014.
11970
11971         * basic-math.cs: Add regression tests for unsigned Min/Max.
11972
11973 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11974
11975         * mini.c: Added additional context_used argument to several
11976         functions, which will be needed for sharing generic methods.  Use
11977         GET_RGCTX macro wherever appropriate.  Declare only one
11978         context_used in mono_method_to_ir().
11979
11980 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11981
11982         * mini.c, generic-sharing.c: Removed generic class relations.
11983
11984         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
11985         functions due to MRGCTX changes.
11986
11987 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11988
11989         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
11990         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
11991         with calculated IMT.
11992
11993         * mini.c: Generic sharing of calls via generic interfaces.
11994
11995         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
11996         generic method with non-constant MonoGenericContext*.  Instead,
11997         the context is taken out of the method itself.
11998
11999 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12000
12001         * mini.c: Generic sharing of ldvirtftn.
12002
12003 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12004
12005         * mini.c: Generic sharing of ldftn.
12006
12007 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12008
12009         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12010
12011 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12012
12013         * mini.c: Generic sharing of the special case of ldtoken followed
12014         by a call to GetTypeFromHandle.
12015
12016 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12017
12018         * mini.c: Generic sharing of box for nullable types.
12019
12020 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12021
12022         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12023         are passed on the stack. Fixes #324807.
12024
12025 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12026
12027         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12028         for the ArgValuetypeAddrInIReg case.
12029
12030         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12031         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12032
12033         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12034         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12035         local variable and pass the local variable by reference to the called method.
12036           
12037         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12038         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12039
12040         Contributed under MIT/X11 license.
12041
12042 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12043
12044         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12045
12046         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12047         everything.
12048
12049 2008-06-10  Martin Baulig  <martin@ximian.com>
12050
12051         * debug-mini.c
12052         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12053
12054 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12055
12056         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12057         possible error when no arguments are passed.
12058
12059         Contributed under MIT/X11 license.
12060
12061 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12062
12063         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12064         where the file name is NULL.
12065
12066 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12067
12068         * mini.c: Fix s390 build.
12069
12070 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12071
12072         * trace.c (mono_trace_parse_options): Fix warnings.
12073
12074         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12075
12076 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12077
12078         * mini.c (remove_block_if_useless): Avoid printing the method name.
12079         
12080         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12081         MONO_INST_NEW.
12082
12083         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12084         LMF. Not yet used.
12085
12086         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12087         translated code after it has been patched.
12088
12089 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12090
12091         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12092         avoid problems during code patching on SMP systems.
12093         (emit_call): Avoid adding a patch info which is already added by 
12094         emit_call_body.
12095         (mono_arch_emit_exceptions): Ditto.
12096
12097 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12098
12099         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12100         MONO_TYPE_ISSTRUCT already checks for it.
12101
12102 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12103
12104         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12105           structs with floats on Winx64 the float registers are not used.  
12106           The integer registers are always used..
12107         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12108           only one register will be used and only if the size of the struct 
12109           is 1,2,4, or 8 bytes.
12110
12111         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12112           to work for Winx64.
12113
12114         Contributed under MIT/X11 license.
12115
12116 2008-06-05  Martin Baulig  <martin@ximian.com>
12117
12118         * debug-debugger.c (debugger_lookup_class): Also call
12119         mono_class_setup_methods() here; we're only called from RTI.
12120
12121 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12122
12123         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12124         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12125         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12126         Post-process object files and add dtrace-generated object, if necessary.
12127
12128         Contributed under MIT/X11 license.
12129
12130 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12131
12132         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12133         element class.
12134
12135         * mini.c: Generic sharing for unbox.any and castclass.
12136
12137 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12138
12139         * mini.c: Ignore tailcall prefix in shared generic code and when
12140         doing calls which require a vtable/rgctx argument.
12141
12142 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12143
12144         * mini.c: Don't free the JIT info.
12145
12146         * driver.c: Changes in the JIT info table testing code.
12147
12148 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12149
12150         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12151         interruption. Fix some warnings.
12152
12153         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12154         interruption_checkpoint.
12155
12156 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12157
12158         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12159         from embedding applications.
12160
12161 2008-06-02  William Holmes  <billholmes54@gmail.com>
12162
12163         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12164           reserving 32 bytes on the stack when making calls. 
12165
12166         Contributed under MIT/X11 license.
12167
12168 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12169
12170         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12171         the linear IL branch.
12172
12173         * driver.c: Print out more information for --version on arm.
12174
12175 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12176
12177         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12178         bb_exit instead, since out of line bblocks might not actually be emitted
12179         out-of-line.
12180         
12181         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12182         maximum epilog size for out of line bblocks if tracing is enabled.
12183
12184         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12185
12186 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12187
12188         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12189
12190 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12191
12192         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12193         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12194         opcodes.
12195
12196 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12197
12198         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12199         the 'value' to store is a constant.
12200
12201         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12202
12203         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12204         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12205
12206 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12207
12208         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12209         for accessing method->generic_container.
12210
12211 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12212
12213         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12214         
12215         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12216
12217         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12218
12219         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12220         fails.
12221
12222 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12223
12224         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12225
12226         * mini.c: Handle the case when mono_class_vtable () fails.
12227
12228 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12229         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12230         the stat profiler.
12231
12232 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12233
12234         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12235         together with domain sharing.
12236
12237 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12238
12239         * mini.c: Treat callvirts to final methods like non-virtual calls
12240         when doing generic sharing, i.e. look them up in the runtime
12241         generic context.
12242
12243 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12244
12245         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12246         with computed types (for generic sharing).
12247
12248         * mini.c: Generic sharing for mkrefany and refanyval.
12249
12250 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12251
12252         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12253         possible.
12254
12255         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12256         the generic sharing code.
12257         
12258         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12259         when needed.
12260
12261 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12262
12263         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12264
12265 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12266
12267         * driver.c: updated copyright date
12268
12269 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12270
12271         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12272         needed.
12273
12274 2008-05-19  Martin Baulig  <martin@ximian.com>
12275
12276         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12277         pointing to the new `_mono_debug_using_mono_debugger' variable.
12278
12279         * driver.c
12280         (mono_main): Check mono_debug_using_mono_debugger() rather than
12281         the `MONO_INSIDE_MDB' environment variable to check whether we're
12282         inside the debugger.
12283
12284 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12285
12286         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12287         argument.
12288
12289 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12290
12291         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12292
12293         * mini.c: Added mini_assembly_can_skip_verification. This
12294         function checks if the assembly requested to skip verification. 
12295         Fixes part of #387274.
12296
12297 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12298
12299         * mini.c (mini_get_method): Disable the check for open generic classes when
12300         using generic sharing.
12301
12302         * generics.cs: Add a test for #387034.
12303
12304         * mini.c (mini_get_method): Check whenever the method class is an open generic
12305         type, and return NULL in that case, causing a verification error. Fixes
12306         #384123.
12307
12308 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12309
12310         * driver.c (mono_main): Revert r102623. The right
12311         thing to do is to enable the verifier under verifiable
12312         unless a --security flag was passed.
12313
12314         We need this non-trivial behavior for --verify-all otherwise
12315         mcs-compileall won't be able to use it. As it needs everything to
12316         be verified under validil.
12317
12318 2008-05-06  Martin Baulig  <martin@ximian.com>
12319
12320         Fix #383749.
12321
12322         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12323         (mono_debugger_thread_cleanup): Likewise.
12324         (mono_debugger_extended_notification): Likewise.
12325
12326 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12327
12328         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12329         against both inflated and non-inflated methods. We need to check against the
12330         generic definition for cases where the instantiated method is not visible.
12331         We need to check against the inflated types for cases where the instantiation
12332         changes any super type. This fixes #382986.
12333
12334         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12335         that check for visibiliy as generic params only appears as the type subject
12336         of tokens on call opcodes. Field manipulation and ldftn must always
12337         target an exact type.
12338
12339 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12340
12341         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12342         if no related --security flag is passed.
12343
12344 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12345
12346         * mini-arch.h: Prepare support for ppc64.
12347
12348         Contributed under MIT/X11 license.
12349
12350 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12351
12352         * aot-runtime.c: Prepare support for ppc64.
12353
12354         Contributed under MIT/X11 license.
12355
12356 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12357
12358         * mini-ops.h: Prepare support for ppc64.
12359
12360         Contributed under MIT/X11 license.
12361
12362 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12363
12364         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12365
12366         Contributed under MIT/X11 license.
12367
12368 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12369
12370         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12371         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12372         assemblies on windows.
12373
12374 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12375
12376         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12377         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12378         * main.c: Use UTF-8 encoded command line instead of Windows default code
12379         page on Windows to support Unicode.
12380         * driver.c (DllMain): New function for mixed-mode assembly support.
12381         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12382         export __stdcall functions without decoration.
12383
12384         Contributed under MIT/X11 license.
12385
12386 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12387
12388         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12389         saving it very early.
12390
12391 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12392
12393         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12394         deleted.  The only way to access the new RGCTX is via the
12395         trampline.
12396
12397         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12398         vtable instead of the RGCTX to static methods.
12399
12400         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12401         accessing the new RGCTX.
12402
12403         * generic-sharing.c: There is no separation between self, type
12404         arguments and other types in the RGCTX anymore.
12405
12406 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12407
12408         * mini-amd64.c (add_general): Remove previous stack adjustment.
12409         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12410         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12411         for 32 bytes of stack space reserved for all calls.
12412         
12413         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12414         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12415         adjustment.
12416         
12417         Code contributed under MIT/X11 license.
12418
12419 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12420
12421         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12422         against the root definition, peeling out method and type instantiations.
12423         Cache verify success results, code that fails verification is still
12424         checked multiple times.
12425
12426 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12427
12428         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12429
12430 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12431
12432         * mini-amd64.c (add_general): Always increment stack on Win64.
12433         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12434         on Win64.
12435         
12436         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12437         stack based argument handling on Win64.
12438         
12439         Code contributed under MIT/X11 license.
12440
12441 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12442
12443         * Makefile.am (version.h): Add support for git-svn.
12444
12445 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12446
12447         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12448         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12449         avoiding allocations and libc functions which might deadlock.
12450         
12451         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12452         'no-gdb-backtrace' option is set.
12453
12454         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12455
12456         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12457
12458 2008-04-21  Martin Baulig  <martin@ximian.com>
12459
12460         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12461         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12462
12463 2008-04-21  Martin Baulig  <martin@ximian.com>
12464
12465         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12466         `thread_vtable', `event_handler_ptr' and `event_handler'.
12467
12468 2008-04-21  Martin Baulig  <martin@ximian.com>
12469
12470         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12471         allows delayed initialization of the `executable_code_buffer' when
12472         attaching.
12473
12474 2008-04-21  Martin Baulig  <martin@ximian.com>
12475
12476         * mini.h (mono_debugger_create_notification_function): Removed.
12477         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12478
12479         * mdb-debug-info64.s
12480         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12481
12482         * mdb-debug-info32.s
12483         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12484
12485         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12486         currently only works on x86 and x86_64, so don't create it on ppc.
12487
12488 2008-04-21  Martin Baulig  <martin@ximian.com>
12489
12490         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12491
12492         * mini.c
12493         (mini_method_compile): In the fp elimination check, check
12494         `debug_options.mdb_optimizations' in addition to
12495         mono_debug_using_mono_debugger().       
12496
12497         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12498         disable some JIT optimizations which are only disabled when
12499         running inside the debugger.
12500         Added `--help-debug' option to describe the debugging options.
12501         (parse_debug_options): New static function to parse the `--debug'
12502         options, so we can easily add more stuff in future.
12503
12504 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12505
12506         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12507         the method has no body.
12508
12509 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12510
12511         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12512         assembly is not allowed in MSVC 64-bit compiler. 
12513         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12514         as we get floating point exceptions everywhere.
12515         
12516         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12517         correctly align arguments for call to throw_exception.
12518         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12519         
12520         Code contributed under MIT/X11 license.
12521
12522 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12523
12524         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12525
12526 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12527
12528         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12529
12530         * mini-amd64.c (NEW_INS): Set cil_code.
12531
12532         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12533         from mini-amd64.c so all debugger related logic is in one place.
12534
12535         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12536         later won't have a random ip assigned to them.
12537
12538 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12539
12540         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12541         the arch specific function initializes code_size.
12542         (mono_create_delegate_trampoline): Ditto.
12543
12544         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12545         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12546         platforms.
12547
12548         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12549         running under the debugger.
12550
12551         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12552         debugger.
12553
12554         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12555         debugger. Also move the disabling of optimizations here from driver.c.
12556         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12557         debugger.
12558
12559         * mini.h (MonoCompile): Add a few new flags.
12560
12561 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12562
12563         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12564         so the cil_code field of created MonoInst's is properly set.
12565         (mini_select_instructions): Ditto.
12566
12567         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12568         (MONO_INST_NEW_CALL): Ditto.
12569
12570         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12571         in many places so the ins->cil_code field is properly initialized.
12572
12573         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12574         place.
12575
12576 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12577
12578         * mini.c (mini_method_compile): Print a different message when compiling a 
12579         shared method.
12580         
12581         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12582         > 1.
12583
12584 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12585
12586         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12587         SSE2 instructions.
12588
12589         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12590         
12591 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12592
12593         * mini.c (handle_stack_args): Make this return void since its return value was
12594         never used. Also set cfg->unverifiable for invalid IL instead of calling
12595         G_BREAKPOINT ().
12596
12597 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12598
12599         * mini.c: Make sure "this" is live in catch clauses with type
12600         variables in shared generic code.
12601
12602 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12603
12604         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12605         generic_class_is_reference_type() to ensure the proper behaviour
12606         when sharing generic code and the type in question is a type
12607         argument.
12608
12609 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12610
12611         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12612         race conditions when printing thread dumps. Fixes #377738.
12613
12614 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12615         
12616         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12617         shows up when both MonoInst arguments can cause aliasig.
12618         There is likely no way in the current JIT to trigger this problem, but
12619         it showed up in the development of generics sharing, when in a new
12620         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12621         When the generics sharing code will be committed, its tests will be
12622         valid also for this bug.
12623
12624 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12625
12626         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12627         PATCH_INFO_METHOD.
12628
12629         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12630         NULL.
12631
12632 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12633
12634         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12635         use a more detailed exception message for InvalidCastException.
12636
12637         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12638
12639         * driver.c (mono_main): Add --debug=casts option to turn on better 
12640         InvalidCastException message details.
12641
12642         * mini.c (mini_get_debug_options): New helper function to return the address of
12643         the debug_options variable.
12644
12645         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12646         the jit_tls TLS variable.
12647
12648         * mini.c (mono_jit_tls): New TLS variable.
12649
12650         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12651         option is used.
12652
12653 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12654
12655         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12656
12657         * mini.c: Removed verifer related stuff, code moved to verify.c.
12658
12659         * driver.c: Using code from verify.c instead of mini.c.
12660
12661 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12662
12663         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12664         longer valid.
12665
12666 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12667
12668         * mini.c (check_for_method_verify): Enabling verification of
12669         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12670         have been fixed.
12671
12672 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12673
12674         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12675         caller saved registers as well.
12676         
12677         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12678         saved registers as well.
12679
12680 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12681
12682         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12683
12684         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12685         code.
12686
12687 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12688
12689         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12690         to get_call_info.
12691         (get_call_info): Take a gsctx argument instead of 'cfg'.
12692
12693 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12694
12695         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12696         mono_verify_all is set.
12697
12698         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12699
12700         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12701
12702 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12703
12704         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12705         an exception.
12706
12707         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12708         verifier and the code generated by the compiler.
12709
12710 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12711
12712         * mini.c: Generic sharing of the non-nullable case of the box
12713         instruction.
12714
12715 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12716
12717         * inssel.brg: Fix the build.
12718
12719         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12720
12721 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12722
12723         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12724         Array:Address. Fixes #372410.
12725
12726         * iltests.il.in: New tests for readonly prefix.
12727
12728 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12729
12730         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12731         mini-trampolines.c.
12732
12733         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12734         mini-exceptions.c.
12735
12736         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12737         
12738         * mini.c (mono_decompose_op_imm): New helper function.
12739
12740         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12741         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12742         return value.
12743
12744         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12745         mono_arch_output_basic_block. Fix warnings.
12746
12747         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12748         for now.
12749
12750 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12751
12752         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12753         since the extra frame is now detected automatically inside the loop.
12754
12755         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12756         opts which are now in mono_peephole_ins ().
12757         
12758         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12759
12760         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
12761         frames and skip duplicate managed-to-native frames. Fixes #367665.
12762
12763         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12764         opts which are now in mono_peephole_ins ().
12765         (mono_arch_peephole_pass_2): Ditto.
12766
12767         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
12768
12769         * mini-codegen.c (mono_peephole_ins): New helper function containing the
12770         arch independent peephole optimizations.
12771
12772         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12773         opts which are now in mono_peephole_ins ().
12774
12775         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
12776         
12777         * mini-s390.c (mono_arch_output_basic_block): Fix build.
12778
12779         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
12780         pattern.
12781
12782         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
12783         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
12784         opcode. 
12785
12786 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
12787
12788         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
12789         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12790         return value.
12791
12792         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12793         mono_arch_output_basic_block. Fix warnings.
12794
12795 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12796
12797         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12798         conv.ovf.u.un.
12799
12800 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12801
12802         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12803         conv.ovf.u.un.
12804
12805         * iltests.il: Add new tests.
12806
12807 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
12808
12809         * mini.c: Removed Windows version macros.
12810
12811 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12812
12813         * generic-sharing.c: Put reflection types in the extensible part
12814         of the runtime generic context.
12815
12816         * mini.c: Generic sharing of the GetTypeHandle special case of the
12817         ldtoken instruction.
12818
12819 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12820
12821         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
12822
12823         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
12824         
12825         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
12826         consistency with the other version on the linear IR branch.
12827
12828         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
12829
12830         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
12831
12832         * iltests.il.in: Add new tests.
12833
12834 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
12835
12836         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
12837
12838         * iltests.il.in: Add new tests.
12839
12840 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12841
12842         * mini.c: Two variables with the same name were declared in
12843         nesting contexts and one wasn't initialized.  Fixed.
12844
12845 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12846
12847         * mini.c: Generic sharing of the initobj instruction.
12848
12849 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
12850
12851         * mini.c: make the test to optimize ldtoken from typeof() more
12852         precise.
12853
12854 2008-03-18  Mark Probst  <mark.probst@gmail.com>
12855
12856         * mini.c: Generic sharing of the initobj instruction for reference
12857         types.
12858
12859 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
12860
12861         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
12862         the mono_breakpoint_clean_code() code to perform bound checks.
12863
12864 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
12865
12866         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
12867         mono_arch_patch_callsite() to include the start of the managed method
12868         to be able to perform bound checks.
12869
12870 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12871
12872         * mini.c: Generic sharing for the isinst instruction.
12873
12874 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12875
12876         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12877         inssel-long32-mips.brg: Added opcodes for doing indirect calls
12878         with the runtime generic context argument.
12879
12880         * mini.c: Share calls to several types of unsharable methods by
12881         putting the address of the method code in the runtime generic
12882         context and doing an indirect call.
12883
12884         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12885         to switches.
12886
12887 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12888
12889         * generic-sharing.c: Change due to a change in the runtime genric
12890         context API.
12891
12892 2008-03-15  Martin Baulig  <martin@ximian.com>
12893
12894         * tramp-x86.c
12895         (mono_arch_nullify_class_init_trampoline): Add call to
12896         mono_breakpoint_clean_code() to make things work when running
12897         inside the debugger.
12898
12899         * tramp-amd64.c
12900         (mono_arch_nullify_class_init_trampoline): Add call to
12901         mono_breakpoint_clean_code() to make things work when running
12902         inside the debugger.
12903
12904 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12905
12906         * inssel-long.brg (reg): Fix 64 bit build.
12907
12908 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12909
12910         * mini.c, mini.h: Share static generic code by passing it an
12911         implicit argument pointing to the runtime generic context.
12912
12913         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12914         inssel-long32-mips.brg: New opcodes for calling shared static,
12915         which need to be passed the runtime generic context.
12916
12917         * mini-amd64.c, mini-x86.c: Save the runtime generic context
12918         argument on the stack in the prologue if needed.  New function for
12919         finding the runtime generic context argument from the registers
12920         saved by the trampoline.
12921
12922         * mini-amd64.h, mini-x86.h: Specify which register to use for the
12923         runtime generic context argument.
12924
12925         * tramp-amd64.c: Also restore the register used for the runtime
12926         generic context argument.
12927
12928         * mini-trampoline.c: Resolve shared static calls by consulting the
12929         runtime generic context via the new argument.
12930
12931         * generic-sharing.c: Add an argument to sharability-checking
12932         functions that specifies whether type variables should be treated
12933         as sharable type arguments.
12934
12935         * inssel-x86.brg: Removed a superfluous, buggy rule.
12936
12937         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12938         to switches.
12939
12940 2008-03-14  Martin Baulig  <martin@ximian.com>
12941
12942         * debug-debugger.c (main_thread_handler): Call
12943         mono_runtime_run_main() without sending any notifications.
12944
12945         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
12946
12947 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12948
12949         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
12950
12951 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12952
12953         * tramp-x86.c: Fixed register restore offsets in the trampoline
12954         code for ECX and EDX.
12955
12956 2008-03-12  Geoff Norton  <gnorton@novell.com>
12957
12958         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
12959         different ucontext_t implementations.
12960         * exceptions-arm.c: Use the above defines to get exceptions working on 
12961         iPhone (based on a patch by Luke Howard lukeh@padl.com)
12962         * mini-arm.c: Implement iPhone icache support (based on a patch by
12963         Luke Howard lukeh@padl.com)
12964
12965 2008-03-12  Mark Probst  <mark.probst@gmail.com>
12966
12967         * mini.c: Enable generic sharing of calls to non-static
12968         non-interface non-generic non-value-type methods.
12969
12970         * mini-trampolines.c: Resolve calls from shared generic code.
12971
12972 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
12973
12974         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
12975
12976         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
12977
12978 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
12979
12980         * mini.c: some fixes for the AOT compiler.
12981
12982 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12983
12984         * cpu-amd64.md: Add clob:1 to some float opcodes.
12985
12986 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
12987
12988         * mini.h: Added MiniVerifierMode enumeration.
12989
12990         * mini.c: Added mini_verifier_set_mode to control
12991         the usage of the new verifier.
12992
12993         * mini.c (mono_method): Integrated the new verifier.
12994
12995         * driver.c: Extended --security option with validil and
12996         verifiable options to activate the new verifier.
12997
12998 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12999
13000         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
13001         optimization to ctors taking 0 or 2 arguments too.
13002
13003         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
13004         a bit.
13005
13006         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
13007
13008         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13009
13010 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13011
13012         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13013         non-aot case as well.
13014
13015         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13016
13017         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13018         changes.
13019
13020         * aot-compiler.c (encode_patch): Ditto.
13021
13022         * mini.h (G_MININT32): Fix the definition of this.
13023
13024 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13025
13026         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13027
13028         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13029
13030 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13031
13032         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13033         methods returning vtypes in registers.
13034         (mono_arch_allocate_vars): Ditto.
13035
13036         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13037
13038         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13039
13040         * generics.cs: Add a test from the linear IR branch.
13041
13042         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13043
13044         * mini.c (inline_method): Cache failed inline attempts.
13045
13046 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13047
13048         * mini.c: For shared methods of generic classes put the location
13049         of "this" into the MonoGenericJitInfo.
13050
13051         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13052         register out of a MonoContext by register number.  Add the generic
13053         sharing context as an argument to mono_arch_find_this_argument().
13054
13055         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13056         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13057         for new arch function.
13058
13059         * mini-exception.c: Handle open exception clauses in shared
13060         generic code.
13061
13062         * mini-trampolines.c: Supply additional argument to
13063         mono_arch_find_this_argument().
13064
13065 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13066
13067         * Makefile.am (regtests): Run the bench.exe tests last.
13068
13069 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13070
13071         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13072         a bit.
13073
13074 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13075
13076         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13077         with MS.
13078
13079         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13080         
13081         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13082
13083         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13084         whose class has no cctor.
13085
13086         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13087
13088 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13089
13090         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13091         unverified.
13092
13093 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13094
13095         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13096         to be in sync with the code on the linear IR branch.
13097
13098         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13099
13100         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13101
13102 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13103
13104         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13105
13106         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13107
13108         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13109
13110         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13111
13112         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13113         
13114         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13115         body.
13116
13117 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13118
13119         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13120         OP_LOADR4_MEMBASE emission.
13121
13122         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13123         (mono_spillvar_offset_float): Ditto.
13124
13125         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13126
13127         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13128         emission.
13129
13130         * basic-long.cs: Add regression tests for them.
13131
13132         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13133         use.
13134         (mono_arch_allocate_vars): Fix representation of single-precision float
13135         argument.
13136         (mono_arch_output_basic_block): Ditto.
13137
13138         * inssel-mips.brg: Ditto, remove duplicate items.
13139
13140         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13141         arguments of tail calls as on other platforms.
13142         (mono_arch_output_basic_block): Handle tail calls.
13143
13144         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13145         register.
13146
13147         * objects.cs (test_5_pass_static_struct): Add test for it.
13148
13149         Contributed under MIT/X11 license.
13150
13151 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13152
13153         * Makefile.am: Use gmcs for compiling the regression tests.
13154
13155         * *.2.cs *.2.il: Rename to *.cs and *.il.
13156
13157 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13158
13159         * regalloc.h: Make the vassign array smaller.
13160
13161         * mini.c (mini_method_compile): Remove an unused field in cfg.
13162
13163         * mini-codegen.c: Add a bunch of micro optimizations.
13164
13165 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13166
13167         * regalloc.h: Remove some unused fields.
13168
13169 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13170
13171         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13172
13173         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13174
13175 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13176
13177         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13178
13179         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13180         trampoline: Fetch an entry from the runtime generic context.  If
13181         it's NULL, jump to the actual trampoline to fill the runtime
13182         generic context.  Otherwise, return it.
13183
13184         * mini.c: Call the lazy fetch trampoline to get entries out of the
13185         runtime generic context.
13186
13187         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13188         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13189         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13190
13191 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13192
13193         * mini.c: Fetch data out of the extensible part of the runtime
13194         generic context instead of calling a helper function.
13195
13196         * generic-sharing.c: Some functions moved into
13197         metadata/generic-sharing.c.  Helper function for fetching other
13198         types now checks and asserts against extensible rgctx (just for
13199         debugging purposes - the helper function isn't called anymore
13200         unless for debugging).
13201
13202 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13203
13204         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13205         for tail calls up to the point that the tests in iltests.exe run. Also add a
13206         dummy CKFINITE implementation.
13207         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13208         needed for trampoline LMF frames.
13209
13210         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13211         trampoline LMF frames.
13212
13213 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13214
13215         * mini.c (inline_method): clean any pending loader error when inlining fail.
13216         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13217
13218 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13219
13220         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13221
13222         * aot-runtime.c (decode_patch_info): Ditto.
13223
13224         * mini.c (mono_resolve_patch_target): Ditto.
13225         
13226         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13227         icall wrappers.
13228
13229         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13230         
13231         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13232         if it references an icall address.
13233
13234 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13235
13236         * cpu-s390x.md: Remove some more unused opcodes.
13237         
13238         * cpu-s390x.md: Remove some unused opcodes.
13239
13240         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13241         mono_op_imm_to_op ().
13242
13243         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13244         instead of a switch statement.
13245         
13246         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13247         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13248
13249         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13250         
13251         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13252
13253         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13254         -1.
13255
13256 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13257
13258         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13259         opened. Fixes #362607.
13260
13261         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13262
13263         * iltests.il.in: Add a test for static methods in interfaces.
13264
13265 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13266
13267         * genmdesc.c (build_table): Fix a crash on older glib versions.
13268
13269         * cpu-sparc.md: Remove some unused opcodes.
13270         
13271         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13272         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13273
13274         * cpu-amd64.md: Remove some unused opcodes.
13275
13276         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13277         like the other opcodes.
13278
13279 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13280
13281         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13282
13283         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13284
13285         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13286         variables 'cfg' instead of 'm' for consistency.
13287
13288         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13289
13290         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13291         argument holding the vtype return address, to avoid the ambigious use of
13292         cfg->ret for this purpose.
13293
13294         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13295
13296         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13297         
13298         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13299         new mono_print_ins () function which only takes one argument.
13300
13301 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13302
13303         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13304         macro arguments.
13305
13306 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13307
13308         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13309
13310         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13311
13312         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13313         opcodes and other small changes.
13314
13315         * mini-ops.h: Add some new opcodes from the linear IR branch.
13316
13317         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13318
13319         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13320         opcodes, use the REG_MEMBASE opcodes instead.
13321         
13322         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13323         opcodes, use the REG_MEMBASE opcodes instead.
13324         
13325         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13326         linear IR branch.
13327
13328         * mini.c (mono_op_imm_to_op): New helper function.
13329
13330         * mini-ops.h: Add some opcodes from linear IR branch.
13331
13332 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13333
13334         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13335         <tsv@solvo.ru>.
13336
13337 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13338
13339         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13340         OP_ICONV_TO_R4/R8.
13341
13342         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13343
13344 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13345
13346         * aot-compiler.c (emit_method_code): Add an assert.
13347
13348         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13349         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13350         methods.
13351
13352 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13353
13354         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13355         some load/store opcodes so they are consistent. 
13356         (mono_arch_emit_prolog): Simplify some code.
13357
13358         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13359
13360         * objects.cs: Add tests for large argument offsets on ARM.
13361
13362         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13363         stack offsets. Fixes #359651.
13364
13365         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13366
13367         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13368
13369         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13370
13371         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13372
13373         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13374
13375         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13376         rid of CEE_CONV_R_UN.
13377
13378         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13379
13380 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13381
13382         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13383
13384         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13385
13386         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13387
13388         * cpu-amd64.md: Remove some unused opcodes.
13389
13390         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13391
13392         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13393
13394         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13395         arch specific functions for its parts. Call the peephole pass after local
13396         regalloc so the prolog can compute a more accurate max_offset.
13397         
13398         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13399         the corresponding OP_I/OP_L opcodes.
13400
13401         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13402
13403         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13404
13405 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13406
13407         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13408         as they are handled in mini.c.
13409
13410         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13411         
13412         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13413         case since it is handled in mini.c.
13414
13415         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13416
13417         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13418
13419         * *.c: Use the new opcodes in the IR and back end code.
13420
13421         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13422
13423         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13424
13425 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13426
13427         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13428         an assert because it has a race condition.
13429
13430 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13431
13432         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13433
13434         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13435
13436         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13437
13438         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13439         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13440
13441 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13442
13443         * cpu-amd64.md (move): Correct the maximum size of move.
13444
13445 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13446
13447         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13448         the generic class init trampoline to return quickly if the class
13449         is already inited.
13450
13451 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13452
13453         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13454         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13455
13456 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13457
13458         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13459         branch.
13460
13461 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13462
13463         * objects.cs: Add some soft-float tests.
13464
13465         * mini.c: Fix a couple more soft-float issues.
13466
13467         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13468
13469         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13470         avoid a REX prefix.
13471
13472 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13473
13474         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13475         exception happens while compiling a virtual method.
13476
13477 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13478
13479         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13480         
13481         * mini-sparc.c: Fix build.
13482
13483         * mini-sparc.c (get_call_info): Add support for generic sharing.
13484
13485         * mini-exceptions.c: Add a FIXME.
13486
13487 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13488
13489         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13490         altstack handling code.
13491
13492         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13493         
13494         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13495
13496         * mini-s390.c: Add support for generic sharing.
13497
13498         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13499         Fix CAS on s390.
13500         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13501
13502         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13503
13504         * mini-s390x.c: Add support for generic sharing.
13505         
13506         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13507         Fix CAS on ia64.
13508         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13509
13510         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13511         can be used since it takes a 16 bit signed immediate.
13512
13513         * inssel-s390x.brg: Fix OP_SETRET.
13514
13515         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13516
13517         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13518
13519         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13520
13521         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13522
13523         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13524         in one place.
13525
13526         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13527         stuff.
13528
13529         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13530         of the unused mono_arch_patch_delegate_trampoline stuff.
13531
13532 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13533
13534         * basic-long.cs: Move the fp related tests to basic-float.cs.
13535
13536         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13537
13538         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13539
13540         * basic-calls.cs: Add a test for proper float argument passing.
13541
13542         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13543         if the context corresponds to an exception received through a signal.
13544
13545         * exceptions.cs: Add a test for nullref handling at the start of a try
13546         clause.
13547
13548         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13549
13550         * jit-icalls.c (mono_break): New JIT icall.
13551
13552         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13553
13554         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13555
13556 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13557
13558         * cpu-*.md: Get rid of unused opcodes.
13559
13560         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13561
13562         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13563         by all platforms.
13564
13565         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13566         define.
13567
13568         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13569         the arch independent trampoline code in mini-trampolines.c.
13570
13571         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13572
13573         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13574
13575         * mini-s390.h: Remove an unused define.
13576         
13577         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13578         the arch independent trampoline code in mini-trampolines.c.
13579
13580         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13581
13582 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13583
13584         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13585
13586         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13587
13588         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13589
13590         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13591
13592         * cpu-amd64.md: Use smaller sizes for int opcodes.
13593
13594         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13595
13596         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13597         objects.cs.
13598
13599         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13600         debugging.
13601
13602         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13603         instead of though a pointer to save an indirection when accessing elements of
13604         the array.
13605
13606         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13607         some typos.
13608         (NOT_IMPLEMENTED): New helper macro.
13609         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13610         of a bb.
13611
13612         * *.c: Use the new helper macro.
13613
13614 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13615
13616         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13617
13618 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13619
13620         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13621         stack slots.
13622
13623 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13624
13625         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13626         profiling is enabled.
13627         
13628         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13629         the end.
13630         (mono_arch_emit_prolog): Add more first bblock optimizations.
13631
13632         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13633         in order if possible.
13634         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13635         bblock, since the arguments are still in their original registers.
13636
13637         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13638
13639 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13640
13641         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13642         as well.
13643
13644         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13645         offset 0.
13646
13647         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13648
13649         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13650         process async exceptions received while in unmanaged code.
13651
13652         * mini.c (mini_init): Install a callback with the runtime which will be called
13653         when a thread receives an async exception while in unmanaged code.
13654
13655         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13656
13657         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13658
13659 2008-01-16  Wade Berrier  <wberrier@novell.com>
13660
13661         * cpu-g4.md:
13662         * cpu-arm.md:
13663         * cpu-s390x.md:
13664         fix build
13665
13666 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13667
13668         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13669         compilation with sun cc.
13670
13671         * cpu-*.md: Fix the build.
13672
13673         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13674
13675         * mini-amd64.h: Add some comments to the MonoLMF structure.
13676
13677         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13678         
13679         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13680         in the LMF structure if possible. This saves two instructions in the
13681         managed->native wrappers.
13682
13683         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13684
13685 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13686
13687         * generic-sharing.c: New type argument lookup code which uses the
13688         runtime generic context template.
13689
13690 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13691
13692         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13693
13694         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13695         (mono_arch_output_basic_block): Fix localloc implementation.
13696
13697         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13698
13699         * mini-ia64.c (peephole_pass): Fix ia64 build.
13700
13701         * mini-amd64.c (peephole_pass): Fix a warning.
13702         
13703         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13704         at a constant offset from sp/fp.
13705
13706         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13707         instead of obtaining it from *lmf in the managed method case.
13708
13709 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13710
13711         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13712
13713 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13714
13715         * mini.h (MonoInstList): New type.
13716         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13717         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13718         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13719         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13720         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13721         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13722         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13723         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13724         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13725         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13726         MONO_INST_LIST_FOR_EACH_ENTRY,
13727         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13728         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13729         mono_inst_list_first, mono_inst_list_last,
13730         mono_inst_list_next, mono_inst_list_prev): New instruction
13731         list handling interfaces.
13732         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13733         list head 'ins_list'.
13734         (MonoInst): Replace next pointer with list head 'node'.
13735         (MonoCallInst): Make 'out_args' a MonoInstList.
13736         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13737         (MonoCompile): Delete reverse_inst_list and
13738         reverse_inst_list_len.
13739         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13740         mono_arch_lowering_pass, mono_arch_local_regalloc,
13741         mono_arch_output_basic_block, mono_arch_emit_prolog):
13742         Convert to new instruction lists.
13743         (insert_after_ins): Delete.
13744         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13745         instruction lists.
13746         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13747         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13748         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13749         mono_emulate_opcode, mono_emit_load_got_addr,
13750         inline_method, mono_method_to_ir, mono_print_bb_code,
13751         print_dfn, decompose_pass, nullify_basic_block,
13752         replace_out_block_in_code, remove_block_if_useless,
13753         merge_basic_blocks, move_basic_block_to_end,
13754         try_unsigned_compare, optimize_branches, mono_print_code,
13755         mini_select_instructions, remove_critical_edges): Likewise.
13756         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13757         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13758         mono_arch_output_basic_block, mono_arch_emit_prolog):
13759         Likewise.
13760         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
13761         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13762         mono_arch_output_basic_block): Likewise.
13763         (inst_list_prepend, insert_after_ins): Delete.
13764         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
13765         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
13766         instruction lists.
13767         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
13768         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
13769         mono_arch_emit_prolog): Likewise.
13770         * cfold.c (mono_constant_fold): Likewise.
13771         * liveness.c (visit_bb, mono_analyze_liveness,
13772         optimize_initlocals): Likewise.
13773         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
13774         * graph.c (mono_draw_code_cfg): Likewise.
13775         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
13776         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
13777         mono_ssa_cprop): Likewise.
13778         * abcremoval (get_relations_from_previous_bb, process_block):
13779         Likewise.
13780         * local-propagation (mono_cprop_invalidate_values,
13781         mono_local_cprop_bb): Likewise.
13782         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
13783         peephole_pass, mono_arch_output_basic_block,
13784         mono_arch_emit_prolog): Likewise.
13785         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
13786         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13787         mono_arch_emit_prolog): Likewise.
13788         (insert_after_ins): Delete.
13789         * aliasing.c (print_code_with_aliasing_information,
13790         mono_build_aliasing_information, mono_aliasing_deadce):
13791         Convert to new instruction lists.
13792         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
13793         peephole_pass, NEW_INS, mono_arch_lowering_pass,
13794         mono_arch_local_regalloc, mono_arch_output_basic_block):
13795         Likewise.
13796         (insert_after_ins): Delete.
13797         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
13798         peephole_pass, mono_arch_output_basic_block): Convert to
13799         new instruction lists.
13800         * mini-codegen (InstList, inst_list_prepend,
13801         insert_after_ins): Delete.
13802         (insert_before_ins, get_register_force_spilling,
13803         get_register_spilling, free_up_ireg, free_up_reg,
13804         create_copy_ins, create_spilled_store, alloc_int_reg,
13805         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
13806         to new instruction lists.
13807         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
13808         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13809         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
13810         (insert_after_ins): Delete.
13811         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
13812         mono_arch_local_regalloc, mono_arch_output_basic_block,
13813         mono_arch_call_opcode): Convert to new instruction lists.
13814         (insert_after_ins): Delete.
13815         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
13816         peephole_pass, mono_arch_output_basic_block,
13817         mono_arch_emit_prolog): Convert to new instruction lists.
13818
13819 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13820
13821         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
13822
13823         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
13824         Fixes #353182.
13825
13826         * Makefile.am (version.h): Make this work with non-bash shells.
13827
13828 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13829
13830         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
13831
13832 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13833
13834         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
13835         the InitializeArray optimization.
13836
13837 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13838
13839         * mini.c driver.c: Don't include os/gc_wrapper.h.
13840
13841 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13842
13843         * mini.c (print_jit_stats): Print GC statistics if available.
13844
13845 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
13846
13847         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
13848
13849 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
13850
13851         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
13852
13853 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
13854
13855         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
13856         
13857         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
13858
13859         * driver.c (mono_main): Ditto.
13860
13861 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
13862
13863         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
13864
13865         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
13866         in the vtable can't be encoded.
13867         (compile_method): Ditto.
13868
13869 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
13870
13871         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
13872         defined.
13873
13874         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
13875         lmf->rbp.
13876
13877         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
13878         the top LMF entry belongs to the current method.
13879
13880         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
13881
13882 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
13883
13884         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
13885         
13886         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
13887
13888         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
13889
13890         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
13891
13892         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
13893
13894         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
13895         implementation.
13896
13897         * basic-float.cs: Add an ulong->double cast test.
13898
13899 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
13900
13901         * mini.c (mono_method_to_ir): Fix a warning.
13902
13903 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
13904
13905         * mini-ops.h: Add OP_SWITCH.
13906
13907         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
13908         CEE_SWITCH in back-end code, use OP_SWITCH instead.
13909
13910 2007-12-11  Geoff Norton  <gnorton@novell.com>
13911
13912         * mini-s390x.c: Minor change to the MAX() define to allow
13913         it to compile with other gcc versions.
13914
13915 2007-12-11  Geoff Norton  <gnorton@novell.com>
13916
13917         * cpu-s390x.md:
13918         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
13919
13920 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13921
13922         exceptions-arm.c (mono_arch_get_restore_context): Restore
13923         the frame pointer.
13924
13925         exceptions-arm.c (throw_exception): Save the frame pointer.
13926         This is a partial fix for #323747. Only the client side is
13927         fixed.
13928
13929 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13930
13931         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
13932         was using an unrelated variable to log the class which
13933         needed the cctor to be called. This was crashing on arm.
13934
13935 2007-12-09  Robert Jordan  <robertj@gmx.net>
13936
13937         * mini-x86.c (mono_arch_emit_epilog):
13938         Consider all kinds of 64-bit types. Fixes #323114.
13939
13940 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
13941
13942         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
13943
13944 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13945
13946         * mini-amd64.c (peephole_pass): Add a missing instruction check.
13947
13948 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13949
13950         * mini.c: run type ctor before allocating an object, not only
13951         when running it's constructor method (fixes at least part of bug #342507).
13952
13953 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13954         
13955         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
13956         
13957         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
13958         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
13959         function.
13960
13961         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
13962         mono_generic_class_init_trampoline () the same as it is done with the other
13963         trampolines.
13964
13965         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
13966         aot-runtime.c aot-compiler.c: Implement AOT support.    
13967
13968 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13969
13970         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
13971         build for archs which don't have the vtable trampoline defined
13972         yet.
13973
13974 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13975
13976         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
13977
13978         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
13979
13980         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
13981
13982         * tramp-<ARCH>.c: Use the new helper function.
13983
13984 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13985
13986         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
13987         trampoline call, which takes a vtable argument.
13988
13989         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
13990         OP_TRAMPCALL_VTABLEs like other calls.
13991
13992         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
13993         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
13994         call.  Implemented a support function which fetches the vtable
13995         from a register set.
13996
13997         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
13998         Implemented a generic class init trampoline, using the
13999         OP_TRAMPCALL_VTABLE opcode.
14000
14001         * mini.c: Implemented static field access when sharing generic
14002         code.  This implies initing the class using the new
14003         OP_TRAMPCALL_VTABLE call.
14004
14005 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14006
14007         * mini.c: Don't compile methods with sharing enabled if their
14008         classes are disabled for sharing.
14009
14010 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14011
14012         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14013         opcodes. Fixes #346563.
14014
14015         * objects.cs: Add a new test.
14016
14017         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14018
14019         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14020         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14021
14022 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14023
14024         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14025
14026 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14027
14028         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14029         code stream.
14030
14031 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14032
14033         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14034
14035         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14036         optimization in the AOT case.
14037         
14038 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14039
14040         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14041         
14042         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14043
14044         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14045
14046         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14047
14048         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14049         is created by the inlined delegate ctor.
14050
14051         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14052
14053         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14054
14055 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14056
14057         * cpu-x86.md: Fix the length of ckfinite.
14058
14059 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14060
14061         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14062         
14063         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14064         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14065
14066         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14067
14068         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14069         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14070
14071 2007-11-28  Martin Baulig  <martin@ximian.com>
14072
14073         * mini-x86.c
14074         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14075         after creating the trampoline.
14076
14077 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14078
14079         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14080
14081         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14082         the same version.
14083
14084         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14085         instead of the calling method to help AOT.
14086
14087         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14088
14089 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14090
14091         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14092         is defined.
14093
14094 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14095
14096         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14097         
14098         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14099         (encode_method_ref): No need to handle generic method definitions specially.
14100
14101         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14102
14103         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14104         decode_klass_info.
14105
14106         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14107         encode_klass_info.
14108         (compile_method): Enable generic sharing.
14109
14110 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14111
14112         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14113         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14114
14115         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14116         generic code.
14117
14118         * mini-trampolines.c: Fix a warning.
14119
14120         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14121         NEW_PCONST.
14122         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14123         (generic_class_is_reference_type): Remove unused function.
14124
14125         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14126         in the generic vtable trampoline case.
14127
14128         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14129         
14130         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14131         return an AOT method based on a vtable slot.
14132
14133         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14134
14135         * mini.c (mini_get_vtable_trampoline): Export this.
14136
14137 2007-11-22  Martin Baulig  <martin@ximian.com>
14138
14139         * debug-debugger.h
14140         (MonoDebuggerInfo): Move `debugger_version' up.
14141
14142 2007-11-22  Martin Baulig  <martin@ximian.com>
14143
14144         * mini-amd64.c
14145         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14146
14147         * mini-trampolines.c
14148         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14149         after compiling the method.
14150
14151 2007-11-20  Martin Baulig  <martin@ximian.com>
14152
14153         * debug-mini.c
14154         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14155         (mono_debugger_remove_breakpoint): Likewise.
14156         (mono_debugger_check_breakpoints): Likewise.
14157
14158         * debug-debugger.c: Implement the new breakpoint interface here.
14159
14160 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14161
14162         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14163         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14164
14165         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14166
14167 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14168
14169         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14170
14171         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14172         mini.c.
14173
14174         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14175         mini.c.
14176
14177         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14178         returning a vtype in a register.
14179
14180         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14181         here from the arch specific code.
14182
14183         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14184         mini.c.
14185
14186         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14187         (mono_arch_emit_prolog): Increment maximum prolog size.
14188
14189         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14190         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14191
14192         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14193         MonoGenericSharingContext.
14194
14195         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14196         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14197
14198 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14199
14200         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14201         which extract fields out of the runtime generic context.  Full
14202         sharing of the NEWARR opcode.
14203
14204 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14205
14206         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14207         --enable-minimal=ssa.
14208
14209 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14210
14211         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14212         mono_marshal_get_delegate_invoke () signature change.
14213
14214 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14215
14216         * mini.c: Removed the shared context in favor of the generic
14217         sharing context.  Allocate the MonoJitInfo structure with room for
14218         the generic sharing context if it's needed.
14219
14220         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14221         domain-internals.h now.
14222
14223         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14224
14225         * generic-sharing.c: Several changes for working without a shared
14226         context and instead operating on open types instead.
14227
14228 2007-11-12  David S. Miller  <davem@davemloft.net>
14229
14230        * inssel-sparc.brg: Fix double instruction emit.
14231
14232 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14233
14234         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14235         Get/Set/Address methods.
14236         
14237         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14238         mono_marshal_get_delegate_invoke signature change.
14239
14240 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14241
14242         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14243         This can happens with dynamic methods. Fixes the other bug in #322722.
14244
14245 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14246
14247         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14248         BX call sequence.
14249
14250         * mini-arm.c (arm_patch): Implement patching of BX call
14251         sequence. Fixes one of the bugs in #322722.
14252
14253 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14254
14255        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14256        under Linux.  We only need to flush every 32-byte cache line.    
14257
14258 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14259
14260         * mini.c:
14261         move_basic_block_to_end: Add branches when needed, eventually creating
14262         a new BB.
14263         optimize_branches: added a parameter that tells if it's ok to create
14264         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14265         and avoid calling move_basic_block_to_end when it's not ok.
14266         Fixes bug 318677.
14267
14268 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14269
14270         * mini.c: Abort inlining call to InitializeArray if something
14271         looks wrong.  Let the icall handle it, which now has proper safety
14272         checks.
14273
14274 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14275
14276         * mini.c (mono_spill_call): add support for soft-float.
14277
14278         * mini.c (mono_method_to_ir): add support for soft-float
14279         to inlined functions that return float.
14280
14281         * mini.c (mono_method_to_ir): add support for soft-float
14282         to cee_stsfld opcode on float fields.
14283
14284 2007-11-05  Geoff Norton  <gnorton@novell.com>
14285
14286         * mini-x86.h: Fix the structure access for X86 Leopard.
14287
14288
14289 2007-11-05  Martin Baulig  <martin@ximian.com>
14290
14291         * mini-trampolines.c
14292         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14293         after compiling the method to notify the debugger.
14294
14295 2007-11-05  Martin Baulig  <martin@ximian.com>
14296
14297         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14298
14299 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14300
14301         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14302         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14303
14304 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14305
14306         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14307         native-to-managed wrappers.
14308         
14309 2007-11-01  Geoff Norton  <gnorton@novell.com>
14310
14311         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14312         members.
14313
14314 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14315
14316         * mini.c, mini-x86.c: when getting back from unmanaged code
14317         to managed via a marshaled delegate we also need to set the
14318         right domain.
14319
14320 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14321
14322         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14323         for amd64.
14324
14325 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14326
14327         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14328         let the debugger or other external agents to tell the JIT when
14329         a sw breakpoint has been inserted in the code that the JIT needs
14330         to be able to inspect.
14331
14332 2007-10-31  Martin Baulig  <martin@ximian.com>
14333
14334         * debug-debugger.h
14335         (MonoDebuggerInfo): Remove `runtime_class_init'.
14336
14337 2007-10-30  Martin Baulig  <martin@ximian.com>
14338
14339         * debug-mini.h
14340         (mono_debugger_thread_created): Added `MonoThread *' argument.
14341         (mono_debugger_extended_notification): New public method.
14342         (mono_debugger_trampoline_compiled): New public method.
14343
14344         * debug-mini.c
14345         (MonoDebuggerThreadInfo): Added `thread' and
14346         `extended_notifications' fields.
14347
14348         * debug-debugger.c
14349         (debugger_executable_code_buffer): New static variable.
14350
14351         * debug-debugger.h
14352         (MonoDebuggerInfo): Added `executable_code_buffer',
14353         `executable_code_buffer_size', `breakpoint_info_area',
14354         `breakpoint_table' and `breakpoint_table_size'.
14355
14356 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14357
14358         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14359         that IP  either is an unused value or the vtable pointer. IMT 
14360         calls use vtable + offset now. Reduced by almost half the size
14361         of IMT entries.
14362
14363 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14364
14365         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14366         defines to access param registers. Replace long usage with
14367         gsize as sizeof(long) != sizeof(void*) on Win64.
14368
14369         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14370         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14371         instead of non-existant _GetAddressOfReturnAddress.
14372
14373         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14374         param registers. Save/restore %rdi and %rsi in MonoLMF.
14375
14376         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14377         param registers. Modify (throw_exception) signature to take 
14378         %rdi and %rsi on Win64. 
14379
14380         Code is contributed under MIT/X11 license.
14381
14382 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14383
14384         * helpers.c: unlink debugging output files.
14385
14386 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14387
14388         * mini.c: Move mono_create_ftnptr () to object.c.
14389
14390 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14391
14392         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14393         optional. This function can now be used to disassemble code generated
14394         outside the JIT such as trampolines and IMT thunks.
14395
14396         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14397
14398         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14399         vtable pointer from a ldr instruction.
14400
14401         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14402         new IMT call sequence.
14403
14404         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14405         call sequence for interface invocations.
14406
14407         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14408         for imt support. This function is empty since IMT on ARM requires no
14409         special handling on the IR side.
14410
14411         * mini-arm.c (mono_arch_find_imt_method): added, required for
14412         imt support.
14413
14414         * mini-arm.c (mono_arch_find_this_argument): added, required
14415         for imt support.
14416
14417         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14418         a ldr instruction to load a value stored in the code stream.
14419
14420         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14421         for imt support.
14422
14423
14424 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14425
14426         * mini.c (mini_init): Install the jump trampoline callback.
14427
14428 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14429
14430         * mini-trampolines.c: handle synchronized methods with the common
14431         vtable trampoline (bug #335601).
14432
14433 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14434
14435         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14436
14437         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14438         64 bit platforms.
14439
14440         * mini-ia64.h mini-ia64.c: Add support for IMT.
14441
14442         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14443         prolog. Fixes #331958.
14444
14445 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14446
14447         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14448
14449 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14450
14451         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14452         trampoline.
14453
14454 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14455
14456         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14457         trampoline.
14458
14459 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14460
14461         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14462         trampoline.
14463
14464 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14465
14466         * mini-trampolines.c: changed the magic rampoline to understand
14467         the common vtable trampoline method: the method to invoke is
14468         determined by the vtable displacement of the call.
14469
14470 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14471
14472         * mini.c, mini.h: register the common vtable trampoline if the
14473         architecture supports it.
14474
14475 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14476
14477         * cpu-amd64.md: use the correct max length for tls_get.
14478
14479 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14480
14481         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14482         CEE_STELEM_ANY. Fixes #333696.
14483
14484 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14485
14486         * exceptions-x86.c: provide more graceful handling of the case where
14487         we followed a bogus function pointer from managed code (bug #332866).
14488
14489 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14490
14491         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14492         replaces the generic_shared flag and will carry more information
14493         in the future.
14494
14495         * generic-sharing.c: Added mini_type_stack_size() which allows
14496         allows open types if given a generic sharing context.
14497         mini_get_basic_type_from_generic() takes a
14498         MonoGenericSharingContext* instead of a MonoCompile* now.
14499
14500         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14501         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14502         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14503         changes above.  Just passing arguments through to the right
14504         places.
14505
14506 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14507
14508         * mini-arm.c: unify the call emission to emit_code_seq().
14509
14510 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14511
14512         * tramp-arm.c: reduced the trampoline size.
14513
14514 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14515
14516         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14517         variable handling out of arch-specific code.
14518
14519 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14520
14521         * mini-arm.c: implemented fast delegate dispatch.
14522
14523 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14524
14525         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14526         that fp elimination is turned off if the space required by locals is too
14527         big. Fixes #331958.
14528
14529 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14530
14531         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14532         ARM to the new style trampoline.
14533
14534 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14535
14536         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14537
14538         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14539
14540 2007-10-09  Martin Baulig  <martin@ximian.com>
14541
14542         * debug-debugger.h
14543         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14544         `field_info_offset_offset'.     
14545
14546 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14547
14548         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14549         removed more internal usage of the r11 register and made it available
14550         to the register allocator.
14551
14552 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14553
14554         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14555         when sharing generics and treat type variables as references.
14556
14557 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14558
14559         * mini-ppc.c: started removing the internal uses of register r11
14560         to eventually allow the register allocator to manage it as an
14561         additional available register.
14562
14563 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14564
14565         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14566
14567 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14568
14569         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14570         specific trampolines as they are not performance critical as a jump
14571         target (maybe align as before only for AOT code?). This saves about
14572         200 KB of native code on x86 for monodevelop startup.
14573
14574 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14575
14576         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14577         monodevelop startup.
14578
14579 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14580
14581         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14582
14583         * mini-sparc.h mini-sparc.c: Implement IMT support.
14584
14585         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14586         its smaller and doesn't clobber sparc_g1.
14587
14588         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14589
14590 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14591
14592         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14593
14594 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14595
14596         * mini-ppc.c: implemented fast delegate invocation.
14597
14598 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14599
14600         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14601
14602 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14603
14604         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14605         code to the new style trampoline in preparation for IMT support.
14606
14607 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14608
14609         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14610         systems already. This also reduces the specific trampiline sizes and
14611         prepares for the use of r12 as the IMT identifier register.
14612
14613 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14614
14615         * mini-mips.h: endianess fix (simplified from a patch by
14616         Thomas Kunze <thommy@tabao.de>, bug #323737).
14617
14618 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14619
14620         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14621         to access ucontext fields and enable netbsd support
14622         (partially from Magnus Henoch <mange@freemail.hu>).
14623
14624 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14625
14626         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14627         use the preprocessor from the CPP env var if it is set.
14628
14629 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14630
14631         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14632         code, before interface_offset gets used.
14633
14634 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14635
14636         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14637         mono_class_setup_vtable () before accessing klass->vtable.
14638
14639 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14640
14641         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14642         hackish.
14643
14644 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14645
14646         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14647         IMT slots (this saves hundreds of KB of memory in programs like
14648         IronPython and Monodevelop).
14649
14650 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14651
14652         * mini.c: print the delegate counter.
14653
14654 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14655
14656         * mini-x86.c: make it easier to enable the debugging code for IMT
14657         slots.
14658
14659 2007-09-28  Martin Baulig  <martin@ximian.com>
14660
14661         * debug-debugger.h
14662         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14663         `mono_method_klass_offset' and `mono_method_token_offset'.
14664
14665 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14666
14667         * mini.c: First generics sharing implementation.  Can only share
14668         in very simple cases.  If sharing doesn't work it falls back to
14669         dedicated compilation.
14670
14671         * mini.h: Flag in MonoCompile to specify whether generic
14672         compilation is shared.  Flags enum for marking which generic inst
14673         of a context is used.  Prototypes for helper functions.
14674
14675         * generic-sharing.c: Helper functions for generic method sharing.
14676
14677         * optflags-def.h: Optimization flag (gshared) for enabling generic
14678         method sharing added.
14679
14680         * Makefile.am: generic-sharing.c added.
14681
14682 2007-09-19 Daniel Nauck <dna@mono-project.de>
14683
14684         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14685
14686 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14687         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14688         fixes bug 325507.
14689
14690 2007-09-19  Martin Baulig  <martin@ximian.com>
14691
14692         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14693         mono_debug_cleanup() is now part of mono_cleanup().
14694
14695 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14696
14697         * driver.c (mono_main): Fix a warning.
14698
14699 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14700
14701         * aot-compiler.c: Optimize various parts when processing large assemblies.
14702         Fixes ##325568.
14703
14704         * mini.c (mono_patch_info_hash): Improve hash function.
14705
14706 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14707
14708         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14709         
14710         Code is contributed under MIT/X11 license.
14711
14712 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14713
14714         * mini.c (mini_init): Fix a leak.
14715
14716         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14717
14718 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14719
14720         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14721
14722 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14723
14724         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14725
14726 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14727
14728         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14729         variance tests.
14730
14731         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14732
14733         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14734
14735         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14736
14737         * aot-runtime.c (decode_patch_info): Ditto.
14738
14739 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14740
14741         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14742         static case. Cache delegates in architecture specific code, 
14743         based on number of parameters.
14744         
14745         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14746         in architecture specific code, based on number of parameters.
14747         
14748         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14749         caching happen in architecture specific code now.
14750         
14751         Code is contributed under MIT/X11 license.
14752
14753 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14754
14755         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14756         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14757         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14758
14759         Code is contributed under MIT/X11 license.
14760
14761 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14762         * mini.c: (mono_thread_abort) Fixed bug #82416.
14763
14764 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14765
14766         * mini.: hook the new managed GC allocation feature into the JIT.
14767
14768 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14769
14770         * mini.c: implementation for the new runtime tls opcode.
14771
14772 2007-09-11  Martin Baulig  <martin@ximian.com>
14773
14774         * debug-debugger.h
14775         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
14776         `mono_method_inflated_offset'.
14777
14778 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
14779
14780         * driver.c mini.h mini.c: Add a new devel command line option for injecting
14781         async exceptions into a method.
14782
14783         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
14784         purpose of testing whenever the unwinder works at every instruction.
14785
14786 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
14787
14788         * mini.c: check accessibility of method used in ldftn (fixes
14789         bug #82635).
14790
14791 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
14792
14793         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
14794
14795         * inssel.brg: Fix a warning.
14796
14797 2007-09-03  Martin Baulig  <martin@ximian.com>
14798
14799         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
14800         now takes the `main_method' as argument.
14801
14802 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
14803
14804         * cpu-sparc.md (endfilter): Add missing src1:i argument.
14805
14806 2007-08-30  Jonathan Chambers <joncham@gmail.com>
14807
14808         * driver.c: include the cil-coff.h header on Windows.
14809         
14810         Code is contributed under MIT/X11 license.
14811
14812 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14813
14814         * mini.c, driver.c: don't include the cil-coff.h header.
14815
14816 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14817
14818         * mini.c: flag places that needs fixes fo soft-float support.
14819
14820 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
14821
14822         * mini.h, inssel-float.brg: fix soft-float constant loads on big
14823         endian systems (partially from Dean Jenkins, bug #81924).
14824
14825 2007-08-28  Mark Probst  <mark.probst@gmail.com>
14826
14827         * mini.c (check_linkdemand): Remove embedded reference object in
14828         call to LinkDemandSecurityException.
14829         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
14830         with an IntPtr instead of a reference object.
14831
14832 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
14833
14834         * mini.c (handle_initobj): Handle alignment properly.
14835
14836         * inssel.brg (mini_emit_memset): Ditto. 
14837
14838         * inssel.brg (mini_emit_memcpy): Ditto. 
14839
14840         * inssel-sparc.brg: Ditto.              
14841
14842         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
14843
14844 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
14845
14846         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
14847         exceptions raised in unmanaged code. Fixes part of #82594.
14848
14849 2007-08-24  Mark Probst  <mark.probst@gmail.com>
14850
14851         * mini.c (mono_method_to_ir), declsec.c
14852         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
14853
14854 2007-08-22  Martin Baulig  <martin@ximian.com>
14855
14856         * debug-mini.h
14857         (MonoDebuggerThreadInfo): New typedef.
14858         (mono_debugger_thread_table): New global variable.
14859         (mono_debugger_thread_created): New public function.
14860         (mono_debugger_thread_cleanup): New public function.
14861
14862         * debug-debugger.h
14863         (MonoDebuggerInfo):
14864         - removed `get_current_thread' and `lookup_assembly'.
14865         - removed `data_table'.
14866         - added `thread_table'.
14867
14868         * mini.c
14869         (mono_thread_start_cb): Call mono_debugger_thread_created().
14870         (mono_thread_attach_cb): Likewise.
14871         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
14872         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
14873         initial domain.
14874
14875         * driver.c (mono_main): Move mono_debug_init() up, before calling
14876         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
14877
14878 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14879
14880         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
14881         together when passing several arguments of type double (gives a small
14882         speedup and saves a few bytes of generated code).
14883
14884 2007-08-20  Jb Evain  <jbevain@novell.com>
14885
14886         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
14887
14888 2007-08-20  Jb Evain  <jbevain@novell.com>
14889
14890         * mini.c (mono_method_to_ir): throw MethodAccessException
14891         and FieldAccessException instead of InvalidProgramException.
14892
14893 2007-08-20  Mark Probst  <mark.probst@gmail.com>
14894
14895         * mini.c: CoreCLR security checks.
14896
14897         * mini.h: Removed MonoSecurityMode (moved to
14898         metadata/security-manager.h) and mono_security_mode global var
14899         (replaced by set/get functions in security-manager.h).
14900
14901         * driver.c: Added "core-clr-test" security mode for testing.  Used
14902         set-function for setting security mode.
14903
14904 2007-08-17  Mark Probst  <mark.probst@gmail.com>
14905
14906         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
14907         the new jit_info_table.
14908
14909         * driver.c: Test code for the new jit_info_table (enabled by the
14910         define MONO_JIT_INFO_TABLE_TEST).
14911
14912 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
14913
14914         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
14915         detection of call <REG> instruction sequence. Fixes build on freebsd.
14916
14917 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
14918
14919         * mini-exceptions.c: Fix a warning.
14920
14921 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
14922
14923         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
14924         stack overflow handling code on amd64 too.
14925
14926         * mini-exceptions.c (mono_setup_altstack): Make this use 
14927         mono_thread_get_stack_bounds ().
14928
14929         * mini-x86.h: Disable sigaltstack on solaris x86.
14930
14931 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
14932
14933         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
14934
14935 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
14936
14937         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
14938
14939 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
14940
14941         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
14942
14943         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
14944
14945 2007-08-03  Neale Ferguson <neale@sinenomine.net>
14946
14947         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
14948         due to alignment.
14949
14950 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14951
14952         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
14953         to be emitted (bug #82281).
14954
14955 2007-08-01  Martin Baulig  <martin@ximian.com>
14956
14957         Merged the `debugger-dublin' branch.
14958
14959         * debug-debugger.h (MonoDebuggerInfo):
14960         Removed the `old_*' compatibility entries.
14961         Added `debugger_version' and `data_table'.
14962         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
14963         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
14964
14965         * debug-mini.c
14966         (MiniDebugMethodBreakpointInfo): Add `address_list'.
14967         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
14968         instead of a `gconstpointer'.
14969         (mono_debugger_insert_method_breakpoint): Return a
14970         `MonoDebugMethodAddressList *'.
14971
14972 2007-06-28  Martin Baulig  <martin@ximian.com>
14973
14974         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
14975
14976 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
14977
14978         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
14979         __builtin_frame_address () since it is broken on older gcc versions.
14980
14981 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14982
14983         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
14984         on the stack overflow handling and made the managed stack overflows
14985         catchable in most cases using soft guard pages.
14986         * exceptions-x86.c: added code to restore the protection in the soft
14987         guard pages at the end of exception handling.
14988
14989 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
14990
14991         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
14992
14993 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14994
14995         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
14996         exception handling.
14997
14998 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14999
15000         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
15001         signal handling support until it has been ported to the new mechanism.
15002         * mini.c: fixed stack overflow detection and use the new
15003         architecture code  to handle signals on the altstack.
15004
15005 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15006
15007         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15008         stack overflows on the alt stack.
15009
15010 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15011
15012         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15013         stack overflows on the alt stack.
15014
15015 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15016
15017         * exceptions-ppc.c: cleanup preparing for altstack support.
15018
15019 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15020
15021         * exceptions-arm.c: cleanup preparing for altstack support.
15022
15023 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15024
15025         * mini.c (print_jit_stats): Output hazard pointer stats.
15026
15027 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15028
15029         * driver.c, mini.c: Replaced security mode flags with a single
15030         enum variable.
15031
15032 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15033
15034         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15035
15036 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15037
15038         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15039         (which doesn't do anything yet) for activating Core CLR
15040         (Silverlight) security.
15041
15042 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15043
15044         * mini-codegen.c: work around a possible gcc bug on arm.
15045
15046 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15047
15048         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15049         message for platforms that don't support AOT compilation.
15050
15051 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15052
15053         * mini.h, mini.c, driver.c: temporary smcs hack.
15054
15055 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15056
15057         * mini-arm.h, mini-arm.c: arm EABI fixes.
15058
15059 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15060
15061         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15062         case.
15063
15064         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15065         trampolines taking a method argument.
15066
15067         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15068
15069         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15070         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15071
15072         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15073         JIT compilation throws an exception. Fixes #82050.
15074
15075 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15076
15077         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15078         with the MONO_EXCEPTION_ defines.
15079
15080 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15081
15082         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15083         #82117.
15084         
15085         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15086         the cause of an assertion.
15087
15088 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15089
15090         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15091         removed.
15092
15093 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15094
15095         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15096         assert. Should fix #82103.
15097
15098 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15099
15100         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15101         here too. Fixes #82095.
15102
15103         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15104         addresses.
15105
15106         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15107
15108         * mini-amd64.h: Enable IMT for amd64.
15109         
15110         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15111
15112 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15113
15114         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15115
15116 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15117
15118         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15119         as soon as check_linkdemand sets an exception_type.
15120
15121 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15122
15123         * mini-x86.c: fixed offsets for IMT call sequence.
15124         * mini-x86.h: enable IMT again.
15125
15126 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15127
15128         * trace.c (mono_trace_enter_method): Decode MonoType too.
15129
15130         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15131
15132         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15133
15134         * mini-amd64.c: Add preliminary IMT implementation.
15135         
15136 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15137
15138         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15139         understand the new IMT-base interface invocation (thanks to
15140         Daniel Nauck for the report and the remote debugging session).
15141
15142 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15143
15144         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15145
15146 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15147
15148         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15149
15150 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15151
15152         * mini-trampolines.c: implement AOT IMT support.
15153         * mini-x86.h: enable IMT support for wider testing.
15154
15155 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15156
15157         * inssel.brg (emit_imt_argument): Add aot support here.
15158
15159         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15160
15161 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15162
15163         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15164         of the IMT implementation, partially from massi, with my
15165         implementation of the bsearch sequence. Disabled by default until
15166         the AOT code is implemented.
15167
15168 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15169
15170         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15171
15172         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15173
15174 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15175
15176         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15177         arch-independent IMT JIT code from Massimiliano
15178         Mantione (massi@ximian.com) with small cleanups from me.
15179
15180 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15181
15182         * Makefile.am: fix svn invocation to get the svn revision to be
15183         independent of the local language (build fix).
15184
15185 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15186
15187         * mini.c (inline_method): Reset cfg->exception_type if the
15188         inlining is aborted.  Fixes: 82049.
15189
15190 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15191
15192         * mini.c: remove assert from exception handling code when exception_ptr
15193         is not set.
15194
15195 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15196
15197         * mini.c (mono_codegen): Add an assert.
15198
15199         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15200         enter and leave code.
15201         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15202
15203 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15204
15205         * mini-ppc.c: fixed memory corruption for localloc(0)
15206         (bug #81852).
15207
15208 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15209         
15210         * mini.c: Fix warnings.
15211
15212 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15213
15214         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15215         to emit better double->int conversions.
15216
15217 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15218
15219         * mini.c: the provided Min/Max optimizations are valid for unisgned
15220         ints.
15221
15222 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15223
15224         * 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
15225
15226 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15227
15228         * mini.c (mono_running_on_valgrind): Add support for reporting the
15229         method and  its boundaries to valgrind.
15230
15231 2007-06-28  Martin Baulig  <martin@ximian.com>
15232
15233         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15234
15235 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15236
15237         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15238
15239         * generic.2.cs: Add new test case.
15240
15241 2007-06-25  Martin Baulig  <martin@ximian.com>
15242
15243         Merged the `debugger-dublin' branch.
15244
15245         * debug-mini.c
15246         (mono_debugger_insert_method_breakpoint): New public method.
15247         (mono_debugger_remove_method_breakpoint): Likewise.
15248         (mono_debugger_check_breakpoints): New static method.
15249         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15250
15251         * debug-debugger.h (MonoDebuggerInfo):
15252         Renamed (to keep backward compatibility in the vtable):
15253         `insert_breakpoint' -> `old_insert_breakpoint'.
15254         `remove_breakpoint' -> `old_remove_breakpoint'.
15255         `create_string' -> `old_create_string'.
15256         `lookup_class' -> `old_lookup_class'.
15257         `lookup_type' -> removed; changed into a dummy field.
15258         `lookup_assembly' -> `old_lookup_assembly'.
15259         Added (same functionality, but different signature):
15260         `create_string', `lookup_class', `lookup_assembly'
15261         Added new:
15262         `get_method_addr_or_bpt', `remove_method_breakpoint',
15263         `runtime_class_init'.
15264
15265         * debug-debugger.c: Merged the `debugger-dublin' branch.
15266
15267 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15268
15269         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15270         well.
15271         (peephole_pass): Likewise.
15272
15273 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15274
15275         * driver.c: hopefully make setaffinity work also for ancient
15276         versions of linux.
15277
15278 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15279
15280         * driver.c : win32 build fix.
15281
15282 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15283
15284         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15285         processor if it is set.
15286
15287 2007-06-21  Martin Baulig  <martin@ximian.com>
15288
15289         * debug-mini.h: New file.
15290
15291         * debug-mini.c
15292         (mono_debugger_insert_breakpoint_full): Moved here from
15293         ../metadata/mono-debug-debugger.c.
15294         (mono_debugger_remove_breakpoint): Likewise.
15295         (mono_debugger_breakpoint_callback): Likewise.
15296
15297 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15298
15299         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15300         changes in MonoGenericClass.
15301
15302 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15303
15304         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15305
15306 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15307
15308         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15309         removal of MonoGenericMethod.
15310
15311 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15312
15313         * mini-exceptions.c: hooks for the exception events profiling API.
15314
15315 2007-06-14  Randolph Chung  <tausq@debian.org>
15316
15317         * Makefile.ma: Add hppa target.
15318         * mini-arch.h: Include mini-hppa.h
15319         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15320         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15321         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15322
15323 2007-06-14  Randolph Chung  <tausq@debian.org>
15324
15325         * inssel.brg: Add rules for "chained" compare-branch operations so that
15326         a single compare op can affect multiple branches.  Adjust cost for
15327         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15328         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15329         cost for some rules so that they can more easily be overridden by
15330         per-arch rules (with fixes from lupus).
15331         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15332
15333 2007-06-13  Randolph Chung  <tausq@debian.org>
15334
15335         * mini-ops.h: Reorder branch ops so that they match the order of the
15336         corresponding CEE_* ops.  The code expects them this way.
15337         Add new ops for HPPA target.
15338         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15339
15340 2007-06-13  Randolph Chung  <tausq@debian.org>
15341
15342         * mini-exceptions.c: Handle cases where the stack grows towards
15343         larger addresses.
15344         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15345
15346 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15347
15348         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15349         counter.
15350         * driver.c: explain where a non-matching corlib is found.
15351
15352 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15353
15354         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15355
15356 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15357
15358         * mini-exceptions.c: Generate a method profile leave event during
15359         an exception to ensure that the profiler gets notified.
15360
15361 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15362
15363         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15364         branch.
15365
15366         * cpu-amd64.md: Add long_and/or/xor opcodes.
15367
15368 2007-06-06  Wade Berrier  <wberrier@novell.com>
15369
15370         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15371         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15372         length of instruction shr_imm (expected 8, got 10)
15373
15374 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15375
15376         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15377
15378 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15379
15380         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15381         MonoInternalHashTable again (fixed bug in the internal hash table
15382         code).
15383
15384 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15385
15386         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15387         Have to figure out what makes it crash the SWF regression.
15388
15389 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15390
15391         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15392
15393 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15394
15395         * mini.c: optimize out the type check when storing null in a
15396         reference array.
15397
15398 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15399
15400         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15401         MonoInternalHashTable.
15402
15403 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15404
15405         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15406         signed integer methods.
15407
15408 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15409
15410         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15411         permanently since the current approach doesn't work.
15412
15413 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15414
15415         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15416         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15417
15418 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15419
15420         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15421         the sreg2==rdx case.
15422         
15423         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15424         account if it contains a rex prefix.
15425         (peephole_pass): Handle OP_FMOVE as well.
15426
15427 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15428
15429         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15430         as it causes regressions.
15431
15432 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15433
15434         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15435         static case as well.
15436
15437         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15438
15439         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15440         (mono_arch_get_this_arg_from_call): Ditto.
15441
15442         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15443
15444         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15445         invoke_impl field.
15446
15447         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15448         (mono_arch_get_this_arg_from_call): Ditto.
15449
15450         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15451         
15452         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15453         try to create optimized invoke code and use that for further invocations. 
15454         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15455
15456         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15457
15458 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15459
15460         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15461         sealed classes or methods.
15462         *devirtualization.cs: tests for the new optimization
15463
15464 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15465
15466         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15467         by the update_volatile () function.
15468
15469 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15470
15471         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15472         require it.
15473
15474         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15475
15476 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15477
15478         * mini.c: Add configure checks for header files.
15479         * mini-x86.c: Add configure checks for header files.
15480         * trace.c: Add configure checks for header files.
15481         * aot-runtime.c: Add configure checks for header files.
15482         * aot-compiler.c: Add configure checks for header files.
15483         * driver.c: Add configure checks for header files.
15484         * mini-codegen.c: Add configure checks for header files.
15485         
15486         Code is contributed under MIT/X11 license.
15487
15488 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15489
15490         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15491         icompare_imm -128 + op_iclt. Fixes #81703.
15492
15493 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15494
15495         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15496
15497 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15498
15499         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15500         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15501         so that all isinst checks now use "interface_bitmap".
15502
15503 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15504
15505         * cpu-amd64.md (jmp): Fix a warning.
15506
15507         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15508
15509         * basic.cs: Add new regression test.
15510
15511         * basic.cs: Remove test which is now in basic-long.cs.
15512
15513         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15514
15515         * basic-long.cs: Add new test.
15516         
15517 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15518
15519         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15520
15521 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15522
15523         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15524
15525         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15526         places.
15527         
15528         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15529         throwing code a bit.
15530
15531         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15532         the exception throwing code a bit.
15533
15534         * mini-x86.c (get_call_info): Allocate result from a mempool.
15535
15536 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15537
15538         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15539
15540         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15541
15542         * mini.h (MonoCompile): Add 'token_info_hash' field.
15543
15544         * mini.c: Save token->method associations during compilation so the AOT 
15545         compiler can use it.
15546         
15547         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15548         which reference generic classes and methods.
15549
15550 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15551
15552         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15553
15554         * aot-compiler.c (compile_method): Fix a typo in a comment.
15555
15556         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15557
15558         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15559         everything generic.
15560
15561         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15562
15563 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15564
15565         * mini.h (MonoCompile): Add 'args' field.
15566
15567         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15568         into cfg->args.
15569
15570         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15571
15572 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15573
15574         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15575
15576         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15577
15578         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15579         opcodes for some opcodes.
15580
15581         * mini.h *.brg *.c: Use the new opcodes.
15582
15583 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15584
15585         * mini.h: Bumped aot revision.
15586
15587         * inssel.brg: modified code generation of type checks for interfaces
15588         to use the new "MonoClass.interface_bitmap" instead of the old
15589         "MonoClass.interface_offsets".
15590
15591 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15592
15593         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15594
15595 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15596
15597         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15598         64 bit platforms.
15599
15600 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15601
15602         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15603
15604 2007-04-27  Wade Berrier  <wberrier@novell.com>
15605
15606         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15607         mini.h) to fix build.
15608
15609 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15610
15611         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15612         
15613         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15614         causes the corlib unit tests to fail.
15615
15616 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15617
15618         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15619
15620         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15621
15622         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15623         opcodes to the comparison relations.
15624
15625         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15626         opcodes to their types.
15627         
15628         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15629
15630         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15631         it in cfg->arch.cinfo.
15632
15633         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15634
15635         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15636         cfg->cil_offset_to_bb.
15637
15638 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15639
15640         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15641         created becase of initlocals.
15642
15643 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15644
15645         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15646         Sergey Tikhonov <tsv@solvo.ru>.
15647
15648 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15649
15650         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15651
15652 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15653
15654         * cpu-s390.md (break): Correct the length of break instruction.
15655
15656 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15657
15658         * mini.c: fix a couple of soft-float issues and comments.
15659
15660 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15661
15662         * trace.c (is_filenamechar): - is also a filename char.
15663
15664 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15665
15666         * mini-s390.c: Correct checking for enum type in return value processing.
15667
15668 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15669
15670         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15671         (version.h): Makefile is in the build directory.
15672
15673 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15674
15675         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15676
15677 2007-04-11  Martin Baulig  <martin@ximian.com>
15678
15679         * mini.c (can_access_member): Fix handling of generic classes;
15680         fixes #81259.
15681
15682 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15683
15684         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15685
15686 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15687
15688         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15689
15690 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15691
15692         * mini-codegen.c: make sure the right spill amount is
15693         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15694
15695 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15696
15697         * mini-ppc.c: fixes for the fp_branch_nan test.
15698
15699 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15700
15701         * basic.cs: Comment out new test which still fails on ia64.
15702
15703 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15704
15705         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15706
15707 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15708
15709         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15710
15711 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15712
15713         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15714         on 64 bit machines. Fixes part of #80738.
15715
15716         * basic.cs: Add regression test.
15717
15718 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15719
15720         * inssel.brg basic.cs: Revert previous change to fix build.
15721
15722         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15723         platforms.
15724         
15725         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15726
15727         * basic.cs: Add new regression test.
15728
15729 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15730
15731         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15732         many arguments.
15733
15734 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15735
15736         * cpu-s390x.md: Correct length of break instruction.
15737
15738 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15739
15740         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15741         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15742
15743 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15744
15745         * *.c: Begin WIN64 port.
15746         * mini.c:  Use correct register in profiler.
15747         * mini-amd64.c: No inline assembly on Win64.
15748         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15749         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15750         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15751         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15752         mono_arch_ip_from_context for Win64.
15753         
15754         Contributed under MIT/X11 license.
15755
15756 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15757
15758         * exceptions-amd64.c (seh_handler): Ditto.
15759
15760         * exceptions-x86.c (seh_handler): Fix a memory leak.
15761
15762 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
15763
15764         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
15765         mini-s390x.c: fixed peephole optimizations to deal
15766         correctly with 1 and 2 byte reload avoidance.
15767
15768 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15769
15770         * cpu-s390.md, cpu-s390x.md: update localloc length.
15771
15772 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15773
15774         * cpu-g4.md: added missing descriptions.
15775
15776 2007-03-14  Miguel de Icaza  <miguel@novell.com>
15777
15778         *  Makefile.am: Add support so the tail tests are not executed on
15779         PowerPC as that is a known limitation of the PowerPC port.
15780
15781 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15782
15783         * runmdesc.bat:  Move to msvc directory.
15784         
15785 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15786
15787         * runmdesc.bat:  Run executable that was produced by the current
15788         target and sent via an argument.
15789         
15790 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
15791
15792         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
15793         #81102.
15794
15795         * generics.2.cs: Add regression test.
15796
15797 2007-03-09  Wade berrier  <wberrier@novell.com>
15798
15799         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
15800
15801 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
15802
15803         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
15804         AOT code depends on this.
15805
15806 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15807
15808         * mini.c: more precise tracking of types in the eval stack
15809         (part of fix for bug #81044).
15810
15811 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
15812
15813         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
15814
15815         * aot-compiler.c (encode_patch): Remove an obsolete comment.
15816
15817 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
15818
15819         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
15820
15821         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
15822
15823 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
15824
15825         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
15826         a pointer on 64 bit systems. Fixes #80190.
15827
15828         * iltests.il: Add new regression test.
15829
15830 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15831
15832         * mini.c: inline a constant for Environment.IsRunningOnWindows.
15833
15834 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
15835
15836         * trace.c: Remove an erroneous alignemnt check when tracing.
15837           Fixes --trace on OSX86.
15838
15839 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15840
15841         * mini-$(arch).h: initialize SP in context for all the archs.
15842
15843 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
15844
15845         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
15846         regressions in the thread tests.
15847
15848 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
15849
15850         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
15851         - fixed implementation of LOCALLOC opcode
15852         - implemented non-un compare for floats
15853         - code cleanup
15854         - implementation of FDIV and CKFINITE opcodes
15855         - fixes for latest mono updates
15856         - additional arch opcodes
15857
15858 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15859
15860         * Makefile.am: simplify and merge rules for cross-compilation.
15861
15862 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
15863
15864         * local-propagation.c: Actually *apply* the fix for bug 80591...
15865
15866 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15867
15868         * mini-exceptions.c: backuot part of the last change
15869         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
15870
15871 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
15872         * inssel.brg: Fix bug 59286.
15873
15874
15875 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
15876
15877         * mini-exceptions.c: patch from Zoltan to correctly check for
15878         stack boundaries (using the stack register, not the frame register),
15879         fixes bugs #80724, #79717.
15880
15881 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
15882
15883         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
15884         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
15885
15886         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
15887         presence of frame pointer elimination.
15888
15889 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
15890         
15891         * mini-x86.h: NetBSD UCONTEX_REG defines.
15892
15893 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
15894
15895         * inssel-amd64.brg: Fix amd64 build.
15896
15897 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
15898
15899         * mini.h: remove extern to workaround what looks likes gcc bug 26905
15900         on amd64.
15901
15902 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
15903
15904         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
15905         ends.
15906
15907         * mini-<ARCH>.c: Use mono_is_regsize_var ().
15908
15909 2007-01-30 Mark Mason <mason@broadcom.com>
15910
15911            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
15912            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
15913            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
15914            beginning support for CEE_JMP [not quite working yet]
15915            * tramp-mips.c: LMF handling now works
15916         
15917 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
15918
15919         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
15920
15921         * mini.h (NULLIFY_INS): New macro.
15922
15923 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15924
15925         * mini.c: statistical profiler fix for windows, patch
15926         from Tor Lillqvist (tml@novell.com).
15927
15928 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
15929         * local-propagation.c: Fix bug 80591.
15930
15931 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
15932
15933         * Makefile.am: put back the --export-dynamic option as with
15934         the previous gmodule flags (thanks to Robert Jordan).
15935
15936 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
15937
15938         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
15939
15940         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
15941         simplify and speed up the local register allocator. Also rename some fields
15942         like iassign->vassign.
15943         
15944         * regalloc.c: Remove some functions which are no longer used since their
15945         inlined version is in mini-codegen.c.
15946         
15947         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
15948
15949         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
15950
15951 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
15952
15953         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
15954         narrowing. Fixes #80622.
15955
15956         * iltests.il: Add new regresssion test. 
15957
15958 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15959
15960         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
15961         debug-debugger.c, debug-debugger.h: warning fixes.
15962         * driver.c: updated copyright year and made it fit in one line.
15963
15964 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
15965
15966         * aot-runtime.c: updated to use mono-dl instead of gmodule.
15967
15968 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
15969
15970         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
15971
15972         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
15973
15974         * iltests.il: Add new test for bug #80507.
15975
15976 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15977
15978         * mini-arm.h: use soft-float also on vfp for now.
15979
15980 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15981
15982         * mini.c: fix some more soft-float issues.
15983
15984 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
15985
15986         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
15987
15988 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
15989         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
15990         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
15991         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
15992
15993 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
15994
15995         * mini-arm.c: typo fix.
15996
15997 2007-01-23  Neale Ferguson <neale@sinenomine.net>
15998
15999         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
16000
16001 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
16002
16003         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
16004         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
16005
16006         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
16007
16008         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16009
16010         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16011         
16012         * inssel.brg: Fix a warning.
16013
16014         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16015
16016         * abcremoval.c ssa.c ssapre.c: Update after this change.
16017         
16018         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16019
16020         * dominators.c (df_set): Use mono_bitset_union_fast.    
16021
16022 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16023
16024         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16025         mini-codegen.c: reduce relocations and memory usage for the cpu
16026         description.
16027
16028 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16029
16030         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16031
16032         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16033         to reduce their size.
16034
16035 2007-01-19 Mark Mason <mason@broadcom.com>
16036
16037         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16038         * mini-mips.c: more configuration macros, support long conditional branches, additional
16039         asserts, fix epilog instrumentation.
16040         * mini-mips.h: use standard stack walk
16041         * cpu-mips.md: increase size of div, rem and conditional branches
16042         
16043 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16044
16045         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16046         to cpu spec data.
16047
16048 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16049
16050         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16051         (compile_method): Ditto.
16052
16053         * aot-runtime.c (decode_klass_info): Ditto.
16054
16055         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16056         needed by the code generated by inssel.brg. Also fix a warning.
16057
16058 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16059
16060         * mini.c: deal with enums that become genericinsts by
16061         being nested in a generic class (bug #79956).
16062
16063 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16064
16065         * mini.c: match the generic definition to check for
16066         private access with generic types (bug #78431).
16067
16068 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16069
16070         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16071         to make life easier for people cross-compiling that insist on not
16072         using scratchbox.
16073
16074 2007-01-17 Mark Mason <mason@broadcom.com>
16075
16076         * inssel-long.brg: patch to deal with mips missing flags
16077         * inssel-long32-mips.brg: implement overflow checks
16078         * insset-mips.brg: implement overflow checks
16079         * mini-mips.h: implement conditional exception handling
16080         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16081           Remove unused code, minor cleanups.
16082         * exceptions-mips.c: minor cleanups
16083         * mini-ops.h: add mips conditional exception ops
16084         * cpu-mips.md: add mips conditional exception ops
16085
16086         
16087 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16088
16089         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16090         to deal with mips missing of flags.
16091
16092 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16093
16094         * exceptions-ppc.c: execute fault handlers.
16095
16096 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16097
16098         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16099
16100 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16101
16102         * mini.c: handle also floating point values in initialize_array.
16103
16104 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16105
16106         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16107         array initialization and make it conditional on the intrins option.
16108
16109 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16110
16111         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16112         relocations and put the patch info names close to the enum definition.
16113
16114 2007-01-15 Mark Mason <mason@broadcom.com>
16115
16116         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16117
16118 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16119
16120         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16121
16122 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16123
16124         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16125
16126 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16127
16128         * Makefile.am: distribute the mips sources.
16129
16130 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16131
16132         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16133         directly.
16134
16135 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16136
16137         * cpu-x86.md: back out for now as this triggers other regressions.
16138
16139 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16140
16141         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16142         to eax:edx, so ecx can't get allocated to them (bug #80489).
16143
16144 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16145
16146         * mini.c, mini-exceptions.c: enabled running fault handlers
16147         (bug #80469).
16148
16149 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16150
16151         * driver.c: If nothing fail, do not use the string "failed",
16152         because it makes it very annoying to view test result logs on the
16153         web. 
16154
16155 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16156
16157         * debug-debugger.c (mono_debugger_main): Rename "main" to
16158         "main_method" to prevent a warning.
16159
16160         Remove a warning for unused field.
16161
16162 2006-12-28  Martin Baulig  <martin@ximian.com>
16163
16164         * debug-debugger.c
16165         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16166
16167 2006-12-22  Martin Baulig  <martin@ximian.com>
16168
16169         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16170         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16171         seperate `.mdb_debug_info' section, so we can access it from the
16172         debugger even if the binary is stripped.
16173
16174         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16175         from the `.mdb_debug_info' here to prevent the linker from
16176         removing that section.
16177
16178         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16179         mdb-debug-info64.s.
16180
16181 2006-12-19  Robert Jordan  <robertj@gmx.net>
16182
16183         * mini-x86: enable the code to return small structures in
16184         registers for FreeBSD as well. Fixes bug #80278.
16185         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16186
16187 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16188
16189         * mini-x86.c: align the stack when calling the profiler
16190         function instrumenting the prolog (on OSX).
16191
16192 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16193
16194         * mini.c: emit a break opcode where Debugger.Break () is called.
16195
16196 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16197
16198         * mini.c (mono_method_to_ir): Provide useful information on this
16199         assert, to prevent others from debugging like I did.
16200
16201 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16202
16203         * mini.c: enable code which was incorrectly commented
16204         (bug #80235).
16205
16206 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16207
16208         * mini-x86.c: enable on OSX, too, the code to return small
16209         structures in registers.
16210
16211 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16212
16213         * mini-x86.c: remove the use of the dynamic code manager here, too.
16214
16215 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16216
16217         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16218         mono_debugger_create_notification_function() to use
16219         mono_global_codeman_reserve () instead of a dynamic code manager.
16220
16221 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16222
16223         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16224         ves_array_element_address() jit icall and use a generated
16225         managed method instead (which is about 4 times faster for a rank 3
16226         array access).
16227
16228 2006-11-29  Mark Mason  <mason@broadcom.com>
16229
16230         * basic-calls.cs: additional tests for passing
16231         structures as function arguments.
16232
16233 2006-11-29  Mark Mason  <mason@broadcom.com>
16234
16235         * mini-mips.h: disable custom exception handling
16236         * mini-mips.c: throw/rethrow should use jalr to call
16237         exception stubs.  Fixed bug with passing structures
16238         by value. More support for tracing floating point
16239         functions.
16240
16241 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16242
16243         * mini.c: fixed typo in the soft-float ldind.r4 handling
16244         (bug #80086).
16245
16246 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16247
16248         * mini.c, mini.h, driver.c: added --runtime command line
16249         option to select a different runtime than the autodetected one.
16250         * jit.h: added API for embedders to initialize with a specific
16251         runtime version.
16252
16253 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16254
16255         * mini.c: handle also boxing of r4 values (bug #80024).
16256
16257 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16258
16259         * mini-ppc.c: force indirect calls until we reserve
16260         enough address space for all the generated code.
16261
16262 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16263
16264         * exceptions-arm.c: workaround bugs in the libc definition
16265         of struct ucontext.
16266
16267 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16268
16269         * inssel.brg: fixes from me and Mark Mason.
16270
16271 2006-11-23  Dick Porter  <dick@ximian.com>
16272
16273         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16274         semaphore display now we've fixed the initial value
16275
16276 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16277
16278         * inssel.brg: partially revert the last change to fix the build.
16279
16280 2006-11-21  Mark Mason  <mason@broadcom.com>
16281
16282         * inssel.brg: Add and use compare-and-branch macros to support
16283         architectures that do not have condition code registers (ie. MIPS).
16284         * *-mips.{c,brg,md}: Fix copyright statements
16285
16286 2006-11-20  Mark Mason  <mason@broadcom.com>
16287
16288         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16289         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16290         * mini.h: Added declaration for mono_print_ins()
16291         * mini-codegen.c: added ins_spec initializer for MIPS
16292         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16293         vreg to be virtual and hreg to be non-virtual.
16294         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16295         is not yet working/implemented correctly.
16296         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16297         non-static, fixup calls to print_ins() from other parts in the file.
16298
16299 2006-11-20  Mark Mason  <mason@broadcom.com>
16300
16301         * basic-calls.cs: added tests for passing structures as arguments
16302         to calls.
16303
16304 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16305
16306         * inssel-long32.brg: optimize signed division by power of two.
16307
16308 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16309
16310         * mini-arm.c: added support for interworking with thumb code
16311         (mono must be still be built using the ARM instruction encoding).
16312
16313 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16314
16315         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16316         verifier has different rules for it.   Fixes a few verifier issues
16317         in the test suite.
16318
16319         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16320         at the end, so people know what happened.
16321
16322 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16323
16324         * brach-opts.c: in optimize_exception_target() make sure we
16325         are in a catch clause (fixes bug #79871).
16326
16327 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16328
16329         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16330         more soft-float support fixes.
16331
16332 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16333
16334         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16335         that are passed half on the stack and half in registers.
16336
16337 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16338
16339         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16340         more mips integration work from Mark E Mason 
16341         <mark.e.mason@broadcom.com>.
16342
16343 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16344
16345         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16346         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16347         tramp-mips.c: added sources for the mips port, not
16348         integrated in the build yet. Contributed by
16349         Mark E Mason <mark.e.mason@broadcom.com>.
16350
16351 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16352
16353         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16354
16355 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16356
16357         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16358         put the soft-float rules in its own file since it seems to
16359         break s390 compilation.
16360
16361 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16362
16363         * mini-arm.c: fixed wrnings.
16364
16365 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16366
16367         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16368         inssel-arm.brg: ARM support for soft-float.
16369
16370 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16371
16372         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16373         loads and stores of 32 bit fp values.
16374
16375 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16376
16377         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16378
16379         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16380         works. Fixes #79852 and #79463.
16381
16382 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16383
16384         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16385         more soft-float support WIP and fixes.
16386
16387 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16388
16389         * mini-arm.c: some VFP updates.
16390
16391 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16392
16393         * mini-exceptions.c: 0 is a valid local var offset in some
16394         architectures, don't assert (bug #78508).
16395
16396 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16397
16398         * exceptions-arm.c: fixed off by one error in stack walk code.
16399
16400 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16401
16402         * mini.h, mini.c: more precise tracking of type load exceptions.
16403
16404 2006-11-03  Robert Jordan  <robertj@gmx.net>
16405
16406         * Makefile.am: [WIN32] Add monow.exe target.
16407         * driver.c: [WIN32] Don't detach the console when debugging.
16408         Fixes bug #79797.
16409         
16410 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16411
16412         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16413
16414 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16415
16416         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16417
16418         * driver.c (mini_regression): Fix --regression with AOT.
16419
16420         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16421
16422 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16423
16424         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16425
16426         * mini-sparc.h: Don't use sigaction on sparc/linux.
16427
16428         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16429
16430         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16431
16432         * mini-exceptions.c: Add proper include files for getpid ().
16433
16434 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16435
16436         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16437         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16438         method.
16439
16440         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16441         name cache to reduce its size.
16442
16443         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16444
16445 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16446
16447         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16448         the mono_lmf TLS variable.
16449
16450         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16451         trampoline lmf frames.  
16452
16453         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16454
16455 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16456
16457         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16458         the mono_lmf TLS variable.
16459
16460         * mini-exceptions.c: Access the LMF structure through accessors.
16461
16462         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16463         variable instead of in jit_tls->lmf.
16464
16465         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16466         
16467         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16468         trampoline lmf frames.
16469
16470         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16471
16472 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16473
16474        * mini.c trace.c mini-x86.c: Revert these too.
16475         
16476        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16477        signature change.
16478
16479 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16480
16481         * genmdesc.c: removed now dead code.
16482
16483 2006-10-09  Robert Jordan <robertj@gmx.net>
16484
16485         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16486
16487 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16488
16489         * mini.h: do not leave gaps in the opcode values.
16490
16491 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16492
16493         * jit-icalls.h: flag functions as internal here, too.
16494
16495 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16496
16497         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16498         functions with the internal attribute.
16499
16500 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16501
16502         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16503
16504 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16505
16506         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16507         for soft-float.
16508
16509 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16510
16511         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16512         tail calls as on other platforms.
16513
16514         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16515
16516         * iltests.il: Add a few tailcall tests.
16517
16518 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16519
16520         * driver.c: fix loop for old compilers (bug #79521).
16521
16522 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16523
16524         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16525
16526         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16527
16528         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16529         metadata without any code.
16530
16531         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16532         more precise debugging information using gdb.
16533
16534 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16535
16536         * inssel-ia64.brg: Make the helper methods static.
16537
16538 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16539
16540         * inssel-x86.brg: make the helper methods static.
16541
16542 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16543
16544         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16545
16546 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16547
16548         * mini.c: updates for monoburg changes.
16549         * inssel.brg: make a few helper functions static as they should.
16550
16551 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16552
16553         * Makefile.am: Move mini-codegen.c to common_sources.
16554
16555 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16556
16557         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16558         instructions.
16559         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16560         mini-ppc.h: port to use the common local register allocator.
16561
16562 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16563
16564         * mini.h: Remove the comment too then.
16565
16566 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16567
16568         * mini.h: put back backend.data which is to be used shortly and
16569         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16570         pointers on 4 byte boundaries it'd have much bigger issues running
16571         and you can ifdef it out anyway.
16572
16573 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16574
16575         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16576         MonoInst size by 4 bytes on 64 bit machines.
16577
16578 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16579
16580         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16581         replacement with more meaningful field names. Arch maintainers, please
16582         check the assigned names are good enough for your arch.
16583
16584 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16585
16586         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16587         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16588
16589 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16590
16591         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16592         relocations and memory requirements, put the optimization flags
16593         definitions in their own file.
16594
16595 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16596
16597         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16598
16599         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16600
16601 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16602
16603         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16604
16605 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16606
16607         * inssel.brg: use the correct function to get the size of an item
16608         in an array, given an element class.
16609         * aot-compiler.c: do not access class->class_size directly.
16610
16611 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16612
16613         * mini.h, debug-mini.c: added a debugging function to print
16614         info about local variables and arguments in a jitted method.
16615
16616 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16617
16618         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16619
16620         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16621
16622 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16623
16624         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16625         inner and outer loops when passing vtypes.
16626
16627 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16628
16629         * mini-ppc.c: take into account the cpu errata for cache flushing
16630         which caused some random errors (bug #79381).
16631
16632 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16633
16634         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16635         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16636
16637 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16638
16639         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16640         loaded.
16641
16642         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16643         freebsd ports tree.
16644
16645         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16646         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16647
16648         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16649         displacement.
16650
16651 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16652
16653         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16654
16655 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16656
16657         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16658         macro does not have to be changed during debugging.
16659
16660         * 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>.
16661
16662         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16663
16664         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16665         
16666         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16667         MONO_ARCH_NO_EMULATE_MUL is defined.
16668
16669         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16670
16671         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16672
16673         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16674
16675         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16676         
16677 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16678
16679         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16680         stuff to mini-exceptions.c where it is used.
16681
16682         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16683         setup code, the real one is in mini-exceptions.c.
16684
16685         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16686         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16687         some changes from the freebsd ports tree.
16688
16689         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16690         constants.
16691         
16692         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16693
16694 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16695
16696         * mini.c: on Linux, check for /proc to be mounted
16697         (bug# 79351, novell bug#201204).
16698
16699 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16700
16701         * mini.c: handle cases where pthread_attr_getstack() behaves
16702         incorrectly (bug #78096).
16703
16704 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16705
16706         * mini-arm.c: support larger stack frames (bug #79272).
16707
16708 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16709
16710         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16711
16712         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16713         tokens.
16714
16715         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16716         mono_class_from_name () to find a class from its name.
16717
16718         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16719
16720 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16721
16722         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16723
16724 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16725
16726         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16727
16728 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16729
16730         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16731         callinfo->trampoline.
16732
16733         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16734         fixes #79271.
16735         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16736         future.
16737
16738 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16739
16740         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16741
16742 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16743
16744         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16745         stats.method_trampolines, it is already done by the generic trampoline code.
16746
16747         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16748         
16749 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16750
16751         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16752
16753         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16754
16755         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16756
16757         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16758         
16759         * mini.c (print_jit_stats): Print new stats.
16760
16761         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16762
16763 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16764
16765         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
16766         Address on two dimensional arrays. Fixes #78729.
16767
16768         * mini.h (MonoCompile): Add a 'skip_visibility' field.
16769
16770         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
16771         a method.
16772
16773         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
16774
16775         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
16776         #79130.
16777         
16778         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
16779         a race condition.
16780         (mini_get_ldelema_ins): Ditto.
16781
16782 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
16783
16784         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
16785         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
16786         Fixes #79213.
16787
16788 2006-08-29 Neale Ferguson <neale@sinenomine.net>
16789
16790         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
16791         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
16792
16793         * exceptions-s390x.c: Cosmetic change.
16794
16795         * tramp-s390.c: Fix warning.
16796
16797         * cpu-s390.md: Correct length of mul_imm.
16798
16799 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
16800
16801         * aot-compiler.c: added binary writer with ELF backend
16802         implementation (only on Linux/x86 for now).
16803
16804 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16805
16806         * Makefile.am: Don't run net 2.0 AOT tests.
16807
16808         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
16809         (mono_compile_assembly): Skip net 2.0 assemblies as well.
16810
16811         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
16812
16813 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16814
16815         * aot-compiler.c: simplified and refactored the asm-writing code
16816         to allow different backends.
16817
16818 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16819
16820         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
16821
16822         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
16823         little. Share patches of type TYPE_FROM_HANDLE as well.
16824
16825         * mini.c (mono_patch_info_equal): New helper function.
16826         (mono_patch_info_hash): Ditto.
16827
16828         * aot-compiler.c (emit_method_code): Fix s390 build.
16829
16830         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
16831         is not handled because it is stored as a flag and not as a type ctor. Fixes
16832         #79016.
16833
16834 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
16835
16836         * aot-compiler.c: Fix computation of GOT slot statistics.
16837         
16838         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
16839         Also remove support for not PIC AOT.
16840
16841         * mini.h: Bump AOT file format version.
16842
16843         * objects.cs: Add a test for #78990.
16844
16845         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
16846         (peter.dettman@iinet.net.au). Fixes #79087.
16847
16848         * basic-long.cs: Add a test for the above.
16849
16850 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
16851
16852         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
16853         
16854         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
16855         code somewhat.
16856
16857 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
16858
16859         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
16860         exceptions.
16861
16862 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
16863
16864         * mini.c: Don't verify COM proxy invoke calls
16865         
16866
16867 2006-08-10  Dick Porter  <dick@ximian.com>
16868
16869         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
16870         which process is holding semaphores locked.
16871
16872 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
16873
16874         * mini-ia64.c mini-amd64.c: Fix #79027.
16875
16876         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
16877
16878         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
16879
16880         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
16881         implicit arguments in a vararg call. Fixes #79027.
16882
16883 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
16884
16885         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
16886         (mono_get_array_new_va_signature): Ditto.
16887
16888 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
16889
16890         * aot-runtime.c: Call init_plt lazily.
16891
16892         * inssel-long.brg: Fix unsigned long->int conversion.
16893
16894         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
16895
16896         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
16897         that most data is now in the .rss/.data section.
16898
16899 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
16900
16901         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
16902
16903         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
16904
16905         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
16906
16907         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
16908
16909         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
16910         virtual call. Fixes #79010.
16911
16912         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
16913         and use the result as the this argument in the real call.
16914
16915         * generics.2.cs: Add a new test for #79010.
16916         
16917 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
16918
16919         * mini-x86.c: Fix a warning.
16920
16921         * aot-compiler.c: Add a bunch of statistics.
16922
16923         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
16924
16925 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
16926
16927         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
16928
16929 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
16930
16931         * 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>.
16932
16933 2006-07-13  Miguel de Icaza  <miguel@novell.com>
16934
16935         * mini.c (mono_method_to_ir): Obtain the original method in the
16936         CIL stream and use this to perform validation.
16937
16938         Fixed: #78816
16939
16940 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
16941
16942         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
16943         (mono_arch_call_opcode): Ditto.
16944
16945         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
16946         #78826.
16947
16948         * mini.c (mono_patch_info_dup_mp): New helper function.
16949         
16950         * aot-compiler.c (compile_method): Fix some of the memory allocated during
16951         compilation. Fixes #78827.
16952
16953 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
16954
16955         * declsec.c: Use original security informations for
16956           MONO_WRAPPER_MANAGED_TO_MANAGED.
16957
16958 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
16959
16960         * mini.c: Allow Com Interop methods/classes and
16961         don't verify COM wrapper calls
16962         
16963
16964 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
16965
16966         * inssel-long32.brg: Fix long->i4 checked conversion.
16967
16968         * exceptions.cs: Add a test for the above.
16969
16970 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
16971
16972         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
16973
16974         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
16975         leaks.
16976
16977         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
16978         #78775.
16979
16980 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
16981
16982         * mini.c: Fix solaris/x86 exception handling.
16983
16984         * Makefile.am: Get rid of $(ICU_LIBS).
16985
16986 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
16987
16988         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
16989         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
16990         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
16991
16992         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
16993
16994         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
16995         this function causes a SIGSEGV.
16996
16997 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
16998
16999         * mini.c: Remove unused solaris/x86 includes.
17000
17001 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
17002
17003         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
17004
17005 2006-06-20  Jb Evain  <jbevain@gmail.com>
17006
17007         * cpu-g4.md: fix max length of start_handler instruction.
17008
17009 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17010         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17011
17012 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17013         * ssa.c: Fixed bug 78653 for SSA based deadce.
17014         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17015         MonoInst.flags, used in SSA based deadce.
17016         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17017         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17018
17019 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17020
17021         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17022         it can end up using non executable memory on ppc64 systems
17023         running ppc32 userspace (fix from Johannes Berg).
17024
17025 2006-06-14  Dick Porter  <dick@ximian.com>
17026
17027         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17028         4.1.1
17029
17030 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17031         * mini.c: Made so that inline is locally disabled if it would
17032         trigger a .cctor, because too many apps depend on this behavior
17033         (which seems to be also the one of the MS CLR).
17034
17035 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17036
17037         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17038         No idea why this worked before.
17039
17040         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17041         which branch to outer exception clauses since they could skip the
17042         inner finally clauses. Fixes #78633.
17043
17044         * exceptions.cs: Add a test for the above.
17045
17046         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17047         Fixes #78629.
17048
17049         * iltests.il: Add a test for the above.
17050
17051 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17052
17053         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17054         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17055
17056         * iltests.il: Add a test for the above.
17057
17058 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17059
17060         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17061         
17062         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17063         methods as instrinsics.
17064
17065 2006-06-09  Wade Berrier <wberrier@novell.com>
17066
17067         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17068         (simple-cee-ops.h ssapre-mini-ops.h)
17069
17070 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17071
17072         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17073         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17074         instruction).
17075         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17076         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17077
17078 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17079
17080         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17081
17082 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17083
17084         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17085         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17086         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17087         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17088         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17089         of opcodes, so that bug 78549 should not happen again.
17090         * ssapre.c: Updated to use the renamed files.
17091
17092 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17093
17094         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17095         in OP_ATOMIC_EXCHANGE_I4.
17096
17097 2006-06-07  Wade Berrier <wberrier@novell.com>
17098
17099         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17100         in mono_debugger_create_notification_function)
17101
17102 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17103
17104         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17105         
17106         * mini.c (type_from_stack_type): Disable some changes which do not
17107         seem to work.
17108
17109         * driver.c: Reenable opts.
17110
17111         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17112         of the evaluation stack.
17113         
17114         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17115         evaluation stack trace at entry to the bblock.
17116
17117         * mini.c (merge_stacks): New function to perform verification of stack merges.
17118         Turned off by default.
17119
17120         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17121         STACK_MP.
17122         
17123 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17124
17125         * local-propagation.c: Fixed bug 78549.
17126
17127 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17128
17129         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17130
17131 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17132
17133         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17134         tramp-arm.c, tramp-ia64.c
17135         (mono_debugger_create_notification_function): Update signature to
17136         new signature and use new protocol for creating the notification
17137         function.  
17138
17139         Should fix the build.
17140
17141 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17142
17143         * exceptions-ppc.c (mono_jit_walk_stack)
17144         (ves_icall_get_frame_info): Fix the build
17145
17146 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17147
17148         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17149
17150 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17151
17152         * il2tests.2.il: New file for generics CIL tests.  Add test for
17153         #78019.
17154         * Makefile.am: Update.
17155
17156         Fix #78019
17157         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17158         to nullable types.
17159
17160 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17161
17162         * aliasing.c: Fixed bug 78311.
17163
17164 2006-05-29  Martin Baulig  <martin@ximian.com>
17165
17166         * mini-exceptions.c (mono_find_jit_info): When computing the
17167         native offset, check whether we're actually inside the method's
17168         code; call mono_debug_print_stack_frame() to format the frame.
17169         (ves_icall_System_Exception_get_trace): Call
17170         mono_debug_print_stack_frame() to format the stack frame.
17171         (ves_icall_get_trace): Update to the new debugging API.
17172         (mono_jit_walk_stack_from_ctx): Likewise.
17173         (ves_icall_get_frame_info): Likewise.
17174
17175         * mini.c (get_method_from_ip): Use the new debugging API.
17176         (mono_print_method_from_ip): Likewise.
17177
17178         * exceptions-ppc.c
17179         (mono_jit_walk_stack): Use the new debugging API.
17180         (ves_icall_get_frame_info): Likewise.   
17181
17182 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17183
17184         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17185
17186 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17187
17188         * mini.c: Added "limitator" to inline for debugging.
17189
17190 2006-05-24  Martin Baulig  <martin@ximian.com>
17191
17192         * debug-debugger.c (mono_debugger_init): Create a private,
17193         malloc()-based code manager for the notification function and
17194         intentionally leak it on exit.  This fixes the crash-on-exit race
17195         condition.
17196
17197         * tramp-amd64.c
17198         (mono_debugger_create_notification_function): Added
17199         `MonoCodeManager *' argument.
17200
17201         * tramp-x86.c
17202         (mono_debugger_create_notification_function): Added
17203         `MonoCodeManager *' argument.
17204
17205 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17206
17207         * aliasing.c: Fixed 64 bit issue.
17208         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17209         default since all known bugs are fixed (one more time!).
17210
17211 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17212
17213         * mini.c: write barrier support.
17214
17215 2006-05-23  Martin Baulig  <martin@ximian.com>
17216
17217         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17218         check at the top of the file.
17219
17220 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17221
17222         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17223         reverting changes without reason and without changelog entries.
17224
17225 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17226
17227         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17228         to a few opcodes. Fixes #78439.
17229
17230         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17231         consistency with other archs.
17232
17233         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17234
17235 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17236
17237         * debug-debugger.c: fix the build.
17238
17239 2006-05-17  Martin Baulig  <martin@ximian.com>
17240
17241         * debug-debugger.c
17242         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17243         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17244         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17245         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17246
17247 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17248
17249         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17250
17251 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17252
17253         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17254         MONO_TYPE_GENERICINST.
17255         
17256         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17257         MONO_TYPE_GENERICINST.
17258
17259 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17260
17261         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17262         #78325.
17263
17264 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17265
17266         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17267         mempool.
17268         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17269
17270 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17271
17272         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17273         mono_trace_cleanup ().
17274
17275         * iltests.il: Fix problem with the newly added test.
17276
17277         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17278         due to register constraints, free up the previous hreg. Fixes #78314.
17279
17280         * iltests.il: Add new test for #78314.  
17281
17282         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17283         Interlocked.Add. Fixes #78312.
17284
17285         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17286         
17287 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17288
17289         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17290
17291 2006-05-05  Martin Baulig  <martin@ximian.com>
17292
17293         * debug-mini.c (mono_debug_open_block): New method.
17294
17295         * mini-amd64.c
17296         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17297         the beginning of each basic block.
17298
17299         * mini-x86.c
17300         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17301         the beginning of each basic block.
17302
17303 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17304
17305         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17306         default until I understand why they break the build on amd64.
17307
17308 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17309
17310         * mini.c (mini_cleanup): Call mono_cleanup ().
17311
17312         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17313         errors.
17314
17315 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17316
17317         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17318         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17319         default since all known bugs are fixed, and I cannot reproduce bug
17320         77944... I'm asking Matt Hargett to test again after this commit.
17321
17322 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17323
17324         * mini-codegen.c: Fixed typo that thrashed inline.
17325
17326 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17327
17328         * dominators.c (compute_dominators): Avoid using a worklist since
17329         it is not correct in some cases. Instead, iterate over all bblocks as
17330         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17331
17332 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17333
17334         * mini.c (mono_jit_compile_method_inner): Use
17335         mono_prepare_exception_from_error that resets the value
17336         internally.
17337
17338 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17339
17340         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17341         
17342 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17343
17344         * aliasing.c: Fixed bug 78210.
17345
17346 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17347
17348         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17349         default until all their problems (or the ones they trigger) are fixed.
17350
17351 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17352
17353         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17354         
17355         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17356         as loaded only after resolving patches since that could invoke the same method.
17357
17358         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17359
17360         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17361         functions.
17362
17363         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17364         AOT loader.
17365
17366         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17367         stack.
17368
17369         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17370         made from AOT code through the PLT table.
17371
17372         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17373         holding the plt offset when a call is made to the aot plt trampoline.
17374         
17375 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17376
17377         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17378         amd64 AOT support.
17379
17380         * Makefile.am (common_sources): Fix build breakage.
17381
17382         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17383         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17384         intra-assembly calls if possible.
17385         
17386         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17387
17388         * mini-trampolines.c: Handle PLT entries.
17389
17390         * mini.c: Avoid creating a GOT var for calls.
17391
17392         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17393         from mscorlib code.
17394
17395         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17396         from mscorlib code.
17397
17398         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17399         AOT code.       
17400
17401         * mini.h: Bump AOT file format version.
17402         
17403         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17404         covers more cases.
17405
17406 2006-04-25  Martin Baulig  <martin@ximian.com>
17407
17408         * driver.c: Disable copyprop, consprop and inline when running
17409         inside the debugger.
17410
17411 2006-04-25  Martin Baulig  <martin@ximian.com>
17412
17413         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17414         with `get_current_thread' and added `detach'.
17415         (MonoDebuggerMetadataInfo): Added `thread_size',
17416         `thread_tid_offset', `thread_stack_ptr_offset' and
17417         `thread_end_stack_offset'.
17418
17419 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17420
17421         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17422         aot-runtime.c.
17423
17424         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17425         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17426
17427         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17428
17429         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17430
17431         * aot.c: Add support for ADJUSTED_IID.  
17432
17433 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17434
17435         * aot.c (emit_method_order): Don't align method_order_end.
17436
17437         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17438         the interface ID changes.
17439
17440 2006-04-21  Dick Porter  <dick@ximian.com>
17441
17442         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17443         cleaning up a thread.  Fixes the new part of bug 77470.
17444
17445 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17446
17447         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17448         to managed wrapper.
17449                      
17450 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17451
17452         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17453         
17454         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17455         SIGSEGV. Fixes #78072.
17456
17457         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17458         unregister our SIGABRT handler.
17459
17460 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17461
17462         * mini.c: Disabled inline where it can alter the call stack in a
17463         way visible from managed code.
17464         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17465         default.
17466
17467 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17468
17469         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17470         on other platforms. Fixes #78089.
17471
17472 2006-04-13  Martin Baulig  <martin@ximian.com>
17473
17474         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17475         determine whether we're inside the debugger.
17476
17477         * debug-debugger.h
17478         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17479
17480 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17481
17482         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17483         handler clauses. Fixes #78024.
17484
17485         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17486         in the CALL_MEMBASE opcodes. Fixes #78088.
17487         (mono_arch_get_vcall_slot_addr): Ditto.
17488
17489 2006-04-10  Martin Baulig  <martin@ximian.com>
17490
17491         * debug-debugger.c: The thread handling code has now been moved
17492         into ../metadata/threads.c.
17493
17494 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17495
17496         * driver.c (mono_main): Fix --with-gc=none build.
17497
17498         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17499         (mono_spillvar_offset_float): Ditto.
17500         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17501         hreg, not when its !global, since on ia64, there is a third category: stacked
17502         registers.      
17503
17504 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17505
17506         * mini.c: set MonoInst->klass for load field address and a few other
17507         places.
17508
17509 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17510
17511         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17512
17513 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17514
17515         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17516         the branch opt changes.
17517
17518 2006-04-06  Dick Porter  <dick@ximian.com>
17519
17520         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17521         
17522         * wapihandles.c (mini_wapi_seminfo): 
17523         * driver.c (mono_main): Add semaphore info option
17524
17525 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17526
17527         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17528         branch optimization changes. Fixes #78009.
17529
17530 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17531
17532         * mini.c: ignore accessibility of methods in managed->native wrappers.
17533
17534 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17535
17536         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17537         
17538         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17539
17540 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17541
17542         * mini.c: Modify the branch optimizations to preserve the invariant that
17543         the entries inside the in_bb and out_bb arrays are unique.
17544         (mono_unlink_bblock): Avoid creation of new arrays.
17545
17546 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17547
17548         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17549         change (#77992).
17550
17551 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17552
17553         * mini.c (optimize_branches): Remove the "optimizations" in
17554         the cbranch1/cbranch2 -> branch cases which were causing several
17555         problems in the past. Fixes #77986.
17556
17557 2006-03-31  Chris Toshok  <toshok@ximian.com>
17558
17559         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17560         default optimizations :(
17561
17562 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17563
17564         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17565         branch.
17566
17567 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17568
17569         * local-propagation.c: Added comments to structs and removed
17570         "Mono" prefixes from local tree mover types.
17571
17572 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17573
17574         * Makefile.am (arch_sources): Define this for each architecture so 
17575         libmono_la_SOURCES is defined in one place.
17576
17577 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17578
17579         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17580         from handles/.
17581
17582 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17583
17584         * driver.c: print the GC name supplied by configure.
17585
17586 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17587
17588         * local-propagation.c: Added tree mover, and moved here all the
17589         local propagation code from mini.c
17590         * mini.c: Added support for treeprop, and moved all the local
17591         propagation code to local-propagation.c
17592         * mini.h: Added support for treeprop
17593         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17594         treeprop, inline and deadce by default
17595         * Makefile.am: Added local-propagation.c
17596
17597 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17598
17599         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17600
17601 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17602
17603         * debug-debugger.c: make it compile without the Boehm GC.
17604
17605 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17606
17607         * mini.c: fixed issue with mismatch when an icall is registered
17608         with multiple names but same address.
17609
17610 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17611
17612         * declsec.c, mini-exceptions.c: use write barrier to set reference
17613         fields of managed objects.
17614
17615 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17616
17617         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17618         (can_access_internals): Fix a warning.
17619
17620         * mini.c (print_method_from_ip): Rename this to 
17621         mono_print_method_from_ip so it gets exported.
17622
17623         * trace.c: Deal with strings inside StringBuilder's containing garbage
17624         and fix memory leaks. Fixes #77848.
17625
17626 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17627
17628         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17629         fixes #77787.
17630
17631 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17632         
17633         * mini-s390.c: Remove OP_X86_TEST_NULL.
17634
17635 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17636
17637         * mini.c: use the correct GetHashCode() for the moving collector.
17638
17639 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17640
17641         * liveness.c: Regalloc spill cost tuning.
17642
17643 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17644         
17645         * mini-s390x.h: Correct S390_LONG macro.
17646
17647         * mini-s390x.c: Cleanup unused code.
17648
17649 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17650
17651         * jit-icalls.h: New file.
17652
17653         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17654         icalls and include that instead of including jit-icalls.c.
17655
17656         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17657         OP_X86 opcodes.
17658
17659 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17660
17661         * mini.c: when checking for member accessibility, also check for
17662         friend assemblies and for explicit interface implementations.
17663
17664 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17665
17666         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17667
17668         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17669
17670         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17671         common cases are done first.    
17672
17673         * mini-ops.h: Only define platform specific opcodes on the given platform.
17674
17675         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17676         branch.
17677         
17678 2006-03-14  Martin Baulig  <martin@ximian.com>
17679
17680         Revert Paolo's change from r57348:
17681
17682         * mini.h: don't use gboolean for bitfields.
17683         * mini.c: verifier changes for fields and methods accessibility.
17684
17685 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17686
17687         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17688
17689         * mini-s390x.c: Fix conv_r_un.
17690
17691         * cpu-s390, cpu-s390x.md: Fix lengths.
17692
17693 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17694
17695         * mini.c: nested types have access to all the nesting
17696         levels, not just the enclosing types.
17697
17698 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17699
17700         * mini.c: added a few more verification checks.
17701
17702 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17703
17704         * liveness.c: Merge optimizations from the linear-il branch.
17705
17706 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17707
17708         * mini-ia64.c (emit_call): Add a comment.
17709
17710         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17711
17712         * tramp-ia64.c: Fix some warnings.
17713
17714 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17715
17716         * mini.h: don't use gboolean for bitfields.
17717         * mini.c: verifier changes for fields and methods accessibility.
17718
17719 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17720
17721         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17722         lazy icall wrapper changes.
17723
17724         * dominators.c: Replace all the dominator algorithms with faster
17725         ones from the linear-il branch.
17726
17727         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17728         the mempool.
17729
17730         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17731         common cases are done first.
17732
17733         * mini-amd64.c: Fix some warnings.
17734
17735         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17736         from the mempool.
17737
17738         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17739         added code.
17740
17741         * mini.h: Add a missing prototype.
17742
17743 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17744
17745         * mini.c: Compile icall wrappers lazily.
17746
17747         * mini-codegen.c: Use printf instead of g_print since its much faster.
17748
17749         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17750         function.
17751
17752         * mini.c (optimize_branches): Cache the negative result from 
17753         remove_block_if_useless ().
17754
17755         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17756         Also fix some bblock linking issues.
17757
17758         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17759         assembly files.
17760
17761         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
17762
17763         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
17764         accessed fields first, for better cache behavior.
17765         
17766 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
17767
17768         * mini.c: speedup IList<T> array accesses.
17769
17770 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17771
17772         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
17773         inline_costs counter. Fixes #77190.
17774
17775 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
17776
17777         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
17778         trace messages. Fixes #77706.
17779
17780 2006-03-04  Martin Baulig  <martin@ximian.com>
17781
17782         * tramp-amd64.c, tramp-x86.c
17783         (mono_debugger_create_notification_function): Use
17784         mono_global_codeman_reserve() to allocate a buffer at runtime and
17785         return it.
17786
17787         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
17788
17789         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
17790         notification function at runtime and then call `initialize' in the
17791         `MONO_DEBUGGER__debugger_info' vtable.
17792
17793 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
17794
17795         * iltests.il: Fix a visibility problem.
17796
17797 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17798
17799         * driver.c, mini.c: add hooks for the counters API.
17800
17801 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17802
17803         * driver.c: show disabled options.
17804
17805 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17806
17807         * linear-scan.c: always use cost-driven selection.
17808
17809 2006-02-28  Raja R Harinath  <rharinath@novell.com>
17810
17811         * jit-icalls.c (helper_compile_generic_method): Revert change from
17812         2006-02-24.
17813
17814 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
17815
17816         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
17817
17818 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
17819
17820         * inssel.brg: style fixes, mostly to force the updated monoburg
17821         to run for people using svn.
17822
17823 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
17824
17825         * mini.c: match monoburg changes.
17826
17827 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17828
17829         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
17830         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
17831         declaration in the header file.
17832
17833 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17834
17835         * helpers.c: reduce relocations and mem usage.
17836
17837 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17838
17839         * mini.h, mini-codegen.c: disable logging features if
17840         requested by configure.
17841
17842 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
17843
17844         * mini.c: tiny verifier changes.
17845
17846 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17847
17848         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
17849         cpu-pentium.md: stack alignment changes for osx/x86,
17850         partially from Geoff Norton <gnorton@customerdna.com>.
17851
17852 2006-02-24  Raja R Harinath  <harinath@gmail.com>
17853
17854         * jit-icalls.c (helper_compile_generic_method): Update to changes
17855         in metadata/class.c.
17856
17857 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
17858         
17859         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
17860         
17861         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
17862         interface calls with large offsets.
17863
17864 2006-02-23  Raja R Harinath  <rharinath@novell.com>
17865
17866         * jit-icalls.c (helper_compile_generic_method): Document the
17867         special-case we depend on so that we can inflate the method twice
17868         with the same context with no bad side-effects.
17869
17870 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
17871
17872         * mini-x86.c, mini-amd64.c: fix for case when xen support
17873         is disabled.
17874
17875 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17876
17877         * mini-x86.c, mini-amd64.c: generate code to access tls items
17878         in a faster way for Xen systems.
17879
17880 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17881
17882         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
17883         updates and compilation fixes for the OSX/x86 port, mostly from
17884         Geoff Norton <gnorton@customerdna.com>.
17885
17886 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
17887
17888         * inssel.brg: faster interface call implementation
17889         to sync with the interface_offsets MonoVTable changes.
17890
17891 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17892
17893         * mini.c: more verification checks.
17894
17895 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
17896
17897         * mini.c: added a few more verification checks.
17898
17899 2006-02-17      Neale Ferguson <neale@sinenomine.net>
17900
17901         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
17902         facility on the processor and use it if available.
17903
17904 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17905
17906         * driver.c, aot.c, mini.c: throw exception if the IL code is
17907         invalid or unverifiable.
17908
17909 2006-02-17  Raja R Harinath  <rharinath@novell.com>
17910
17911         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
17912         m.StructField.
17913
17914 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
17915
17916         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
17917
17918 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17919
17920         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
17921         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
17922         handling of instantiated generic valuetypes.
17923
17924 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
17925
17926         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
17927         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
17928         instead.
17929
17930         * generics.2.cs: Revert the nullable reftypes tests.
17931
17932 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
17933
17934         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
17935         using __builtin_frame_address (1) as it doesn't work in the presence
17936         of optimizations. Hopefully fixes #77273.
17937
17938         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
17939         -> generics.cs change as it doesn't work with some automake versions.
17940
17941 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17942
17943         * mini.c: handle systems that sue a different way to
17944         retrieve the stack address of the current thread.
17945
17946 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
17947
17948         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
17949         it specially in the makefile.
17950
17951         * generics.2.cs: Add tests for nullable reference types.
17952
17953 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17954
17955         * mini.c: always handle the case when mono_jit_init()
17956         is called in a thread different from the main thread,
17957         confusing libgc (bug #77309).
17958
17959 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
17960
17961         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
17962
17963 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
17964
17965         * mini.c: change optimize_branches () to use a single loop
17966         and introduce a new optimization to simplify some range checks.
17967
17968 2006-02-03  Martin Baulig  <martin@ximian.com>
17969
17970         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
17971         and merged with debugger_thread_manager_add_thread().
17972         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
17973         inform the debugger about the main thread.
17974
17975 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17976
17977         * basic.cs: Add test for div.un/rem.un constant folding.
17978
17979 2006-02-03  Neale Ferguson <neale@sinenomine.net>
17980
17981         * cpu-s390x.md: correct int_xor_imm length
17982
17983 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17984
17985         * generics.2.cs: New test for #77442.
17986
17987         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
17988         #77442.
17989
17990 2006-02-02  Martin Baulig  <martin@ximian.com>
17991
17992         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
17993         <mono/metadata/mono-debug-debugger.h>   
17994
17995         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
17996
17997 2006-02-02  Martin Baulig  <martin@ximian.com>
17998
17999         * debug-debugger.h: New header file for debug-debugger.c.
18000
18001         * debug-debugger.c: Big API cleanup; don't run the managed Main()
18002         function is a separate thread anymore; add support for attaching.
18003
18004 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18005
18006         * tramp-x86.c: Fix a warning.
18007
18008 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18009
18010         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18011         on very large methods.
18012
18013         * aot.c (load_patch_info): Fix a warning.
18014
18015 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18016
18017         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18018         mini-ops.h: alu membase optimizations.
18019
18020 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18021
18022         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18023         to speedup StringBuilder.
18024
18025 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18026
18027         * dominators.c (mono_compute_natural_loops): Fix detection of
18028         loop body start blocks.
18029
18030         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18031
18032 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18033
18034         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18035         #75145.
18036
18037 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18038
18039         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18040
18041 2006-01-25  Martin Baulig  <martin@ximian.com>
18042
18043         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18044         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18045         started to cleanup this file a little bit.
18046
18047 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18048
18049         * mini.c: optimize a codepath frequently happening in generics code.
18050
18051 2006-01-23  Martin Baulig  <martin@ximian.com>
18052
18053         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18054
18055         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18056         functions directly.
18057
18058         * driver.c: debug-debugger.c is only available if
18059         `MONO_DEBUGGER_SUPPORTED' is defined.   
18060
18061 2006-01-23  Martin Baulig  <martin@ximian.com>
18062
18063         * debug-debugger.c: Only enable this on platforms where the Mono
18064         Debugger is working (x86 and x86_64).
18065
18066 2006-01-21  Martin Baulig  <martin@ximian.com>
18067
18068         The Mono Debugger is now using the normal `mono' instead of the
18069         `mono-debugger-mini-wrapper' when executing managed code.
18070
18071         * debug-debugger.c: New file; previously known as
18072         debugger/wrapper/wrapper.c.
18073
18074         * debug-mini.c (mono_init_debugger): Removed.
18075
18076         * driver.c (mono_main): Added new `--inside-mdb' command line
18077         argument which is used when running inside the debugger.
18078
18079 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18080
18081         * liveness.c (mono_analyze_liveness): Remove some unused data
18082         structures.
18083
18084 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18085
18086         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18087
18088 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18089
18090         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18091         depends on implementation details of monobitset.
18092
18093         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18094         Fixes #77271.
18095
18096 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18097
18098         * liveness.c: Update after monobitset changes.
18099
18100 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18101
18102         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18103
18104 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18105
18106         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18107
18108         * mini-s390x.c: Remove warning messages.
18109
18110 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18111
18112         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18113
18114 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18115
18116         * generics.2.cs: Add ldelem/stelem_any test.
18117
18118 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18119
18120         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18121
18122 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18123
18124         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18125         
18126 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18127
18128         * generics.2.cs: Reenable vtype tests.
18129
18130         * inssel-x86.brg: Remove an icorrect valuetype rule.
18131
18132 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18133
18134         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18135         initial support for OP_ABS.
18136
18137 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18138
18139         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18140
18141 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18142
18143         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18144         conversion and implement LADD/LSUB.
18145
18146         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18147         architectures.
18148
18149 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18150
18151         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18152
18153         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18154         architectures.
18155
18156 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18157
18158         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18159         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18160         (stack walk problem).
18161
18162 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18163
18164         * aot.c (mono_aot_load_method): Fix a warning.
18165
18166 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18167
18168         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18169
18170 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18171
18172         * iltests.il: Add test for #77148.
18173
18174         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18175         #77148.
18176
18177 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18178
18179         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18180
18181 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18182
18183         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18184         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18185
18186         * basic-long.cs: Add lconv-to-r4/r8 tests.
18187
18188 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18189
18190         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18191
18192         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18193         here as on other archs.
18194
18195 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18196
18197         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18198
18199 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18200
18201         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18202         
18203         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18204
18205         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18206         instrument_prolog; Add memory_barrier instruction.
18207
18208 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18209
18210         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18211
18212 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18213
18214         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18215
18216         * aliasing.c inssel.brg: Fix warnings.
18217
18218         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18219         could skip initialization of some parts of memory.
18220
18221         * mini.c mini-ia64.c: Fix warnings.
18222
18223         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18224
18225 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18226
18227         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18228         a crash seen on sparc.
18229
18230         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18231         
18232         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18233
18234 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18235
18236         * mini-ops.h: Add s390_backchain instruction
18237
18238         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18239
18240         * cpu-s390.md: Add s390_backchain instruction
18241
18242         * mini-s390.c: Significant ABI changes
18243
18244         * mini-s390.h: Cater for zero length structures
18245
18246 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18247
18248         * mini-s390.c: ABI fixes
18249
18250         * inssel-s390.brg: Remove debug statements
18251
18252         * cpu-s390.md: Fix length of ATOMIC_xx operations
18253
18254 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18255
18256         * basic-float.cs: Add float<->long conversion tests.
18257
18258 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18259
18260         * mini-s390.c: Fix LOCALLOC processing.
18261
18262         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18263
18264 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18265
18266         * iltests.il: Add tests for some opcodes not covered by the other
18267         tests.
18268
18269 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18270
18271         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18272         register loading for Tail processing; Correct trace output.
18273
18274         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18275
18276         * cpu-s390.md: Correct size of jmp instruction. 
18277
18278 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18279
18280         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18281
18282 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18283
18284         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18285           Bring s390 up to current level.
18286
18287 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18288
18289         * generics.2.cs: Disable the newly added tests as they do not work yet.
18290         
18291         * generics.2.cs: Add valuetype tests.
18292
18293 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18294
18295         * basic-long.cs: Add i4->u8 test.
18296
18297         * objects.cs: Add tests for JIT intrinsic.
18298
18299         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18300         optimizations lost by a mistake.
18301
18302 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18303
18304         * basic-long.cs: Remove a test moved to objects.cs.
18305
18306         * arrays.cs: Add more array tests.
18307
18308 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18309
18310         * arrays.cs: Add new tests for multi-dimensional arrays.
18311
18312 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18313
18314         * Makefile.am (test_sources2): Add generics.2.cs.
18315         (EXTRA_DIST): Add test_sources2.
18316
18317 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18318
18319         Support for boxing and unboxing nullable types as well as the
18320         isinst operation on nullables, per the CLI ammendment.
18321
18322         * inssel.brg (CEE_ISINST): Special case for nullable
18323
18324         * mini.c (handle_unbox_nullable): new method
18325         (handle_box): Special case for nullable types
18326         (mono_method_to_ir): Call handle_unbox_nullable in correct
18327         places.
18328
18329         * generics.2.cs: New test suite
18330
18331         * Makefile.am: Support for regression tests with generics.
18332
18333 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18334
18335         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18336         allocated to registers. Fixes #76800.
18337
18338 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18339
18340         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18341
18342 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18343
18344         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18345         of platforms.
18346
18347 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18348
18349         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18350         objects.cs.
18351
18352         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18353         
18354         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18355 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18356
18357         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18358         single precision before storing to a single precision location.
18359
18360 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18361
18362         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18363
18364 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18365
18366         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18367         correct files.
18368
18369         * basic.cs: Remove test_0_byte_compares test which was moved to
18370         objects.cs a long time ago.
18371
18372 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18373
18374         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18375
18376 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18377
18378         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18379         handlers are called.
18380
18381         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18382         throwing code.
18383
18384          * mini-ia64.c: Add support for the throw->branch exception 
18385         optimization.   
18386
18387         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18388
18389 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18390
18391         * mini.c: Enabled "fastpath" deadce :-)
18392         
18393 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18394
18395         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18396         alias analysis pass to support it.
18397         * mini.h: Likewise.
18398         * ssa.c: Likewise.
18399         * liveness.c: Likewise (liveness computation can use aliasing
18400         information to be more accurate).
18401         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18402         moreover made so that "--compile-all" uses the given optimization
18403         flags and not the default ones.
18404         * aliasing.c: Alias analysis (new file).
18405         * aliasing.h: Likewise.
18406         * Makefile.am: added "aliasing.c" and "aliasing.h".
18407         
18408 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18409
18410         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18411         OP_L opcodes.
18412
18413 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18414
18415         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18416         fp >= end_of_stack exit condition, as it is not needed, and it might
18417         become true for fp eliminated frames.
18418
18419 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18420
18421         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18422         coded offsets.
18423
18424 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18425
18426         * mini-arm.c: fixed alignment of doubles/longs to match
18427         the C ABI (bug #76635).
18428
18429 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18430
18431         * aot.c: fix compilation with --enable-minimal=aot.
18432
18433 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18434
18435         * mini-arm.c: fixed compatibility with the new
18436         floating point emulator package for compares.
18437
18438 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18439
18440         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18441
18442 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18443
18444         * mini-exceptions.c (print_stack_frame): Output to stderr.
18445         (mono_handle_native_sigsegv): Ditto.
18446
18447 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18448
18449         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18450         OP_LCONV_TO_OVF_I implementation.
18451
18452         * mini-amd64.c: Add support for the throw->branch exception 
18453         optimization.
18454
18455         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18456         when the catch clause catches a more general exception, i.e. Object.
18457
18458 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18459
18460         * cpu-ia64.md: Remove unused opcodes.
18461
18462         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18463         specific defines for architectures defining USE_SIGACTION.
18464
18465         * mini-ia64.c: Fix some warnings.
18466
18467         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18468         version seemed to skip a frame.
18469
18470 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18471
18472         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18473         only calls which are made to native code use this flag.
18474
18475 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18476
18477         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18478         varargs methods as well.
18479         
18480         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18481         which have save_lmf set. Reorganize methods prologs a bit.
18482
18483         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18484         debugger to the proper place.
18485
18486 2005-10-29  Martin Baulig  <martin@ximian.com>
18487
18488         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18489         when running inside the debugger until the debugger has support
18490         for it.
18491
18492 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18493
18494         * mini.h: Fix a warning.
18495
18496 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18497
18498         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18499         we expose publicly, this returns the string.
18500
18501 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18502
18503         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18504         with fp elimination.
18505
18506 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18507
18508         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18509         native stacktrace using the glibc 'backtrace' function if available.
18510
18511 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18512
18513         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18514
18515         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18516         handle SIGSEGVs received while in native code.
18517
18518         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18519         code, call mono_handle_native_sigsegv which will abort the runtime
18520         after printing some diagnostics, instead of converting it into a
18521         confusing NullReferenceException.
18522
18523 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18524
18525         * cpu-pentium.md: Remove unused opcodes.
18526
18527 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18528
18529         * mini-amd64.h (MonoLMF): Add rsp field.
18530
18531         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18532         the lmf too.
18533
18534 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18535
18536         * mini-codegen.c (get_register_spilling): Fix some warnings.
18537
18538 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18539
18540         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18541         elimination during exception handling. Enable fp elimination by
18542         default.
18543
18544         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18545         elimination.
18546
18547 2005-10-16  Martin Baulig  <martin@ximian.com>
18548
18549         * mini-exceptions.c
18550         (mono_debugger_run_finally): New public method for the debugger.
18551
18552 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18553
18554         * debug-mini.c (mono_debug_init_method): Fix warning.
18555
18556         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18557         the 'exname' parameter const to fix some warnings.
18558
18559 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18560
18561         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18562         introduced by the previous patch.
18563
18564 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18565
18566         * basic-float.cs: Add test for precision of float arithmetic.
18567
18568         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18569         when loading/storing single values from/to memory.
18570
18571         * mini.c (mono_jit_compile_method_with_opt): Create the function
18572         pointers in the correct domain.
18573
18574 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18575
18576         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18577         introduced by previous patch.
18578         
18579         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18580         when out_filter_idx is NULL.
18581
18582         * mini-exceptions.c: Don't run filter clauses twice during exception
18583         handling. Fixes #75755.
18584
18585 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18586
18587         * aot.c: Add support for ldflda wrappers.
18588
18589         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18590         #75902.
18591
18592 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18593
18594         * mini.c, mini.h: do not consider exception handlers blocks when
18595         setting up interface variables.
18596
18597 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18598
18599         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18600
18601 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18602
18603         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18604         causes a regression.
18605
18606         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18607
18608 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18609
18610         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18611         of the OP_P definitions.
18612
18613         * TODO: Add a proposal for dealing with the CEE/OP mess.
18614
18615         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18616         optimizations from the x86 port.
18617
18618         * cpu-amd64.md: Ditto.
18619
18620         * basic.cs basic-long.cs: Add tests.
18621
18622 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18623
18624         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18625         Patrik Torstensson's implementation of my exception-handling
18626         optimization idea, when the exception object is not used
18627         (bug #62150).
18628
18629 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18630
18631         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18632         of the mul_imm optimizations from the old jit.
18633
18634 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18635
18636         * mini.c, liveness.c: patch by Patrik Torstensson and
18637         Zoltan Varga to improve performance in methods with
18638         exception clauses.
18639
18640 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18641
18642         * driver.c: Remove 'Globalization' entry from --version.
18643
18644 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18645
18646         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18647         there is a profiler interested in JIT events.
18648
18649         * aot.c: Load profile files produced by the AOT profiling module, and
18650         reorder methods based on the profiling info. Add a 'method_order' table
18651         to the AOT file to make mono_aot_find_jit_info work with the reordered
18652         methods.
18653
18654         * mini.h: Bump AOT file version info.
18655
18656 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18657
18658         * mini-arm.h: work around what looks like a gcc bug when optimizations
18659         are enabled.
18660
18661 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18662
18663         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18664         conditionals.  Use ...
18665         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18666
18667 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18668
18669         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18670         to determine the amount of memory to copy when passing valuetypes.
18671
18672         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18673         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18674
18675 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18676
18677         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18678         information about aot.
18679
18680 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18681
18682         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18683         macros. This will allow a deadlock debugger to easily be plugged
18684         in.
18685
18686 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18687
18688         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18689
18690 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18691
18692         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18693         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18694         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18695         ($(arch_built)) [CROSS_COMPILING]: Error out.
18696
18697 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18698
18699         * aot.c: Add support for the no_special_static flag for classes.
18700
18701 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18702
18703         * Reapply reverted patches.
18704
18705         * *: Revert r50174 as well.
18706
18707         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18708
18709 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18710
18711         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18712
18713 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18714
18715         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18716         part of the SIG_HANDLER_SIGNATURE.  
18717
18718 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18719
18720         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18721         statistics.
18722
18723         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18724         introduced by previous patch.
18725
18726 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18727
18728         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18729         saved registers too.
18730
18731         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18732         upon the information returned by get_call_info ().
18733         
18734         * mini-x86.c (add_float): Fix stack size calculation.
18735         (mono_arch_call_opcode): Rewrite this so it works based up the
18736         information returned by get_call_info ().
18737         (mono_arch_get_this_vret_args): Ditto.
18738
18739 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18740
18741         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18742         in cinfo to determine the registers which need to be used.
18743
18744 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18745
18746         * driver.c (mono_main): Add --server and --desktop flags. 
18747
18748 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18749
18750         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18751         registers as global registers.
18752
18753         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18754         longer needed with the new register allocator.
18755
18756         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18757
18758         * cpu-ia64.md: Remove unused opcodes.
18759         
18760         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
18761         
18762 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
18763
18764         * cpu-amd64.md: Remove unused opcodes.
18765
18766         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
18767         needed with the new register allocator.
18768
18769         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
18770         reg-reg moves.
18771
18772 2005-09-16  Raja R Harinath  <rharinath@novell.com>
18773
18774         * Makefile.am (check-local): Don't invoke semdel-wrapper.
18775
18776 2005-09-16  Martin Baulig  <martin@ximian.com>
18777
18778         * exceptions-amd64.c
18779         (throw_exception): Don't call mono_debugger_throw_exception() if
18780         we're a rethrow - see the FIXME in the code.
18781
18782 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
18783
18784         * mini.c (mono_init_exceptions): This only works on some architectures.
18785         
18786 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18787
18788         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
18789         on ia64.
18790
18791         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
18792
18793         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
18794         now in mini-exceptions.c.
18795
18796 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
18797
18798         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
18799         now in mini-exceptions.c.
18800
18801 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18802
18803         * exceptions-x86.c: Applied patch from Patrik Torstensson 
18804         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
18805
18806         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
18807         code into mini-exceptions.c. Add some assertions to it.
18808
18809 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
18810
18811         * aot.c (emit_section_change): Applied patch from "The Software Team" 
18812         (<software@solmersa.com>). Fix as errors on windows.
18813
18814 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18815
18816         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
18817         method info into the LMF.
18818
18819 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18820         
18821         * mini-ia64.c: Add proper unwind info for method epilogs.
18822
18823         * exceptions-ia64.c: Add some code to help debugging.
18824         
18825         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
18826
18827         * mini-exceptions.c: Fix warning.
18828
18829 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18830
18831         * mini.c: Really fix build.
18832
18833         * mini-x86.c mini-amd64.c: Fix build.
18834
18835 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18836
18837         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
18838
18839         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
18840         some Interlocked methods as intrinsics.
18841
18842         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
18843         for Thread methods as well.
18844
18845         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
18846
18847         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
18848
18849         * mini-ia64.c mini-x86.c mini-amd64.c 
18850         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
18851         OP_MEMORY_BARRIER.
18852         
18853         * mini.c (mono_init_exceptions): Fix build breakage.
18854
18855 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
18856
18857         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
18858         of instructions. Use the new ia64_unw_op macros for emitting unwind
18859         info.
18860
18861         * mini.c (mono_init_exceptions): Initialize exception handling
18862         related trampolines at startup.
18863
18864 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
18865
18866         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
18867
18868 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
18869
18870         * mini.c: Handle type loading errors gracefully during compilation and
18871         throw the appropriate exception.
18872
18873 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
18874
18875         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
18876         for the mono binary.
18877
18878 2005-09-09  Martin Baulig  <martin@ximian.com>
18879
18880         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
18881         the release.
18882
18883 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18884
18885         * mini-arm.h: use emulation for conv.r.un for the release.
18886
18887 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18888
18889         * mini-arm.c, objects.cs: more fixes and tests for them.
18890
18891 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18892
18893         * mini-arm.c: align structures to at least 4 bytes to be able
18894         to keep our current optimized memcpy.
18895
18896 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
18897
18898         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
18899
18900 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18901
18902         * mini.c: ignore SIGPIPE.
18903
18904 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
18905
18906         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
18907
18908         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
18909
18910 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
18911
18912         * mini.h: Add prototype for mono_allocate_stack_slots_full.
18913
18914 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18915
18916         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
18917         exception handling support.
18918         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
18919         patch by Brian Koropoff <briank@marakicorp.com>).
18920
18921 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
18922
18923         * mini.c: revert another 'optimization' which breaks when
18924         items on the eval stack need to be saved at a basic block end
18925         (bug #75940).
18926
18927 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
18928
18929         * jit-icalls.c: for arrays, ensure we always provide
18930         lower bounds.
18931
18932 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
18933
18934         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
18935         
18936         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
18937
18938 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
18939
18940         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
18941         arguments in their original register.
18942
18943 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
18944
18945         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
18946         memset/memcpy.
18947
18948         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
18949         when ssapre is enabled.
18950
18951         * inssel-long.brg: Fix bug in previous patch.
18952
18953         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
18954         multiplication by a constant.
18955
18956 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
18957
18958         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
18959         icc.
18960
18961         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
18962         saving registers.
18963
18964 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
18965
18966         * inssel-arm.brg: apply changes tested by Brian Koropoff
18967         <briank@marakicorp.com>.
18968
18969 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
18970
18971         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
18972         
18973 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
18974
18975         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
18976         to the same register if dreg is just a base register.
18977         (print_ins): Improve printing of membase opcodes.
18978
18979         * inssel-x86.brg: Add optimized ldind(reg) rules.
18980
18981         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
18982
18983 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
18984
18985         * mini.c: when running under valgrind, set the stack bottom for
18986         the GC at the actual approximate stack for the app (fixes running
18987         mono with valgrind).
18988
18989 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
18990
18991         * mini.c: do no break at the first valuetype to init found
18992         (fixes bug #75791).
18993
18994 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
18995
18996         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
18997
18998 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
18999
19000         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
19001
19002 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
19003
19004         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
19005
19006 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19007
19008         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19009
19010         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19011         code.
19012
19013         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19014         code.
19015
19016         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19017         methods.
19018
19019 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19020
19021         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19022
19023 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19024
19025         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19026         in the tail recursion optimization.
19027
19028         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19029         debug info into the assembly file.
19030
19031         * iltests.il: Add test for filter regions.
19032
19033         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19034         initial stack of filter regions. Fixes #75755.
19035
19036 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19037
19038         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19039         stack requirements.
19040
19041 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19042
19043         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19044         the check for an already compiled method on non-ia64 platforms.
19045         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19046         proper domain.
19047
19048         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19049
19050         * inssel-x86.brg: Add some optimized call rules.
19051
19052 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19053
19054         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19055         method here.
19056
19057         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19058         mono_arch_patch_delegate_trampoline.
19059
19060         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19061
19062         * mini-trampolines.c: Fix build.
19063
19064         * mini-amd64.h: Add delegate trampolines.
19065
19066         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19067
19068         * inssel-amd64.brg: Add optimized call rules.
19069         
19070         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19071
19072         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19073
19074 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19075
19076         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19077         change.
19078
19079         * mini-ia64.c: Remove LMF fixmes.
19080
19081         * mini-ia64.h: Remove most fields from LMF.
19082
19083         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19084
19085         * mini-trampolines.c: Add support for IA64 function descriptors.
19086
19087         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19088         for IA64 function descriptors.
19089
19090 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19091
19092         * tramp-arm.c: patch the vtable for virtual calls. Added
19093         support code to register/unregister the LMF.
19094         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19095         more LMF work.
19096
19097 2005-08-19  Dick Porter  <dick@ximian.com>
19098
19099         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19100         bit value if needed.
19101
19102 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19103
19104         * mini.c (mini_get_method): Move handling of wrapper data here.
19105
19106         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19107
19108         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19109         virtual.
19110
19111         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19112         bblock->code does not remain empty.
19113
19114 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19115
19116         * arrays.cs: Add regression test for #75832.
19117
19118         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19119         rules. Fixes #75832.
19120
19121         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19122         instruction scheduling.
19123
19124 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19125
19126         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19127
19128 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19129
19130         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19131
19132         * mini-codegen.c: Fix VC build.
19133
19134         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19135
19136 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19137
19138         * mini.h: fix signature for mono_register_opcode_emulation.
19139
19140 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19141
19142         * mini.c: Get rid of most of the helper_sig_... constants using
19143         mono_create_icall_signature ().
19144
19145 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19146
19147         * jit-icalls.c (helper_ldstr): New helper function.
19148
19149         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19150
19151         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19152         throw, load the string using a helper call instead of creating a string object.
19153
19154         * aot.c: Update after LDSTR changes.
19155
19156         * mini.h: Bump AOT file version.
19157         
19158         * aot.c: Save class size info into the AOT file. Print more statistics during
19159         compilation.
19160
19161         * mini.h: Bump AOT file version.
19162
19163         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19164         ordering of disasm cases. Fixes #74957.
19165
19166 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19167
19168         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19169         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19170         the generic code needed for the ARM port.
19171
19172 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19173
19174         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19175         inssel-arm.brg: more ARM features and fixes.
19176
19177 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19178
19179         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19180         ARM port work in progress.
19181
19182 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19183
19184         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19185
19186         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19187
19188         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19189
19190         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19191
19192         * *-ia64.*: Ongoing IA64 work.
19193         
19194         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19195
19196 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19197
19198         * TODO: Remove out-of-data todo stuff.
19199
19200         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19201         dead code.
19202
19203         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19204
19205         * mini.h: Bump corlib version.
19206
19207 2005-07-27  Martin Baulig  <martin@ximian.com>
19208
19209         * mini-codegen.c
19210         (create_copy_ins): Added `const unsigned char *ip' argument; set
19211         `copy->cil_code' from it.
19212
19213 2005-07-27  Martin Baulig  <martin@ximian.com>
19214
19215         * mini-exceptions.c (mono_handle_exception): Don't call
19216         mono_debugger_handle_exception() for filters.
19217
19218 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19219
19220         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19221         as well.
19222
19223 2005-07-26  Martin Baulig  <martin@ximian.com>
19224
19225         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19226
19227         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19228         helper_compile_generic_method() if the method is actually virtual
19229         and non-final.
19230
19231 2005-07-26  Martin Baulig  <martin@ximian.com>
19232
19233         * mini.c
19234         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19235         public; this is now accessed directly by the debugger.
19236         (mono_generic_trampoline_code): Removed.
19237
19238         * debug-mini.c
19239         (mono_debug_init_method): Also add interncalls and wrappers.
19240
19241 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19242
19243         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19244
19245 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19246
19247         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19248
19249 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19250
19251         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19252
19253 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19254
19255         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19256         getting TLS offsets on AMD64 too.
19257
19258 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19259
19260         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19261
19262 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19263
19264         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19265         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19266
19267 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19268
19269         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19270
19271         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19272         to mini.c.
19273
19274         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19275         mono_sparc_is_virtual_call ().
19276         
19277         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19278
19279         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19280         trampoline parameters.
19281
19282         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19283         
19284         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19285         to mono_arch_get_vcall_slot_addr.
19286
19287         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19288         trampoline code.
19289
19290         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19291
19292 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19293
19294         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19295
19296 2005-07-19  Martin Baulig  <martin@ximian.com>
19297
19298         * exceptions-amd64.c (throw_exception): Call
19299         mono_debugger_throw_exception() here like we're doing it on i386.
19300
19301 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19302
19303         * mini-ia64.c: Add optimized TLS access support.
19304
19305 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19306
19307         * mini-exceptions.c: Ongoing IA64 work.
19308
19309         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19310
19311         * mini.c: Use the default optimization set when embedding. Fixes
19312         #75194.
19313
19314 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19315
19316         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19317         of trampolines to a separate file.
19318
19319         * mini-trampolines.c: New file.
19320
19321         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19322         separate file.
19323         
19324         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19325         amd64/ia64 code.
19326
19327         * mini-codegen.c: Fix cygwin build.
19328
19329 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19330
19331         * mini.c: Add some minor changes needed by the IA64 port.
19332
19333         * *-ia64.*: Ongoing IA64 work.
19334
19335 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19336
19337         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19338         trampolines into arch-independent and arch-dependent parts.
19339
19340         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19341
19342 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19343
19344         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19345
19346         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19347         the xp-regalloc-branch for amd64.
19348
19349         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19350         xp-regalloc-branch for x86.
19351
19352 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19353
19354         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19355
19356 2005-07-06  Martin Baulig  <martin@ximian.com>
19357
19358         * mini.c
19359         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19360         (mono_jit_runtime_invoke): Likewise.
19361
19362 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19363
19364         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19365         on x86 too.
19366         
19367         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19368         without loading their metadata. Reorganize the file format so exception handling+
19369         debug info is kept separate from normal method info. Create MonoJitInfo 
19370         structures for methods lazily.
19371
19372         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19373         loading metadata.
19374         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19375
19376         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19377
19378         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19379         in AOT code.
19380
19381         * mini.h: Bump AOT file version.
19382
19383 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19384
19385         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19386
19387 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19388
19389         * Makefile.am (check-local): Call semdel-wrapper.
19390
19391 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19392
19393         * mini-x86.c: Revert the last change as it seems to break the build..
19394
19395 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19396
19397         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19398         
19399         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19400
19401 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19402
19403         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19404         outside of the macro, so strange stuff doesn't happen with gcc4
19405         (NEW_AOTCONST_TOKEN): Likewise.
19406
19407 2005-06-28  Martin Baulig  <martin@ximian.com>
19408
19409         * mini.c (mini_class_is_system_array): New static method; use this
19410         instead of `klass->parent == mono_defaults.array_class' everywhere
19411         since this also works for the new generic array class.
19412
19413 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19414
19415         * inssel.brg: Remove warnings.
19416
19417 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19418
19419         * mini-ia64.c: Ongoing IA64 work.
19420
19421         * basic-float.cs: Add float->i1 conversion test.
19422
19423         * iltests.il: Add conv.u4 test.
19424
19425 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19426
19427         * inssel-long.brg: Fix bug caused by last change.
19428
19429 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19430
19431         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19432         BSDs.  Allows the x86 JIT to work on OSX86
19433
19434 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19435
19436         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19437         u4->i8 conversion.
19438
19439         * mini-ia64.c: Ongoing IA64 work.
19440
19441 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19442
19443         * mini-ia64.c: Ongoing IA64 work.
19444
19445         * driver.c: Clean up jit_code_hash as well when using --regression.
19446
19447         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19448
19449         * basic-long.cs: Add tests for long->u4 conversion.
19450
19451 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19452
19453         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19454         that we do not depend on undefined C behavior: the order stuff
19455         gets evaluated within an expression. Fixes mono when compiled on
19456         GCC 4.
19457
19458 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19459
19460         * *-ia64.*: Ongoing IA64 work.
19461
19462         * aot.c: Lower memory usage while loading AOT methods.
19463
19464         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19465
19466         * mini.h: Bump AOT file format version.
19467
19468 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19469
19470         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19471
19472 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19473
19474         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19475         not on callee assembly). Fixed some comments.
19476
19477 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19478
19479         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19480         it gets proper disassembly.
19481         (emit_method_info): Remove some dead code.
19482
19483         * mini.c (mini_method_compile): Allways allocate the GOT var in
19484         mono_method_to_ir for emulating opcodes.
19485
19486 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19487
19488         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19489         before freeing the code memory. Fixes #74990.
19490
19491         * objects.cs: Add regression test for #74992.
19492
19493         * liveness.c: Extend live ranges of arguments to the beginning of the
19494         method. Fixes #74992.
19495
19496         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19497         so it points into the faulting instruction.
19498
19499 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19500
19501         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19502
19503         * *-ia64.*: Ongoing IA64 work.
19504
19505         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19506
19507 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19508
19509         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19510
19511         * *-ia64.*: Ongoing IA64 work.
19512
19513 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19514
19515         * basic-long.cs: Add tests for add/sub.ovf.
19516
19517         * basic.cs: Add tests for sub.ovf.
19518
19519         * *-ia64.*: Ongoing IA64 work.
19520
19521 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19522
19523         * *-ia64.*: Ongoing IA64 work.
19524
19525         * basic.cs: Add conv.ovf.i4.un test.
19526
19527 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19528
19529         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19530         
19531 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19532
19533         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19534
19535 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19536
19537         * *-ia64.*: Ongoing IA64 work.
19538
19539 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19540
19541         * trace.[ch]:
19542         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19543
19544 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19545
19546         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19547
19548 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19549
19550         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19551
19552         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19553         of a call is callable by a near call.
19554
19555 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19556
19557         * mini-ia64.c: Ongoing IA64 work.
19558
19559 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19560
19561         * genmdesc.c: Make the generated array non-static.
19562
19563         * inssel-long.brg: Fix LSHR_IMM rule.
19564
19565         * *-ia64.*: Ongoing IA64 work.
19566
19567         * *-ia64.*: Ongoing IA64 work.
19568
19569 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19570
19571         * *-ia64.*: Ongoing IA64 work.
19572
19573         * *-ia64.*: Ongoing IA64 work.
19574         
19575         * mini-ia64.c: Ongoing IA64 work.
19576
19577         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19578
19579 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19580
19581         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19582         
19583         * objects.cs basic-long.cs: Move some tests to objects.cs.
19584
19585 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19586
19587         * *-ia64.*: Ongoing IA64 work.
19588
19589         * iltests.il: Add a new test.
19590
19591         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19592         newobj. Fixes #75042.
19593
19594 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19595
19596         * *-ia64.*: Ongoing IA64 work.
19597         
19598         * *-ia64.*: Ongoing IA64 work.
19599         
19600         * *-ia64.*: Ongoing IA64 work.
19601
19602         * basic.cs objects.cs: Move tests accessing static variables as well.
19603
19604         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19605
19606 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19607
19608         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19609
19610         * driver.c: Always print failed tests.
19611
19612         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19613         frame pointer.
19614
19615         * *ia64*: Ongoing IA64 work.
19616
19617 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19618
19619         * basic.cs: Add tests for add.ovf. Fix warnings.
19620
19621 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19622
19623         * driver.c (mono_main): Avoid crash if no argument is passed to
19624         --break;  Do not use g_error, but f_printf.   And fix all other
19625         ocurrences of the same crash.
19626
19627 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19628
19629         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19630         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19631         Fixes #74742.
19632
19633 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19634
19635         * *-ia64.*: Add beginnings of IA64 backend.
19636
19637         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19638
19639 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19640
19641         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19642         Fixes #74925.
19643
19644         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19645
19646         * mini-amd64.c: Fix a warning.
19647
19648 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19649
19650         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19651         in float_neg. Fixes #74897.
19652
19653         * mini-amd64.c (emit_call): Fix another near call bug.
19654
19655 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19656
19657         * declsec.c: Keep the appdomain information in the structure. Added a 
19658         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19659         value gets overwritten).
19660         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19661         an MonoAppDomain member to MonoSecurityFrame.
19662         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19663         used in the stack walk. Now use a MonoArray which grow (double) when
19664         it gets full.
19665
19666 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19667
19668         * mini.c: Re-enabled runtime cleanup, since running threads should
19669         now properly stop when exiting.
19670
19671 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19672
19673         * mini-codegen.c: New file contaning the arch-independent local
19674         register allocator. Not used by any architectures yet.
19675
19676         * mini.h linear-scan.c: Merge some changes from the 
19677         mini-xp-local-regalloc branch.
19678
19679 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19680
19681         * mini-amd64.c (emit_call): Fix calls to native functions when the
19682         runtime is compiled as a shared library. Fixes #74756.
19683
19684         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19685         on a literal field. Fixes #74751.
19686
19687 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19688
19689         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19690
19691 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19692
19693         * objects.cs: Add missing null casting test.
19694
19695 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19696
19697         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19698         in wrapper methods. Also rename 'address' variable to 'offset'.
19699
19700 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19701
19702         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19703         warnings.
19704         
19705         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19706
19707         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19708         work on windows.
19709
19710 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19711
19712         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19713
19714 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19715
19716         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19717         just the last bytes.
19718
19719 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19720
19721         * aot.c (mono_compile_assembly): Fix warning.
19722
19723         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19724         by the _MSC_VER stuff.
19725
19726 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19727
19728         * inssel-long.brg: Fix #74588.
19729
19730         * cpu-amd64.md: Fix #74591.
19731
19732         * iltests.il: Add new regression tests.
19733
19734 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19735
19736         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19737         valuetype.
19738
19739 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19740
19741         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19742
19743         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19744         from Bill Middleton <flashdict@gmail.com>.
19745
19746 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19747
19748         * arrays.cs: Add new regression test. Fix warnings.
19749
19750 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19751
19752         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19753         and leakage in CKFINITE.
19754
19755         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19756         this to a null op since it is called on amd64 too.
19757
19758         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19759
19760         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
19761         body since this is not used on amd64.
19762         
19763         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
19764
19765         * mini-amd64.c: Remove obsolete fixmes.
19766
19767         * mini.c (print_method_from_ip): Fix debugging support.
19768
19769 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19770
19771         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
19772         so that expressions that don't give much gain are not reduced.
19773         * ssapre.h: Likewise.
19774
19775 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19776
19777         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
19778
19779         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
19780
19781         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
19782
19783 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
19784
19785         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
19786
19787         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
19788
19789 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
19790
19791         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
19792         stack touching.
19793
19794         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
19795
19796         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
19797
19798         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
19799
19800         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
19801         MONO_ARCH_USE_SIGACTION. Fixes #74252.
19802
19803         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
19804
19805         * mini-x86.c: Fix up stack overflow handling.   
19806
19807         * exceptions.cs: Add new regression test.
19808
19809 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
19810
19811         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
19812         mono_jit_thread_attach.
19813
19814         * mini.c (mono_method_to_ir): Verify called method is not abstract.
19815
19816 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19817
19818         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
19819         avoid calling constructors using callvirt.
19820
19821         * inssel.brg: Fix #74073.
19822
19823 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
19824
19825         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
19826         compilation with non-GCC compilers.
19827         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
19828         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
19829
19830 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
19831
19832         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
19833         klass->interface_offsets (will likely fix bug#74073).
19834
19835 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19836
19837         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
19838
19839 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
19840
19841         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
19842         to amd64_div_reg_size ().
19843         
19844         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
19845
19846 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
19847
19848         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
19849
19850 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19851
19852         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
19853
19854 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19855
19856         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
19857         
19858         * mini.c (mono_precompile_assembly): Load and precompile referenced
19859         assemblies as well. Fixes #74015.
19860
19861 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
19862
19863         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
19864
19865 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
19866
19867         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
19868         a lot of checks and (anyway) permissions cannot work until corlib is 
19869         loaded.
19870
19871 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
19872
19873         * mini-ppc.c: fixed ABI issue on sysv/ppc.
19874
19875 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
19876
19877         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
19878         calls (fixes bug#72824).
19879
19880 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19881
19882         * mini.c: fix tail recursion elimination (see test in bug#73936).
19883
19884 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
19885
19886         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
19887         some fp functions in sse2 mode.
19888
19889 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
19890
19891         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
19892
19893 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
19894
19895         * mini.h mini.c: Add mono_get_jit_tls_key ().
19896
19897         * mini-x86.c: Enable fast TLS support on windows.
19898
19899 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
19900
19901         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
19902         * mini.c: Check for p/invoke method when generating code. If a
19903         p/invoke method, or it's class, isn't decorated with [Suppress
19904         UnmanagedCodeSecurity] then generate code to call System.Security.
19905         UnmanagedDemand (only if the security manager is active).
19906
19907 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19908
19909         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
19910         last change as it seems to cause strange crashes.
19911         
19912 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19913
19914         * *.c: handle unsafe function pointers where needed.
19915
19916 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19917
19918         * mini.c (mono_jit_free_method): Remove the fixme too.
19919
19920 2005-03-15  Miguel de Icaza  <miguel@novell.com>
19921
19922         * mini.c: As discussed, make the code actually free the delegate
19923         thunk now, to enable the debugging of delegate problems, use
19924         MONO_DEBUG=1 when running Mono. 
19925
19926         This takes also care of parts of the leaks as seen by Joe.
19927
19928 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
19929
19930         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
19931         thread_tls_offset calculation.
19932
19933 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
19934
19935         * declsec.c: Reworked linkdemand checks for icall. The previous code
19936         was using the declaration code (untrusted) and didn't work as expected
19937         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
19938         specific case.
19939
19940 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
19941
19942         * iltests.il: Add new localloc test.
19943
19944         * mini-amd64.c: Handle large stack allocations the same way as on
19945         windows if stack overflow handling is working.
19946         
19947         * mini-amd64.c: Allocate the signal stack using mmap.
19948
19949         * mini.c (sigsegv_signal_handler): Fix reading of context.
19950
19951         * mini-exceptions.c: Fix up stack overflow handling.
19952
19953         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
19954
19955         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
19956
19957         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
19958
19959         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
19960
19961         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
19962         tramp_init functions as they are no longer needed.
19963
19964 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
19965
19966         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
19967         
19968         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
19969
19970         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
19971         
19972         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
19973         support that now.
19974
19975         * mini-ops.h: Add OP_LMUL_IMM.
19976
19977         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
19978         long mul/div opcodes as intrinsic.
19979
19980         * mini-amd64.c (emit_call): Handle the case when the callee might be
19981         an AOT method.
19982
19983 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
19984
19985         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
19986         extra safe.
19987         
19988         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
19989
19990         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
19991
19992 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
19993
19994         * mini.c (mono_codegen): Don't leak here, to help people running
19995         monogrind.
19996
19997 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
19998
19999         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
20000         conversions in sse2 mode.
20001
20002         * basic-float.cs: Add regression test.
20003         
20004         * mini-amd64.c: Reenable sse2.
20005
20006 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20007
20008         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20009
20010 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20011
20012         * driver.c: Copyright text should include 2005.
20013         
20014 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20015
20016         * cpu-amd64.md (load_membase): Fix more max lengths.
20017
20018 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20019
20020         * cpu-amd64.md (load_membase): Fix max length.
20021
20022         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20023
20024         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20025
20026         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20027         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20028
20029         * basic-float.cs: Add rounding regression test.
20030
20031         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20032
20033 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20034
20035         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20036         structures in registers for pinvoke wrappers.
20037
20038 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20039
20040         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20041
20042 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20043
20044         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20045         wrapper to mono_jit_thread_attach.
20046
20047         * mini.c (mini_jit_thread_attach): New jit icall.
20048
20049         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20050         native->managed wrappers.
20051
20052         * exceptions.cs: Add new regression test.
20053
20054         * mini.c (optimize_branches): Check regions in the cbranch to throw
20055         block case as well. Fixes #73242.
20056
20057 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20058
20059         * mini.c: thread safety fixes.
20060
20061 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20062
20063         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20064         patching stuff, since delegates use jump trampolines so there is
20065         no caller.
20066
20067         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20068         jump trampolines.
20069         
20070         * tramp-amd64.c: Fix build.
20071
20072         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20073         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20074
20075         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20076         Rename this to mono_arch....
20077         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20078
20079         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20080
20081         * mini-amd64.c (emit_call): If both the caller and the callee is
20082         guaranteed to have 32 bit addresses, emit a normal call.
20083
20084         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20085
20086         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20087         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20088         method_ptr inside delegates.
20089
20090 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20091
20092         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20093         invalidated. Fixes #73001.
20094
20095         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20096
20097         * mini-x86.c: Only use stdcall for pinvokes on windows.
20098
20099 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20100
20101         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20102         * mini-x86.c: remove unreliable __thread var offset detection,
20103         use the correct accessors and enable by default.
20104
20105 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20106
20107         * mini.c (mono_jit_free_method): Fix memory leak.
20108
20109 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20110
20111         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20112
20113 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20114
20115         * cpu-amd64.md: Fix lengths of atomic opcodes.
20116
20117 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20118
20119         * driver.c: try to not imply using ICU is any good.
20120
20121 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20122
20123         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20124         functions as inline ops.
20125
20126         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20127         some Interlocked functions as inline ops.
20128
20129         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20130
20131         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20132
20133         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20134
20135         * mini.c: Add support for OP_NOT_TAKEN.
20136
20137         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20138         structures in registers for pinvoke wrappers.
20139
20140         * mini-amd64.c: Fix warnings.
20141
20142 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20143
20144         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20145
20146         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20147
20148         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20149         address instead of loading the address from it.
20150
20151         * mini-x86.c: Add support for returning small structs in registers
20152         on Win32. Fixes part of #70864.
20153         
20154 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20155
20156         * trace.c (get_token): Improve error checking.
20157
20158 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20159
20160         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20161
20162 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20163  
20164         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20165         it can be reused for MonoClass.
20166         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20167         _LINKDEMAND.
20168
20169 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20170
20171         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20172         instead of a MonoReflectionMethod. The method information wasn't used
20173         when displaying SecurityException details (but will be now).
20174
20175 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20176
20177         * Makefile.am : windows build fix.
20178
20179 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20180
20181         * iltests.il: Add new regression test.
20182
20183         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20184         #72522.
20185
20186 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20187  
20188         * mini.c: Moved linkdemand check into helper function check_linkdemand
20189         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20190         LDFTN, LDVIRTFTN).
20191
20192 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20193
20194         * declsec.c: Added statistics counter for different kinds of 
20195         LinkDemands.
20196         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20197         (and commented) declaration.
20198         * mini.c: Added statistics counter for security Demand code 
20199         generation. Added display of security statistics.
20200
20201 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20202
20203         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20204         Fix compilation errors under gcc-2.95.
20205
20206 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20207
20208         * mini.c, driver.c: Use the new jit trampoline hashtable
20209
20210 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20211
20212         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20213
20214 2005-02-11  Martin Baulig  <martin@ximian.com>
20215
20216         * debug-mini.c (mono_debug_close_method): Free the line number array.
20217
20218 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20219
20220         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20221         icalls.
20222
20223         * mini.h: Bump AOT file format version. 
20224
20225 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20226
20227         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20228         APTC and P/Invoke.
20229         * declsec.h: Added macros to get/set lazyly initialized security 
20230         informations about assemblies. Added new enum for different type of
20231         possible LinkDemand violation. Added function to check LinkDemands.
20232         * mini.h: Added a field to MonoCompile to hold any security violation
20233         detected when JITting a method (so it can be thrown later).
20234         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20235         and CEE_CALLVIRT. Added code to throw exception at the end of
20236         mini_method_compile (note: the exception is unhandled right now).
20237
20238 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20239
20240         * mini.c, jit-icalls.c: use the managed implementation of
20241         memset for initobj and memset, to avoid managed <-> unmanaged
20242         transitions.
20243
20244 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20245
20246         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20247         optimization if it would need a GOT var.
20248
20249         * basic.cs: Add tests for constant propagation and switch statements.
20250
20251         * ssa.c: Fix out-of-range constant propagation and switch statements.
20252
20253 2005-02-09    <vargaz@freemail.hu>
20254
20255         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20256
20257 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20258
20259         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20260
20261 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20262
20263         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20264
20265 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20266
20267         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20268         arithmetic operations.
20269
20270 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20271
20272         * mini-ppc.c: add a workaround for broken user code that
20273         DllImports vararg functions with non-vararg signatures.
20274
20275 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20276
20277         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20278         meaningfull error message for assemblies written in Managed C++.
20279
20280         * tramp-amd64.c mini-amd64.h: Add support for 
20281         create_trampoline_from_token ().
20282
20283         * aot.c mini-x86.c abcremoval.c: Applied patch from
20284         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20285
20286 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20287
20288         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20289         which takes a MonoImage/token as parameter instead of a MonoMethod.
20290
20291         * aot.c: Use the new trampoline for initializing vtables.
20292
20293         * aot.c: Add support for ldfld/stfld_remote wrappers.
20294
20295         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20296         rules for compare <MEM>, IMM.
20297
20298         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20299
20300         * aot.c: Handle inherited finalizers correctly.
20301
20302 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20303
20304         * inssel.brg (stmt): Add a missing _setup_... ().
20305
20306         * aot.c: Save some parts of the class state to the AOT file and use it
20307         to recompute that state when a class is initialized.
20308
20309         * mini.c: Install AOT hooks into the runtime.
20310
20311         * mini.h: Bump AOT file format version.
20312         
20313         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20314         Fixes #72148.
20315
20316         * iltests.il: Add new test.
20317
20318 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20319
20320         * mini.c: fix typo.
20321
20322 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20323
20324         * mini.c: setup the statistical profiler in the thread attach
20325         callback to cope with the new single thread code.
20326
20327 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20328
20329         * mini-ppc.c: ensure we have enough room for the profiler
20330         calls (fixed bug#72084).
20331
20332 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20333
20334         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20335         it.
20336
20337 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20338
20339         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20340
20341 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20342
20343         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20344         to succesfully execute parrotbench).
20345         * ssapre.h: Likewise.
20346
20347 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20348
20349         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20350         variable for stores to method arguments (fixes a SSAPRE issue).
20351
20352 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20353
20354         * mini.c: handle value types in dup, fixes gen-112.cs.
20355
20356 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20357
20358         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20359         sequence for calls in dynamic methods to avoid thunks.
20360
20361 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20362
20363         * mini.c: correctly remove dynamic methods from the hashtable.
20364
20365 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20366
20367         * driver.c: Disabled SSAPRE until fix the bug that appears
20368         in IronPython's parrotbench.
20369
20370 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20371
20372         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20373
20374         * mini.c (mono_method_to_ir): Revert the previous change.
20375         
20376         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20377         when AOT compiling.
20378
20379         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20380         mono_jit_info_table_find () etc. when running under valgrind.
20381
20382         * inssel.brg: Fix warnings.
20383
20384         * mini-exceptions.c: Fix warnings.
20385
20386 2005-01-31  Martin Baulig  <martin@ximian.com>
20387
20388         * driver.c (compile_all_methods_thread_main): Don't try to compile
20389         generic methods or anything which has type parameters.
20390
20391 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20392
20393         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20394
20395         * TestDriver.cs: Add --verbose flags.
20396
20397         * graph.c ssa.c: Fix 64 bit warnings.
20398         
20399         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20400         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20401         Fix 64 bit warnings.
20402
20403         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20404         variable not spotted by gcc.
20405         
20406         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20407         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20408         X86_COMPARE_MEMBASE opcodes.
20409
20410         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20411
20412 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20413
20414         * *: MonoMethod->signature might be NULL now. You *MUST* use
20415         mono_method_signature.
20416
20417 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20418
20419         * driver.c (compile_all_methods_thread_main): Compile the methods
20420         without invoking cctors.
20421
20422 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20423
20424         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20425         * basic-calls.cs: test for the above.
20426
20427 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20428
20429         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20430         MonoJitInfo changes.
20431
20432 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20433
20434         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20435         eagerly if it contains dynamic methods.
20436         
20437         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20438
20439         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20440         trace, it is now computed by an icall from trace_ips.
20441         
20442         * mini-exceptions.c: Fix a warning.
20443
20444 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20445
20446         * mini-exceptions.c: don't bother getting stack trace info if
20447         it's not going to be used.
20448
20449 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20450
20451         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20452         ssapre-mini-ops.h.
20453
20454 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20455
20456         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20457
20458         * aot.c: Avoid calling mono_method_get_header () if not needed.
20459
20460         * mini.h: Bump AOT file format version.
20461         
20462         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20463
20464         * mini.c (mono_print_tree): Print more info for calls.
20465
20466 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20467
20468         * declsec.h: Remove warning by adding missing include for marshal.h
20469
20470 2005-01-26  Martin Baulig  <martin@ximian.com>
20471
20472         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20473         `ip' twice.
20474
20475 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20476
20477         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20478         flags.
20479
20480         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20481
20482         * aot.c (mono_compile_assembly): Fix a warning.
20483
20484 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20485
20486         * declsec.c: Look for security attributes on the original MonoMethod 
20487         (and not the wrapped one). This fix permissions on icalls.
20488
20489 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20490
20491         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20492
20493         * mini.c (mono_allocate_stack_slots): Add a fixme.
20494
20495         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20496
20497 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20498
20499         * inssel.brg: optimize casts of sealed types (more
20500         optimizations waiting for fixes in remoting).
20501
20502 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20503
20504         * inssel.brg (stmt): Add another dummy rule.
20505
20506         * driver.c: Fix warnings.
20507
20508         * driver.c (mono_main): If running under valgrind, instruct glib to use
20509         the system allocation functions so valgrind can track the memory
20510         allocated by the g_... functions.
20511
20512         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20513
20514         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20515
20516         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20517
20518         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20519         variables in try regions.
20520
20521         * mini.c (mini_method_compile): Don't disable optimizations on large
20522         methods when AOT compiling.
20523
20524         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20525         allocate stack slots. Not yet used.
20526
20527 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20528
20529         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20530
20531 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20532
20533         * mini-ppc.c: make the branch info relative as the code
20534         buffer can be reallocated.
20535
20536 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20537
20538         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20539         * driver.c: Removed the AOT/security restriction. Now initialize the
20540         security manager (in metadata) if --security is used.
20541         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20542         rather than the pointer to declarative security, when AOT is used.
20543
20544 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20545
20546         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20547         basic blocks, reduced intrinsic exception throwing code size.
20548
20549 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20550
20551         * driver.c (mini_usage): Reorder the usage screen.
20552
20553 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20554
20555         * mini.c (mono_resolve_patch_target): Fix warning.
20556
20557 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20558
20559         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20560         previous patch.
20561
20562         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20563
20564         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20565         breaks the amd64 build.
20566
20567         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20568         register allocation. Fixes #71454.
20569
20570         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20571
20572         * arrays.cs: Add new regression test.   
20573
20574 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20575
20576         * ssapre.c: Turned usage of snprintf to GString.
20577         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20578         (I left it on by mistake in my previous commit).
20579
20580 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20581
20582         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20583         on cond branch optimization (fixes bug# 71515).
20584
20585 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20586
20587         * abcremoval.c: Fixed bug 71062.
20588         * abcremoval.h: Likewise.
20589
20590 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20591
20592         * mini.c: Added a new functionality to optimize_branches, the removal
20593         of useless basic blocks, and fixed some problem in the removal of
20594         critical edges; some utility functions added for both purposes.
20595         * ssapre.c: Added complex expression support, and fixed bug 70637.
20596         * ssapre.h: Likewise.
20597         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20598         enabled in SSAPRE.
20599         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20600         * driver.c: Re-enabled SSAPRE.
20601
20602 2005-01-19  Martin Baulig  <martin@ximian.com>
20603
20604         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20605         the result of mono_get_method_constrained().
20606
20607 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20608
20609         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20610         manager.
20611
20612 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20613
20614         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20615         be detected.  Fixes #59296.
20616
20617 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20618
20619         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20620         which can happen. Fixes #71361.
20621
20622 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20623
20624         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20625         manager.
20626
20627 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20628
20629         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20630         appdomain-unload.exe to fail.
20631         
20632         * mini.c: Fix some memory leaks.
20633
20634 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20635
20636         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20637         Fixed bug and sped up some codepaths.
20638
20639 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20640
20641         * mini.c: Fix some memory leaks.
20642
20643         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20644         conversion.
20645
20646         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20647
20648         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20649         #71320.
20650
20651         * iltests.il: Add regression test for #71320.
20652
20653 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20654
20655         * mini.c (mono_codegen): Fix installation of profiler hooks.
20656
20657         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20658
20659 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20660
20661         * mini.h, mini.c, cfold.c: optimize access to enum
20662         readonly fields, too. Eval conditional branches if possible
20663         to perform unreachable code removal in more cases.
20664
20665 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20666
20667         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20668
20669         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20670         code manager.
20671
20672         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20673         WinXP DEP. Fixes #71244.
20674
20675 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20676
20677         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20678
20679 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20680
20681         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20682
20683 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20684
20685         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20686         changes.
20687
20688         * mini.h: Bump AOT version.
20689
20690         * mini.h (MonoCompile): Change exvar to a hash table.
20691
20692         * mini.c: Allocate a separate exvar for each handler block.
20693
20694         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20695
20696         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20697         ex var with the pending exception and only throw if the two are equal.
20698         Fixes #68552.
20699         
20700         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20701
20702         * mini-x86.c: Fix warnings.
20703
20704         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20705         used by all the ports now.
20706
20707         * aot.c: Add write-symbols and save-temps options.
20708
20709 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20710
20711         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20712
20713 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20714
20715         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20716         operations.
20717
20718         * tramp-s390.c: Check vtable slot belongs to the domain.
20719
20720         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20721         as per other platforms.
20722
20723         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20724
20725 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20726
20727         * driver.c: we don't run the Main() code in a subthread anymore.
20728
20729 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20730
20731         * mini.c: added experimental rtc support in the statistical
20732         profiler: if the user has the permission, more accurate statistics
20733         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20734         The MONO_RTC value must be restricted to what the linux rtc allows:
20735         power of two from 64 to 8192 Hz.
20736
20737 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20738
20739         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20740
20741 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20742
20743         * mini-ppc.c: better icache flush for smp.
20744
20745 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20746
20747         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20748
20749         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20750         amd64 port, not yet used.
20751
20752 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20753
20754         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20755         a struct type.
20756
20757 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20758
20759         * driver.c: Added --security option to activate the security manager.
20760         Right now this will allow code generation for declarative demands and
20761         is disabled when AOT is specified.
20762         * mini.c: Add code generation for declarative security demands.
20763         * mini.h: Add mono_use_security_manager as an extern gboolean.
20764
20765 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20766
20767         * aot.c (mono_compile_assembly): Speed up compilation a bit by
20768         emitting more dense assembly code.
20769
20770         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
20771         exception throwing stuff.
20772
20773 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20774
20775         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
20776         dead code.
20777
20778         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
20779         left in by mistake.
20780
20781         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
20782         fixed.
20783
20784         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
20785
20786         * tramp-*.c: Only patch vtable slots if the object is in the current
20787         domain. Fixes appdomain-unload.exe.
20788
20789         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
20790         
20791         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
20792         x86 branch.
20793
20794 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20795
20796         * mini.c (reverse_branch_op): New helper function.
20797
20798         * mini.c (optimize_branches): Run the new optimization only on 
20799         platforms which support it. Also reverse all kinds of branches.
20800
20801         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
20802
20803         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
20804         a throw statement.
20805
20806         * mini.c (optimize_branches): Reverse not-equals branches if the false
20807         bblock is a throw. This happens a lot of time with argument checking in
20808         corlib.
20809
20810         * mini.c (mono_codegen): Add support for placing basic blocks after
20811         the function epilogue.
20812
20813         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
20814         function epilogue.
20815         
20816 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
20817
20818         * mini.c (setup_stat_profiler): Only set this up if the platform
20819         supports ITIMER_PROF.
20820
20821 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20822
20823         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
20824         previous patch.
20825
20826         * inssel.brg: Fix a warning.
20827
20828 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
20829
20830         * mini.c: added support for statistical profiler 
20831         (run with: --profile=default:stat).
20832
20833 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
20834
20835         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
20836
20837         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
20838
20839         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
20840         related to global registers from the amd64 port.
20841
20842 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
20843
20844         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
20845
20846         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
20847         with global registers.
20848         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
20849
20850         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
20851
20852 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
20853
20854         * debug-mini.c (encode_value): Fix off-by-one.
20855
20856         * aot.c (encode_value): Likewise.
20857
20858         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
20859
20860 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
20861
20862         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
20863         AOT.
20864
20865         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
20866         
20867         * aot.c (emit_method_info): Increase size of temp buffer.
20868
20869         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
20870         the AOT case.
20871
20872 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
20873
20874         * aot.c (emit_method_info): Fix build.
20875         
20876         * aot.c: Further rework of the AOT file format to reduce the size of
20877         the method info data.
20878
20879         * mini.h: Bump AOT file format version.
20880
20881 2004-12-27  Martin Baulig  <martin@ximian.com>
20882
20883         * mini.c (mini_get_method): New static method; call
20884         mono_get_method_full() and mono_get_inflated_method().
20885         (mono_method_to_ir): Use mini_get_method() instead of
20886         mono_get_method_full(). 
20887
20888 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
20889
20890         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
20891
20892 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
20893
20894         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
20895
20896         * inssel-amd64.brg: Add some optimization rules.
20897
20898 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
20899
20900         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
20901         standard not GC'd stuff is fine.
20902
20903 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
20904
20905         * aot.c: Rework the AOT file format to get rid of most of the global
20906         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
20907
20908         * mini.h: Bump AOT file format version.
20909         
20910 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
20911
20912         * mini.h: Bump AOT file format version.
20913
20914         * aot.c (mono_aot_is_got_entry): New function to determine if an 
20915         address is inside a GOT.
20916
20917         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
20918
20919         * cpu-pentium.md: Increase the maximum size of some instructions which
20920         might involve a got access.
20921         
20922         * mini.c (get_method_from_ip): Another debug helper function.
20923
20924         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
20925         when got var accesses are created during the decompose phase.
20926
20927         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
20928
20929         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
20930         argument mini_compile_method and to MonoCompile, and use this to
20931         determine whenever a given method is compiled for AOT. This allows the
20932         other methods compiled during AOT compilation to be free of AOT stuff,
20933         so the backends does not need to add special support for them by
20934         creating a fake GOT etc.
20935
20936         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
20937         longer needed.
20938
20939 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20940
20941         * mini.c (mono_method_to_ir): It turns out that some of the
20942         x-appdomain wrappers are lax with types, so just ignore this for
20943         all wrappers.
20944
20945         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
20946         at the vtable->klass. If it is non-shared code we can just use the
20947         vtable.
20948
20949 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
20950
20951         * mini-ppc.c: access MonoDomain from tls, too.
20952
20953 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
20954
20955         * declsec.c: Removed unused variable (and related warning ;-)
20956
20957 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20958
20959         * iltests.il: New test for LDELEMA on an array of ref types.
20960
20961         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
20962         all ldelema's on reftypes.
20963         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
20964         it was the wrong place to put it.
20965
20966         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
20967         register to pop to make this cleaner, at the request of Paolo.
20968
20969 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20970
20971         * mini-ops.h (OP_GETHASHCODE): New op.
20972
20973         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
20974
20975         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
20976         operation.
20977
20978         For a microbenchmark, this reduces the cost of Hashtable.get_Item
20979         by 25%.
20980         
20981         * mini-x86.c (mono_arch_output_basic_block): Rather than
20982
20983         add ebp, 4
20984
20985         Emit
20986
20987         pop edx
20988
20989         The first is 3 bytes while the second is 1. This saves 36 kb on
20990         mscorlib, quite a big saving. When bootstraping mcs, I was able to
20991         see a small boost because of icache locality.
20992
20993         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
20994
20995 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
20996
20997         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
20998         started code sharing with the generic code.
20999
21000 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
21001
21002         * mini-ppc.c, cpu-g4.md: added code for direct access to
21003         tls data slots.
21004
21005 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
21006
21007         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21008          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21009         to OP_TLS_GET.
21010
21011 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21012
21013         * declsec.c|h: Added functions to cache the declarative stack modifiers
21014         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21015         structure.
21016         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21017         created. Register internal calls for System.Security.SecurityFrame::
21018         _GetSecurityFrame and _GetSecurityStack.
21019         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21020         the definitions for the new stack walk/callback mechanism.
21021         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21022         first security frame for LinkDemands and InheritanceDemands) and
21023         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21024         from lupus.
21025         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21026         walk initialization (lupus).
21027
21028 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21029
21030         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21031         idiom.
21032         (handle_loaded_temps): Do not create a temporary variable for
21033         things that we know are temps. They will never be modified.
21034         (mono_spill_call): Set MONO_INST_IS_TEMP
21035         (mono_emulate_opcode): ditto
21036         (emit_tree): ditto
21037         (mono_method_to_ir.CEE_DUP): ditto
21038
21039 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21040
21041         * mini.c (type_to_eval_stack_type): Make this handle the void type
21042         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21043         (emit_tree): use ip_in_bb to special case some common idioms
21044         Update all callers to pass in the IP.
21045         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21046
21047         This gives us a nice 2% speedup in mcs bootstrap.
21048
21049         * mini-x86.c (peephole_pass): Peephole pass to make
21050         mov  [foo], eax
21051         push [foo]
21052
21053         into
21054
21055         mov [foo], eax
21056         push eax
21057
21058         * mini.c (ip_in_bb): new method.
21059         (mono_method_to_ir): use this method rather than doing the hash
21060         lookup ourselves.
21061
21062         * linear-scan.c (mono_linear_scan): When expiring actives, you
21063         don't need to keep around variables that expire on this
21064         instruction. This makes it so that:
21065              a = b + 1
21066         will turn into:
21067              store (ebx add (ebx, 1))
21068         which will become
21069              add ebx, 1
21070
21071 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21072
21073         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21074         combination to avoid doing two copies. Fix up problems with previous
21075         patch.
21076
21077         * mini.c: Fix 64 bit warnings.
21078
21079         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21080
21081 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21082
21083         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21084         changes from the x86 code.
21085
21086         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21087
21088 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21089
21090         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21091         throwing code to reduce its size, unify the AOT and non-aot code and 
21092         get rid of relocations in the AOT case.
21093
21094         * mini-x86.h mini.c exceptions-x86.c 
21095         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21096         raise corlib exceptions which doesn't require relocations in the 
21097         caller.
21098
21099         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21100
21101 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21102
21103         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21104         needed.
21105
21106         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21107         in the AOT case.
21108
21109 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21110
21111         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21112         with add function when used from Inc/dec atomic 
21113         functions. Re-enabled optimization on x86.
21114         * mini-ops.h: renamed atomic_add functions to
21115         allow _add to match the Interlocked::Add and
21116         _add_next to match Interlocked::Inc/Dec.
21117
21118 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21119
21120         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21121         linking of BBs to the end BB, and enabled SSAPRE also with
21122         consprop and copyprop (which was prevented by that bug).
21123
21124 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21125
21126         * mini-x86.c: disabling the Interlocked optimizing code. 
21127
21128 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21129
21130         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21131         file version check.
21132         
21133 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21134
21135         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21136         interlocked optimization due lack of support on x86, rewrote 
21137         exchange to take into account that base may be in eax.
21138         
21139         xsp works again; activated Interlocked optimizing code.
21140         
21141 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21142
21143         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21144
21145 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21146
21147         * mini-ops.h: Add new opcodes.
21148
21149         * mini.h: Add new patch types. Add got_var to MonoCompile.
21150
21151         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21152         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21153         make it work with all kinds of patchable code.
21154
21155         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21156         address of the GOT, and referencing entries in the GOT.
21157
21158         * mini.c: Add code to load the GOT address if needed by an opcode.
21159
21160         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21161         independent AOT code on the x86 using an elf-style Global Offset Table.
21162
21163 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21164
21165         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21166
21167 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21168
21169         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21170         when running xsp.
21171
21172 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21173
21174         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21175         of Interlocked:Increment/Decrement/Add as inline ops.
21176         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21177
21178 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21179
21180         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21181         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21182
21183 2004-12-12  Duncan Mak  <duncan@ximian.com>
21184
21185         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21186         again. `patch_info->table_size' is no longer valid after Zoltan's
21187         commit #37636.
21188
21189 2004-12-12  Martin Baulig  <martin@ximian.com>
21190
21191         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21192         if we are the "real" method, ie. not an inlined method inside it.
21193
21194 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21195
21196         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21197         before we look in the special fields table. This fixes
21198         ../tests/thread-static-init.cs.
21199
21200 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21201
21202         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21203         for Array get_Rank and get_Length. Fixes bug #70465.
21204
21205 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21206
21207         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21208         separate structure to reduce the size of MonoJumpInfo.
21209
21210 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21211
21212         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21213
21214 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21215
21216         * mini.c (mini_get_inst_for_method): Changed to allow ports
21217         to return a MonoInst instead of opcode 
21218         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21219         
21220         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21221         Allow ports to return a created MonoInst instead of op-code, will enable
21222         new optimizations.
21223         (renamed mini_get_opcode_for_method to better reflected the functionality)
21224
21225 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21226
21227         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21228
21229 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21230
21231         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21232         Fixes #69985.
21233
21234 2004-12-08  Martin Baulig  <martin@ximian.com>
21235
21236         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21237         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21238
21239 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21240
21241         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21242         correctly.
21243
21244         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21245         arithmetic.
21246
21247 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21248
21249         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21250
21251 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21252
21253         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21254         bug introduced by the previous patch.
21255
21256 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21257
21258         * mini-ppc.c, objectc.cs: handle large structs passed by value
21259         (fixes bug #69972).
21260
21261 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21262
21263         * mini-ppc.c: OP_ARGLIST implementation from
21264         Geoff Norton  <gnorton@customerdna.com>.
21265
21266 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21267
21268         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21269         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21270
21271 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21272
21273         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21274
21275 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21276
21277         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21278         support.
21279
21280 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21281
21282         * mini-sparc.c: Zero out localled-ed memory.
21283
21284         * iltests.il: Add tests for zeroing out localloc-ed memory.
21285
21286 2004-12-04  Martin Baulig  <martin@ximian.com>
21287
21288         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21289         mono_method_get_signature_full().       
21290
21291 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21292
21293         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21294         and some utility functions (always for SSAPRE), integrated SSAPRE.
21295         * mini.h: Likewise.
21296         * driver.c: Added ssapre option.
21297         * ssa.c: Small fix on OP_ARG handling.
21298         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21299         * Makefile.am: Likewise.
21300
21301 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21302
21303         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21304         now in the xp code.
21305
21306         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21307         icall.
21308
21309 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21310
21311         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21312         
21313         * cpu-s390.md : Increase instruction length of oparglist.
21314
21315         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21316
21317 2004-11-30  Martin Baulig  <martin@ximian.com>
21318
21319         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21320         virtual generic methods.  We call a special helper_compile_generic_method()
21321         icall to retrieve the method from the vtable, inflate and compile
21322         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21323
21324         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21325
21326 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21327
21328         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21329
21330 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21331
21332         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21333         Fixes #69929.
21334
21335 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21336
21337         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21338         platforms with PIC aot.
21339
21340 2004-11-28  Martin Baulig  <martin@ximian.com>
21341
21342         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21343         Fixes gen-112.cs.
21344
21345 2004-11-28  Martin Baulig  <martin@ximian.com>
21346
21347         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21348         the result of mono_type_get_underlying_type() to check whether
21349         we're byref.
21350
21351 2004-11-26  Martin Baulig  <martin@ximian.com>
21352
21353         * mini.c
21354         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21355         in the g_assert().
21356
21357 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21358
21359         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21360         the same way as the other arguments so they won't get clobbered.
21361
21362         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21363         calls through R11 since it is clobbered by the trampoline code.
21364
21365 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21366
21367         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21368         pick up in-tree mscorlib.dll.
21369
21370 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21371
21372         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21373
21374         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21375         runtime data/code are now stored in a table similar to the GOT in ELF. 
21376         This allows the code itself to be position independent.
21377
21378         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21379         loading changes.
21380
21381         * aot.c: Attach ELF type (object/function) directives to all global
21382         symbols.
21383
21384         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21385
21386         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21387
21388         * mini-amd64.h: Turn on PIC AOT code.
21389
21390         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21391         returning the offset within an OP_AOTCONST instruction where the GOT
21392         offset needs to be added.
21393
21394         * mini.h: Bump AOT file format version.
21395
21396 2004-11-25  Martin Baulig  <martin@ximian.com>
21397
21398         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21399         uninflated generic methods.
21400
21401 2004-11-25  Martin Baulig  <martin@ximian.com>
21402
21403         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21404
21405 2004-11-24  Martin Baulig  <martin@ximian.com>
21406
21407         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21408         original klass (this only applies for generic instances).
21409
21410 2004-11-24  Martin Baulig  <martin@ximian.com>
21411
21412         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21413         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21414         that array).
21415
21416 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21417
21418         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21419         localloc. Fixes #69678.
21420
21421         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21422         
21423 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21424
21425         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21426         used SSE registers on pinvoke calls. Fixes #69774.
21427
21428 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21429
21430         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21431         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21432
21433 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21434
21435         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21436         Refer directly to the mcs/ tree.
21437
21438 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21439
21440         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21441         Check if a trampoline for a synchronized method is required. 
21442
21443 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21444
21445         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21446         with localloc if needed. Throe arithmetric exception in
21447         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21448         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21449
21450 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21451
21452         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21453         types before switching on type.  Fixes #69622.
21454
21455 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21456
21457         * Makefile.am (check-local): New.  Integrate into 'make check'.
21458         (MCS,RUNTIME): Define using in-tree mono and mcs.
21459         (ILASM): New.
21460         (%.exe): Use $(ILASM).
21461
21462 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21463
21464         * mini-ppc.c: adjust initial prolog size (bug #69691).
21465
21466 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21467
21468         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21469         #69664.
21470
21471 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21472
21473         * Makefile.am (clean-local): Rename from 'clean'.
21474
21475 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21476
21477         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21478         to mono_arch_is_int_overflow. 
21479         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21480         SIGFPE events.
21481
21482 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21483
21484         * declsec.c|h: New files to support declarative security attributes.
21485         Added function to check if a method has (applicable) security.
21486         * mini.c|h: Add check for declarative security attributes in
21487         mono_method_check_inlining.
21488         * Makefile.am: Added declsec.c and declsec.h to the build.
21489
21490 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21491
21492         * mini.c, mini.h: update to keep dynamic code info per-domain.
21493
21494 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21495
21496         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21497         (mini_init): Get rid of it from here too.
21498
21499 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21500
21501         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21502         implemented OP_RETHROW (patch by Geoff Norton
21503         <gnorton@customerdna.com>).
21504
21505 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21506
21507         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21508         between appdomains.  Fixes appdomain-unload on PPC.
21509
21510 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21511
21512         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21513         mini-exceptions.c: handle the new wrapper types.
21514         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21515         token value as a MonoClass* when compiling a wrapper.
21516         mono_jit_create_remoting_trampoline now takes an additional
21517         MonoRemotingTarget parameter.
21518         
21519 2004-11-10  Martin Baulig  <martin@localhost>
21520
21521         * mini.c (mono_method_to_ir): Use `generic_container->context'
21522         rather than creating a new one.
21523
21524 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21525
21526         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21527
21528         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21529
21530 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21531
21532         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21533         the experimental aot cache stuff.
21534
21535 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21536
21537         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21538         mini-exceptions.c: update to exception clause structure changes.
21539
21540 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21541
21542         * exceptions-x86.c (throw_exception): Fix warnings.
21543
21544         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21545         for OP_RETHROW.
21546
21547 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21548
21549         * exceptions-sparc.c (get_throw_exception): Really fix this.
21550
21551 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21552
21553         * tramp-*.c: we no longer support icalls without wrappers, so
21554         a bit of code can be removed here
21555
21556 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21557
21558         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21559         patch.
21560
21561         * cpu-sparc.md: Add op_rethrow.
21562
21563         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21564
21565         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21566
21567         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21568         * mini-ops.h: Add OP_RETHROW.
21569
21570         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21571
21572         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21573
21574 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21575         
21576         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21577         Makes the output much easier to read
21578
21579 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21580
21581         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21582         prevents another huge leak when compiling with ssa. Secondly, the
21583         performance of doing this rather than freeing the lists is much
21584         better. GList does a lock every time you allocate a list link,
21585         so that it can use a memory pool. So, it is better to just use
21586         a memory pool of our own.
21587         
21588         * ssa.c, linear-scan.c: replace g_list_remove_link with
21589         g_list_delete.  The remove one does not free the GList, so we were
21590         leaking memory. On -O=all --compile-all with corlib, this cut down
21591         3 MB of allocations.
21592
21593 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21594
21595         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21596
21597         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21598
21599         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21600         into a new function mono_create_jit_trampoline ().
21601
21602 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21603
21604         * trace.c (get_spec): Allow tracing of classes without a namespace.
21605
21606 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21607
21608         * mini.c: Fix pointer overwrite in mini_method_compile.
21609
21610 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21611
21612         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21613         The darwin ABI needs some special handling for 1 and 2 byte structs
21614         Lets use lbz/lhz instead of lwz everywhere.
21615         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21616         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21617         Use stb/sth for the former, and put the latter always on stack instead of in
21618         argument registers.
21619
21620 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21621
21622         * trace.c (is_filenamechar): Add '_'.
21623
21624 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21625
21626         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21627
21628         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21629
21630 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21631
21632         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21633         depends on libmonogc. Fixes #68805.
21634
21635 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21636
21637         * mini.c (mono_jit_free_method): Provide extra information for
21638         this error.  Currently this leaks, but will be turned into a
21639         developer option in the future.
21640
21641 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21642
21643         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21644
21645 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21646
21647         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21648         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21649         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21650
21651 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21652
21653         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21654         trampolines for AOT code.
21655
21656 2004-10-22    <vargaz@freemail.hu>
21657
21658         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21659         constructed types. Fixes #68136.
21660
21661 2004-10-21  Martin Baulig  <martin@ximian.com>
21662
21663         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21664         if it returns true, unwind the stack to the call instruction.
21665
21666 2004-10-21    <vargaz@freemail.hu>
21667
21668         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21669
21670         * mini.h: Bump AOT version number.
21671
21672         * objects.cs: Add another test for unbox trampolines.
21673
21674         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21675         valuetype methods.
21676
21677 2004-10-20    <vargaz@freemail.hu>
21678
21679         * driver.c: Add SHARED to the set of optimizations tested.
21680
21681         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21682
21683         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21684         used by CEE_NEWARR.
21685
21686         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21687
21688 2004-10-20  Martin Baulig  <martin@ximian.com>
21689
21690         * mini-exceptions.c (mono_handle_exception): Call
21691         mono_debugger_handle_exception() to tell the debugger about
21692         catch/finally clauses.
21693
21694 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21695
21696         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21697
21698         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21699         #68447.
21700
21701 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21702
21703         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21704         methods as their native size, fixed bug #57543, #57545.
21705         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21706         This saves a temporary register and mullw call down into 1 (minor perf
21707         increase for cases like sum = sum * 5;  This use to translate into:
21708             li r11,5
21709             mullw r28,r28,r11
21710         It now translates to
21711             mulli r28,r28,5
21712
21713 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21714
21715         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21716         #68388.
21717
21718 2004-10-11  Martin Baulig  <martin@ximian.com>
21719
21720         * mini.c (mono_method_to_ir): If we're a generic method, get the
21721         MonoGenericContainer from our MonoMethodNormal and create a
21722         MonoGenericContext from it.
21723
21724 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21725
21726         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21727
21728         * basic-long.cs: Add test for checked i8->i2 cast.
21729
21730 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21731
21732         * inssel-ppc.brg: added a couple of speedup rules.
21733
21734 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21735
21736         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21737         to speed up rebuilds.
21738
21739 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21740
21741         * mini-s390.c: Minor fix to OP_OR_IMM.
21742
21743 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21744
21745         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21746         better. Fixes appdomain-unload.exe on sparc.
21747
21748 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21749
21750         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21751         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21752         see bug 67324.
21753
21754 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21755
21756         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21757
21758 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21759
21760         * mini.c: Always generate a field read/write wrapper for members
21761         of the class MarshalByRefObject since the actual instance could
21762         be a CBO.
21763
21764 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21765
21766         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
21767
21768 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21769
21770         * driver.c mini.h trace.c: Move the setting of the main assembly into
21771         a separate function called mono_trace_set_assembly () and call it after
21772         actually loading the main assembly. Fixes #66872.
21773
21774 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21775
21776         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
21777         using the code manager.
21778
21779 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21780
21781         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
21782
21783 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21784
21785         * cpu-amd64.md: Fix bug in previous patch.
21786         
21787         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
21788         #66650.
21789
21790 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
21791
21792         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21793         mini-exceptions.c: updates for changed stack walk interface.
21794
21795 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21796
21797         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
21798
21799 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
21800
21801         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
21802
21803 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
21804
21805         * driver.c (mini_regression_list): Do not call mono_assembly_close 
21806         since assemblies can't be unloaded.
21807         
21808 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21809
21810         * cpu-amd64.md: Fix more instruction lengths.
21811
21812         * cpu-amd64.md: Fix lengths of some instructions.
21813
21814 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
21815
21816         * inssel.brg: Make the array ldelema check aot friendly.
21817
21818 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21819
21820         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
21821
21822         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
21823
21824 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
21825
21826         * mini-x86.c: Fix build.
21827
21828         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
21829         mono_type_get_underlying_type () helper function to simplify code.
21830         
21831 2004-09-09  Martin Baulig  <martin@ximian.com>
21832
21833         * mini-amd64.c: Don't access `type->data.klass' directly, call
21834         mono_class_from_mono_type() instead since the type may be a
21835         generic instance.
21836
21837 2004-09-09  Martin Baulig  <martin@ximian.com>
21838
21839         * mini-amd64.c (get_call_info): Fix support for generic instances.
21840         (add_valuetype): Use mono_class_from_mono_type() to get the class
21841         since we can be a generic instance.
21842
21843 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
21844
21845         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
21846
21847 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21848
21849         * liveness.c: reset spill costs on each scan: bug 62107
21850
21851 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
21852
21853         * exceptions-sparc.c (mono_arch_find_jit_info): remove
21854         unnecessary line that doesn't compile
21855
21856 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
21857
21858         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
21859         trampolines, make them call an error function so people can fix their
21860         code.
21861
21862 2004-09-06  Martin Baulig  <martin@ximian.com>
21863
21864         * mini.c (mono_method_to_ir): When initializing locals, handle a
21865         generic instances like a valuetype if it's a valuetype and like a
21866         class if it's a class.
21867
21868 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21869
21870         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
21871         stack. Fixes #64674.
21872
21873         * exceptions.cs: Add test for unwinding of call arguments.
21874
21875 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
21876
21877         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
21878         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
21879         set the carry/borrow flag). The sparc and s390 implementations
21880         can now use optimized versions (and simplify the code). ppc bugfixes.
21881
21882 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21883
21884         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
21885
21886 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
21887
21888         * inssel-amd64.brg: Remove leftover 32 bit rule.
21889
21890         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
21891
21892 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
21893
21894         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
21895         mono_arch_find_jit_info functions into a new function. Fix a memory
21896         leak.
21897
21898         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
21899         refactored code.
21900         
21901 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21902
21903         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
21904         as well.
21905         
21906         * exceptions.cs: Add array size tests.
21907
21908         * mini.c: Allocate a separate icall wrapper for each arity of 
21909         mono_array_new_va. Fixes #59509.
21910
21911         * exceptions.cs: Add testcase for 64578.
21912
21913         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
21914
21915         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
21916         
21917 2004-09-02  Martin Baulig  <martin@ximian.com>
21918
21919         * mini.c (mono_method_to_ir): When initializing the locals, call
21920         handle_initobj() on the generic instance itself, not its
21921         underlying type.
21922
21923 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21924
21925         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
21926         MonoJitInfo for dynamic methods.
21927
21928         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
21929
21930         * mini.c: Add support for freeing JIT data for dynamic methods.
21931         
21932 2004-09-01  Martin Baulig  <martin@ximian.com>
21933
21934         * mini-x86.c (is_regsize_var): Added support for generic
21935         instances.
21936         (mono_arch_emit_prolog): Make this compile again, use
21937         `x86_push_imm_template (code)'.
21938
21939 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
21940
21941         * mini-x86.c: make all push_imm instructions that get
21942         patched always emit the long form
21943
21944 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
21945
21946         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
21947         in a per-domain hash.
21948
21949         * mini-amd64.c (merge_argument_class_from_type): Handle generic
21950         types.
21951
21952 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
21953
21954         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
21955         work.
21956         
21957         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
21958         work.
21959
21960         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
21961         Beginnings of SSE2 support.
21962
21963         * exceptions.cs: Add more tests for checked int<->uint casts.
21964
21965 2004-08-28  Martin Baulig  <martin@ximian.com>
21966
21967         * mini-x86.c (mono_arch_instrument_epilog): Added support for
21968         generic instances.
21969
21970         * mini.c
21971         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
21972         Handle generic instances recursively.
21973
21974 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21975
21976         * iltests.il: test for conv.u8 on a constant
21977
21978 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21979
21980         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
21981         LCONV_x4 (shrun_32 (membase)).
21982
21983 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21984
21985         * inssel-x86.brg: c&p rules for push/setret of long
21986
21987 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21988
21989         * inssel-x86.brg: c&p rules for compare (base, regvar) and
21990         compare (regvar, base)
21991
21992         * inssel-x86.brg: more burg love
21993
21994         * inssel.brg: more cleanup
21995
21996         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
21997
21998 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21999
22000         * basic-long.cs, basic-calls.cs: new tests for optimization.
22001
22002 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
22003
22004         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
22005         patch.
22006
22007 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22008
22009         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22010         
22011 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22012
22013         * inssel.brg (mini_emit_memcpy): use 
22014         NO_UNALIGNED_ACCESS to disable memcpy optimization
22015
22016 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22017
22018         * mini-amd64.c: Handle generic types in various places.
22019
22020         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22021
22022 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22023
22024         * mini.c (handle_box): Fix warning.
22025
22026         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22027
22028         * mini-amd64.h: Enable the emit_state optimization.
22029
22030         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22031
22032         * mini-amd64.c: Add some new 64 bit peephole opts.
22033
22034         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22035
22036         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22037
22038         * mini-amd64.c: Register allocator fixes.
22039
22040         * mini.c: Add an optimization to emit_state to avoid allocation of new
22041         registers on some platforms.
22042
22043 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22044
22045         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22046
22047         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22048         allocation. Fixes #63085.
22049
22050         * basic-long.cs: Add new regression test.
22051
22052         * mini-amd64.c: Register allocator improvements.
22053
22054 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22055
22056         * mini-amd64.c (read_tls_offset_from_method): Add another code
22057         sequence.
22058
22059         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22060         instruction sequence for nullifying class init trampolines.
22061
22062         * objects.cs: Add new regalloc test.
22063
22064         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22065
22066 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22067
22068         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22069         
22070         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22071         arguments.
22072
22073         * driver.c: Fix profiling after TLS changes.
22074         
22075         * driver.c (mono_main): Set mono_stats.enabled if needed.
22076
22077         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22078         CEE_BOX.
22079
22080 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22081
22082         * mini-x86.c: use a 1 op rather than a 2 op tls access
22083         instruction -> faster.
22084
22085 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22086
22087         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22088         x86 backend.
22089
22090 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22091
22092         * exceptions-sparc.c (throw_exception): fix typo
22093
22094 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22095
22096         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22097         set tree->dreg correctly with tls. Allow any
22098         register to be used.
22099
22100         * mini-x86.c (read_tls_offset_from_method): add new code
22101         generation pattern seen with GCC.
22102
22103
22104 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22105
22106         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22107         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22108         exceptions-sparc.c: fix some performance issues in exception
22109         handling and setting of the stack trace for exceptions that were
22110         already thrown.
22111
22112 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22113
22114         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22115         x86 backend.
22116         
22117         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22118         registers.
22119
22120 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22121
22122         This patch inlines tls access, when possible.
22123         
22124         * mini.h: new arch functions for TLS intrinsics.
22125         All platforms updated with a stub.
22126
22127         * mini.c: use the new intrinsics
22128
22129         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22130         arch specific intrinsic for tls variables
22131
22132 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22133
22134         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22135         under windows.
22136
22137 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22138
22139         * mini.c: thread local allocation
22140
22141 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22142
22143         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22144
22145         * Makefile.am: Link against the static version of libmonogc.
22146         
22147         * Makefile.am: Link the static versions of the convenience libraries
22148         into the mono executable.
22149
22150         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22151
22152 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22153
22154         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22155         on integer overflow.
22156
22157         * mini-amd64.c: Reorganize function call code.
22158
22159         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22160
22161 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22162
22163         * inssel-x86.brg: use xor eax,eax.
22164         
22165         * basic.cs: new tests
22166
22167 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22168
22169         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22170         in exception throwing code.
22171         
22172 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22173
22174         * inssel-x86.brg: use xor esi,esi.
22175
22176 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22177
22178         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22179         can trace methods compiled during mini_init () too.
22180
22181         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22182         CEE_CONV_U4.
22183
22184 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22185
22186         * Makefile.am: static link on x86 (r=zoltan)
22187
22188 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22189
22190         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22191         code since it causes some programs to fail.
22192
22193 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22194
22195         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22196
22197 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22198
22199         * mini.c: ovfops_op_map - add STACK_OBJ case for
22200         CONV_I 
22201         * basic.cs: add test_0_pin_string as test
22202         case for above.
22203
22204 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22205
22206         * Makefile.am: build C# if srcdir != builddir
22207
22208 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22209
22210         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22211         fall-through blocks.
22212
22213 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22214
22215         * driver.c: enable loop by default again and include abcrem in -O=all.
22216
22217 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22218
22219         * iltests.il: Add some localloc tests.
22220
22221         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22222
22223         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22224         Fixes #62574.
22225
22226         * inssel-amd64.brg: Add some optimizations.
22227
22228         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22229         for gcc-3.4.
22230
22231         * Makefile.am: Statically link mono against libmono on AMD64.
22232         
22233         * mini-amd64.c inssel-amd64.brg: Optimizations.
22234
22235 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22236
22237         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22238
22239         * tramp-amd64.c: Patch calling code in trampolines.
22240
22241 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22242
22243         * mini-amd64.c: pinvoke struct passing fixes.
22244
22245 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22246
22247         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22248         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22249
22250 2004-08-05  Duncan Mak  <duncan@ximian.com>
22251
22252         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22253         CEE_LDELEM_ANY.
22254
22255 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22256
22257         * mini-amd64.c (emit_move_return_value): Move return value for normal
22258         calls too.
22259
22260 2004-08-05  Martin Baulig  <martin@ximian.com>
22261
22262         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22263         `type->type'; just modify `type' itself when dealing with enums
22264         and generic instances.
22265         (check_call_signature): Make `simple_type' a `MonoType *'.
22266
22267 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22268
22269         * mini.c: Use OP_PADD to add offsets to addresses.
22270
22271         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22272
22273 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22274
22275         * mini-sparc.c (mono_arch_emit_epilog): fix check
22276         for folding last op into restore instruction
22277
22278 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22279
22280         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22281         helper methods using the code manager.
22282         
22283         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22284
22285         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22286
22287 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22288         
22289         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22290           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22291
22292         * mini-s390.c: fix tail processing
22293
22294 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22295
22296         * mini-ppc.c: mul.ovf.un exception name fix.
22297
22298 2004-08-03  Martin Baulig  <martin@ximian.com>
22299
22300         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22301         instances; before jumping to `handle_enum', also modify `ptype'.
22302
22303 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22304
22305         * cpu-sparc.md: fcall maximal length too small.
22306
22307 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22308
22309         * mini-amd64.c mini.h: Add initial support for passing/returning 
22310         structures to/from pinvoked methods.
22311
22312 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22313
22314         * mini-ppc.c: reg allocator fix.
22315
22316 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22317
22318         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22319
22320         * inssel.brg: Optimize memset on 64 bit machines.
22321
22322         * mini-amd64.c: Fix some vararg cases.
22323
22324 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22325
22326         * mini-s390.c: Corrected macro in emit_float_to_int
22327
22328         * s390-abi.cs: Tests to exercise the s390 ABI
22329
22330 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22331
22332         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22333         caller saved regs.
22334
22335         * basic.cs: Add a test for add.ovf.un.
22336
22337 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22338
22339         * mini-sparc.c: add case for OP_IDIV_UN
22340
22341 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22342
22343         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22344         
22345         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22346
22347 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22348
22349         * basic.cs: regression tests.
22350
22351         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22352         regressions.
22353
22354 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22355
22356         * basic.cs: Add a new test.
22357
22358         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22359         and AOT. Various fixes and optimizations.
22360
22361         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22362
22363 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22364
22365         * mini-ppc.c: make sure temp regs are not used for global reg
22366         allocation.
22367
22368 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22369
22370         * cpu-sparc.md: conv_i8 fix for 64bits
22371
22372         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22373
22374 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22375         
22376         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22377         add opcode for cmp BYTE PTR [eax], imm.
22378
22379         * inssel.brg: Make memcpy and memset takes bases.
22380
22381 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22382
22383         * *-amd64.*: More AMD64 work.
22384         
22385 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22386
22387         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22388         add a compare-not-equal opcode.
22389         
22390 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22391
22392         * mini.c: Use mono_init_from_assembly instead of mono_init.
22393         
22394 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22395
22396         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22397
22398         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22399
22400         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22401
22402         * inssel.brg: 64 bit fixes.
22403
22404         * mini.h (MonoCallInst): Add some AMD64 specific data.
22405
22406         * mini.h: Add some OP_P opcodes.
22407
22408 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22409
22410         * basic.cs: tests for 61797 and 61740
22411
22412 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22413
22414         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22415         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22416
22417 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22418
22419         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22420
22421         * *-amd64*.*: Ongoing AMD64 work.
22422
22423 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22424
22425         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22426
22427         * *-amd64*: Ongoing AMD64 work.
22428
22429         * mini-arch.h: Add AMD64 support.
22430
22431         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22432
22433         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22434
22435         * mini-ops.h: Add new opcodes.
22436
22437         * Makefile.am: Add AMD64 support.
22438
22439         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22440         rules into the inssel-long*.brg files.
22441
22442         * *-amd64.*: Add beginnings of AMD64 backend.
22443
22444 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22445
22446         * mini.c (print_dfn): commenting out the code that prints
22447         the cil. With -O=deadce, this makes -v -v crash.
22448         
22449         * cpu-pentium.md: make checkthis have a length of 2
22450
22451 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22452
22453         * mini-sparc.h: fix implementations of __builtin
22454         functions for Sun compiler for V9.
22455
22456 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22457
22458         * mini.c: use the new stelem.ref wrapper
22459         * exceptions.cs, arrays.cs: new stelem.ref tests
22460
22461 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22462
22463         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22464         new XSP should work with these changes).
22465
22466 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22467         
22468         * inssel-{long32,x86,}.brg: trivial optimizations.
22469         
22470 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22471
22472         * mini.c: load value when emitting box operation in
22473         constrained calls.
22474
22475 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22476
22477         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22478         is one byte shorter than cmp DWORD PTR [eax], 0.
22479
22480 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22481
22482         * inssel-ppc.brg: arguments on the stack are always
22483         relative to the stack pointer (spotted by Neale Ferguson).
22484
22485 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22486
22487         * exceptions-x86.c: delay appending the method name to the trace until
22488         after mono_jit_info_table_find is called, as this gets the real
22489         MonoMethod.
22490
22491 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22492
22493         * aot.c: register roots
22494
22495 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22496
22497         * aot.c : I could just use PLATFORM_WIN32 flag.
22498
22499 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22500
22501         * aot.c : Reverting the previous fix. This time it broke linux build.
22502
22503 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22504
22505         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22506
22507 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22508
22509         * mini.c (handle_stack_args): Remove some more debugging code.
22510         
22511         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22512
22513         * driver.c mini.h aot.c: Allow additional options to be specified with
22514         --aot and pass them to mono_compile_assembly.
22515
22516         * aot.c: Add experimental code to AOT compile all loaded assemblies
22517         on demand and save the code into a cache in the filesystem.
22518
22519         * aot.c: Add support for more wrapper methods.
22520         
22521         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22522         58863.
22523
22524         * cpu-*.md: Remove removed opcodes.
22525
22526         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22527         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22528         related icalls to marshal.c.
22529
22530 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22531
22532         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22533
22534         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22535
22536         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22537
22538 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22539         * liveness.c: If liveness is recomputated we need to reset the information
22540         for each variable. This way, if the liveness range has been narrowed
22541         by optimizations that happened after the last computation, we can return
22542         a smaller range.
22543         
22544         For example, if you have
22545         
22546         {
22547                 int i = 0;
22548                 
22549                 // Tons of code that does not affect i
22550                 
22551                 i = foo ();
22552                 ...
22553         }
22554         
22555         i = 0 is dead code and will be removed by SSA. However, when
22556         linear scan gets to the code, i will still appear to be live
22557         throughout the entire block. This prevents good register allocation.
22558
22559 2004-07-06  Martin Baulig  <martin@ximian.com>
22560
22561         * debug-mini.c (mono_debug_init_method): Allow
22562         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22563         (mono_debug_add_icall_wrapper): New method.
22564
22565         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22566
22567 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22568
22569         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22570         optimization.
22571
22572 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22573
22574         * aot.c (mono_aot_load_method): Fix loading of debug info.
22575
22576 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22577
22578         * aot.c: Add logging support.
22579
22580 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22581
22582         * mini.h: Add prototype for mono_print_method_from_ip.
22583
22584         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22585
22586         * inssel.brg: 64 bit fixes.
22587
22588         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22589         inssel-long32.brg.
22590
22591         * Makefile.am: Add SPARC64 support.
22592
22593 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22594
22595         * aot.c: Fix alignment problems on 32 bit platforms.
22596
22597 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22598
22599         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22600         SPARC64.
22601
22602         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22603         problems.
22604
22605         * mini.h: Bump AOT file version. Some 64 bit fixes.
22606
22607 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22608
22609         * inssel-sparc.brg: Add new rule to avoid register moves.
22610
22611         * inssel.brg: Add ldind_to_load_membase helper function.
22612
22613 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22614
22615         * mini.c: OffsetToStringData intrinsic.
22616         
22617 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22618
22619         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22620
22621         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22622         regression tests.
22623
22624         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22625 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22626
22627         * mini.c: reinstated mono_compile_get_interface_var()
22628         on x86, too, since the change breaks the Gtk# build there as well.
22629
22630 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22631
22632         * driver.c: remove loop from the default optimizations: it seems to
22633         interact badly with some of the other options (see bug #60613).
22634
22635 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22636
22637         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22638         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22639
22640 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22641
22642         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22643         vararg-using methods.
22644
22645 2004-06-21  Martin Baulig  <martin@ximian.com>
22646
22647         * mini/mini-exceptions.c
22648         (mono_handle_exception): Added `gpointer original_ip' argument.
22649         After calling mono_unhandled_exception(), call
22650         mono_debugger_unhandled_exception() and if that returns true,
22651         restore the context and return.
22652
22653 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22654
22655         * mini-ppc.c: prefer the use of relative branches so
22656         they won't need to be patched in aot code (patch from Patrick Beard).
22657
22658 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22659
22660         * aot.c: patch from Patrick Beard to make the output assembly
22661         more correct for the MacOSX assembler. Small tweak to
22662         generate sane images on Linux/PPC, too.
22663
22664 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22665
22666         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22667         case until bug #59509 is fixed (shows up in #60332).
22668
22669 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22670
22671         * mini.c: make sure the needed wrappers are compiled, too, with
22672         precomp.
22673
22674 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22675
22676         * driver.c: remove NPTL reference in --version output.
22677
22678 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22679
22680         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22681         generate valid assembly for the Mach-O assembler.
22682
22683 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22684
22685         * driver.c: don't include abcrem in the all optimization specifier
22686         since it slows down jit compilation too much for now.
22687
22688 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22689
22690         * mini.c: use BIGMUL only if both operands have the same signage.
22691         * iltests.il: Test for bug 60056. (errors related to signage in
22692         BIGMUL).
22693
22694         r=lupus.
22695
22696 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22697
22698         * mini.c, aot.c: memory leak fixes.
22699
22700 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22701
22702         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22703
22704 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22705
22706         * Makefile.am: remove the -static hack completely, it links in
22707         statically glib as well.
22708
22709 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22710
22711         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22712         * exceptions.cs: make it compile with new mcs/csc.
22713
22714 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22715         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22716         and added relevant test case.
22717
22718 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22719
22720         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22721         regressions in gtk-sharp.
22722
22723 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22724
22725         * exceptions.cs: New regression tests.
22726
22727         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22728
22729 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22730
22731         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22732
22733 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22734
22735         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22736
22737         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22738
22739 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22740
22741         * mini.c (mono_jit_runtime_invoke): Init class in this
22742         method instead of trusting mono_jit_compile_method to
22743         do the work (because wrappers can be in object class)
22744
22745 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22746
22747         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22748
22749         * basic-long.cs: New regression test.
22750
22751 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22752
22753         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22754         and div/rem checks.
22755
22756 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22757
22758         * Makefile.am: fix miguel's change to build mono statically against
22759         libmono (track build dependencies).
22760
22761 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22762
22763         * cfold.c: Some glib versions do not have G_MININT32.
22764
22765 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
22766
22767         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
22768         with precision of tan, atan, sin and cos, and implemented related
22769         regressions tests (fixes bug 54467, but one new problem appeared and
22770         is not fixed yet).
22771
22772 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22773
22774         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
22775
22776         * exceptions.cs: Add test for constant folding && division by zero.
22777
22778         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
22779         since driver.c is in libmono too, so the optimization was useless.
22780
22781         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
22782         variable to driver.c so the compiler can emit more efficient code to
22783         access them.
22784
22785 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22786
22787         * Makefile.am: don't distribute generated inssel.[ch] files.
22788
22789 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22790
22791         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
22792         into the default appdomain. Fixes #58707.
22793
22794         * jit-icalls.c: Remove the broken approximation for truncl, doing
22795         no conversion is better.
22796
22797         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
22798         Fixes #58863.
22799
22800 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22801
22802         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
22803         of the mcrxr instruction which is not available on some processors
22804         even if it's documented to be. Implement add and sub overflow correctly
22805         (still not complete for long unsigned). Speed up icalls a bit.
22806
22807 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
22808
22809         * mini.c (mono_jit_compile_method_with_opt): Make sure that
22810         we run .cctor in the current domain instead of target_domain.
22811         
22812         Fixes bug #58558, .cctor not being called in -O=shared.
22813
22814 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22815
22816         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
22817
22818 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
22819
22820         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
22821         which can be done with an imm8, do it that way.
22822         (mono_arch_output_basic_block): ditto for a jmp
22823         (mono_arch_emit_prolog): Computate maximum offset of a label.
22824
22825 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
22826
22827         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
22828         now tries to allocate prefered physical reg's for virtual
22829         regs. This reduces the number of emited spills/loads with
22830         20-30% on our core assemblies.
22831
22832 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22833
22834         * jit-icalls.c: truncl() is not needed and trunc() is
22835         the correct thing to do anyway (bug #58287).
22836
22837 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
22838
22839         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
22840         if available.
22841
22842 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
22843
22844         * driver.c: enable loop optimizations by default.
22845
22846 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22847
22848         * mini-x86.c: fix calc of max loop size when aligning loops start.
22849
22850 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
22851
22852         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
22853         the stack.
22854
22855 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
22856
22857         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
22858         should set carry.
22859
22860         * basic-long.cs: Add tests for add/subtract of immediates with carry.
22861
22862         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
22863         
22864         * mini.c (inline_method): Allways inline some wrappers even if the cost
22865         is too large. Fixes #58785.
22866
22867         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
22868         
22869 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
22870
22871         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
22872         (crichton@gimp.org). Beginning of support for sparc/linux.
22873
22874         * mini-sparc.c: Optimize retrieval of LMF address.
22875
22876 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
22877
22878         * exceptions-ppc.c:  handle alloca in methods with clauses.
22879
22880 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
22881
22882         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
22883
22884 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
22885
22886         * mini.c: Delegate most of the abort signal work to 
22887           mono_thread_request_interruption, which also handles Stop and Suspend
22888           states.
22889
22890 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
22891
22892         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
22893         supports the save/restore lmf opcodes.
22894
22895 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
22896
22897         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
22898         by gcc-3.4 as well.
22899
22900         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
22901
22902 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22903
22904         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
22905         methods which contain array accesses.
22906
22907         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
22908         boundaries. Fixes #58537.
22909
22910         * iltests.il: Add regression test for #58537.
22911
22912 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22913
22914         * mini-x86.c (mono_arch_local_regalloc): Last part of
22915         fix for bug #58633 (releasing register to early).
22916
22917 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
22918
22919         * basic-long.cs: Add new regression test.
22920
22921 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22922
22923         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
22924         register too early on the chain.
22925
22926 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22927
22928         * mini.c (create_helper_signature): Use a helper function to reduce
22929         the code which needs to be written. Also set the calling convention of
22930         icalls on windows. Fixes #57840.
22931
22932 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22933
22934         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
22935         exceptions-ppc.c: added helper function to get the instruction address
22936         from a signal handler context.
22937
22938 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22939
22940         * helpers.c: use g_get_tmp_dir. Invokes happyness 
22941         from gonzalo.
22942
22943 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22944
22945         * helpers.c: Add new env variable to pass args to objdump.
22946         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
22947
22948 2004-05-17  Radek Doulik  <rodo@ximian.com>
22949
22950         * Makefile.am (common_sources): added abcremoval.h so it get
22951         disted and daily mono packages on go-mono.com will build again
22952
22953 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
22954
22955         * abcremoval.c: Fixed coding style, added copyright header.
22956
22957         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
22958
22959         * mini.h: Added prototype for abc removal main function.
22960
22961         * build_relations_propagation_table.pl: Added copyright header.
22962
22963 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22964
22965         * basic-long.cs: reg test for complex ceq_long bug.
22966
22967 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22968
22969         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
22970         reg in long and clob case (bug #58343). Fixed/added comments.
22971
22972 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
22973
22974         * mini.c (mono_jit_runtime_invoke): Follow new convention
22975         of calling the invoke method with an function pointer.
22976
22977 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
22978
22979         * ChangeLog: Fix author of memory leak patch.
22980
22981 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
22982
22983         * Makefile.am: fix make dist as well...
22984
22985
22986 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
22987
22988         * cfold.c: Made so that conversions from pointer to int4 are no-ops
22989         on archs where pointers are 4 bytes long.
22990
22991         * Makefile.am: Added abcremoval.c source file.
22992
22993         * abcremoval.c: Added abcremoval.c.
22994
22995         * abcremoval.h: Added abcremoval.h.
22996
22997         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
22998
22999         * inssel.brg: Enabled bounds check removal.
23000
23001         * mini.c: Added support for abcrem optimization.
23002
23003         * mini.h: Added abcrem optimization label.
23004
23005         * driver.c: Added support for abcrem optimization.
23006
23007         * propagated_relations_table.def: Added propagated_relations_table.def.
23008
23009 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23010
23011         * mini.c, cfold.c: fix style.
23012
23013 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23014
23015         * mini.c: handle issue with the low-level implementation of
23016         some long opcodes (bug #54209).
23017
23018 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23019
23020         * basic.cs: test for my new cmov stuff.
23021
23022 2004-05-13      Patrik Torstensson
23023
23024         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23025         opt and added peephole documentation.
23026
23027 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23028
23029         * tramp-ppc.c: rewrote the generic trampoline code.
23030
23031 2004-05-11      Patrik Torstensson
23032
23033         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23034
23035 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23036
23037         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23038
23039         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23040         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23041
23042         * mini.c: Add new icalls for AsAny marshalling.
23043
23044 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23045
23046         * tramp-ppc.c, mini-ppc.c: more cleanups.
23047
23048 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23049
23050         * mini.c: no warnings.
23051
23052 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23053
23054         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23055
23056 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23057
23058         * mini.c: In the thread abort signal handler, if the thread is in the
23059         process of being stoped, don't throw the Abort exception, just stop the
23060         thread.
23061
23062 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23063
23064         * tramp-ppc.c: removed old code.
23065
23066 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23067
23068         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23069         do some simple speed optimizations on ppc.
23070
23071 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23072
23073         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23074         and large offsets in load/store.
23075
23076 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23077
23078         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23079         it causes regressions.
23080
23081 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23082
23083         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23084         support.
23085
23086 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23087
23088         * jit-icalls.c: remove warnings.
23089         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23090         speedups for unsafe code.
23091
23092 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23093
23094         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23095
23096 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23097
23098         * basic-calls.cs: Add new regression test.
23099
23100         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23101         more portable.
23102
23103         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23104
23105         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23106         is no longer used.
23107
23108 2004-05-06      Patrik Torstensson
23109
23110         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23111         long reg allocation in any reg (not only eax:edx) and implemented 
23112         long shl/shr ops in asm instead of helpers.
23113
23114 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23115
23116         * mini-sparc.h: Fix warnings.
23117
23118         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23119         stack.
23120
23121         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23122         separate statement for clarity.
23123
23124         * mini-sparc.c: Update status.
23125
23126 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23127
23128         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23129         here.
23130
23131 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23132
23133         * inssel-ppc.brg: another small pre-release workaround:
23134         we don't do overflow detection for long_sub_un.
23135
23136 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23137
23138         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23139         (also works around a weird ppc bug: 57957).
23140
23141 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23142
23143         * tramp-ppc.c: trampoline fixes.
23144
23145 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23146
23147         * mini-ppc.c: fixed typos.
23148
23149 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23150
23151         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23152         at the top of the stack. Fixed typos. Use a frame registers
23153         for all the methods with exception clauses.
23154
23155 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23156
23157         * exceptions-ppc.c: restore fp registers.
23158
23159 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23160
23161         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23162         order from the stack top (moved the stack room to save the
23163         return value for trace after the param area). Fixed corruption
23164         in restoring registers on unwind.
23165
23166 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23167
23168         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23169
23170 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23171
23172         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23173         and prolog/epilog for methods that use it. Allow
23174         enough param area room for varargs methods. Fix miguel's
23175         breakage in exception handling.
23176
23177 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23178
23179         * Makefile.am: run genmdesc only on current arch.
23180
23181 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23182
23183         * exceptions-x86.c:
23184         * mini-x86.h: fix the build on windows.
23185
23186 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23187
23188         * 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.
23189
23190         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23191
23192         * mini-exceptions.c: New file.
23193         
23194         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23195         Move some parts of the x86 exception handling code to an 
23196         arch-independent file so it can be shared with other ports.
23197
23198 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23199
23200         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23201
23202 2004-04-26  David Waite  <mass@akuma.org>
23203
23204         * driver.c: remove comma from end of enumeration declaration
23205
23206 2004-04-26  Jackson Harper  <jackson@ximian.com>
23207
23208         * driver.c: parse config file before loading first assembly. This
23209         allows the user gac to be enabled/disabled. 
23210         
23211 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23212
23213         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23214         simpler mechanism: we do not care what is encoded initially
23215         (branch absolute or relative), we care about the code and its
23216         target.  I kept the old code for reference for now.
23217
23218         The new code tries first to determine if the jump is anywhere in
23219         the -/+32 absolute meg range, if it succeeds, it encodes using the
23220         absolute branch;  If not, it tried to find something in the
23221         relative range, if not, it uses the handle_thunk code. 
23222
23223 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23224
23225         * exceptions-ppc.c: use the correct ip register on macosx.
23226
23227 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23228
23229         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23230
23231 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23232
23233         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23234         Raise exception on integer divide by zero by hand since the hw
23235         doesn't support it. Handle NaNs in FP compares.
23236
23237 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23238
23239         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23240         code reducing duplication between the platforms and enabled
23241         signal exception handling (on linux for now).
23242
23243 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23244
23245         * exceptions-ppc.c: more macosx support.
23246
23247 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23248
23249         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23250
23251 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23252
23253         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23254
23255 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23256
23257         * iltests.il: more tests.
23258
23259 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23260
23261         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23262         vars as well.
23263
23264 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23265
23266         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23267
23268 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23269
23270         * liveness.c: Mark variables as volatile in all basic blocks reachable
23271         from exception clauses.
23272
23273 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23274
23275         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23276         inlining.
23277
23278 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23279
23280         * iltests.il, basic.cs: more tests for regalloc.
23281
23282 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23283
23284         * iltests.il: Some tests for register allocation modifications
23285         I have locally.
23286
23287 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23288
23289         * exceptions.cs: Add regression test for bug #56782.
23290
23291         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23292         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23293         the beauty of fixing the same thing in 5 different files...
23294
23295 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23296
23297         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23298         methods.
23299
23300 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23301
23302         * mini.c: Add support for STRWLPARRAY marshalling convention.
23303
23304 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23305
23306         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23307         to init the context to setup the regs pointer).
23308
23309 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23310
23311         * exceptions-ppc.c: more exceptions work.
23312
23313 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23314
23315         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23316         not allowed.
23317
23318 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23319
23320         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23321         can use the memory directly.
23322
23323         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23324
23325         add x86_add_membase, x86_sub_membase, x86_mul_membase
23326
23327 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23328
23329         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23330         GENERAL_REGS they were also hardcoded for all PPC ports.
23331
23332         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23333
23334         Remove hard-coded limit for floating point registers, use
23335         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23336
23337         Notice that in MacOS X calling conventions you can fit a lot more
23338         floating point values in registers, so I should update the PInvoke
23339         test to excercise the passing of floating point values on the
23340         stack (currently broken).
23341         
23342 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23343
23344         * tramp-ppc.c (create_trampoline_code): Added
23345         JUMP_TRAMPOLINE_SIZE. 
23346         (ppc_magic_trampoline): Follow the pattern from
23347         x86_magic_trampoline: if code is set to zero, return. 
23348         (create_trampoline_code): Always pass MonoMethod to the jump
23349         trampoline, before it was passing a null.
23350         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23351         share the code with mono_arch_create_jit_trampoline. 
23352
23353         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23354         implemented.
23355         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23356         implemented.  
23357
23358         * cpu-g4.md: Added length for jmp instruction, the worst case
23359         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23360         for save_lmf).
23361
23362 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23363
23364         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23365
23366 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23367
23368         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23369         before each IL instruction.
23370
23371         * mini.c (CEE_BOX): Fix warnings.
23372
23373 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23374
23375         * mini.c: removed a few unused vars and extra whitespace.
23376
23377 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23378
23379         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23380         checks.
23381         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23382         index.
23383         (OP_GETCHR): use the above
23384         (CEE_LDELEMA): use the above.
23385
23386         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23387         version of the generic impl.
23388         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23389         (CEE_LDELEMA): use the above.
23390
23391 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23392
23393         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23394         Fixes #56317.
23395
23396         * iltests.il: Added new regression test for #56317.
23397
23398 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23399
23400         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23401         under NetBSD. Fixes #56450.
23402
23403         * liveness.c (update_gen_kill_set): Fix previous patch.
23404
23405 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23406
23407         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23408
23409 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23410
23411         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23412         ldsfld and ldsflda.
23413
23414         * inssel-sparc.brg: Add more optimizations.
23415
23416         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23417
23418 2004-04-01  Martin Baulig  <martin@ximian.com>
23419
23420         * mini.c (handle_box): New static function; moved the
23421         implementation of CEE_BOX here.
23422         (mono_method_to_ir): Added `constrained_call' variable.
23423         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23424         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23425         mono_method_get_constrained() to get the method.
23426
23427 2004-04-01  Martin Baulig  <martin@ximian.com>
23428
23429         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23430         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23431         (mono_method_to_ir): We don't need these macros anymore since
23432         mono_class_get_full() already takes care of it. 
23433
23434 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23435
23436         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23437         use @function (as doesn't accept #function here) and check the return
23438         value of system and stop if fails.
23439
23440 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23441
23442         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23443
23444 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23445
23446         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23447
23448         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23449
23450         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23451         #56223.
23452
23453         * basic-long.cs: Add test for negation of Int64.MinValue.
23454
23455 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23456
23457         * mini-sparc.c: Update status.
23458
23459         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23460
23461         * exceptions-sparc.c: Fix return value in filters.
23462
23463         * inssel-sparc.brg: Fix register allocation in some rules.
23464
23465 2004-03-28  Martin Baulig  <martin@ximian.com>
23466
23467         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23468         if neccessary.  
23469
23470 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23471
23472         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23473         
23474         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23475         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23476         remove unused conv_u4 opcode.
23477
23478         * mini-x86.c: Remove valgrind workaround since it slows down things
23479         even when mono is not run under valgrind.
23480
23481 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23482
23483         * mini-sparc.c: Update status.
23484
23485         * inssel-sparc.brg: Add some optimizations.
23486
23487         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23488         future delay slot filling. Add support for varargs, tail calls and JMP.
23489
23490         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23491         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23492
23493         * inssel.brg: Fix register allocation in OP_ARGLIST.
23494
23495         * inssel.brg: Fix warnings.
23496
23497 2004-03-25  Martin Baulig  <martin@ximian.com>
23498
23499         * mini.c (inflate_generic_field): Removed.
23500         (mini_get_method): Removed, use mono_get_method_full(),
23501         (mini_get_class): Removed, use mono_class_get_full().
23502         (mono_method_to_ir): Pass our generic context to
23503         mono_field_from_token().        
23504
23505 2004-03-25  Martin Baulig  <martin@ximian.com>
23506
23507         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23508         of a `MonoMethod *'.
23509         (mini_get_method): Take a `MonoGenericContext *' instead
23510         of a `MonoMethod *'.
23511         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23512         a new local variable called `generic_context' which holds the
23513         current `MonoGenericContext *'; use it to lookup things.
23514
23515 2004-03-24  Martin Baulig  <martin@ximian.com>
23516
23517         * mini.c (mini_get_class): New static method; if we're inside a
23518         generic instance, inflate the class if neccessary.
23519         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23520
23521 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23522
23523         * iltests.il: New regression test for #55976.
23524
23525         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23526         #55976.
23527
23528 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23529
23530         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23531         output.
23532
23533 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23534
23535         * liveness.c: Consider SSA stores as well as loads when making vars
23536         volatile.
23537
23538         * exceptions.cs: New regression tests for register allocation.
23539         
23540 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23541
23542         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23543         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23544           domain lock only to protect puntual access to data structures.
23545           Added access lock for sighash, jit_icall_hash_name, 
23546           jit_icall_hash_addr and domain->code_mp.
23547
23548 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23549
23550         * driver.c: Print SIGSEGV handling method.
23551
23552         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23553
23554         * mini.c (setup_jit_tls_data): Handle case when this is called
23555         multiple times for a thread.
23556
23557         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23558         is different from fbxx_un. Fixes #54303. Also use constants instead of
23559         magic numbers in a lot of places.
23560
23561 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23562
23563         * exceptions.cs: Fix cctor test when --regression is used.
23564
23565 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23566
23567         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23568         for Linux/ppc.
23569
23570 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23571
23572         * inssel-ppc.brg: fixed register assignments for some rules.
23573
23574 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23575
23576         * exceptions.cs: Add test for exceptions in static constructors.
23577
23578         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23579         static constructors outside the domain lock. Fixes #55720.
23580
23581 2004-03-17  Martin Baulig  <martin@ximian.com>
23582
23583         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23584         (inflate_generic_field): Take the `MonoMethod *' instead of the
23585         `MonoClass *' and added support for generic method.
23586         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23587         have a `field->parent->gen_params', only inflate the field if it's
23588         an open constructed type.
23589
23590 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23591
23592         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23593         exception object instead of the preconstructed ones.
23594
23595 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23596
23597         * mini.c: reverted changed to sigsegv_signal_handler commited
23598         accidentally in the previous patch.
23599
23600 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23601
23602         * mini.c:
23603         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23604         running --aot with an old assembly.
23605
23606 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23607
23608         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23609         point values.
23610
23611         * mini-sparc.c: Add support for v9 branches with prediction.
23612
23613 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23614
23615         * mini.c (mini_init): #warning is GNUC only
23616
23617         * mini-sparc.h: implement __builtin_frame_address
23618         and __builtin_return_address for Sun C compiler
23619
23620 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23621
23622         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23623
23624 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23625
23626         * basic-calls.cs: Add test for unaligned byref long argument passing.
23627
23628         * mini-ops.h: Add sparcv9 compare and branch instructions.
23629
23630         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23631         v9 instructions if we have a v9 cpu.
23632
23633         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23634         registers for global allocation.
23635
23636         * exceptions-sparc.c: Fixes.
23637         
23638 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23639
23640         * liveness.c (mono_analyze_liveness): Optimized version.
23641
23642         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23643
23644         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23645         sparc work.
23646
23647         * basic-float.cs basic-calls.cs: New regression tests.
23648
23649 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23650
23651         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23652         sigaltstack implementation.
23653
23654         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23655         
23656         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23657         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23658
23659 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23660
23661         * mini.c: Fix warnings.
23662         
23663         * mini.c (mono_resolve_patch_target): New function which contains the
23664         arch independent part of the patching process.
23665
23666         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23667         patching code to a separate function.
23668
23669 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23670
23671         * mini.c (add_signal_handler): ifdef out on Windows
23672
23673 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23674
23675         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23676         cpu-sparc.md: Add exception handling support + other fixes.
23677
23678         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23679         typed GC detection in --version.
23680
23681         * basic.cs exceptions.cs: New regression tests.
23682
23683         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23684         the arch specific code can store data during a compilation.
23685
23686         * mini-ops.h: Add OP_SETFRET.
23687
23688         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23689         function, register a separate icall for each arity, so the icalls can
23690         get a wrapper.
23691         
23692         * mini.c (mono_print_tree): Print negative offsets in a more readable
23693         form.
23694         
23695         * mini.c: Make signal handling work on sparc.
23696         
23697         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23698
23699         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23700
23701         * jit-icalls.c: Emulate truncl by aintl on solaris.
23702
23703         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23704
23705 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23706
23707         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23708
23709 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23710
23711         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23712         a MarshalByRef type, inline a method that performs the check, taking into
23713         account that the object can be a proxy. Also implemented tow new opcodes:
23714         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23715         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23716         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23717
23718 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23719
23720         * mini-ppc.c: if a relative branch displacement is too big
23721         but it points to and area reachable with an absolute branch, 
23722         avoid the thunks.
23723
23724 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23725
23726         * mini.c: optimize small copies in cpblk.
23727
23728 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23729
23730         * basic-calls.cs basic-float.cs: New regression tests.
23731
23732         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23733         negative offsets from %fp. Implement localloc. Fix local register 
23734         allocation. Fix the case when the this argument needs to be saved to
23735         the stack. Implement some missing opcodes.
23736
23737 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23738
23739         * mini.c (mini_method_compile): Reenable global regalloc in methods
23740         with exception handlers.
23741
23742         * linear-scan.c (mono_varlist_sort): Fix warning.
23743
23744         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23745
23746         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23747         regalloc costs.
23748
23749         * liveness.c: Make all variables uses in exception clauses volatile, to
23750         prevent them from being allocated to registers. Fixes #42136.
23751
23752 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23753
23754         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23755         causes regressions.
23756
23757         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23758         argument to mono_arch_regalloc_cost.
23759
23760         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
23761         precisely.
23762
23763 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
23764
23765         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
23766         Make the cost of allocating a variable to a register arch dependent.
23767
23768         * basic-calls.cs: Fix compilation of tests.
23769         
23770         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
23771         helper function to cut back on the number of #ifdefs needed.
23772
23773         * mini-ppc.c: Fix compilation.
23774
23775         * basic-calls.cs: New regression tests.
23776
23777         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
23778
23779         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
23780         of l0 since that is callee saved.
23781
23782         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
23783         to virtual calls.
23784
23785         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
23786         of delay instruction.
23787
23788         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
23789
23790         * mini.h (MonoCallInst): Add 'virtual' flag.
23791
23792         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
23793
23794 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23795
23796         * *.cs: New regression tests.
23797
23798         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
23799         work.
23800
23801         * mini.c (mono_runtime_install_handlers): Fix build.
23802
23803         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
23804         'signal_stack_size' members.
23805
23806         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
23807         alternate signal stack.
23808
23809         * exceptions-x86.c: Add stack overflow handling.
23810
23811         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
23812         functions to arch independent code.
23813
23814         * mini.c (mono_print_tree): Print more detailed info for load_membase
23815         opcodes.
23816         
23817 2004-02-23  Martin Baulig  <martin@ximian.com>
23818
23819         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
23820
23821 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23822
23823         * mini-x86.c: fixed reg allocation for div/rem.
23824
23825 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
23826
23827         * driver.c (mono_main): Report some configuratio options on --version.
23828
23829 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
23830
23831         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
23832         low in the address space. Correctly flush memory in thunks where we
23833         output native code.
23834
23835 2004-02-20  Martin Baulig  <martin@ximian.com>
23836
23837         * mini.c (mini_get_method): New static method; inflate all generic
23838         methods and methods in open generic instances.
23839         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
23840         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
23841
23842 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23843
23844         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
23845
23846         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
23847
23848 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
23849
23850         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
23851
23852         * mini-sparc.c (flushi mono_arch_output_basic_block): make
23853         it compile using Sun's compiler.
23854
23855 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23856
23857         * 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.
23858
23859         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
23860
23861 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
23862
23863         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
23864         code.
23865         * mini-ppc.c: handle calls outside of the allowed range with thunks
23866         allocated using the code manager.
23867         * tramp-ppc.c: use the code manager to hold generated native code.
23868         Fixed the magic trampoline to just patch vtable entries.
23869
23870 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
23871
23872         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
23873         independent file.
23874
23875 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
23876
23877         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
23878         PPC.
23879
23880         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
23881         if we have a working __thread implementation.
23882
23883         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
23884         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
23885
23886 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
23887
23888         * mini-x86.c: Fix compilation under gcc 2.
23889         
23890 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
23891
23892         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
23893         contains a call to the wrapped function.
23894
23895         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
23896         OP_<CALL>_IMM opcodes, and use them under X86.
23897         
23898         * mini.c (mono_jit_find_compiled_method): Fix warning.
23899
23900         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
23901
23902         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
23903
23904         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
23905         functionality to mini.c.
23906
23907         * mini.c (mono_create_jump_trampoline): New function to create a jump
23908         trampoline. Return a compiled method instead of a trampoline if it
23909         exists. Add a cache for jump trampolines.
23910
23911         * mini.c (mono_jit_find_compiled_method): New function to return a
23912         compiled method if it exists.
23913
23914         * mini-x86.c: Call mono_create_jump_trampoline instead of 
23915         mono_arch_create_jit_trampoline.
23916
23917         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
23918         a jump trampoline. Fixes #52092.
23919         
23920 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
23921
23922         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
23923         which is not up-to-date. Add check_corlib_version () instead.
23924
23925         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
23926         have to call it.
23927         
23928         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
23929         since newer valgrind versions do not need it.
23930
23931         * mini.c (mono_jit_compile_method_with_opt): New helper function to
23932         compile a method with a given set of optimizations.
23933
23934         * mini.c: Compile icall wrappers on-demand instead of at startup.
23935
23936         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
23937         wrapper for an icall.
23938
23939 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
23940
23941         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
23942         #54063.
23943
23944         * iltests.il: Add test for non-empty stack before switch instruction.
23945
23946 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
23947
23948         * mini.c: Add support for new stringbuilder marshalling conventions.
23949
23950         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
23951
23952 2004-02-01  Martin Baulig  <martin@ximian.com>
23953
23954         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
23955         in `ginst->mtype_argv'.
23956
23957 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
23958
23959         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
23960         facilitate grepping.
23961
23962 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
23963
23964         * mini.c: fixed buglet in initobj generic implementation for references.
23965
23966 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
23967
23968         * Makefile.am: make the version script conditional.
23969         * jit-icalls.c: handle missing truncl().
23970
23971 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
23972
23973         * exceptions.cs: Add more tests for double->int conversion.
23974
23975         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
23976         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
23977
23978 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
23979
23980         * driver.c: make --verbose --version emit an error
23981         if the loaded corlib doesn't match the runtime version.
23982
23983 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
23984
23985         * mini-ppc.h: export ppc_patch().
23986         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
23987         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
23988         on par or better than on MacOSX.
23989
23990 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
23991
23992         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
23993         mono_lookup_pinvoke_call.
23994
23995         * mini-x86.c: Under windows, the default pinvoke calling convention is
23996         stdcall. Fixes #52834.
23997
23998         * mini.c (optimize_branches): Add an upper bound to the number of
23999         iterations to prevent infinite loops on strange loops. Fixes #53003.
24000
24001 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24002
24003         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
24004         and ISINST. Fixes #52093.
24005
24006         * objects.cs (test_0_vector_array_cast): New tests.
24007         
24008 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24009
24010         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24011         checking in Array.Set ().
24012
24013         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24014         #52590.
24015
24016         * object.cs (test_0_multi_array_cast): New regression test.
24017
24018 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24019
24020         * exceptions-ppc.c: fix build on Linux/PPC.
24021
24022 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24023
24024         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24025         running under valgrind.
24026         (x86_magic_trampoline): Fix build bustage.
24027
24028         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24029         negative values as well. This is needed for the encoding of the line number
24030         info, since sometimes the line numbers are not in increasing order.
24031
24032 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24033
24034         * cpu-pentium.md (localloc): Increase the size of the localloc 
24035         instruction since it is a loop under Win32.
24036
24037         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24038         allocation.
24039
24040 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24041
24042         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24043         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24044         Max Horn (max@quendi.de). Fix file names in comments.
24045
24046 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24047
24048         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24049         avoid stack overflow.
24050         (replace_usage): Avoid uninitialized variable warnings.
24051
24052         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24053         and taking the address of valuetype variables.
24054
24055 2004-01-03  Patrik Torstensson
24056
24057         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24058         for other purposes than FP later on.
24059
24060 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24061
24062         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24063         of tail calls.
24064
24065 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24066
24067         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24068
24069 2003-12-30  Patrik Torstensson <p@rxc.se>
24070
24071         * mini-x86.h: Decreased number of availiable fp regs.
24072         Solves corner cases with FP spilling.
24073
24074 2003-12-23  Patrik Torstensson <p@rxc.se>
24075
24076         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24077         for floating point stack tracking / spilling on x86. 
24078         Fixes bug #49012.
24079         
24080         * basic-float.cs: added float mul overflow test.
24081
24082 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24083
24084         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24085
24086 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24087
24088         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24089         supports for cond branches that overflow the immediate
24090         overflow offset. mcs can compile simple programs.
24091
24092 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24093
24094         * exceptions-ppc.c: exception handling support wip:
24095         finally handlers get run on exception.
24096
24097 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24098
24099         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24100         profiling.
24101
24102 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24103
24104         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24105         initial support for stack walking and unwinding.
24106
24107 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24108
24109         * driver.c (mono_main): Make corlib-out-of-sync message more 
24110         descriptive. Also remove verify_corlib call.
24111
24112 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24113
24114         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24115         not overlap with other call's arguments, too.
24116
24117 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24118
24119         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24120         move to arch-specific code the choice of arch-specific
24121         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24122         * mini.c: ensure emulation calls will not interleave
24123         with other calls.
24124
24125 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24126
24127         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24128         the magic trampoline stack frame is dropped before executing
24129         the new method.
24130
24131 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24132
24133         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24134         and integer to fp conversions. Added support for overflowing
24135         arguments on the stack. Reserve a couple more registers as temps.
24136         Added support for aot compilation (as output still needs to be
24137         tweaked, though).
24138
24139 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24140
24141         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24142         Don't overwrite return register in some corner cases.
24143
24144 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24145
24146         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24147         static constructors when AOT compiling.
24148
24149         * driver.c (mono_main): Call mono_check_corlib_version.
24150
24151 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24152
24153         * cpu-g4.md, basic.cs: fixed div target register.
24154
24155 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24156
24157         * mini-ppc.c, basic.cs: shl_imm fix with test.
24158
24159 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24160
24161         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24162         structures by value. Misc fixes.
24163         * objects.cs: more tests.
24164
24165 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24166
24167         * mini-ppc.c: lconv.ovf.i implemented.
24168
24169 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24170
24171         * mini.c:
24172         (mini_init): don't error out if someone already called g_thread_init.
24173
24174 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24175
24176         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24177         to be any type per the spec. Fix abnormal memory usage when
24178         the same object is repeatedly thrown.
24179
24180 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24181
24182         * mini.c: check for overruns in IL code.
24183
24184 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24185
24186         * TODO: Add/remove some todo entries.
24187
24188 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24189
24190         * driver.c (mono_main): Call mono_verify_corlib.
24191
24192 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24193
24194         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24195         This has been moved to mini.c
24196         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24197         type being casted is marshalbyref it could be a proxy, so instead of
24198         emitting the type check code, emit a call to a runtime method that will
24199         perform the check by calling CanCastTo if needed.
24200
24201 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24202
24203         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24204         methods with large stack frames under Win32.
24205
24206 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24207
24208         * Makefile.am: Distribute regression tests.
24209
24210         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24211         at the end instead of inserting each variable into the sorted list.
24212
24213         * linear-scan.c (mono_varlist_sort): New helper function.
24214         
24215 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24216
24217         * mini.c: ensure arguments and locals are within bounds.
24218
24219 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24220
24221         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24222         related fixes.
24223
24224 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24225
24226         * mini.c (mono_cprop_copy_values): Fix crash.
24227
24228         * aot.c: Set verbosity back to 0.
24229         
24230 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24231
24232         * regalloc.c: complete memory leak fix by Laurent Morichetti
24233         (l_m@pacbell.net).
24234
24235 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24236
24237         * driver.c (main_thread_handler): Revert the previous patch.
24238
24239         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24240         under valgrind.
24241
24242         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24243         memory from the memory pool.
24244
24245         * driver.c (main_thread_handler): Turn on all optimizations when
24246         --aot is used.
24247
24248         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24249         an array for better performance.
24250
24251         * regalloc.c (mono_regstate_assign): Fix memory leak.
24252
24253         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24254         serialize the debug info.
24255
24256         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24257         debug info from the serialized representation.
24258
24259         * aot.c: Save debug info into the generated file and load it when 
24260         loading a method.
24261
24262         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24263
24264 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24265
24266         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24267         More FP-related fixes.
24268
24269 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24270
24271         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24272         and register allocation buglet. Hello world now runs.
24273
24274 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24275
24276         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24277         * tramp-ppc.c: fixed class init trampoline.
24278         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24279
24280 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24281
24282         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24283         mini.c: more ppc changes/fixes.
24284
24285 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24286
24287         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24288         Also optimize the case when the arguments are the same in the caller 
24289         and in the callee.
24290
24291         * iltests.il: Add tests for tail calls with valuetype arguments.
24292
24293 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24294
24295         * mini-ppc.c: fixes for struct return type.
24296
24297 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24298
24299         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24300         mono_spillvar_offset() to arch-specific code.
24301
24302 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24303
24304         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24305
24306 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24307
24308         * exceptions-x86.c: Fix stack space leaks.
24309         
24310         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24311         registers from the lmf if the method has save_lmf set.
24312
24313 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24314
24315         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24316         of icall wrappers into InvokeInDomain, since these are now per-domain.
24317
24318 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24319
24320         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24321         make some opcode emulation and intrinsic ops enabled/disabled 
24322         according to the architecture. More fixes.
24323
24324 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24325
24326         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24327
24328 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24329
24330         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24331         arch-specific handling for 'this' and struct return type to
24332         arch-specific code.
24333
24334 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24335
24336         * aot.c: prevent divide by zero error when reporting (it happened with
24337         Accessibility.dll).
24338
24339 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24340
24341         * mini.h (inst_switch): Remove unused macro.
24342
24343 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24344
24345         * aot.c:
24346         (load_aot_module): free 'info->methods' and 'info' properly. No more
24347         "free(): invalid pointer blah" messages when you have an old aot
24348         compiled assembly.
24349
24350 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24351
24352         * jit-icalls.c, mini.c: Added support for context static fields.
24353
24354 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24355
24356         * mini.c (mono_method_blittable): Methods which set LastError are not 
24357         blittable either. Fixes #51108.
24358         
24359 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24360
24361         * mini.c: flush icache.
24362         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24363
24364 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24365
24366         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24367
24368 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24369
24370         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24371         safe on IA32.
24372
24373         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24374         vararg calls.
24375
24376         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24377
24378 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24379
24380         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24381         instruction when the result is discarded.
24382
24383         * iltests.il (test_0_div_regalloc): New regression test.
24384
24385         * arrays.cs: Fix compilation error.
24386
24387 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24388
24389         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24390         float rules to inssel-x86.brg: sane architectures with FP registers
24391         don't need to implement these rules.
24392
24393 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24394
24395         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24396
24397 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24398
24399         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24400         implementation of 32 bit systems.
24401
24402 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24403
24404         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24405         (Jeroen Zwartepoorte).
24406
24407 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24408
24409         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24410         the caller and the callee matches.
24411         
24412         * mini.c (mono_method_to_ir): Add comment.
24413
24414         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24415         signbit is missing on some platforms.
24416
24417 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24418
24419         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24420
24421         * mini.c (setup_jit_tls_data): Call the new function.
24422         
24423         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24424
24425         * mini-x86.c: Add experimental support for fast access to the lmf
24426         structure under NPTL/Linux 2.6.x.
24427
24428 2003-11-06  Martin Baulig  <martin@ximian.com>
24429
24430         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24431         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24432         the debugger.
24433
24434 2003-11-02  Martin Baulig  <martin@ximian.com>
24435
24436         * mini.c (inflate_generic_field): New static method.
24437         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24438         generic instance and the field is declared in a generic type, call
24439         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24440
24441 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24442
24443         * mini.h mini.c (mono_method_same_domain): New function to return
24444         whenever the caller and the callee are in the same domain.
24445
24446         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24447
24448 2003-10-30  Martin Baulig  <martin@ximian.com>
24449
24450         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24451         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24452         method parameters.
24453         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24454         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24455
24456 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24457
24458         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24459         propagation.
24460
24461         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24462         object here, so it is in the correct appdomain etc.
24463
24464 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24465
24466         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24467         already done.
24468         (mono_method_to_ir): Avoid freeing the type created returned from
24469         mono_type_create_from_typespec, since it is put into an internal cache
24470         by the function. Fixes pointer.exe.
24471
24472         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24473         trampolines for icalls and pinvokes as well. Fixes #33569.
24474
24475 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24476
24477         * mini.c: Update after appdomain changes.
24478
24479         * mini.c (mono_jit_compile_method_inner): Allways compile native
24480         method wrappers in the root domain, since there can only be one
24481         instance of them, whose address is stored in method->info.
24482
24483 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24484
24485         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24486         environment variable. Instead detect automatically whenever running
24487         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24488         valgrind.h.
24489
24490 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24491
24492         * trace.c, trace.h: New files that implement the new trace option
24493         parsing. 
24494
24495         * driver.c: Document new --trace options.
24496
24497         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24498         mini-x86.c: Apply:
24499
24500         -       if (mono_jit_trace_calls)
24501         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24502
24503         * mini.h: prototypes.
24504         
24505 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24506
24507         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24508
24509         * mini.c inssel.brg: Implement typedefbyref opcodes.
24510
24511         * mini.c (mono_jit_compile_method): Remove unused local variable.
24512
24513         * mini.c (mono_jit_compile_method_inner): Ditto.
24514         
24515 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24516
24517         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24518         
24519         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24520
24521 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24522
24523         * mini.c (mono_no_aot): Remove unused global variable.
24524
24525         * mini.c: Thread safety fixes.
24526
24527 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24528
24529         * mini.c (mono_create_class_init_trampoline): Add a lock around
24530         class_init_hash_addr.
24531
24532         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24533         #30073.
24534
24535         * mini.c: Decompose the NEWARR instruction before decomposing its
24536         arguments. Fixes #30073.
24537
24538 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24539
24540         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24541         convention.
24542
24543 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24544
24545         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24546
24547         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24548
24549         * driver.c: Add support for compiling icall wrappers to --compile.
24550
24551 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24552
24553         * inssel.brg: The empty value in class->interface_offsets is -1, not
24554         0. Fixes #49287.
24555
24556 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24557
24558         * objects.cs: New test for 'is' operator on an array of interfaces.
24559
24560 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24561
24562         * tramp-ppc.c: update trampoline code to support jumps
24563         and class initialization.
24564
24565 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24566
24567         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24568
24569         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24570
24571         * inssel.brg (OP_UNBOX): Remove unused rule.
24572
24573         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24574         region instead of one for each method. Fixes #47813.
24575
24576 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24577
24578         * exceptions.cs (test_0_nested_finally): New regression test for
24579         nested exception handlers.
24580
24581         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24582
24583         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24584
24585         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24586         inlining.
24587
24588         * mini.c (mono_method_check_inlining): Make the inlining limit 
24589         configurable by an environment variable.
24590         
24591         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24592
24593         * mini.h: Bump AOT file version.
24594
24595         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24596         token, store the image along with the token, since the token might not 
24597         refer to the same image as the method containing the relocation, 
24598         because of inlining.
24599
24600 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24601
24602         * mini.c (mono_precompile_assemblies): New function to compile
24603         all methods in all loaded assemblies.
24604
24605         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24606
24607         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24608         iassign and fassign to int*, since they can contain large negative
24609         values if the register is spilled. Also added some comments. Fixes
24610         #45817.
24611
24612         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24613         under Win32. Fixes #42964.
24614
24615 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24616
24617         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24618
24619         * aot.c: Added support for AOT compiling methods which contain calls
24620         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24621         handled.
24622         
24623         * driver.c (compile_all_methods): Run the compilation in a thread
24624         managed by mono. Fixes #44023.
24625
24626         * mini.c (mono_codegen): Print full method name in verbose output.
24627
24628         * mini-x86.c (mono_arch_patch_code): Fix warning.
24629         
24630         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24631         jumps, since the method we are jumping to might be domain-specific.
24632
24633         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24634
24635 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24636
24637         * inssel.brg: string chars are unsigned.
24638
24639 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24640
24641         * TODO: New todo item.
24642
24643         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24644         which calls mono_runtime_class_init and patches the call site to
24645         avoid further calls.
24646         (mono_arch_create_class_init_trampoline): New arch specific function 
24647         to create a class init trampoline.
24648         (create_trampoline_code): Generalized so it can create
24649         class init trampolines as well.
24650
24651         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24652         (mono_create_class_init_trampoline): New function to create and cache
24653         class init trampolines.
24654         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24655         vtable given the address of a class init trampoline. Used by the
24656         patching process.
24657         (mono_codegen): Generate a call to a trampoline instead of
24658         mono_runtime_class_init in LDSFLD[A].
24659         (mono_codegen): Add relocations for the new trampoline.
24660         
24661         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24662         MONO_PATCH_INFO_CLASS_INIT.
24663
24664         * mini.h: Bump AOT version number.
24665
24666         * aot.c: Create a copy of the loaded code instead of using the original
24667         so methods which call each other will be close in memory, improving
24668         cache behaviour.
24669         
24670         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24671         patch since it breaks the regression tests.
24672         
24673         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24674         for the register saving instruction sequence since the 
24675         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24676
24677 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24678
24679         * TODO: Fix todo item && remove another.
24680
24681 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24682
24683         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24684         previous checkin.
24685
24686         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24687         function of the module.
24688
24689         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24690         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24691         --no-aot command line option.
24692
24693 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24694
24695         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24696         by Bernie Solomon (bernard@ugsolutions.com).
24697
24698         * inssel.brg: Refactor the interface offset table related code into
24699         its separate functions and add support for the AOT case.
24700
24701 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24702
24703         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24704         
24705         * aot.c: Added mono_aot_verbose variable and made all debugging
24706         output depend on the value of this variable.
24707
24708         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24709         method_label and info_label.
24710
24711         * mini.h mini-x86.c aot.c: Added a new relocation type 
24712         MONO_PATCH_INFO_IID for klass->interface_id.
24713
24714         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24715         the MonoJitInfo structure.
24716
24717         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24718         a non-root appdomain in shared mode.
24719
24720 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24721
24722         * aot.c: make aot loader less verbose. Remove free of unused variable.
24723
24724 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24725
24726         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24727
24728         * .cvsignore: Added *.dll.
24729
24730         * mini.c (mono_print_tree_nl): New function callable while debugging.
24731
24732         * mini.c (mono_print_code): Export this.
24733
24734         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24735         patched code.
24736
24737 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24738
24739         * mini.h (MonoCompile): Added 'jit_info' field.
24740
24741         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24742         the cfg structure, since it is needed by the AOT compiler.
24743
24744         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24745
24746         * aot.c: A major rewrite. Changes include:
24747         - save exception tables for methods which have them.
24748         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24749         to g_module_symbol.
24750         - reworked the file format so it is now much smaller and needs
24751         fewer relocation entries.
24752         
24753 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24754
24755         * aot.c (load_aot_module): Fix build bustage on platforms without
24756         Boehm GC.
24757
24758 2003-09-04  Martin Baulig  <martin@ximian.com>
24759
24760         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
24761
24762 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24763
24764         * TODO: Some new optimization ideas.
24765
24766         * aot.c: Move AOT module loading logic here from mono_assembly_open.
24767
24768         * aot.c: Save the optimization flags used to compile the code into
24769         the AOT module.
24770
24771         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
24772         support emitting domain specific code.
24773         
24774         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
24775         no longer domain neutral. It can be made domain neutral by compiling 
24776         with --optimize=shared.
24777
24778         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
24779         between appdomains.
24780
24781         * driver.c mini.h mini.c: New --no-aot debugging option which disables
24782         loading of AOT code.
24783
24784         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
24785         
24786         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
24787         if there is no domain neutrality information.
24788
24789 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
24790
24791         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
24792         format version into the generated library.
24793
24794         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
24795         callee method into the caller since one of them could be shared.
24796
24797         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
24798         system exceptions from AOT code now works.
24799
24800         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
24801         method if it is domain neutral and the callee is not.
24802
24803         * graph.c (cfg_emit_one_loop_level): Fix warning.
24804
24805 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
24806
24807         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
24808         last checkin.
24809
24810 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
24811
24812         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
24813         is needed  by code which is executed before mono_runtime_init ().
24814         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
24815         
24816         * mini.c (mono_thread_abort): Fix warning.
24817         (mono_jit_compile_method): Call static constructor in the AOT case too.
24818
24819         * aot.c (mono_compile_assembly): Fix warning.
24820
24821 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24822
24823         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
24824
24825 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
24826
24827         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
24828
24829         * cpu-pentium.md: Fix the length of call opcodes so they include the
24830         ESP restoring instruction. Fixes #47968.
24831
24832 2003-08-28  Martin Baulig  <martin@ximian.com>
24833
24834         * mini-x86.c (mono_arch_call_opcode): Added support for
24835         MONO_TYPE_GENERICINST.
24836
24837         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
24838
24839 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
24840
24841         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
24842         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
24843
24844         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
24845         metadata_section.
24846
24847 2003-08-26  Martin Baulig  <martin@ximian.com>
24848
24849         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
24850         when reporting an error, set this to the actual error location.
24851         (mono_method_to_ir): Report the correct error location if
24852         get_basic_blocks() returned an error.
24853
24854 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
24855
24856         * mini.c (mono_type_blittable): OBJECT is not blittable.
24857         (mono_method_blittable): Methods which have marshalling descriptors
24858         are not blittable either. Fixes #47842.
24859
24860 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
24861
24862         * driver.c mini.c: Use an environment variable instead of a global 
24863         variable. Also fix the build.
24864
24865         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
24866         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
24867         reporting this. 
24868
24869         * driver.c mini.c: Added --with-valgrind option to turn off some
24870         code which prevents mono from running under valgrind.
24871
24872         * mini.c (mono_emit_call_args): Fixed warning.
24873
24874         * mini.c (mono_emulate_opcode): Fixed warning.
24875
24876 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24877
24878         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
24879         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
24880         regalloc.c, regalloc.h: specify available registers in arch-specific
24881         code and support floats in the regallocator (patch by Laurent Morichetti 
24882         <l_m@pacbell.net>)
24883
24884 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24885
24886         * mini.c: mono_thread_current() can be called only after
24887         mono_runtime_init(): rearrange code to not call it early on.
24888
24889 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24890
24891         * mini.c: allocate jump tables in the code mempools.
24892
24893 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24894
24895         * mini.c, mini.h: make sure per-thread data allocated by the jit is
24896         freed.
24897
24898 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
24899
24900         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
24901         12 to 16.  This fixes bug #47453.
24902
24903
24904 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
24905
24906         * mini-ppc.c: fixed indexed load and unsigned compares.
24907
24908 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
24909
24910         * mini.c: reenabled installation of handler for
24911           thread abort signal.
24912
24913 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24914
24915         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
24916         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
24917         until it's fixed and actually useful.
24918
24919 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24920
24921         * inssel-long32.brg: couple more opcodes implemented.
24922
24923 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24924         
24925         * mini-sparc.c: Even more opcodes implemeted.
24926
24927 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
24928
24929         * mini-sparc.c: More opcodes implemented.
24930
24931 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
24932
24933         * mini-sparc.c: More opcodes implemented.
24934
24935 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24936
24937         * inssel-sparc.brg: Add some needed rules.  Direct
24938         copy from PPC.
24939         * Makefile.am: Use inssel-sparc.brg
24940         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
24941         an assert happy for now.
24942
24943 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
24944
24945         * mini-sparc.c: Fixed compile errors.
24946         * exceptions-sparc.c: Same.  We now produce a mono binary 
24947         on sparc-linux.  Yea.
24948
24949 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
24950
24951         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
24952         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
24953         They compile, but do not work.
24954
24955 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24956
24957         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
24958         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
24959         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
24960         (ct@gentoo.org).
24961
24962 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24963
24964         * mini.c: more opcodes implemented and better support for generics.
24965
24966 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
24967
24968         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
24969         * mini.c, mini.h: first cut at generics support: some new instructions 
24970         added and changed the behaviour of some of the existing ones.
24971
24972 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
24973
24974         * mini.c: Removed definition of metadata_shared mutex here.
24975
24976 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
24977
24978         * mini-x86.c: make vararg calls work for instance methods.
24979
24980 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
24981
24982         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
24983         returns the arguments in a separte list, now.
24984
24985 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24986
24987         * aot.c, mini.c: updates for array type representation changes.
24988
24989 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
24990
24991         * mini.c: register function to perform jit shutdown.
24992
24993 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24994
24995         * mini.c: use a faster allocator if possible.
24996
24997 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
24998
24999         * aot.c: some cleanups and portability changes.
25000
25001 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25002
25003         * mini.c: use faster allocation for CEE_BOX if possible.
25004
25005 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25006
25007         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25008         Moved inlined mempcy code to its own function so that is can be
25009         reused. Added an inline memset function as well (optimized initobj).
25010         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25011
25012 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25013
25014         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25015
25016 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25017
25018         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25019         arch code can setup the cpu for CLR execution, if needed.
25020         We use it on x86 to set the precision of FP operations.
25021
25022 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25023
25024         * mini.c: disable some optimizations if we can guess they'll cost too
25025         much for a given method.
25026
25027 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25028
25029         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25030         
25031 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25032         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25033         info collection support.
25034
25035 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25036
25037         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25038         is now implemented in the profiling API. Get rid of a couple of
25039         unnecessary global variables.
25040
25041 2003-06-15  Nick Drochak <ndrochak@gol.com>
25042
25043         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25044         * cpu-g4.md: add op_bigmul and op_bigmul_un
25045         * cpu_pentium.md: add op_bigmul_un
25046         * inssel-long32.brg: add rule for unsigned bigmul
25047         * mini-ops.h: define OP_BIGMUL_UN
25048         * mini-x86.c: THE BUG: handle (un)signed properly
25049         * mini.c: choose unsigned opcode if needed.
25050         This set of patches fixes bug #44291
25051
25052 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25053
25054         * mini.c (optimize_branches): improved to handle all kinds of
25055         conditional branches.
25056
25057 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25058
25059         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25060         don't raise exceptions.
25061
25062 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25063
25064         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25065         to arch-specific files.
25066
25067 2003-06-09  Martin Baulig  <martin@ximian.com>
25068
25069         * Makefile.am (libs): Added $(LIBGC_LIBS).
25070
25071 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25072
25073         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25074         and OP_ATAN (fixes bug#44293).
25075
25076 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25077
25078         * Makefile.am, mini-x86.c: rename cpu description array to
25079         pentium_desc, since some compilers define the 'pentium' preprocessor
25080         symbol.
25081
25082 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25083
25084         * mini.c (mini_select_instructions): add explicit branch if the
25085         following block is not the false target of a conditional branch -
25086         we need this with any optimization that reorder or remove bblocks
25087
25088         * mini.c (optimize_branches): bug fixes
25089
25090 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25091
25092         * mini.c (mono_method_to_ir): inline static readonly fields
25093
25094         * ssa.c (fold_tree): start cfold support for long (very simple
25095         cases only)
25096
25097         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25098
25099 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25100
25101         * inssel.brg: fixed memcpy (bug #44219).
25102
25103 2003-06-05  Dick Porter  <dick@ximian.com>
25104
25105         * driver.c: Set the glib log levels to not abort if g_message
25106         recurses.
25107
25108         g_set_prgname() has to happen before mini_init() so that the
25109         process handle gets the info.
25110         
25111 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25112
25113         * driver.c: add intrins to the default optimizations to get wider
25114         exposure.
25115
25116 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25117
25118         * mini.h: some large basic blocks will overflow a 16-bit
25119         integers for symbolic registers.
25120
25121 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25122
25123         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25124         (mono_arch_output_basic_block): fix bug 43499 
25125
25126 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25127
25128         * mini.c: kill duplicated definition of mono_debug_format.
25129
25130 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25131
25132         * mini-x86.c, arrays.cs: fixed register allocation bug.
25133
25134 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25135
25136         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25137
25138         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25139
25140 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25141
25142         * mini.c:
25143         (print_method_from_ip): also print source location information if
25144         available.
25145
25146 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25147
25148         * mini.c (mono_find_block_region): bug fix in region code
25149         (mini_method_compile): enable removing unreachable code again, but
25150         only in methods without exception clauses.
25151
25152 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25153
25154         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25155         Implemented arglist opcode and handling of TypedReference type.
25156         Fixed x86 call convention when a structure is returned.
25157         Minimal support for calling static vararg methods.
25158
25159 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25160
25161         * mini.c (mini_method_compile):  always remove unreachable code,
25162         because the code in them may be inconsistent  (access to dead
25163         variables for example).
25164
25165 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25166
25167         * driver.c, debug-mini.c: warning fixes.
25168
25169 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25170
25171         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25172
25173 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25174
25175         * mini.c: thread-static fields are registered in mono_class_vtable(),
25176         so ensure the function is called before checking for them.
25177
25178 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25179
25180         * mini.c (optimize_branches): fix for bug 43586
25181
25182         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25183         overflow (fixes Bug #43639)
25184
25185 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25186
25187         * mini.c, objects.cs: allow the use of stobj for primitive types.
25188
25189 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25190
25191         * mini.c: be less strict about argument checking until we support
25192         running the verifier.
25193
25194 2003-05-27  Nick Drochak <ndrochak@gol.com>
25195
25196         * basic-long.cs: tests for (ulong)int * (ulong)int also
25197         * mini.c: use the same trick for (ulong)int * (ulong)int
25198
25199 2003-05-27  Nick Drochak <ndrochak@gol.com>
25200
25201         * basic-long.cs: add regression test for (long)int * (long)int
25202         * cpu-pentium.md: add op_bigmul specification
25203         * inssel-long32.brg: add OP_BIGMUL rule
25204         * mini-ops.h: add OP_BIGMUL
25205         * mini-x86.c: register allocator: handle case where src1 needs to be
25206         in EAX.
25207         * mini.c: substitute special BIGMUL opcode in the tree for 
25208         (long)int * (long)int
25209
25210 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25211
25212         * jit-icalls.c: call the type ctor on field access if needed.
25213
25214 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25215
25216         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25217         to a method (including results of ldelema, bug#43207).
25218
25219 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25220
25221         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25222         colors to show exception handler blocks.
25223
25224         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25225         (fix for pinvoke7.cs).
25226
25227 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25228
25229         * mini.h, mini.c: ensure correct initialization order for types that
25230         require it. Prepare for lazy compilation of jit icall wrappers.
25231         Provide a name for opcode emulation to reduce unneeded mallocing.
25232
25233 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25234
25235         * mini-x86.c: better register restoring code and profiling
25236         support for tail calls.
25237
25238 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25239
25240         * mini.h, driver.c: prepare for leaf methods optimization.
25241
25242 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25243
25244         * mini.c: get targets of branches before converting a method.
25245
25246 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25247
25248         * mini.c (optimize_branches): added some experimental code (disbaled) 
25249
25250 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25251
25252         * mini.c (optimize_branches): fix branch to branch optimization 
25253
25254         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25255
25256         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25257
25258         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25259
25260         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25261         if needed.
25262
25263 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25264
25265         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25266         enable use of interface variables again.
25267
25268         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25269         I1 to registers because there is no simply way to sign extend 8bit
25270         quantities in caller saved registers on x86.
25271
25272         * inssel-float.brg: set costs of some rules to 2 so
25273         that monobure always select the arch. specific ones if supplied,
25274         regardless of the order we pass the files to monoburg.
25275
25276 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25277
25278         * mini.c, mini-x86.c: since the magic trampoline for jumps
25279         can't patch the code directly, we do it as soon as the
25280         method gets compiled.
25281
25282 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25283
25284         * mini-x86.c, mini.h: introduce a new patching method
25285         to support CEE_JMP and tail calls.
25286         * mini.c: obey tail.call. Don't precompile methods target
25287         of CEE_JMP.
25288         * tramp-x86.c: new trampoline code to handle methods
25289         reached through a jump.
25290
25291 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25292
25293         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25294         bit values to registers
25295
25296 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25297
25298         * mini.c (mono_compile_get_interface_var): share interface
25299         variables if possible.
25300
25301 2003-05-16  Martin Baulig  <martin@ximian.com>
25302
25303         * debug-mini.c (mono_init_debugger): New function to initialize
25304         the debugger.  This is not in the debugger since it needs to
25305         access some of mini's internals.
25306
25307 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25308
25309         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25310
25311 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25312
25313         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25314         for value type handling.
25315
25316 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25317
25318         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25319         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25320
25321 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25322
25323         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25324           the constructor through a proxy.
25325
25326 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25327
25328         * jit-icalls.c, inssel.brg: fixes to array element address
25329         calculations.
25330
25331 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25332
25333         * mini-x86.c (is_regsize_var): allocate pointer to registers
25334
25335 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25336
25337         * driver.c: fixed typo, added intrins to the set of optimizations
25338         tested with regressions.
25339
25340 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25341
25342         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25343         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25344         test case.
25345
25346 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25347
25348         * inssel.brg: remove some common pop instructions without side effects
25349
25350 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25351
25352         * inssel-x86.brg: fixed thinko in int to double conversions.
25353
25354 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25355
25356         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25357
25358 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25359
25360         * inssel-long32.brg: two more missing instructions.
25361
25362 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25363
25364         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25365         if not already set.
25366
25367 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25368
25369         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25370         correctly.
25371
25372         * basic-float.cs: Added tests for negative zero.
25373
25374 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25375
25376         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25377         a couple of missing operations for long casts, with test cases.
25378
25379 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25380
25381         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25382
25383 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25384
25385         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25386         code size estimation.
25387
25388 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25389
25390         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25391         abstract methods (fix bug 42542)
25392
25393         * aot.c: add ability to handle array types
25394         
25395 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25396
25397         * mini.c: Call the _specific versions of the object allocation
25398         functions if possible.
25399
25400 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25401
25402         * driver.c: call setlocale ().
25403
25404 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25405
25406         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25407         windows build.
25408
25409 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25410
25411         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25412
25413         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25414         wrappers (fix bug 42122)
25415
25416 2003-05-04  Martin Baulig  <martin@ximian.com>
25417
25418         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25419
25420         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25421         s/mini_set_defaults/mono_set_defaults/g.
25422
25423 2003-05-04  Martin Baulig  <martin@ximian.com>
25424
25425         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25426
25427 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25428
25429         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25430         (reported by Don Roberts).
25431
25432 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25433
25434         * mini.c: temporarily work around two bugs for this release.
25435
25436 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25437
25438         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25439         that contains -export-dynamic and it makes using the ld script
25440         useless.
25441         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25442
25443 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25444
25445         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25446         specific cpu.
25447
25448 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25449
25450         * mini.c: make sure leave calls all the needed finally blocks,
25451         even when the target jumps out of multiple exception clauses.
25452
25453 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25454
25455         * ldscript, Makefile.am: add linker script to reduce the number of
25456         exported symbols (should also fix the issues with libwine defining
25457         some of the same symbols in io-layer).
25458
25459 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25460
25461         * driver.c (mini_main): Avoid assertion when no file name is given on 
25462         the command line.
25463
25464 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25465
25466         * driver.c: added --version/-V command line option.
25467         Added the inline optimization in the regression tests.
25468
25469 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25470
25471         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25472         to the type in the method signature (fixes bug#42134).
25473
25474 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25475
25476         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25477
25478 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25479
25480         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25481
25482 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25483
25484         * driver.c: fixed bug #42100.
25485
25486 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25487
25488         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25489
25490 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25491
25492         * mini.c: moved most of the code required to do inlining to its own
25493         function so it can be reused. Inline also ctors if appropriate.
25494
25495 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25496
25497         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25498         the runtime can call mono API functions.
25499
25500 2003-04-27  Martin Baulig  <martin@ximian.com>
25501
25502         * debug-mini.c (mono_debug_init_method): Added
25503         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25504         send a notification to the debugger.
25505
25506         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25507         running in the Mono Debugger, just pass the breakpoint number to
25508         mono_debug_init_method().
25509
25510         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25511
25512 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25513
25514         * mini.c: allow some more unsafe compares.
25515
25516 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25517
25518         * mini-x86.c, Makefile.am: make distcheck works (partially from
25519         a patch by Richard Lee <r.h.lee@attbi.com>).
25520         * regset.c, regset.h: removed, they are unused.
25521
25522 2003-04-25  Dick Porter  <dick@ximian.com>
25523
25524         * driver.c: Usage reports the name as 'mono' not 'mini'
25525         * exceptions-x86.c: Build and run on freebsd
25526
25527 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25528
25529         * Makefile.am: install the program with the 'mono' name and
25530         the library as libmono instead of mini and libmini.
25531
25532 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25533
25534         * driver.c: provide the APIs for the embedding interface of the old jit.
25535
25536 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25537
25538         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25539
25540 2003-04-23  Martin Baulig  <martin@ximian.com>
25541
25542         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25543
25544         * driver.c: Added `--debug' command line argument to enable
25545         debugging support.
25546
25547 2003-04-23  Martin Baulig  <martin@ximian.com>
25548
25549         * debug.[ch]: Removed.  The code is now in
25550         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25551
25552         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25553         last six months.
25554
25555 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25556
25557         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25558
25559 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25560
25561         * mini.c:
25562         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25563         mono_domain_finalize.
25564         (mini_method_compile): use mono_method_profile* if the the option is
25565         enabled.
25566
25567 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25568
25569         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25570         methods with their wrapper.
25571
25572         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25573         methods with their wrapper.
25574
25575         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25576         their wrapper.
25577
25578         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25579         wrapper.
25580
25581         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25582         methods.
25583
25584 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25585
25586         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25587
25588 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25589
25590         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25591         of the mempool. This is slightly faster and uses less memory
25592
25593 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25594
25595         * mini.c: avoid O(n) allocation for variables.
25596
25597 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25598
25599         * mini.c: handle items on the stack after inlining methods.
25600
25601 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25602
25603         * mini.c: make the method->opcode optimization dependent
25604         on MONO_OPT_INSTRINS and do it lazily.
25605
25606 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25607
25608         * driver.c: print overall results at the end of regression run.
25609
25610 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25611
25612         * inssel.brg: don't overwrite symbolic registers.
25613
25614 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25615
25616         * inssel-x86.brg: fix conversion from long to float.
25617
25618 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25619
25620         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25621
25622 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25623
25624         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25625
25626         * driver.c: Added --print-vtable option as in the old JIT.
25627
25628 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25629
25630         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25631
25632 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25633
25634         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25635
25636 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25637
25638         * mini.c regalloc.c regalloc.h: Fix memory leak.
25639
25640 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25641
25642         * aot.c (mono_aot_get_method): register all used strings
25643
25644 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25645
25646         * mini.c: always intern strings references with ldstr at compile time.
25647
25648 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25649
25650         * Makefile.am: add BUILT_SOURCES.
25651
25652 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25653
25654         * driver.c: give a better error message when the assembly to execute
25655         doesn't have an entry point.
25656
25657 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25658
25659         * Makefile.am: added hack for automake
25660
25661         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25662         correct sematics.
25663
25664         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25665
25666 22003-04-07  Martin Baulig  <martin@ximian.com>
25667
25668         * Makefile.am: Added Makefile.am.
25669
25670         * debugger-main.c: Removed, this is now in the debugger where it
25671         belongs.
25672
25673         * mini.pc.in: Call this package `mini' for the moment.
25674
25675
25676
25677
25678
25679
25680
25681
25682
25683
25684
25685
25686
25687
25688