Wed Feb 24 15:47:16 CET 2010 Paolo Molaro <lupus@ximian.com>
[mono.git] / mono / mini / ChangeLog
1 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
2
3         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
4
5 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
6
7         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
8         ThreadStatic variables.
9
10 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
11
12         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
13         data is not freed yet. Fixes #582460.
14
15 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
16
17         * debugger-agent.c: Add support for the caught/uncaught flags on exception
18         event requests. Bump protocol minor version.
19
20 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
21
22         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
23
24 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
25
26         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
27         #581950.
28
29         * iltests.il.in: Add a test.
30
31 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
32
33         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
34         instead of mono_method_get_header as it doesn't decode locals
35         so the called method can have unresolved dependencies that will only
36         be satisfied after the current method is JIT'd.
37
38         Fixes #550968.
39
40 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
41
42         * basic.cs (test_0_div_opt): Speed this up a bit.
43
44 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
45
46         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
47
48         * mini.c (mono_jit_create_remoting_trampoline): Call
49         mono_create_specific_trampoline () instead of
50         mono_arch_create_specific_trampoline ().
51
52         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
53
54 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
55
56         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
57         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
58
59         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
60
61         * mini-amd64.c: Fix DISABLE_JIT support.
62
63 2010-02-20  Geoff Norton  <gnorton@novell.com>
64
65         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
66
67 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
68
69         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
70         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
71         CATCH_TXT. Send normal exception events for unhandled exceptions too.
72         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
73         handle_exception.
74
75 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
76
77         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
78         edx/ecx too. This is needed to support OP_SEQ_POINT.
79
80 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
81
82         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
83
84         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
85
86 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
87
88         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
89         LLVM+AOT+exceptions, not enabled yet.
90
91 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
92
93         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
94
95 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
96
97         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
98         xdebug info for these.
99
100         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
101         in a few places.
102
103         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
104         not used yet.
105
106 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
107
108         * aot-compiler.c (load_profile_files): Update after the profiler changes.
109
110 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
111
112         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
113         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
114
115         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
116         for mtouch.
117
118 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
119
120         * debugger-agent.c: handle incomplete reads and EINTR in
121         recv()/send(). This could have been causing random
122         disconnections.
123
124 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
125
126         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
127         points.
128
129         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
130         so they have small offsets. Fixes #566311.
131
132 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
133
134         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
135
136 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
137
138         * mini-amd64.c: Remove the special casing of byref in a few places now that
139         mini_type_get_underlying_type () handles it.
140
141         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
142         by returning native int. Fixes #577984.
143
144 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
145
146         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
147         a macro.
148
149         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
150         of putting the clause itself.
151
152         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
153
154 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
155
156         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
157         might be unaligned.
158
159 2010-02-10  Geoff Norton  <gnorton@novell.com>
160
161         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
162
163 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
164
165         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
166         llvm methods too.
167
168         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
169         it is not an LLVM generated symbol.
170
171         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
172
173         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
174         implementation in gshared mode because it causes regressions.
175
176         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
177
178         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
179         should be done by the caller.
180
181         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
182
183         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
184
185         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
186         since mono_jit_info_table_find () doesn't do it anymore.
187
188         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
189         instead of mono_jit_info_table_find ().
190
191 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
192
193         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
194
195         * aot-compiler.c (encode_method_ref): Update after the removal of
196         mono_gc_get_managed_allocator_type ().
197
198         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
199         Fixes #564538.
200
201 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
202
203         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
204         generic params as well.
205         (handle_isinst): Ditto.
206
207         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
208         instead of always calling an icall.
209
210         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
211         computing the size of the got.
212
213         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
214         when using LLVM. Instead of emitting it as an LLVM method, emit it using
215         the assembly directive '.set' so it points to the first LLVM emitted method.
216
217 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
218
219         * mini.c (mini_method_verify): Report the method which failed to verify.
220
221 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
222
223         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
224         to avoid JIT'ng dead basic blocks. This is the same behavior as the
225         runtime MS verifier.
226
227 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
228
229         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
230         #561962.
231
232 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
233
234         * mini-llvm.c: Init the jit module only when first JITting.
235
236         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
237
238         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
239
240         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
241         replaced with the real got.
242
243         * debugger-agent.c (type_commands): Return the enumness if the type as well.
244
245         * image-writer.c: Reduce the amount of #ifdefs a bit.
246
247         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
248         llvm on darwin/arm.
249
250         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
251
252         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
253         global.
254
255 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
256
257         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
258         (mono_llvm_emit_method): Fix unaligned stores too.
259
260         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
261         so async stack walks don't crash.
262
263 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
264
265         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
266         was not patched if the callee needed an rgctx trampoline.
267
268 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
269
270         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
271         vtable address in AOT code.
272
273 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
274
275         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
276         MonoInst's.
277
278 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
279
280         * genmdesc.pl: remove dependency on external cpp.
281
282 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
283
284         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
285         using LLVM, its not needed, and abcrem can't handle it.
286
287 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
288
289         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
290         it easier to group instructions and reduce duplication.
291
292 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
293
294         * decompose.c: Move the array/soft float decompose routines here from
295         method-to-ir.c.
296
297         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
298
299 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
300
301         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
302         to tell LLVM that the got is constant, not used yet.
303
304         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
305
306 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
307
308         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
309         managed wrappers.
310
311 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
312
313         * aot-compiler.c (add_wrappers): Commit the hack which generates
314         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
315         custom attribute.
316
317 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
318
319         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
320         a fault, only used by the LLVM backend.
321
322         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
323         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
324
325         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
326         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
327
328         * mini-llvm.c: Only generate volatile loads from load instructions which have
329         the MONO_INST_FAULT flag set.
330
331 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
332
333         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
334         64 bit platforms.
335
336 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
337
338         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
339         sequence points. Fixes #571236.
340
341 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
342
343         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
344         end of the appdomain unload process, after assemblies have been unloaded.
345         Fixes #574842.
346
347 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
348
349         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
350         works.
351
352         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
353         Fixes #573988.
354
355 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
356
357         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
358
359 2010-01-26  Geoff Norton  <gnorton@novell.com>
360
361         * aot-compiler.c: Fix a logic error introduced when guarding against enums
362         with struct marshalability.
363
364 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
365
366         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
367         it supports class names as well.
368
369         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
370         needed by the GC map code.
371
372         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
373         flags if needed.
374
375         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
376         if cfg->init_ref_vars is set.
377
378         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
379         cfg->disable_initlocals_op_refs is set.
380
381         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
382         using liveness info if cfg->compute_precise_live_ranges is set.
383
384         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
385         volatile variables correctly. Add comments about the live ranges. Not enabled
386         yet.
387
388 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
389
390         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
391         0x2a into them in method prologs.
392
393         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
394
395 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
396
397         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
398         classes, since llvm is compiled with -fno-rtti.
399
400         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
401
402         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
403         llvm does not require it.
404
405         * aot-runtime.c (load_method): Print the full name of the last aot method.
406
407 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
408
409         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
410         thread has not fully started yet.
411
412 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
413
414         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
415
416 2010-01-21  Miguel de Icaza  <miguel@novell.com>
417
418         * driver.c: Do not abort if LLVM is not supported, print a
419         warning and add the information to the Mono JIT information.
420
421 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
422
423         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
424         using explicit null checks.
425
426 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
427
428         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
429         related code.
430
431         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
432         () in one place.
433         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
434         its no longer needed.
435
436         * method-to-ir.c (mono_method_to_ir): Fix a warning.
437
438         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
439         define for platforms still using it (s390). Get rid of the
440         mono_arch_get_throw_exception_by_name () routines on all other platforms.
441
442         * exceptions-x86.c: Rework the throw trampolines so there is only one function
443         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
444
445         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
446         the caller pushed the arguments.
447
448         * mini-llvm.c: Enable throwing exceptions on x86.
449
450         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
451         "Thread (nil) may have been prematurely finalized" messages if this is called
452         on a thread not registered with the runtime.
453
454         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
455
456 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
457
458         * jit-icalls.c (mono_array_new_3): New jit icall.
459
460         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
461
462         * arrays.cs: Add a test for 3 dimensional arrays.
463
464 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
465
466         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
467         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
468         used.
469
470         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
471         thrown on x86.
472
473         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
474
475         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
476
477         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
478
479 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
480
481         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
482           HOST_WIN32.  Also including winsock2. to define struct in_addr.
483
484         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
485
486         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
487
488         Code is contributed under MIT/X11 license.
489
490 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
491
492         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
493
494         * branch-opts.c (mono_optimize_branches): Honor the new flag.
495
496         * mini.c (mini_method_compile): Set the new flag when running under the
497         debugger.
498
499 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
500
501         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
502         a ref/noref value + a global pin flag, so parts of stack frames can still be
503         precisely marked even if they include stuff which needs pinning. Improve logging.
504         Fix many bugs. Not enabled yet.
505
506         * gc-test.cs: Add a few tests.
507
508         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
509         the normal -v options. Avoid propagating liveness information through bblocks
510         which end with a NOT_REACHED opcode.
511
512         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
513         after cfg has been freed.
514
515 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
516
517         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
518         if a clause is skipped because it uses the exception object, since it could
519         have caught the exception.
520
521         * exceptions.cs: Add a test.
522
523 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
524
525        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
526
527         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
528         ICollection<T> wrappers.
529
530 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
531
532         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
533
534 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
535
536         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
537         NOMAP32BIT or optimize_for_xen is set.
538
539 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
540
541         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
542         mono_metadata_str_hash () instead.
543
544 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
545
546         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
547         sizeof (void*).
548
549         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
550
551 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
552
553         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
554         flag is set.
555
556         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
557         throwing code correctly.
558
559         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
560
561 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
562
563         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
564         ftnptrs created by us, handle RGCTX_FETCH correctly.
565         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
566
567         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
568         ftnptr added by mono_aot_get_named_code ().
569
570 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
571
572         * mini-arm.c: Fix a few LLVM problems.
573
574         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
575
576 2010-01-13  Mark Probst  <mark.probst@gmail.com>
577
578         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
579         AOT compiling.
580
581 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
582
583         * jit.h, method-to-ir.c: added ability to set the policy for
584         inserting breakpoints from the break IL instruction or the
585         Debugger.Break () API call.
586
587 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
588
589         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
590         assemblies need to be eagerly loaded.
591
592 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
593
594         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
595
596 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
597
598         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
599         an argument which matches any exception.
600
601 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
602
603         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
604         optimization if the called method is gshared and marshalbyref, since gshared
605         methods can' have wrappers. Fixes #569390.
606
607         * generics.cs: Add a test.
608
609 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
610
611         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
612         callable from gdb.
613
614 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
615
616         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
617
618 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
619
620         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
621         since it is not supported in win2000.
622
623 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
624
625         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
626         error if loading an assembly fails.
627         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
628
629         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
630         if exists.
631
632         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
633         compiled methods.
634
635         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
636
637         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
638         is not supported yet.
639
640         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
641
642 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
643
644         * method-to-ir.c: All types with variant arguments must fallback to the
645         slow path. This makes cast of variant delegates work.
646
647         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
648         argument that is set to TRUE is the returned vtable slot is for a variant
649         interface. Changed a g_print + g_assert_not_reached to a g_error.
650
651         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
652         a similar fashion of generic virtual methods.
653
654 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
655
656         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
657         when cfg is null.
658
659         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
660         method using a variance aware function.
661
662         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
663
664 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
665
666         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
667         do an icall for now.
668
669 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
670
671         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
672         If LLVM decides to set the code model to Large, reset it to Default.
673
674 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
675
676         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
677         stripped binaries as well.
678
679 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
680
681         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
682         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
683
684         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
685         reg.
686
687 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
688
689         * mini.c (mini_method_compile): Extract the JIT info creation code into a
690         separate function.
691
692         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
693         as the type info to llvm.eh.selector.
694         (exception_cb): Use the type info for filling out some fields of
695         MonoJitExceptionInfo like the flags and the exception class. This is needed
696         because the LLVM produced exception handling clauses might not match the original
697         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
698
699         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
700         separate function. Add an extra argument which returns the type infos
701         corresponding to the exception clauses.
702
703         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
704         exception handling clauses.
705
706 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
707
708         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
709         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
710         to fix an AOT case.
711
712 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
713
714         * mini.c (mono_compile_is_broken): Skip methods from serialization's
715         internal assembly.
716
717 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
718
719         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
720         llvm code.
721
722 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
723
724         * mini.c (mini_method_compile): Verify the method before calling
725         mono_compile_create_vars as this might crash since it uses method
726         information.
727
728         Fixes #560196.
729
730 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
731
732         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
733         one case if AOTing, since the class might not be a concrete class.
734
735 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
736
737         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
738         functions which are now defined in mempool-internals.h.
739
740         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
741
742         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
743
744 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
745
746         * mini.c:
747         * method-to.ir.c:
748         * mini-*.c: Properly handle generic enums.
749
750         Fixes #566294
751
752 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
753
754         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
755         in a few more places.
756
757 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
758
759         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
760         nullable parameters. Fixes #567351.
761
762 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
763
764         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
765
766 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
767
768         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
769         mono_get_generic_context_from_code () call.
770
771         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
772
773 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
774
775         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
776         needed.
777
778 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
779
780         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
781         mono_method_get_signature returns NULL. Fix #567084
782
783 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
784
785         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
786         instead of once for each module.
787
788 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
789
790         * debugger-agent.c (ss_start): Implement step over for the last sequence
791         point in methods.
792
793         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
794         have the STEP_LOC flag set.
795
796         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
797         fails. Fixes #566689.
798
799 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
800
801         * mini.c (mono_add_seq_point): New helper function.
802         (mono_save_seq_point_info): New function to save sequence point info, extracted
803         from mini_method_compile ().
804
805         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
806
807         * mini.h (MonoSeqPointInfo): New structure containing information about
808         the sequence points of a JITted method.
809         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
810         'bucket' field.
811
812         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
813         point information is stored, use a MonoSeqPointInfo structure instead of a
814         GPtrArray. For each seq point, compute a list of successor seq points.
815
816         * debugger-agent.c: Use the successor list to implement step-over more
817         efficiently: instead of single stepping until a different line/IL offset is
818         reached, place breakpoints into all successor seq points.
819
820         * mini.h: Bump AOT file format version.
821
822 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
823
824         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
825
826         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
827
828 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
829
830         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
831         build.
832
833 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
834
835         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
836         alloca as g_malloc is not signal safe.
837
838 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
839
840         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
841         VALGRIND_DISCARD_TRANSLATIONS.
842
843         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
844         checks, they are no longer needed.
845
846         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
847         a function into a sigctx which can handle function pointers.
848
849         * mini-ppc.c: Implement soft debugger support on ppc64.
850
851         * mini-ppc.c: Implement soft debugger support.
852
853 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
854
855         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
856
857 2009-12-17  Marek Habersack  <mhabersack@novell.com>
858
859         * mini.c (mono_get_runtime_build_info): include Mono version in
860         the returned value.
861
862         * driver.c (mono_main): VERSION is now included in the string
863         returned from mono_get_runtime_build_info()
864
865 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
866
867         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
868         signatures. Fixes #565143.
869
870         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
871
872 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
873
874         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
875
876 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
877
878         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
879         making max stack 10x smaller.
880
881 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
882
883         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
884
885 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
886
887         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
888
889 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
890
891         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
892         bigger than MONO_ARCH_MAX_FRAME_SIZE.
893
894         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
895
896         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
897
898         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
899
900         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
901         the compilation.
902
903 2009-12-14  Miguel de Icaza  <miguel@novell.com>
904
905         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
906         raise an invalid program exception.   
907
908         For other opcodes that we might not handle use a g_warning and
909         raise the exception.   Beats termination.
910
911         Fixes #561724
912
913 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
914
915         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
916
917         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
918         by merging the LLVM and !MAP_32BIT cases.
919
920 2009-12-13 Jonathan Chambers <joncham@gmail.com>
921
922         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
923         sigctx being passed in, as we have no CONTEXT available in the APC.
924
925         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
926         for now.
927
928         Code contributed under MIT/X11 license.
929
930 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
931
932         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
933         in the LLVM backend on AMD64.
934
935         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
936         FDE.
937
938         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
939
940         * mini-llvm.c: Export mono_personality for AOT.
941
942         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
943
944         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
945         implicit exception can occur.
946
947         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
948         OP_IMPLICIT_EXCEPTION instruction.
949
950         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
951
952         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
953
954         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
955         inside a protected block.
956
957         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
958         trampolines doesn't include the argument.
959
960         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
961         trampolines on amd64.
962
963         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
964         of RDI.
965
966         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
967         disabled for methods with clauses.
968
969         * mini-llvm.c: Enable support for catch clauses.
970
971         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
972         end of an LLVM compiled finally clause.
973         (mono_handle_exception_internal): Save the exception handling state in TLS
974         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
975         resume unwinding from that point.
976
977         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
978         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
979         to obtain the addresses of the exception handling regions.
980
981         * mini-llvm.c: Add beginnings of support for exception handling, currently only
982         finally clauses are supported.
983
984         * mini.c (mini_method_compile): Add support for LLVM code with exception
985         handlers.
986
987 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
988
989         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
990         proper size.
991
992 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
993
994         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
995         as a primitive type.
996
997 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
998
999         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
1000         for 2 parameter sched_setaffinity in older glibc versions. Fixes
1001         #564000.
1002
1003 2009-12-11  Marek Habersack  <mhabersack@novell.com>
1004
1005         * method-to-ir.c (mini_redirect_call): do not redirect the
1006         InternalAllocateStr internal call if string profiling is enabled.
1007
1008 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
1009
1010         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
1011         generic methods.
1012
1013         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
1014         unwind.h header file.
1015
1016         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
1017         newer valgrind versions seems to handle this fine.
1018
1019 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
1020
1021         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
1022         on the debugger thread.
1023
1024 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
1025
1026         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
1027
1028         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
1029
1030         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
1031
1032         * cpu-<ARCH>.md: Make call_handler clob:c.
1033
1034         * mini.c: Reenable SSA for methods with clauses.
1035
1036         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
1037         as it causes failures on x86.
1038
1039 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
1040
1041         * driver.c: Fail gracefully with --compile-all if mono_method_signature
1042         returns NULL (e.g. a bad assembly).
1043
1044 2009-12-08  Geoff Norton  <gnorton@novell.com>
1045
1046         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
1047         stepping out into native code.  There were issues with nested invokes
1048         like .cctors.
1049
1050 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
1051
1052         * mini.c (mini_method_compile): Do the disable_llvm checks early
1053         and avoid the LLVM compile pass if the checks fail.
1054
1055         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
1056
1057         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
1058         LLVM optimizations don't try to remove them.
1059
1060         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
1061         different file so the original remains.
1062
1063 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
1064
1065         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
1066
1067         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
1068
1069         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
1070         support for non-inline unwind descriptors.
1071
1072 2009-12-07  Geoff Norton  <gnorton@novell.com>
1073
1074         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
1075         the interrupt_count slightly differently.  Native threads were never
1076         marked as resumed.
1077
1078 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
1079
1080         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
1081         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
1082         yet generate this info.
1083
1084         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
1085
1086         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
1087         client can distinguish between intptrs and longs.
1088
1089 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
1090
1091         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
1092         blob.
1093
1094         * aot-runtime.c (load_function): Update after the change above.
1095
1096         * mini.h: Bump AOT file format version.
1097
1098         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
1099         if the delegate class is dynamic.
1100
1101         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
1102         in gshared code too using the new rgctx info type
1103         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
1104
1105 2009-12-04  Geoff Norton  <gnorton@novell.com>
1106
1107         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
1108         we need to track the original suspend count so the thread properly
1109         wakes up in resume_thread.
1110
1111 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
1112
1113         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
1114         code.
1115
1116         * generics.cs: Add a test.
1117
1118         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
1119         is 0. Simplify a lot of code using this.
1120
1121         * mini-trampolines.c (mono_delegate_trampoline): Call
1122         mono_create_static_rgctx_trampoline () before saving the final address in
1123         delegate->method_code, to avoid calling it each time a delegate is first called.
1124
1125         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
1126         which need static rgctx trampolines.
1127
1128         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
1129         keyed on the method+addr pair, since addr could be either the method addr or
1130         an unbox trampoline in the AOT case. Fixes #560246.
1131
1132 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1133
1134         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
1135         place it was called before too.
1136
1137 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1138
1139         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
1140         if no security manager is present, to speed up the AOT case. Call
1141         mono_class_vtable () full with raise_on_error == TRUE instead.
1142
1143 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1144
1145         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
1146         the local optimization passes can take its result into account. Fixes
1147         #559876.
1148
1149         * exceptions.cs: Add a test.
1150
1151 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
1152
1153         This patch is contributed under the terms of the MIT/X11 license
1154
1155         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
1156
1157 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1158
1159         * mini.h (MonoInst): Remove unused 'ssa_op' field.
1160
1161         * debugger-agent.c: Rework the handling of stack traces of running threads to
1162         avoid crashes if compute_frames () tries to walk the stack of running thread.
1163
1164         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
1165
1166         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
1167
1168         * mini.h (StackFrameInfo): Add an 'lmf' field.
1169
1170 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
1171
1172         * debugger-agent.c (suspend_current): Always set really_suspended.
1173
1174         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
1175
1176         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
1177
1178 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
1179
1180         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
1181         really suspended.
1182
1183 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
1184
1185         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
1186
1187 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
1188
1189         * mini-trampolines.c: Fix MSVC build.
1190
1191 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
1192
1193         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
1194
1195 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
1196
1197         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
1198         the instruction following an OP_FCOMPARE is optimized away.
1199
1200 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
1201
1202         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
1203         emit_autoreg () into this arch-specific function.
1204
1205         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
1206         code, it is no longer needed.
1207
1208         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
1209
1210         * mini.h: Bump AOT file format version.
1211
1212         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
1213         using the sorted_code_offsets array, instead of reading it from the
1214         exception debug info.
1215         (load_method): Call mono_aot_find_jit_info instead of
1216         decode_exception_debug_info ().
1217
1218         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
1219         LLVM compiled as a flag.
1220
1221 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
1222
1223         * debugger-agent.c (resume_thread): Fix a warning.
1224
1225         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
1226         generated.
1227
1228 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
1229
1230         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
1231         contents to MonoAotFileInfo.
1232
1233 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
1234
1235         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
1236         Put all binary data into a giant blob, similarly to the way .net assemblies
1237         store binary data. Emit offset tables in a compact form to reduce their size.
1238
1239         * mini.h: Bump AOT file format version.
1240
1241         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
1242         places.
1243
1244         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
1245         avoid linear searches at runtime.
1246
1247         * aot-runtime.c (find_symbol): Update this to use the hash.
1248
1249         * mini.h: Bump AOT file format version.
1250
1251 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
1252
1253         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
1254         container.
1255
1256         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
1257         too.
1258
1259         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
1260         the distribution of got slot types.
1261
1262         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
1263
1264         * method-to-ir.c: Add support for generating explicit null checks.
1265
1266 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
1267
1268         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
1269         on a random thread if possible.
1270
1271         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
1272         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
1273         correctly.
1274
1275         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
1276         regs. Pass the real size of the regs array to mono_unwind_frame ().
1277
1278         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
1279         ones instead.
1280
1281 2009-11-24  Geoff Norton  <gnorton@novell.com>
1282
1283         * mini-darwin.c: Work around apple bug rdar://7209349  See
1284         http://openradar.appspot.com/7209349 for details.  Synopsis,
1285         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
1286         never been initialized before.
1287
1288 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1289
1290         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
1291
1292         * mini-arm.c (mono_arm_thumb_supported): New helper function.
1293
1294 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1295
1296         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
1297         OP_SHL_IMM is not 32 bit.
1298
1299 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1300
1301         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
1302
1303 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1304
1305         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
1306         encountered.
1307
1308         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
1309         > 0 since some threads can resume if their resume_count is > 0.
1310         (invoke_method): Avoid reading freed memory.
1311
1312         * debugger-agent.c (process_suspend): Extract the suspend code from
1313         process_single_step_inner () to a separate function. Rework the code to prevent
1314         races between this function and thread interrupts.
1315
1316         * debugger-agent.c (suspend_current): Check the resume_count field instead
1317         of resume_one so suspends+resumes during single threaded invokes work
1318         correctly.
1319
1320 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
1321
1322         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
1323         to make the generated code smaller.
1324
1325         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
1326         sequence generated by recent LLVM versions.
1327
1328         * mini-llvm.c: Add support for a few simple cases which weren't supported
1329         before.
1330
1331         * mini-trampolines.c (mono_magic_trampoline): Don't call
1332         mono_arch_get_vcall_slot () when llvm is enabled.
1333
1334         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
1335
1336         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
1337         into a new function called common_call_trampoline () which is used by the
1338         llvm vcall trampoline as well.
1339
1340         * debugger-agent.c: Implement single threaded invokes.
1341
1342         * debugger-agent.c: Revert change which broke the agent on linux.
1343
1344         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
1345         #557606.
1346
1347         * generics.cs: Add a test.
1348
1349 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
1350
1351         * debugger-agent.c: Fix the cygwin build.
1352
1353 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1354
1355         * cprop.c: Remove this unused file.
1356
1357 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1358
1359         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
1360         #557262.
1361
1362         * basic.cs: Add a test.
1363
1364 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1365
1366         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
1367         in one more place.
1368
1369 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
1370
1371         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
1372         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
1373         it. Use this flag to control llvm related code paths instead of #ifdef
1374         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
1375         AOT code.
1376
1377         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
1378
1379         * mini.h: Bump AOT file format version.
1380
1381         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
1382         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
1383
1384         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
1385         was used as an assembly filter.
1386
1387 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1388
1389         * unwind.c: Fix support for ppc.
1390
1391         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
1392         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
1393
1394 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1395
1396         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
1397         port.
1398         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
1399         added by the ps3 changes.
1400
1401 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1402
1403         * mini-gc.c: Resurrect this, so at least it compiles.
1404
1405         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
1406
1407 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
1408
1409         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
1410         create_event_list () so assembly filters can be used.
1411
1412         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
1413         from the LMF.
1414
1415 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
1416
1417         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
1418         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
1419         is disabled.
1420
1421         * aot-compiler.c (add_generic_instances): Emit instances of common generic
1422         classes for char/bool too.
1423
1424         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
1425
1426         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
1427         used.
1428
1429         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
1430         Fix warnings.
1431
1432 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
1433
1434         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
1435         
1436         Code contributed under MIT/X11 license.
1437
1438 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
1439
1440         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
1441         threads in native code work.
1442
1443         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
1444         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
1445         version.
1446
1447 2009-11-13 Jonathan Chambers <joncham@gmail.com>
1448
1449         * debugger-agent.c: Implementation for Windows platform.
1450
1451         * mini-x86.c: Add support for Windows. Use mono-* synchronization
1452         primitives. Use SEH to implement breakpoints and single stepping.
1453
1454         * mini-x86.h: Enable soft debugger on Windows.
1455
1456         Code contributed under MIT/X11 license.
1457
1458 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
1459
1460         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
1461         under XEN. Fixes #522894.
1462
1463         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
1464
1465         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
1466         interface calls in LLVM AOT code.
1467
1468         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
1469         is found.
1470
1471         * mini-llvm.c: Add support for OP_VPHI.
1472
1473         * objects.cs: Add a test.
1474
1475 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
1476
1477         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
1478         this is called on the debugger thread.
1479
1480 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
1481
1482         * mini-llvm.c: Add soft-float support.
1483
1484         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
1485         FCALL which returns an R4.
1486
1487         * driver.c (mono_main): Add a missing '\n'.
1488
1489         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
1490         platforms which doesn't support the LLVM IMT trampoline.
1491
1492 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
1493
1494         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
1495
1496         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
1497
1498         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
1499         virtual calls.
1500
1501         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
1502
1503 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
1504
1505         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
1506         Instead of emitting a method_order table, sort the contents of the code_offsets
1507         table and do a binary search in the sorted table. The previous approach doesn't
1508         work with LLVM which emits methods in a arbitrary order.
1509
1510         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
1511         in the .eh_frame section in ELF files.
1512
1513         * mini.h: Bump corlib file format version.
1514
1515         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
1516
1517         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
1518         LDMIA->LDM macro name change.
1519
1520 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
1521
1522         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
1523         x86.
1524
1525         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
1526         SVN.
1527
1528         * aot-compiler.c: Ditto.
1529
1530         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
1531         &align to mini_type_stack_size_full ().
1532
1533         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
1534
1535         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
1536
1537 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
1538
1539         * mini-arm.c: Compute the stack space used by arguments using
1540         mini_type_stack_size_full ().
1541
1542 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
1543
1544         * optflags-def.h: Remove dead TREEPROP optimization.
1545
1546 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
1547
1548         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
1549
1550         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
1551
1552 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
1553
1554         * driver.c (mono_jit_parse_options): New public API function to parse options
1555         as done by the runtime executable.
1556
1557         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
1558         when handling named arguments.
1559
1560 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
1561
1562         * mini-arm.c: Implement support for returning vtypes in registers, fix support
1563         for passing small vtypes in registers, make the CallInfo structures more
1564         similar to the code on the other platforms.
1565
1566         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
1567         the code in the prolog requires it.
1568
1569 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
1570
1571         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
1572         (koush@koushikdutta.com).
1573
1574         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
1575         where the thunk memory should be allocated from. Fixes appdomain unloading
1576         on arm.
1577
1578 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
1579
1580         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
1581         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
1582
1583 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1584
1585         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
1586         AOT, as it is not implemented yet.
1587
1588         * mini-x86.c (mono_arch_output_basic_block): Ditto.
1589
1590 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1591
1592         * debugger-agent.c: Fix windows build.
1593
1594 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1595
1596         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
1597         after the client connects/disconnects.
1598
1599         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
1600         when an exception of a given type is thrown.
1601
1602         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
1603         only on an uncaught exception.
1604
1605         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
1606
1607         * debugger-agent.c: Add a 'launch' option.
1608
1609 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1610
1611         * debugger-agent.c: Add a 'timeout' option.
1612
1613 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1614
1615         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
1616         the JDWP agent.
1617
1618 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1619
1620         * debugger-agent.c (set_breakpoint): Emit a log message.
1621
1622 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
1623
1624         * mini-arm.c: Fix the arm build.
1625
1626 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
1627
1628         * aot-compiler.c: don't leak the value returned from
1629         mono_type_full_name().
1630
1631 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
1632
1633         * debugger-agent.c: defer including mono-mutex.h until we know the
1634         agent is supported.
1635
1636 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1637
1638         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
1639         of pthreads directly.
1640
1641         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
1642         exception handlers. Pass info argument.
1643
1644         * mini.h: Adjust signatures of soft debugger functions to pass void*
1645         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
1646
1647         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
1648         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1649         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
1650         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1651
1652         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
1653
1654         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
1655         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1656         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
1657         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1658
1659         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
1660
1661         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
1662
1663         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
1664
1665         * mono-semaphore.h: Skeleton implementation for Windows.
1666
1667         Code contributed under MIT/X11 license.
1668
1669 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1670
1671         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
1672
1673         Code contributed under MIT/X11 license.
1674
1675 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1676
1677         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
1678
1679         Code contributed under MIT/X11 license.
1680
1681 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
1682
1683         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
1684         debug info to 100 because 10 still slows down gdb too much.
1685
1686         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
1687         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
1688         them in the wrappers.
1689
1690 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
1691
1692         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
1693
1694         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
1695
1696         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
1697         function mono_aot_get_array_helper_from_wrapper ().
1698
1699         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
1700         array helper methods.
1701
1702 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1703
1704         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
1705         the value was loaded from memory.
1706
1707         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
1708         the value was loader from there.
1709
1710         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
1711         without constant swizzle.
1712
1713 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1714
1715         * mini-amd64.c: Put soft debugger functions behind a
1716         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
1717
1718         * mini-amd64.h: disable the soft debugger in windows.
1719
1720         Code contributed under MIT/X11 license.
1721
1722 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1723
1724         * mini-x86.c: Put soft debugger functions behind a
1725         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
1726
1727         Code contributed under MIT/X11 license.
1728
1729 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1730
1731         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
1732         to mono_arch_find_jit_info_ext.
1733
1734         Code contributed under MIT/X11 license.
1735
1736 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
1737
1738         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
1739
1740         * debugger-agent.c: Add support for filtering events by assemblies.
1741
1742         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
1743         the agent is not enabled.
1744
1745 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1746
1747         * exceptions-x86.c: hopefully last change to fix the windows build.
1748         This one courtesy of Jonathan Chambers.
1749
1750 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1751
1752         * debugger-agent.c: remove unused function.
1753
1754 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1755
1756         * debugger-agent.c: add #ifdefs for a few header files.
1757         * mini-x86.h: disable the soft debugger in windows.
1758         Step 1 of 2 to make this compile on windows with gcc.
1759
1760 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
1761
1762         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
1763         as it breaks the build.
1764
1765 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
1766
1767         Merge the soft debugger branch.
1768
1769         * debugger-agent.h debugger-agent.c: New files containing the soft
1770         mode debugger module.
1771
1772         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
1773         at the appropriate locations.
1774
1775         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
1776         opcode.
1777
1778         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
1779         enable/disable single stepping.
1780
1781         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
1782         which returns all information in a StackFrameInfo structure, and can handle the
1783         LMF frames added by the debugger.
1784
1785         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
1786         about an LMF frame.
1787
1788         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
1789         walker function which works on a specific thread and passes a StackFrameInfo
1790         structure to its callback.
1791
1792         * mini.c (mini_init): Initialize the debugger agent.
1793
1794         * aot-compiler.c aot-runtime.c: Add soft-debug support.
1795
1796         * mini-ops.h: Add OP_SEQ_POINT opcode.
1797
1798         * driver.c (mono_main): Add new '--debugger-agent' option for passing
1799         arguments to the debugger agent.
1800
1801 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
1802
1803         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
1804         speed things up.
1805
1806         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
1807
1808         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
1809
1810         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
1811
1812         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
1813         if needed.
1814         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
1815         sets the IMT argument and makes a virtual call.
1816
1817         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
1818
1819 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
1820
1821         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
1822         the windows build.
1823
1824 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
1825
1826         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
1827         runtime. Fixes #551228.
1828
1829 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
1830
1831         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
1832
1833         * basic.cs: Add a test.
1834
1835         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
1836         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
1837         CONSTRAINED. Fixes #550964.
1838
1839         * generics.cs: Add a test.
1840
1841 2009-10-28  Mark Probst  <mark.probst@gmail.com>
1842
1843         * mini-posix.c (add_signal_handler): Use
1844         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
1845
1846 2009-10-28 Jerry Maine <crashfourit@gmail.com>
1847
1848         Contributed under the terms of the MIT/X11 license by
1849         Jerry Maine <crashfourit@gail.com>.
1850
1851         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
1852         sse4a for simd intrinsics.
1853
1854         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
1855         sse4a for simd intrinsics.
1856
1857 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
1858
1859         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
1860         instead of inst_p1 which is not the same on ILP32 platforms.
1861
1862 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
1863
1864         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
1865         not the mscorlib one before calling mono_get_lmf_addr.
1866
1867         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
1868         of the ip to the LMF.
1869
1870         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
1871         immediate in the op->op_imm optimization.
1872
1873         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
1874         understand. VTypes now work, but are not abi compliant, as they are
1875         split into 4 byte parts instead of 8.
1876         (emit_memcpy): Fix the unrolled case to work on the PS3.
1877
1878         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
1879
1880         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
1881         the default when static linking.
1882
1883         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
1884
1885         * aot-compiler.c: Add an autoreg option to automatically register
1886         statically linked aot modules using ELF .ctors.
1887
1888         * genmdesc.pl: Add __ppc64__ to allowed defines.
1889
1890 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
1891
1892         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
1893         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
1894
1895 2009-10-24  Mark Probst  <mark.probst@gmail.com>
1896
1897         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
1898
1899 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
1900
1901         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
1902         which will contain the domain where the method was found.
1903
1904         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
1905         mini_jit_info_table_find ().
1906
1907         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
1908
1909         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
1910
1911 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
1912
1913         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
1914         set, its not supported yet.
1915
1916 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
1917
1918         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
1919         iface wrapper is not found.
1920         (mono_aot_get_method): Ditto for GetGenericValueImpl.
1921
1922 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
1923
1924         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
1925         which have a different name.
1926
1927         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
1928         wrappers and Array.GetGenericValueImpl ().
1929
1930         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
1931         because of the change above.
1932
1933         * generics.cs: Add a test for full aot + generic array ifaces.
1934
1935 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
1936
1937         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
1938         that hides the previous one.
1939
1940 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
1941
1942         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
1943         marshalled. Fixes #541623.
1944
1945 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
1946
1947         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
1948
1949 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
1950
1951         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
1952
1953 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1954
1955         * mini-posix.c (sigprof_signal_handler):
1956         Implemented support for building stat call chans in different ways.
1957
1958 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1959
1960         * mini-exceptions.c (mono_find_jit_info):
1961         Also check that a jit info has been found (fixes a profiler crash).
1962
1963 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1964
1965         * mini.c (mono_codegen):
1966         Call mono_profiler_code_buffer_new with correct code address.
1967
1968 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
1969
1970         * driver.c (mono_main): Change the date in the copyright.
1971
1972 2009-10-14  Mark Probst  <mark.probst@gmail.com>
1973
1974         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
1975         allocator in shared generic code for open classes, because we
1976         can't get those classes' vtables.  We need to make managed
1977         allocators not depend on the vtable at compile-time to solve this.
1978
1979 2009-10-13  Martin Baulig  <martin@ximian.com>
1980
1981         * debug-mini.c (mono_debugger_trampoline_compiled): Add
1982         `const guint8 *trampoline' argument; send both the old and the new
1983         notification.
1984
1985 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
1986
1987         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
1988         mono_runtime_capture_context () without calling mono_runtime_invoke ().
1989         (can_marshal_struct): Skip structures with auto layout.
1990
1991         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
1992
1993 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
1994
1995         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
1996         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
1997         a variable to hold the stack slot used by the int<->float conversion opcodes.
1998
1999         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
2000
2001 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
2002
2003         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
2004         when using full-aot.
2005
2006 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
2007
2008         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
2009         each instance of Comparer<T>.
2010
2011         * generics.cs: Add a new test.
2012
2013 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
2014
2015         * driver.c (parse_debug_options): Add a 'gdb' option.
2016
2017         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
2018
2019         * image-writer.c: Add support for emitting the image into a memory buffer.
2020
2021         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
2022
2023         * aot-compiler.c: Add support for registering debug info with GDB using the
2024         new JIT debugging interface in GDB 7.0. It can be turned on by setting
2025         MONO_XDEBUG to 'gdb'.
2026
2027 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
2028
2029         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
2030         gdb mode.
2031
2032 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
2033
2034         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
2035         can be used to set breakpoints in gdb.
2036
2037         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
2038         segment to an absolute address.
2039
2040 2009-10-13  Mark Probst  <mark.probst@gmail.com>
2041
2042         * method-to-ir.c: Use the managed array allocator method if
2043         available.
2044
2045 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
2046
2047         * aot-compiler.c : Fix the MSVC builds
2048
2049         Code is contributed under MIT/X11 license.
2050
2051 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
2052
2053         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
2054         avoid registering 1 symbol file per method with gdb.
2055
2056 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
2057
2058         * mini-sparc.c: Fix the handling of enums with base type long.
2059
2060         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
2061
2062         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
2063         instead of using type->data.klass as the later doesn't work with generics.
2064
2065 2009-09-25  Mark Probst  <mark.probst@gmail.com>
2066
2067         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
2068         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
2069         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
2070         works differently now and we don't handle it in the JIT anymore.
2071
2072         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
2073         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
2074         the Thread class split.
2075
2076 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
2077
2078         * driver.c: Don't run tests with the obsolete treeprop optimization.
2079
2080         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
2081         variable volatile. Fixes #541577.
2082
2083         * basic-calls.cs: Add a new test.
2084
2085         * basic-long.cs: Remove tests which are now in basic-calls.cs.
2086
2087 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
2088
2089         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
2090         work/required with recent iphone sdk versions.
2091
2092         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
2093         structures.
2094
2095         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
2096         in the VCALL decomposition code.
2097
2098 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
2099
2100         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
2101
2102         * basic.cs: Add a test.
2103
2104         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
2105         generic invokes.
2106
2107         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
2108         searches all the domains of the current thread.
2109
2110         * exceptions-<ARCH>.c: Use it. Fixes #539394.
2111
2112 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
2113
2114         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
2115         so catching exceptions thrown in the same method works. Fixes exception17.exe.
2116
2117         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
2118         for non-jit trampolines.
2119
2120         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
2121
2122         * aot-compiler.c (add_wrappers): Ditto.
2123
2124         * mini-arm.c: Implement support for passing vtypes and floats, and increase
2125         the size of the param area used by dyn_call to 6 which covers the majority of
2126         methods.
2127
2128         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
2129
2130         * mini-arm.c: Implement support for passing/receiving
2131         longs and receiving floats in the dyn_call code.
2132
2133         * mini-amd64.c: Implement support for receiving vtypes in registers in
2134         the dyn_call code.
2135
2136         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
2137         the dyn_call code.
2138
2139 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
2140
2141         * mini-arm.c (get_call_info): Return more precise information in
2142         ArgInfo->regtype.
2143         (dyn_call_supported): Use the information in CallInfo.
2144
2145         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
2146
2147         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
2148         code.
2149
2150         * mini-arm.c: Update after the dyn_call api changes.
2151
2152         * mini.c (mini_create_jit_domain_info): Register a destructor function
2153         for the runtime_invoke_hash.
2154
2155         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
2156         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
2157         this function.
2158         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
2159         (dyn_call_supported): Simplify this by using get_call_info ().
2160         (mono_arch_dyn_call_free): New destructor function.
2161
2162         * generics.cs: Remove a printf.
2163
2164         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
2165
2166         * mini-arm.c: Add support for enum return values and passing a few arguments
2167         on the stack.
2168         
2169         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
2170         dyn invoke.
2171
2172         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
2173
2174         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
2175         the dynamic invoke wrappers.
2176
2177         * mini-arm.c: Implement OP_DYN_CALL for arm.
2178
2179         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
2180         supported by the dynamic runtime invoke wrapper.
2181
2182         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
2183         runtime invoke wrapper.
2184
2185         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
2186         if possible when running with full-aot.
2187
2188         * mini-ops.h: Add OP_DYN_CALL opcode.
2189
2190         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
2191         with dynamic arguments lists similar to libffi.
2192
2193 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
2194
2195         * method-to-ir.c: Fix the previous change on 64 bit platforms.
2196         
2197         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
2198         to NEWARR.
2199
2200         * iltests.il.in: Add a new test.
2201         
2202 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
2203
2204         * aot-compiler.c (add_generic_instances): Add more instances of
2205         GenericEqualityComparer.
2206
2207 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
2208
2209         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
2210
2211 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
2212
2213         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
2214         comments on some functions that now can fail.
2215
2216 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
2217
2218         * Makefile.am: Add Info.plist to EXTRA_DIST
2219
2220 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
2221
2222         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
2223         static synchronized wrappers. Fixes #539500.
2224
2225 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
2226
2227         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
2228         properly.
2229
2230 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
2231
2232         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
2233         lmf before calling filter clauses as well. Fixes #539550.
2234
2235         * exceptions.cs: Add a test.
2236         
2237 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
2238
2239         * aot-compiler.c (add_generic_class): Add instances of
2240         Array.GetGenericValueImpl as well.
2241
2242         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
2243         can be tested too.
2244
2245         * generics.cs: Add a fullaot linq test.
2246
2247 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
2248
2249         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
2250         reg r1 on arm.
2251
2252 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
2253
2254         * mini-trampolines.c (mono_delegate_trampoline) : Call
2255           mono_cominterop_get_invoke if the delegate target object
2256           is a COM object.
2257
2258         Code is contributed under MIT/X11 license.
2259
2260 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
2261
2262         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
2263         internal call is defined outside platform code. Reduce code 
2264         duplication with existing [Method|Field]AccessException
2265
2266 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
2267
2268         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
2269         if the return value is a small struct passed on regs.
2270
2271 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
2272
2273         * cpu-arm.md mini-arm.c: Remove unused opcodes.
2274
2275         * mini-codegen.c: Enable the cpu description validation for arm.
2276
2277 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
2278
2279         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
2280         test which depends on structs to objects.cs.
2281         
2282         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
2283         require object model related stuff working.
2284
2285         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
2286
2287         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
2288
2289         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
2290         against the instruction metadata in mini-ops.h. amd64 only for now.
2291
2292         * mini-ops.h: Fix some instruction descriptions.
2293
2294         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
2295         unused instructions.
2296
2297 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
2298
2299         * exceptions.cs: Add a new test.
2300
2301 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
2302
2303         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
2304
2305 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
2306
2307         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
2308         skip empty phi opcodes.
2309         
2310         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
2311         correctly by zero extending after loads. Skip methods containing calls
2312         to the monitor enter/exit trampolines.
2313
2314         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
2315         when calling mono_thread_force_interruption_checkpoint ().
2316
2317         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
2318
2319         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
2320         64 bit thunks.
2321         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
2322
2323         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
2324         bootstrap could run.
2325
2326 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
2327
2328         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
2329
2330 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
2331
2332         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
2333         of the method to
2334         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
2335         LLVM might be very short.
2336
2337         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
2338         in OP_THROW/RETHROW.
2339
2340         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
2341         alignment on osx.
2342
2343 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
2344
2345         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
2346         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
2347         LLVM might be very short.
2348
2349 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
2350
2351         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
2352         the alignment for the value of sp.
2353
2354 2009-09-01  Geoff Norton  <gnorton@novell.com>
2355
2356         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
2357         managed wrappers in full aot.
2358
2359 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
2360
2361         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
2362
2363 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
2364
2365         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
2366
2367 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
2368
2369         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
2370
2371         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
2372         saved info.
2373
2374         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2375
2376         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
2377         depend on the info MonoMethodHeader which could be missing in IL stripped
2378         assemblies.
2379
2380 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
2381
2382         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
2383         they are only 4 byte aligned.
2384
2385 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
2386
2387         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
2388         was done previously, since using SP causes too many problems.
2389
2390         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
2391         frames without a frame pointer works.
2392
2393         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
2394         global register in methods with calls, since the calls can go through
2395         a static rgctx trampoline which doesn't save it.
2396
2397 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
2398
2399         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
2400
2401 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
2402
2403         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
2404
2405 2009-08-18  Christian Hergert  <chris@dronelabs.com>
2406
2407         * method-to-ir.c: Fix warnings for uninitialized variables.
2408
2409 2009-08-18  Christian Hergert  <chris@dronelabs.com>
2410
2411         * mini-exceptions.c:
2412         * aot-compiler.c: Fix printf warnings.
2413
2414 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
2415
2416         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
2417         Add GetGenericValueImpl<string>.
2418         
2419         * aot-compiler.c (add_generic_instances): Add instances of
2420         GenericEqualityComparer<T> for primitive types. Only emit the array
2421         wrappers into the mscorlib image.
2422
2423 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
2424
2425         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
2426         the methods_loaded array using amodule->info->nmethods.
2427
2428         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
2429         (MONO_AOT_FILE_VERSION): Bump this.
2430
2431         * aot-compiler.c: Emit more generic instances allowing some parts of linq
2432         to work.
2433
2434         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
2435         MonoJitInfo doesn't belong to its methods aot image.
2436
2437 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
2438
2439         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
2440
2441         * mini-arm.c: Fix warnings.
2442         
2443         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
2444
2445         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
2446         supports it.
2447
2448 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
2449
2450         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
2451         avoid clobbering IP.
2452
2453         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
2454         hold the trampoline argument, so its initial value is available during
2455         debugging.
2456
2457 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
2458
2459         * exceptions-arm.c:
2460         * exceptions-hppa.c:
2461         * mini.c:
2462         * exceptions-s390x.c:
2463         * exceptions-mips.c:
2464         * exceptions-ppc.c:
2465         * exceptions-sparc.c:
2466         * exceptions-alpha.c:
2467         * aot-runtime.c:
2468         * mini-trampolines.c:
2469         * exceptions-x86.c:
2470         * exceptions-s390.c: add and use #define's instead of sizeof()
2471         for MonoJitInfo and MonoJitInfoTable.
2472
2473 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
2474
2475         * tramp-arm.c:
2476         * tramp-amd64.c:
2477         * tramp-ppc.c:
2478         * tramp-x86.c: use a #define instead of sizeof() for a few
2479         structures that use a zero-length array.
2480
2481 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
2482
2483         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
2484         case when the method is dynamic. Fixes #529238.
2485
2486 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
2487
2488         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
2489         of asserting when a method is JIT compiled in full-aot mode.
2490
2491 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
2492         
2493         Contributed under the terms of the MIT/X11 license by
2494         Jerry Maine <crashfourit@gail.com>.
2495         
2496         * fixed wrong dates in changelog.
2497
2498 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
2499         
2500         Contributed under the terms of the MIT/X11 license by
2501         Jerry Maine <crashfourit@gail.com>.
2502
2503         * basic-simd.cs: added test for packed double square root.
2504         * cpu-amd64.md: added opcode info for packed double square root.
2505         * cpu-x86.md: added opcode info for packed double square root.
2506         * mini-ops.h: added IR opcode for packed double square root.
2507         * mini-x86.c: added IR to native translation code for packed double square root.
2508         * mini-amd64.c: removed todo for packed double square root.
2509         * simd-intrinsics.c: added method to IR opcode converstion for
2510         packed double square root.
2511
2512 2009-08-03 Jerry Maine <crashfourit@gmail.com>
2513
2514         Contributed under the terms of the MIT/X11 license by
2515         Jerry Maine <crashfourit@gail.com>.
2516
2517         * mini-amd64.c: Added a change to help tell the difference as 
2518         to what perpose the xmm register is being used--mainly to help
2519         with debuging.
2520         * mini-amd64.h: Changed callee regs to use 15 out of 16 
2521         (one used for special cases) xmm registers for both fp
2522         and simd ops. Added define to turn on new feature in the regalloc
2523         that allows fp and simd ops to share the xmm regs happily.
2524         * codegen.c: Added code to detect for which perpose an xmm reg is
2525         being used (fp or simd) and to translate back and forth to the
2526         correct logical reg bank (fp or simd) for 'spill load's.
2527
2528 2009-08-03 Jerry Maine <crashfourit@gmail.com>
2529
2530         Contributed under the terms of the MIT/X11 license by
2531         Jerry Maine <crashfourit@gail.com>.
2532
2533         * basic-simd.cs: Added tests for stressing the regalloc when running with
2534         16 simd regs and when simd and fp ops share the same reg bank.
2535
2536 2009-08-01  Mark Probst  <mark.probst@gmail.com>
2537
2538         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
2539         in shared generic code, we might have to look up the class in the
2540         RGCTX.  If we use the class directly, compute its GC descriptor.
2541
2542 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
2543
2544         * mini.c (mono_jit_runtime_invoke): Fix a warning.
2545
2546 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
2547
2548         * mini.c (mono_jit_runtime_invoke): Initialize the class and
2549         check for errors. Fixed the case when the class with the Main
2550         method is broken.
2551
2552 2009-07-31 Jerry Maine <crashfourit@gmail.com>
2553
2554         Contributed under the terms of the MIT/X11 license by
2555         Jerry Maine <crashfourit@gail.com>.
2556
2557         * cpu-amd64.md: Fixed simple bug in machine discrition file.
2558
2559 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
2560
2561         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
2562
2563 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
2564
2565         * method-to-ir.c: Fix naming of stelem and ldelem.
2566
2567 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
2568
2569         * driver.c (main_thread_handler): Check that the assembly loaded
2570         matches the filename when doing AOT.
2571
2572 2009-07-30  Mark Probst  <mark.probst@gmail.com>
2573
2574         * mini.c: get_ip_from_sigctx installer has been removed, so don't
2575         call it anymore.
2576
2577         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
2578         utils/mono-sigcontext.h).
2579
2580         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
2581         #ifdef.
2582
2583 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
2584
2585         * mini.c (mono_codegen):
2586         Call profiler hook to keep track of method code buffers.
2587
2588 2009-07-27  Mark Probst  <mark.probst@gmail.com>
2589
2590         * method-to-ir.c: Invoke write barriers for the
2591         Interlocked.(Compare)Exchange JIT intrinsics.
2592
2593 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
2594
2595         * Makefile.am (version.h): Fix issues when built out of tree.
2596         Remove some redundant 'grep's piped through 'sed's.
2597
2598 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
2599
2600         This patch is contributed under the terms of the MIT/X11 license
2601
2602         * mini-ppc.c (mono_arch_output_basic_block):
2603         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
2604         for bits 32-47 with signed load/store diplacements for bits
2605         48-63.  Use prefered base/offset order for indexed form.
2606         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
2607         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
2608         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
2609         OP_LOADI2_MEMBASE): Same.
2610         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
2611         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
2612         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
2613         indexed form.
2614         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
2615         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
2616         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
2617         OP_LOADI1_MEMINDEX): Same
2618         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
2619         OP_STORER8_MEMINDEX): Same
2620         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
2621         computations.
2622         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
2623         for bits 32-47 with signed load/store diplacements for bits
2624         48-63.  Use prefered base/offset order for indexed form.
2625
2626 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
2627
2628 This patch is contributed under the terms of the MIT/X11 license
2629
2630         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
2631         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
2632         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
2633         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
2634         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
2635         cfg->stack_usage to avoid size warnings.
2636         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
2637         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
2638         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
2639         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
2640         to convert.
2641         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
2642         after code varible is initialized.
2643         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
2644         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
2645         (mono_arch_emit_epilog): 
2646         Move Use ppc_load32 for cfg->stack_usage to avoid size
2647         warnings.
2648
2649 2009-07-24  Mark Probst  <mark.probst@gmail.com>
2650
2651         * method-to-ir.c: The write barrier doesn't do the store anymore,
2652         so we have always to emit it.  Also, emit the wbarrier after the
2653         store.
2654
2655 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
2656
2657         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
2658         for argument count 3 too.
2659
2660 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
2661
2662         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
2663         the caller handle the exceptions.
2664         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
2665         method. Fixes #524498.
2666
2667 2009-07-22  Geoff Norton  <gnorton@novell.com>
2668
2669         * mini-exceptions.c: Fix build on ia64.
2670
2671 2009-07-22  Mark Probst  <mark.probst@gmail.com>
2672
2673         * mini-exceptions.c (ves_icall_get_frame_info): Use write
2674         barriers.
2675
2676 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
2677
2678         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
2679         code.
2680
2681 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
2682
2683         * basic-simd.cs (Main): Pass args to the test driver.
2684
2685 2009-07-20  Geoff Norton  <gnorton@novell.com>
2686
2687         * mini-x86.h: Fix the x86 version guards to use Apple's
2688         properly defined macros.
2689
2690 2009-07-20  Geoff Norton  <gnorton@novell.com>
2691
2692         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
2693         aligned access.
2694
2695 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
2696
2697         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
2698         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
2699         the information which is needed for invokes, so only one locking+hash table
2700         lookup is needed.
2701
2702         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
2703         
2704         * aot-compiler.c (add_generic_instances): Emit instances of 
2705         GenericComparer<T> for primitive types.
2706
2707 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
2708
2709         * mini-posix.c: Fix linux build.
2710
2711 2009-07-19  Geoff Norton  <gnorton@novell.com>
2712
2713         * mini.h: Add prototypes for mono_runtime_syscall_fork and
2714         mono_gdb_render_native_backtraces
2715         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
2716         so we implement the sane semantics to the runtime here
2717         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
2718         so we need to call it differently (mono_gdb_render_native_backtraces)
2719         * mini-posix.c: Move the old semantics from mini.c to the prototypes
2720         here for default implementations.
2721         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
2722         support Apple's weird syscall (SYS_fork) implementation and not busy
2723         loop in abort() on native crashes on OSX anymore.
2724
2725 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
2726
2727         * aot-runtime.c (load_method): Change the handling of the
2728         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
2729         are used.
2730
2731         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
2732
2733 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
2734
2735         * mini.c (mono_patch_info_equal): Revert the last change for now as it
2736         seems to break the aot tests.
2737         
2738         * mini.c (mono_patch_info_equal): Fix the handling of 
2739         MONO_PATCH_INFO_RGCTX_FETCH.
2740
2741 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
2742
2743         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
2744
2745         * mini.c (mono_patch_info_hash): Fix the handling of 
2746         MONO_PATCH_INFO_INTERNAL_METHOD.
2747         (mono_patch_info_equal): Ditto.
2748
2749 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
2750
2751         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
2752         in a few places.
2753         
2754         * mini-llvm.c: Add some infrastructure for AOT support.
2755
2756 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
2757
2758         * mini-llvm-cpp.c: Update to the latest llvm api.
2759         
2760         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
2761         option to false to prevent llvm from installing signal handlers which
2762         trip up the gc.
2763         
2764 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
2765
2766         * cpu-x86.md:
2767         * cpu-amd64.md: Revert previous change as those instructions
2768         take 2 separate arguments. Remember to read the arch docs more
2769         carefully next time.
2770
2771 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
2772
2773         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
2774
2775 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
2776
2777         * mini-ppc.c: exploit multiple load/store units if available (rest of
2778         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
2779         http://bugzilla.novell.com/show_bug.cgi?id=487846).
2780
2781 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
2782
2783         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
2784         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
2785
2786 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
2787
2788         * cpu-x86.md: Fix missing clobbering from trancendental simd
2789         ops.
2790
2791         * cpu-amd64.md: Same.
2792
2793 2009-07-14 Jerry Maine <crashfourit@gmail.com>
2794
2795         Contributed under the terms of the MIT/X11 license by
2796         Jerry Maine <crashfourit@gail.com>.
2797
2798         * basic-simd.cs: Added tests for single and doulble indexers.
2799
2800         * cpu-amd64.md: Added simd opcode information.
2801
2802         * mini-amd64.c: Added IR to native simd generation code.
2803         Added simd register names and function that returns them.
2804
2805         * mini-amd64.h: Added marcos to turn on simd code compilation in
2806         amd64. Added max simd register count marco. Added caller/callee
2807         register mask marcos. Added marcos to use simd register bank.
2808
2809         * mini.h: Added helper marco for shufling dwords and simple
2810         floats.
2811
2812 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
2813
2814         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
2815
2816         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
2817
2818         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
2819         the length of the native code as well.
2820
2821         * basic-simd.cs: Add a test for #521662.
2822
2823 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
2824
2825         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
2826
2827 2009-07-13  Mark Probst  <mark.probst@gmail.com>
2828
2829         * mini.c: Register function for getting the IP from a signal
2830         context with metadata.
2831
2832 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
2833
2834         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
2835         call a generic class init trampoline if needed. Fixes #519336.
2836
2837         * generics.cs: Add a test.
2838         
2839 2009-07-09  Mark Probst  <mark.probst@gmail.com>
2840
2841         * method-to-ir.c: When doing a call which might be remote from
2842         shared generic code to other shared code with open type arguments,
2843         get the remoting invoke wrapper from the RGCTX and do an indirect
2844         call to it.
2845
2846 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
2847
2848         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
2849         after the unbox trampoline in the full-aot case.
2850
2851 2009-07-02  jonas echterhoff <jonas@unity3d.com>
2852         
2853         * mini.c: Move initialization of jit_mutex before debugger initialization
2854         
2855         to avoid crashes.
2856         
2857         
2858         * Info.plist: added Info.plist and link flag to enable the mono executable
2859         to access other processes. Requires codesigning of the executable to work.
2860         
2861         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
2862         
2863         compile on OS X.
2864         
2865
2866 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
2867
2868         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
2869
2870 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
2871
2872         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
2873         when the generic instance is an instantiation of a subclass of the
2874         methods class. Fixes #517166.
2875
2876 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
2877
2878         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
2879         code.
2880
2881         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
2882         AOTed code.
2883
2884         * CMakeLists.txt: Add minimal support for installation.
2885
2886 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
2887
2888         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
2889         determine whenever a method is directly callable to a separate function.
2890
2891         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
2892         needed ones as a result of the previous change.
2893
2894         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
2895         type of register arrays.
2896
2897         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
2898         type of register arrays.
2899
2900 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
2901         
2902         Contributed under the terms of the MIT/X11 license by
2903         Jerry Maine <crashfourit@gail.com>.
2904
2905         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
2906
2907 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
2908
2909         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
2910
2911 2009-06-24  Neale Ferguson <neale@sinenomine.net>
2912
2913         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
2914         dump of structure return value. Fix some formatting.
2915         * cpu-s390x.md: Fix lengths of instruction sequences.
2916         * mini-s390.c: Minor formatting changes.
2917
2918 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
2919
2920         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
2921         Use sigaction on freebsd as well.
2922
2923 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
2924
2925         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
2926         uses #ifdef on it.
2927         
2928         * mini.c (mini_init): Revert a change which breaks cross-compilation.
2929
2930 2009-06-22  Mark Probst  <mark.probst@gmail.com>
2931
2932         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
2933
2934 2009-06-22  Mark Probst  <mark.probst@gmail.com>
2935
2936         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
2937
2938 2009-06-20  Martin Baulig  <martin@ximian.com>
2939
2940         * debug-mini.c
2941         (MonoDebuggerThreadFlags): New enum typedef.
2942         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
2943         (mono_debugger_thread_created): Added `gpointer func' argument;
2944         initialize the new `thread_flags' field.
2945
2946 2009-06-18  Martin Baulig  <martin@ximian.com>
2947
2948         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
2949         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
2950
2951         * debug-debugger.c
2952         (mini_debugger_set_attach_ok): New function; sets the attach-ok
2953         flag in `MONO_DEBUGGER__info.runtime_info'.
2954
2955         * driver.c
2956         (mono_main): Call mini_debugger_set_attach_ok() if generics
2957         sharing is disabled.
2958
2959 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
2960
2961         * aot-compiler.c (add_wrappers): Fix a warning.
2962
2963         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
2964         the ppc load/store macro changes.
2965
2966 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
2967
2968         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
2969
2970         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
2971         not just the got symbol.
2972
2973         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
2974         on ppc.
2975
2976         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
2977         ppc.
2978         
2979         * aot-compiler.c: Remove some fixmes.
2980
2981         * driver.c (mono_main): Print a helpful message when cross-compiling.
2982
2983         * mini.c (mini_init): Disable signal handlers when cross-compiling.
2984
2985         * method-to-ir.c (initialize_array_data): Do the optimization if the
2986         target byte order is little endian, instead of the host byte order.
2987
2988         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
2989         wrappers into the mscorlib image, Emit a unique plt symbol for each
2990         image, emit symbols for plt entries.
2991
2992         * image-writer.c (img_writer_emit_symbol_size): New function to emit
2993         a .size directive.
2994         
2995 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
2996
2997         * aot-compiler.c (add_wrappers): Avoid calling 
2998         mono_marshal_get_type_info () since it can assert for some types.
2999
3000         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
3001         ldtoken are used inside wrappers.
3002
3003         * helpers.c: Add support for prefixing tools with the arch name.
3004
3005         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
3006         quantities when using ilp32.
3007
3008         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
3009         spill slots. Use sizeof(mgreg_t) for the spill slot size.
3010
3011         * image-writer.c: Use .long on ilp32.
3012
3013         * aot-compiler.c: Use 32 bit loads on ilp32.
3014         
3015 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
3016
3017         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
3018
3019         * mini-ops.h: Use TARGET_POWERPC define for consistency.
3020
3021         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
3022
3023         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
3024         second got slot of every aot image.
3025         
3026         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
3027         aot on platforms with function pointers.
3028
3029         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
3030         support for aot/full aot on ppc/ppc64.
3031         
3032         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
3033         arguments which are needed on ppc.
3034
3035         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
3036         argument.
3037
3038         * mini-trampolines.c aot-runtime.c: Update after the above changes.
3039         
3040         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
3041
3042         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
3043
3044         * aot-compiler.c (emit_got_info): Fix reading unused memory.
3045
3046         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
3047
3048 2009-06-17  Geoff Norton  <gnorton@novell.com>
3049
3050         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
3051
3052 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
3053
3054         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
3055         to control whenever the dwarf writer is in xdebug or aot mode.
3056         (emit_class_dwarf_info): Use a separate abbrev for structures without
3057         children.
3058
3059         * aot-compiler.c: Pass the appending parameter to 
3060         mono_dwarf_writer_create ().
3061
3062         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
3063         falls through to its next bblock. Fixes #513931.
3064
3065         * iltests.il: Add a test.
3066
3067         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
3068         infor even if emit_line is FALSE, as the apple linker seems to require it.
3069
3070         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
3071
3072         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
3073         gcc does.
3074         (emit_fde): Ditto.
3075
3076 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
3077
3078         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
3079         mips build.
3080
3081 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
3082
3083         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
3084         'has_call_handler' fields.
3085
3086         * method-to-ir.c (mono_method_to_ir): Set them if needed.
3087
3088         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
3089         first bblock if not needed. Fixes #512790.
3090         
3091 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
3092
3093         * aot-compiler.c (mono_compile_assembly): Fix a warning.
3094         
3095         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
3096         wrappers.
3097
3098         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
3099         remoting-invoke-with-check wrappers, which are not needed when running with
3100         full-aot, since it doesn't support remoting.
3101         
3102 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
3103
3104         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
3105
3106         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
3107         method info, it is not used anymore.
3108
3109         * mini.h: Bump AOT file format version.
3110         
3111         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
3112         word smaller.
3113
3114         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
3115         change above.
3116         
3117         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
3118
3119         * mini.h: Bump AOT file format version.
3120         
3121 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
3122
3123         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
3124         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
3125         iphone.
3126
3127         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
3128         of CKFINITE and FBGE for VFP.
3129
3130 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
3131
3132         * aot-compiler.c: Don't align code to 16 bytes on arm.
3133         
3134         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
3135         before the methods they belong to.
3136
3137         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
3138         the full-aot case if possible, since the trampoline will be called right 
3139         away.
3140
3141         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
3142         trampolines to 1024 after the change above.
3143
3144         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
3145         trampoline to save 8 bytes per trampoline.
3146
3147         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
3148         change above.
3149
3150 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
3151
3152         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
3153
3154 2009-06-08  Martin Baulig  <martin@ximian.com>
3155
3156         * debug-mini.c
3157         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
3158         (_mono_debugger_throw_exception): Don't make this static.
3159         (_mono_debugger_unhandled_exception): Likewise.
3160         (mono_debugger_handle_exception): Moved to mini-exceptions.c
3161
3162         * debug-mini.c
3163         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
3164         (_mono_debugger_throw_exception): Add function prototype.
3165         (_mono_debugger_unhandled_exception): Likewise.
3166
3167         * mini-exceptions.c
3168         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
3169         arg; return the first exception handler if the exception is caught
3170         and we're running inside the debugger.
3171         (mono_debugger_handle_exception): Moved here from debug-mini.c;
3172         improve exception handle inside runtime-invoke, check whether the
3173         exception is actually caught in the method being invoked and not
3174         by the runtime-invoke-wrapper.
3175
3176 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
3177
3178         * image-writer.c: Improve support for the osx assembler.
3179
3180         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
3181         support them.
3182
3183 2009-06-08  Martin Baulig  <martin@ximian.com>
3184
3185         * debug-mini.c
3186         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
3187         (_mono_debugger_throw_exception): Don't make this static.
3188         (_mono_debugger_unhandled_exception): Likewise.
3189         (mono_debugger_handle_exception): Moved to mini-exceptions.c
3190
3191         * debug-mini.c
3192         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
3193         (_mono_debugger_throw_exception): Add function prototype.
3194         (_mono_debugger_unhandled_exception): Likewise.
3195
3196         * mini-exceptions.c
3197         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
3198         arg; return the first exception handler if the exception is caught
3199         and we're running inside the debugger.
3200         (mono_debugger_handle_exception): Moved here from debug-mini.c;
3201         improve exception handle inside runtime-invoke, check whether the
3202         exception is actually caught in the method being invoked and not
3203         by the runtime-invoke-wrapper.
3204
3205 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
3206
3207         * image-writer.c (append_subsection): Don't align subsections of the
3208         debug_line section as a workaround.
3209
3210         * dwarfwriter.c: Emit line number info in the AOT case as well.
3211
3212 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
3213
3214         This patch is contributed under the terms of the MIT/X11 license
3215
3216        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
3217        code_len <= code_size
3218
3219 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
3220
3221         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
3222
3223 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
3224
3225         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
3226         invoke wrappers, we now use trampolines instead.
3227
3228 2009-06-04  Mark Probst  <mark.probst@gmail.com>
3229
3230         * mini-darwin.c: The exception thread must not be registered with
3231         the GC.
3232
3233 2009-06-04  Mark Probst  <mark.probst@gmail.com>
3234
3235         * mini-gc.c: Disable the code because it makes SGen crash.
3236
3237 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
3238
3239         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
3240         instead of asserting.
3241
3242 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
3243
3244         * aot-compiler.c (mono_compile_assembly): Move the creation of the
3245         output file after the code has been compiled.
3246
3247 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
3248
3249         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
3250
3251 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
3252
3253         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
3254         entries distinction to simplify the code.
3255
3256         * mini.h: Bump AOT file format version.
3257         
3258 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
3259
3260         * objects.cs: Fix the signature of one of the tests.
3261
3262         * mini.c (mini_create_ftnptr): New helper function, moved here from
3263         object.c.
3264         (mini_get_addr_from_ftnptr): Ditto.
3265         (mini_init): Install the new helpers.
3266
3267 2009-05-28  Martin Baulig  <martin@ximian.com>
3268
3269         Correctly initialize the debugger when embedding Mono.
3270
3271         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
3272         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
3273         see documentation in mini_debug_running_inside_mdb().
3274
3275         * debug-debugger.c
3276         (mini_debug_running_inside_mdb): New function to check whether
3277         we're running inside mdb.
3278
3279         * mini.c (mini_init): Call mini_debugger_init() if we're running
3280         inside the debugger.
3281
3282         * driver.c (mono_main): Moved the call to mini_debugger_init()
3283         into mini_init() to make this work when embedding Mono.
3284
3285         * debug-debugger.c (mini_debugger_init): Warn about duplicate
3286         calls to mini_debugger_init().
3287
3288         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
3289         mono_debugger_main() -> mini_debugger_main() and put them inside a
3290         `MONO_DEBUGGER_SUPPORTED' conditional.
3291
3292 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
3293
3294         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
3295         this is no longer in use.
3296         * mini.h: Same.
3297
3298 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
3299
3300         * mini-sparc.c (add_outarg_load): Fix the sparc build.
3301
3302         * aot-compiler.c (emit_method_code): Always write out C style symbols for
3303         methods.
3304
3305 2009-05-27  Martin Baulig  <martin@ximian.com>
3306
3307 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3308
3309         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
3310         long_conv_to_r_un to 64 bits.
3311
3312         * cpu-x86.md: Increase the instruction size due to the changes.
3313
3314         * iltests.il.in: Add regression test.
3315
3316         Fixes #467201.
3317
3318 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3319
3320         * objects.cs: Move the previous test from basic.cs to here.
3321
3322 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3323
3324         * basic.cs: Add regression test for #506915.
3325
3326 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3327
3328         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
3329         optimization we must check the bb of the first byte of stobj as
3330         it's the only one set in cil_offset_to_bb.
3331
3332         Fixes #506915.  
3333
3334 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
3335
3336         * image-writer.c: Fix pointer directive on ppc64.
3337
3338 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
3339
3340         * image-writer.c (asm_writer_emit_section_change): Avoid using
3341         .bss subsections on ppc too.
3342
3343 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
3344
3345         * image-writer.c: Fix the definition of TARGET_ASM_....
3346         
3347         * image-writer.c: Fix the emission of assembler directives in the last
3348         change.
3349
3350         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
3351         exception throwing code to accomodate ppc64.
3352
3353         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
3354         size to work on ppc64 too.
3355
3356         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
3357         too.
3358
3359         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
3360         the assembler dialect instead of using platform specific defines.
3361
3362 2009-05-22  Geoff Norton  <gnorton@novell.com>
3363
3364         * mini-arm.c (get_call_info): If a structure is split between the stack
3365         and argument registers, we should not advance the stack pointer by the entire
3366         native size, but just by the amount that spilled.
3367
3368 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
3369
3370         * mini-arm.c (get_call_info): Handle structures with alignment requirements
3371         correctly.
3372
3373 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
3374
3375         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
3376         wrappers normally.
3377         
3378         * aot-compiler.c (add_extra_method): Fix up the collection of extra
3379         methods so wrapper don't get added twice.
3380         (add_generic_instances): Don't add methods of arrays.
3381
3382         * generics.cs: Mark one test as !FULLAOT.
3383
3384 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
3385
3386         * mini-x86.c (emit_move_return_value): Remove unused vars.
3387
3388 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
3389
3390         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
3391         decomposing 8 bytes structs into a LCALL.
3392
3393         * mini-x86.c (emit_move_return_value): We no longer push the vtype
3394         pointer for where to store the returned regs.
3395
3396         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
3397         state the concern.
3398
3399         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
3400
3401 2009-05-20  Miguel de Icaza  <miguel@novell.com>
3402
3403         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
3404         without getenv.
3405
3406 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
3407
3408         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
3409
3410         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
3411         generics.
3412
3413 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
3414
3415         * local-propagation.c (mono_local_cprop): Avoid local propagation
3416         across paired add/sub if the first instruction dest reg is it's
3417         source reg. For example:
3418
3419         int_add_imm R12 <- R12 [1] clobbers: 1
3420         int_sub_imm R42 <- R12 [1] clobbers: 1
3421
3422         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
3423         maintain the math identify.
3424
3425         Fixes #505375.
3426
3427 2009-05-20  Andreia Gaita  <avidigal@novell.com>
3428
3429         * Makefile.am: avoid going on the network just to get the revision,
3430         use git log instead
3431
3432 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
3433
3434         Fixed estimate for short branches on amd64 (they were off mark, and
3435         enabling call prolog-epilog instrumentations caused assertions).
3436         * mini.h (struct MonoBasicBlock): added max_length field to hold the
3437         estimate for the maximum length of this basic block.
3438         * mini-amd64.c:
3439         - mono_arch_emit_prolog: compute max_length for each basic block
3440           (instead of max_offset), and inflate size estimate also for entry bb
3441           in case of code instrumentation.
3442         - mono_arch_output_basic_block: get rid of "cpos" (the current
3443           estimated "position" in the code), and always use "offset" instead,
3444           which is accurate; at the beginning of the function quickly recompute
3445           max_offset for all the remaining blocks, starting from the current
3446           cfg->code_len (which is correct, and not estimated) and using the
3447           estimated block lengths computed previously.
3448
3449 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
3450
3451         * exceptions-ppc.c: Remove the caching from the trampoline creation 
3452         functions, it is already done in the caller.
3453
3454         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
3455
3456         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
3457         MONO_ARCH_GSHARED_SUPPORTED define.
3458
3459         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
3460
3461         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
3462         function.
3463
3464 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
3465
3466         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
3467         call to mono_marshal_get_rgctx_invoke ().
3468
3469         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
3470         mono_marshal_get_static_rgctx_invoke (), all platforms which support
3471         gshared use the static rgctx trampolines now.
3472         
3473         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
3474         platform supports it.
3475
3476 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3477
3478         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
3479
3480         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
3481
3482 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3483
3484         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
3485
3486         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
3487         for ppc.
3488
3489 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
3490
3491         Made it possible for mono_arch_instrument_epilog to preserve
3492         argument registers, otherwise instrumenting the "epilogue" before
3493         a tail call would clobber them.
3494         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
3495         if like mono_arch_instrument_epilog but with an additional parameter
3496         that states if argument registers must be preserved.
3497         * mini.c: implemented mono_arch_instrument_epilog as a call to
3498         mono_arch_instrument_epilog_full without asking to preserve argument
3499         registers (this makes the existing code work as usual).
3500         * mini-amd64.c:
3501         - mono_arch_instrument_epilog: add parameter to transform it into
3502         mono_arch_instrument_epilog_full, and preserve argument registers
3503         when required.
3504         - mono_arch_output_basic_block, OP_TAILCALL case: call
3505         mono_arch_instrument_epilog_full.
3506         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
3507         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
3508         only transformed mono_arch_instrument_epilog into
3509         mono_arch_instrument_epilog_full.
3510
3511 2009-05-15  Geoff Norton  <gnorton@novell.com>
3512
3513         * mini-darwin.c: This works on arm now.
3514
3515 2009-05-14  Geoff Norton  <gnorton@novell.com>
3516
3517         * jit.h, driver.c: Allow full-aot to be decided programatically by the
3518         embedding api.
3519
3520 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3521
3522         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
3523         label names.
3524
3525         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
3526         wrappers during full aot mode correctly.
3527
3528         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
3529         methods correctly.
3530
3531         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
3532         mono_metadata_type_hash ().
3533
3534 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
3535
3536         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
3537         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
3538         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
3539         Removed MONO_INST_BRLABEL from the instruction flags, and the
3540         remaining code that used it, because we do not support branches inside
3541         basic blocks (and branch target labels) anymore.
3542         * Makefile.am: As part of the above cleanup, remove reference to
3543         BURG files which don't exist anymore.
3544
3545 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
3546
3547         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
3548         osx.
3549
3550         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
3551         to use mono_arch_throw_corlib_exception.
3552
3553         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
3554         mono_arch_throw_corlib_exception for throwing corlib exceptions.
3555
3556         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
3557         domain mempool.
3558
3559         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
3560
3561         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
3562         for the got to make debugging easier and to avoid confusing it with the
3563         system got.
3564         
3565         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
3566         method so a breakpoint can be set when using gdb.
3567
3568 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
3569
3570         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
3571         on mono_method_get_imt_slot ().
3572
3573         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
3574         num_decodes variables.
3575
3576         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
3577         change as it doesn't seem to work.
3578         
3579         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
3580         wrappers.
3581
3582 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
3583
3584         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
3585         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
3586
3587         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
3588         builder when using full aot.
3589
3590         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
3591         here, it is already handled.
3592         
3593         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
3594         correctly for IMT.
3595
3596         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
3597
3598         * mini-arm.h: Enable IMT for full aot.
3599         
3600         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
3601         arch doesn't support it.
3602
3603         * mini.c (mini_init): Don't disable IMT for full aot if the
3604         architecture supports it.
3605
3606         * mini.h (MonoAotTrampoline): New enum containing the different types
3607         of 'numerous' trampolines.
3608         (MONO_AOT_FILE_VERSION): Bump this.
3609
3610         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
3611         static rgctx trampolines. Add support for full-aot IMT thunks.
3612
3613         * mini-amd64.h: Enable IMT for full aot.
3614
3615         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
3616         to exclude tests belonging to a category.
3617
3618         * generics.cs: Mark some tests with a !FULLAOT category.
3619
3620         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
3621         generics tests.
3622
3623 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
3624
3625         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
3626         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
3627         (emit_plt): Fix a warning.
3628
3629 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
3630
3631         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
3632         back into aot-compiler.c to a place where the other functions shared by
3633         the runtime and aot compiler are.
3634         
3635         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
3636         as done previously, instead of in MonoAotFileInfo, since pointers might have
3637         alignment requirements.
3638
3639         * mini.h: Bump AOT file format version.
3640
3641 2009-05-10  Miguel de Icaza  <miguel@novell.com>
3642
3643         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
3644         that is used at runtime from the aot-compiler.c, this makes it
3645         work on setups that remove the AOT compiler from the output
3646         image. 
3647
3648 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
3649
3650         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
3651         PPC.
3652
3653         * mini-ppc.h: Enable static rgctx trampolines for ppc.
3654
3655         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
3656
3657         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
3658         stuff to mono_arch_decompose_long_opts ().
3659         (mono_decompose_opcode): Remove some dead code.
3660
3661 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
3662
3663         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
3664         cmethod can be null for quite a some reasons.
3665
3666 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
3667
3668         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
3669
3670 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
3671
3672         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
3673
3674 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
3675
3676         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
3677         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
3678         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
3679         calls returning structures by addr on amd64.
3680
3681         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
3682
3683         * iltests.il.in: Restructure the tail call tests a bit.
3684         
3685 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
3686
3687         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
3688         for virtual methods too.
3689
3690 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
3691
3692         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
3693         due to regression in verifying System.dll.
3694
3695 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
3696
3697         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
3698         in dynamic methods.
3699
3700         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
3701         instances.
3702
3703         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
3704         g_str_hash () which can change.
3705
3706         * driver.c (mini_regression): Disable optimizations not supported by
3707         the cpu. Fixes #500019.
3708
3709         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
3710         build.
3711
3712 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
3713
3714         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
3715         to the latest LLVM code.
3716
3717 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
3718
3719         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
3720
3721 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
3722
3723         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
3724         x86/amd64.
3725
3726         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
3727         no longer saving offsets, so just save the patch types along with the other
3728         info.
3729         * aot-runtime.c (load_patch_info): Update after the changes to 
3730         encode_patch_list ().
3731         (decode_got_entry): Removed, merged into load_patch_info ().
3732         (is_shared_got_patch): Removed, call the same function from
3733         aot-compiler.c.
3734
3735         * mini.h: Bump aot file format version.
3736         
3737         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
3738         half-finished no-dlsym code.
3739
3740         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
3741         option.
3742
3743         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
3744         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
3745
3746 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
3747
3748         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
3749         buffer length to work with AOT code.
3750
3751         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
3752         ldfld/stfld opcodes.
3753
3754         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
3755         as it is not used.
3756
3757         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
3758
3759         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
3760
3761         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
3762         LLVM API.
3763
3764         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
3765         if needed. Don't decompose long operations when using llvm.
3766
3767 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
3768
3769         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
3770         PAGESIZE constant.
3771
3772         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
3773
3774 2009-05-03  Martin Baulig  <martin@ximian.com>
3775
3776         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
3777         mono_debugger_insert_method_breakpoint() since the class init
3778         handler we're inserting at the top of the method already gives us
3779         a notification.
3780
3781 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
3782
3783         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
3784         to mono_arch_decompose_long_opts () for x86 and arm.
3785
3786 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
3787
3788         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
3789         TARGET_AMD64 here.
3790
3791 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
3792
3793         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
3794         JIT code.
3795
3796 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
3797
3798         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
3799         number of trampolines used in full-aot mode.
3800
3801         * aot-compiler.c: Add an ntrampolines option to set the number of 
3802         trampolines emitted in full-aot mode.
3803
3804 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
3805
3806         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
3807         a volatile load. Get rid of get_tempname (), llvm assigns names
3808         automatically.
3809
3810         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
3811         builder function.
3812
3813         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
3814         a value.
3815
3816         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
3817         level 1.
3818
3819         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
3820         to the same register as a fixed sreg2. Fixes #497271.
3821
3822         * iltests.il.in: Add a new test.
3823
3824 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
3825
3826         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
3827         stack, since pushes complicate exception handling.
3828
3829         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
3830         the stack if they are passed using moves.
3831
3832         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3833
3834         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
3835         when using llvm.
3836
3837         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
3838         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
3839         of FMOVE if it is an R4.
3840
3841 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
3842
3843         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
3844
3845         * mini.h (LLVMCallInfo): New structure to store calling convention 
3846         information for the LLVM back end similar to the CallInfo structures in 
3847         the back-ends.
3848
3849         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
3850         call information in a format usable by LLVM.
3851         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
3852
3853         * method-to-ir.c (mono_emit_call_args): Emit calls using 
3854         mono_llvm_emit_call () when compiling using LLVM.
3855
3856         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
3857         comments to all functions. Fix memory leaks. Add a public init/cleanup
3858         function.
3859
3860         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
3861
3862         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
3863         mono_array_new_va () jit icall.
3864         
3865 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
3866
3867         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
3868         multiple machine description files to be specified.
3869         * mini-ops.h: fixes for cross-compilation.
3870
3871 2009-04-22  Miguel de Icaza  <miguel@novell.com>
3872
3873         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
3874         some porting work.
3875
3876 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
3877
3878         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
3879         to prevent asserts in various passes. Fixes #497220.
3880
3881 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
3882
3883         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
3884         a racy assert.
3885
3886         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
3887         table to avoid duplicates.
3888
3889         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3890         
3891         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
3892         option is used.
3893
3894 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
3895
3896         * mini.c (mini_method_verify): Fail fulltrust code if the exception
3897         is for method or field access.
3898
3899 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
3900
3901         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
3902         a Value to stdout.
3903
3904         * mini-llvm.c (mono_llvm_emit_method): Use it.
3905         
3906         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
3907         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
3908         on volatile values.
3909
3910         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
3911         synchronized methods.
3912
3913         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
3914
3915         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
3916
3917         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
3918         OP_LOADI8_MEM.
3919
3920         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
3921         allowing some options to be set dynamically.
3922
3923 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
3924
3925         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
3926         unconditional branch.
3927
3928         * mini.h (MonoTrampolineType): Add new trampoline type 
3929         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
3930         compiled code.
3931
3932         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
3933         function.
3934
3935         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
3936         creation function.
3937
3938         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
3939         is enabled. Instead, use the llvm vcall trampoline.
3940         
3941         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
3942
3943         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
3944         
3945         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
3946         functions.
3947
3948         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
3949         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
3950
3951         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
3952         OP_IA64_CSET opcode.
3953
3954         * mini.c: Fix a warning.
3955
3956         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
3957         THROW to the appropriate llvm type.
3958
3959 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
3960
3961         * mini.c (mini_method_compile): Add statistics for methods JITted
3962         with/without LLVM.
3963
3964 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3965
3966         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
3967         OP_IA64_CMP_<cond>_IMM opcodes.
3968
3969 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3970
3971         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
3972         corlib exceptions.
3973
3974         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
3975         correctly.
3976
3977         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
3978         GENERICINST.
3979
3980 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
3981
3982         * mini-exceptions.c : add thread id to EXCEPTION trace message.
3983
3984 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3985
3986         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
3987         support.
3988
3989         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
3990         rgctx invoke trampolines for x86.
3991
3992         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
3993         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
3994         (mono_arch_get_vcall_slot): Simplify this.
3995
3996 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
3997
3998         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
3999         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
4000
4001 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
4002
4003         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
4004         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
4005
4006         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
4007
4008         * liveness.c (visit_bb): Remove a needless assert.
4009
4010 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
4011
4012         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
4013         full aot support to the arch specific code.
4014
4015         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
4016
4017         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
4018
4019         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
4020         
4021         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
4022         collect information about the delegate invoke impl trampolines.
4023
4024         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
4025         to save trampolines during full-aot mode.
4026
4027         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
4028         creation function which returns a trampoline which sets the rgctx
4029         argument.
4030         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
4031         wrapper if possible.
4032         (mono_delegate_trampoline): Ditto.
4033
4034         * mini.c (mono_jit_runtime_invoke): Ditto.
4035
4036         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
4037         
4038         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
4039
4040         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4041         
4042 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
4043
4044         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
4045         just setting the opcode to OP_NOP.
4046
4047 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
4048
4049         * mini.c (mini_method_compile): Put the last change inside an 
4050         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
4051         
4052         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
4053         and extend live ranges to cover the whole method when using xdb.
4054
4055         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
4056         do it in the trampolines.
4057
4058         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
4059         needed.
4060
4061         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
4062         
4063         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
4064         call code in full-aot mode since IMT is disabled there.
4065         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
4066         new JIT no longer has that restriction.
4067
4068         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4069
4070         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
4071         a more compact format.
4072         (mono_aot_wrapper_name): New function to return a unique name for a
4073         wrapper method, also used by the AOT runtime.
4074
4075         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
4076         aot-compiler.c.
4077
4078         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
4079         when a ICollection<T> etc is encountered.
4080         (add_generic_instances): Process method arguments/locals too.
4081         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
4082         trampoline names.
4083
4084         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
4085         
4086 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
4087
4088         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
4089
4090         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
4091
4092         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
4093         representing the result of the decomposition. Nullify instructions
4094         instead of setting them to OP_NOP since nops can't have registers
4095         set.
4096
4097 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
4098
4099         * aot-compiler.c (mono_compile_assembly): Split this huge function into
4100         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
4101         info. Strip 'mapping symbols' on ARM.
4102
4103         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
4104         
4105         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
4106         this with the native genmdesc.
4107
4108 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
4109
4110         * aot-runtime.c:  Fixing the MSVC build.
4111
4112         Code is contributed under MIT/X11 license.
4113
4114 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
4115
4116         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
4117         JITted code depends on it.
4118
4119 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
4120
4121         * aot-compiler.c: Use new MonoGenericParam accessors.
4122
4123 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
4124
4125         Reduce memory usage and improve correctness wrt MonoGenericParam
4126         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
4127         handing.  Avoid allocating MonoGenericParams, but use the ones in
4128         the container itself.
4129
4130 2009-04-07  Miguel de Icaza  <miguel@novell.com>
4131
4132         * tasklets.c: Return exceptions in the out argument.
4133
4134 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
4135
4136         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
4137         opcode. Use pointer types in more places instead of casting them to 
4138         integers.
4139
4140         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
4141         optimizations.
4142         (mono_llvm_optimize_method): New helper function to optimize a method.
4143
4144         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
4145         widening code so it could be called from more places.
4146         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
4147         code paths in the call opcodes.
4148
4149 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
4150
4151         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
4152
4153 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
4154
4155         * dwarfwriter.c: Use _ to separate class name 
4156         components as gdb can't handle '.'. Represent reference variables
4157         as 'class <NAME>&'.
4158         
4159         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
4160
4161         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
4162         
4163         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
4164
4165         * gc-test.cs: New file with GC stack marking tests.
4166         
4167         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
4168         negative numbers for vfp.
4169
4170         * basic-float.cs: Add a test.
4171         
4172 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
4173
4174         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
4175
4176 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
4177
4178         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
4179         part of tasklet/continuation support.
4180
4181 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
4182
4183         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
4184         amd64 opcodes inside an ifdef.
4185
4186         * dwarfwriter.c: Emit inheritance information for classes, emit fields
4187         of complex types.
4188         
4189         * dwarfwriter.c (emit_type): Emit the class info for classes.
4190
4191 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
4192
4193         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
4194
4195         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
4196
4197         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
4198
4199         * ssa.c (mono_ssa_compute): Fix some memory leaks.
4200
4201 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
4202
4203         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
4204
4205         * mini-llvm.c: Update comments.
4206
4207         * mini.h (COMPILE_LLVM): New macro.
4208
4209         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
4210
4211         * ssa.c (mono_ssa_compute): Ditto.
4212         
4213         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
4214         the unwind ops from a DWARF FDE.
4215
4216         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
4217         methods by extracting the dwarf unwind ops from the unwind info generated
4218         by LLVM.
4219         
4220         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
4221         calls.
4222
4223         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
4224         addressing modes.
4225
4226 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
4227
4228         * Makefile.am (llvm_sources): Enable this.
4229
4230         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
4231         failing back to the JIT if something cannot be handled.
4232
4233         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
4234         compiling with LLVM.
4235
4236         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
4237         compiling with LLVM.
4238
4239         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
4240         compiling with LLVM.
4241
4242         * mini-ops.h: Add a few opcodes needed by LLVM.
4243
4244         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
4245         has no unwind info.
4246
4247         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
4248         backend.
4249
4250         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
4251
4252         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
4253
4254 2009-04-01  Mark Probst  <mark.probst@gmail.com>
4255
4256         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
4257         ridiculously large methods.
4258
4259 2009-03-31  Martin Baulig  <martin@ximian.com>
4260
4261         * debug-debugger.c (debugger_remove_breakpoint): Call
4262         mono_debugger_remove_class_init_callback ().
4263
4264 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
4265
4266         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
4267         right before emitting code, not at the start.
4268
4269         * mini.c (mono_postprocess_patches): Extract this into a separate function
4270         from mono_codegen ().
4271
4272         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
4273         byref types correctly.
4274
4275 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
4276
4277         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
4278         by the last change.
4279
4280 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
4281
4282         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
4283         indirect calls, this avoids problems where get_vcall_slot () would get
4284         confused by the native code for the instruction preceeding the call.
4285         (mono_arch_get_vcall_slot): Simplify this.
4286         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
4287
4288         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
4289         register allocator now seems to depend on them instead of the data in
4290         cpu-<ARCH>.md.
4291
4292         * mini.c (mini_method_compile): Throw the correct type of exception if
4293         mono_method_get_header () fails because of a loading error.
4294
4295 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
4296
4297         * mini.c (mini_method_compile): Clear the loader error if the method
4298         header cannot be decoded.
4299
4300         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
4301         interface methods on proxies correctly.
4302
4303         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
4304         this argument for vtype methods. Add precise liveness info for arguments.
4305
4306         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
4307         LIVERANGE_START/END opcodes.
4308
4309         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
4310         for arguments and values in registers.
4311
4312 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
4313
4314         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
4315         return a valuetype. Fixes #487518.
4316
4317         * iltests.il: Add a test.
4318         
4319         * aot-compiler.c: Use mono_thread_create () to create helper threads.
4320
4321         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
4322         closed over a null reference correctly.
4323
4324 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
4325
4326         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
4327
4328 2009-03-25  Mark Probst  <mark.probst@gmail.com>
4329
4330         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
4331         allocated to the same registers as fixed sregs.
4332
4333 2009-03-24  Mark Probst  <mark.probst@gmail.com>
4334
4335         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
4336         ATOMIC_CAS_IMM ops.
4337
4338         * method-to-ir.c: Handle more cases for
4339         Interlocked.CompareExchange.
4340
4341         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
4342         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
4343         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
4344
4345 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
4346
4347         * aot-runtime.c (decode_method_ref): Fix a warning.
4348
4349         * unwind.c (mono_unwind_frame): Ditto.  
4350
4351 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4352
4353         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
4354         (mono_compile_assembly): Enable the binary writer for full-aot as well.
4355
4356         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
4357         fix the handling of large values in the ALU_PC_G0_NC relocation.
4358
4359 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4360
4361         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
4362
4363 2009-03-22  Mark Probst  <mark.probst@gmail.com>
4364
4365         * method-to-ir.c (mono_spill_global_vars): Support for ternary
4366         ops.
4367
4368 2009-03-22  Mark Probst  <mark.probst@gmail.com>
4369
4370         * method-to-ir.c: MINI_OP3 needs a comma.
4371
4372         * method-to-ir.c, mini.h, mini.c: Remove
4373         mono_init_op_sreg_counts ().
4374
4375 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4376
4377         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
4378         OP_JMP.
4379         
4380         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
4381         assertion.
4382
4383         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
4384
4385         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
4386         code somewhat.
4387
4388 2009-03-21  Mark Probst  <mark.probst@gmail.com>
4389
4390         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
4391         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
4392         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
4393         operations.
4394
4395 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
4396
4397         * driver.c: Change location of gc_wrapper.h.
4398
4399         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
4400         inside finally clauses correctly. Fixes #485721.
4401
4402         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
4403         after the change above.
4404
4405         * exceptions.cs: Add a test.
4406         
4407 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
4408
4409         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
4410
4411         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
4412         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
4413         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
4414
4415         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
4416         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
4417
4418 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
4419
4420         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
4421         Simplify logic for ensure_method_is_allowed_to_call_method. 
4422         Handle wrappers on callers.
4423
4424 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
4425
4426         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
4427         them don't run yet.
4428
4429         * basic-simd.cs: Fix the names of some test methods.
4430
4431 2009-03-18  Geoff Norton  <gnorton@novell.com>
4432
4433         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
4434
4435 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
4436
4437         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
4438
4439 2009-03-17  Jb Evain  <jbevain@novell.com>
4440
4441         * driver.c: remove now uneeded call to mono_gc_base_init before
4442         mono_profiler_load.
4443
4444 2009-03-17  Jb Evain  <jbevain@novell.com>
4445
4446         * dwarfwriter.c (token_handler): handle more cases.
4447
4448 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
4449
4450         * method-to-ir.c: Remove more dead code (that was required only
4451         because of method_is_safe). Fix compiler warnings.
4452
4453 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
4454
4455         * method-to-ir.c: Remove unneeded/useless method_is_safe
4456         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
4457
4458 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
4459
4460         * mini.c (mini_method_compile): Print the method been compiled with
4461         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
4462         for people not familiar with the runtime.
4463
4464 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
4465
4466         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
4467         a managed object which is later put into a GList. Return its class instead.
4468
4469         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
4470         stack slots when using sgen.
4471
4472 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
4473
4474         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
4475
4476 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
4477
4478         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
4479         > so it works on the first vreg as well.
4480
4481 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
4482
4483         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
4484         trigger randomly.
4485
4486         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
4487         
4488         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
4489         implement GArray.
4490
4491 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
4492
4493         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
4494         native->IL offset mapping.
4495
4496 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
4497
4498         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
4499
4500         * basic.cs: Add a test.
4501
4502 2009-03-11  Mark Probst  <mark.probst@gmail.com>
4503
4504         * mini-x86.c (mono_arch_output_basic_block): Use different
4505         registers in case the ones we want to overwrite are used by the
4506         other operand.  Fixes regression in #480807.
4507
4508 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
4509
4510         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
4511
4512         * dwarfwriter.c (emit_line_number_info): The line number info for
4513         IL code was off by one. Fix that.
4514
4515         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
4516         stack.
4517
4518 2009-03-09  Mark Probst  <mark.probst@gmail.com>
4519
4520         Contributed under the terms of the MIT/X11 license by Steven
4521         Munroe <munroesj@us.ibm.com>.
4522
4523         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
4524         Fixes #483462.
4525
4526 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
4527
4528         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
4529         as well.
4530
4531 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
4532
4533         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
4534         the delegate ctor handling code. Fixes #482638.
4535         
4536         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
4537         #481458.
4538
4539         * iltests.il.in: Add a test.
4540         
4541         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
4542         mini-posix.c.
4543
4544 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4545
4546         * mini-trampolines.c (mono_create_jump_trampoline): If the method
4547         is shared generic code, return the trampoline, even if the method
4548         has already been compiled.  Fixes #479763.
4549
4550         * mini.c, mini.h: New function
4551         mono_jit_find_compiled_method_with_jit_info() which is the same as
4552         mono_jit_find_compiled_method() but also returns the jit info.
4553
4554 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4555
4556         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
4557         for methods which actually have one.  For all other methods, make
4558         sure the this argument var is live the whole method.
4559
4560         * mini.c (mini_method_compile): Every shared method has a
4561         this/vtable/mrgctx info.  Fixes #480807.
4562
4563 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4564
4565         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
4566         generic/imt thunks where some entries branch through the vtable,
4567         while other entries branch directly.
4568
4569 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
4570
4571         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
4572
4573         * mini-windows.c: Ditto.
4574         
4575         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
4576         ctors.
4577
4578 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
4579
4580         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
4581         down an assert.
4582
4583 2009-03-04  Mark Probst  <mark.probst@gmail.com>
4584
4585         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
4586         #481403.
4587
4588 2009-03-04  Mark Probst  <mark.probst@gmail.com>
4589
4590         * exceptions-x86.c: Include debug-mini.h - fixes build.
4591
4592 2009-03-04  Martin Baulig  <martin@ximian.com>
4593
4594         * debug-mini.c: Clean up the exception API and add documentation.
4595         (mono_debugger_handle_exception): New public method; this is
4596         called when throwing an exception or encountering an unhandled one.
4597         (mono_debugger_call_exception_handler): Formerly known as
4598         mono_debugger_handle_exception(); this is used to tell the
4599         debugger that we're about to invoke an exception handler.
4600
4601 2009-03-04  Martin Baulig  <martin@ximian.com>
4602
4603         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
4604         ../metadata/mono-debug-debugger.c; save and reset exception state.
4605
4606 2009-03-02  Martin Baulig  <martin@ximian.com>
4607
4608         * debug-mini.c: Moved the debugger exception handling here from
4609         ../metadata/mono-debug-debugger.c.
4610
4611         * debug-mini.h
4612         (MonoDebuggerExceptionAction): New exception typedef.
4613
4614         * debug-mini.c
4615         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
4616
4617         * exceptions-amd64.c
4618         (mono_amd64_throw_exception): Use the new debugger exception
4619         handling code.
4620
4621         * mini-exceptions.c
4622         (mono_handle_exception_internal): Don't call
4623         mono_debugger_unhandled_exception() here.
4624
4625 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
4626
4627         * mini.c aot-compiler.c: Update after the changes to 
4628         mono_marshal_get_runtime_invoke ().
4629
4630         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
4631         Virtual generic methods might not have method->slot set, work around
4632         that.
4633
4634         * generics.cs: Add a test.
4635
4636 2009-03-02  Geoff Norton  <gnorton@novell.com>
4637
4638         * mini.c:
4639         * driver.c: Allow signal chaining of SIGFPE as well.
4640
4641 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
4642
4643         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
4644         this since it now receives the method not its generic context in the
4645         IMT reg.
4646
4647         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
4648         generic/imt thunks where some entries branch through the vtable, while
4649         other entries branch directly.
4650
4651         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
4652
4653         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
4654         support for interface methods as well.
4655
4656         * mini-trampolines.c: Add support for virtual generic methods in interfaces
4657         using the normal IMT thunks.
4658
4659         generics.cs: Add new tests.
4660         
4661         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
4662         the generic inst to the generic imt thunks. This fixes AOT support, 
4663         improves consistency with the normal IMT thunks, and makes it easier to
4664         add support for interface generic virtual methods later.
4665
4666         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
4667         
4668 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
4669
4670         * driver.c (mono_set_signal_chaining): New public API function to enable
4671         signal chaining on POSIX platforms.
4672
4673         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
4674         (si@lindenlab.com) to implement signal chaining. The original patch was
4675         contributed under the MIT X/11 license:
4676         https://bugzilla.novell.com/show_bug.cgi?id=318894
4677
4678 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
4679
4680         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
4681         too until it can be made to run on amd64.
4682
4683 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
4684
4685         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
4686         to  get_generic_context_from_code () + get_call_info () if possible.
4687
4688 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
4689
4690         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
4691         suspend-on-sigsegv functionality.
4692
4693         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
4694         to suspend when a native SIGSEGV is received. This is useful for debugging
4695         crashes which don't happen under gdb, since a live process contains more
4696         information than a core file.
4697
4698         * mini-exceptions.c (mono_print_thread_dump): Use 
4699         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
4700
4701         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
4702
4703         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
4704         
4705         * basic-float.cs: Disable the tests which currently fail on amd64.
4706
4707         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
4708         value to mono_arch_patch_callsite () to fix crashes.
4709         
4710         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
4711
4712 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
4713
4714         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
4715         nop code by patching the call address to point to the nullified class init
4716         trampoline, as the former does not seem to be safe on SMP machines.
4717
4718 2009-02-23  Mark Probst  <mark.probst@gmail.com>
4719
4720         * mini-ops.h: Fix the argument types for a few x86 opcodes where
4721         they were wrong.
4722
4723 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
4724
4725         * basic-float.cs basic-calls.cs: Fix warnings.
4726
4727 2009-02-22  Mark Probst  <mark.probst@gmail.com>
4728
4729         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
4730         correct frame pointer in the LMF.  Should fix #478394.
4731
4732 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
4733
4734         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
4735
4736         * image-writer.c: Make the binary writer less verbose.
4737
4738 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
4739
4740         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
4741         are called from runtime invoke wrappers.
4742
4743 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
4744
4745         * cpu-ppc.md (store_memindex): Increase the size of this.
4746
4747 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4748
4749         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4750
4751         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
4752
4753         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
4754         OP_LCONV_TO_R_UN.
4755
4756         Last fix for of #467201.
4757
4758
4759 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4760
4761         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4762
4763         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
4764         and long_conv_to_r8_2:
4765
4766         Fixed part of #467201.
4767
4768 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4769
4770         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4771
4772         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
4773         conversion to 32 bits.
4774
4775         * cpu-x86.md: Increase the size of int_conv_to_r4.
4776
4777         * basic-float.cs: Add a test for this.
4778
4779         Fixed part of #467201.
4780
4781 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4782
4783         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4784
4785         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
4786         conversion to 64 bits.
4787
4788         * basic-float.cs: Add a test for this.
4789
4790         Fixed part of #467201.
4791
4792 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4793
4794         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4795
4796         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
4797         This behavior is compatible with MS.
4798
4799         * iltest.il.in: Add a test for this.
4800
4801         Fixed part of #467201.
4802
4803 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4804
4805         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4806
4807         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
4808         change the precision of the value.
4809
4810         * cpu-x86.md: Define len for float_conv_to_r4.
4811
4812         * basic-float.cs: Add a test for this.
4813
4814         Fixed part of #467201.
4815
4816 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
4817
4818         * mini.c: Adjust locking order to the new semantics where the loader lock
4819         comes first.
4820
4821 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
4822
4823         * aot-runtime.c:
4824         * mini-amd64.c:
4825         * mini-arm.c:
4826         * mini-ia64.c:
4827         * mini-mips.c:
4828         * mini-ppc.c:
4829         * mini-sparc.c:
4830         * mini-trampolines.c:
4831         * mini-x86.c:
4832         * mini.c:
4833         * tramp-alpha.c:
4834         * tramp-amd64.c:
4835         * tramp-arm.c:
4836         * tramp-hppa.c:
4837         * tramp-ia64.c:
4838         * tramp-mips.c:
4839         * tramp-ppc.c:
4840         * tramp-s390.c:
4841         * tramp-s390x.c:
4842         * tramp-sparc.c:
4843         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
4844
4845 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
4846
4847         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
4848         as it is incorrect.
4849
4850 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
4851
4852         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
4853         for cctors if needed.
4854
4855 2009-02-17  Mark Probst  <mark.probst@gmail.com>
4856
4857         * mini-ppc.c: Fix build on Darwin.
4858
4859 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
4860
4861         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
4862         version instead of 3 as valgrind doesn't like version 3.
4863
4864         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4865
4866         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
4867         usable for hashing methods.
4868         (emit_extra_methods): Use the new hash to avoid putting every method in the
4869         same hash bucket.
4870
4871         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
4872
4873         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
4874         whenever a method ref could match a method.
4875         
4876         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
4877         test to fail.
4878         
4879         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
4880         methods refs.
4881
4882         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
4883
4884         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
4885         the encoding buffer.
4886
4887         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
4888         mono_method_get_header () on inflated methods as an optimization.
4889
4890 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
4891
4892         * ssa.c (fold_ins): Fix another crash if the instruction following the
4893         switch was optimized away.
4894
4895 2009-02-16  Mark Probst  <mark.probst@gmail.com>
4896
4897         Contributed under the terms of the MIT/X11 license by Steven
4898         Munroe <munroesj@us.ibm.com>.
4899
4900         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
4901
4902 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
4903
4904         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
4905         around the mono_domain_alloc calls, it is now done by the functions
4906         themselves.
4907
4908         * aot-compiler.c (compile_method): Only add wrappers referenced by
4909         the method if compiling with full AOT.
4910         (mono_compile_assembly): Error out if --aot=full is specified on
4911         a platform where it is not supported.
4912
4913         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
4914         on ARM too.
4915
4916         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
4917         AOT support.
4918
4919         * aot-runtime.c (load_named_code): Handle 
4920         mono_arm_throw_exception_by_token.
4921
4922         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
4923
4924         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
4925         unaligned.
4926
4927         * Makefile.am (fullaotcheck): Exit if a test fails.
4928
4929         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
4930         on ARM.
4931         (mono_compile_assembly): Handle the assembler failing.
4932
4933         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
4934         accepting subsections of .bss.
4935
4936         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
4937         was optimized away.
4938
4939         * aot-compiler.c: Remove some unused includes.
4940         
4941         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
4942         now in MonoImageWriter.
4943
4944         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
4945         code sequence which matches a non-virtual call. Fixes #472654.
4946
4947 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
4948
4949         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
4950         xdebug code.
4951         
4952         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
4953         use the image/dwarf writers directly.
4954
4955         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
4956         field.
4957
4958         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
4959         MonoDwarfWriter.
4960
4961         * image-writer.h: Fix some typos.
4962
4963         * dwarfwriter.h dwarfwriter.c: New files.
4964         
4965         * aot-compiler.c: Extract the DWARF info writing functionality into a 
4966         separate module.
4967
4968         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
4969         argument to return unwind info.
4970
4971         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
4972
4973         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
4974         
4975         * aot-runtime.c (decode_method_ref): Add a case for 
4976         MONO_AOT_METHODREF_WRAPPER_NAME.
4977
4978         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
4979         for AOT.
4980
4981         * aot-compiler.c (encode_method_ref): Use the new constants.
4982
4983         * aot-runtime.c (decode_method_ref): Ditto.
4984
4985         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
4986         be compiled, not the icall itself.
4987
4988 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
4989
4990         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
4991         using decode_method_ref ().
4992
4993         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
4994         convert it to an in32. Fixes #475859.
4995
4996         * arrays.cs: Add a test.
4997
4998 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4999
5000         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
5001         OP_LCONV_TO_U2.
5002
5003         * basic-long.cs: Add a test.
5004
5005 2009-02-12  Mark Probst  <mark.probst@gmail.com>
5006
5007         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
5008         remove the frame pointer in leaf methods which don't receive any
5009         arguments, don't throw exceptions and don't do dynamic stack
5010         allocations.
5011
5012 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5013
5014         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
5015         the fail_tramp changes. Hopefully fixes #475132.
5016
5017 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
5018
5019         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
5020         instead of mono_metadata_signature_dup_full.
5021
5022 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5023
5024         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
5025         for processing jump tables. Fixes #473787.
5026
5027 2009-02-11  Mark Probst  <mark.probst@gmail.com>
5028
5029         * mini-generic-sharing.c: mini_method_get_context() just calls
5030         mono_method_get_context_general() now.
5031
5032         * mini.c, mini.h: Moved get_object_generic_inst(),
5033         construct_object_context_for_method() and
5034         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
5035
5036 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
5037
5038         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
5039         basic block fell through to its successor bblock without a branch. Fixes
5040         #474718.
5041
5042         * iltests.il.in: Add a test.
5043         
5044         * aot-compiler.c (encode_method_ref): Encode methods of array types.
5045         (can_encode_patch): We can now handle arrays of generic parameters and
5046         array methods.
5047
5048         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
5049
5050         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
5051         the AOT file to avoid some #ifdefs in aot-runtime.c
5052
5053         * mini.h: Bump AOT file format version.
5054
5055 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
5056
5057         * Makefile.am (fullaotcheck): Make this run the tests.
5058
5059         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
5060
5061 2009-02-10  Mark Probst  <mark.probst@gmail.com>
5062
5063         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
5064         individually.  Fixes #473482.
5065
5066 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
5067
5068         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
5069
5070 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
5071
5072         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
5073         (mono_compile_assembly): Hush compile warnings about
5074         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
5075         code path.
5076
5077 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
5078
5079         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
5080
5081         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
5082
5083         * aot-compiler.c: Fix arm support.
5084
5085         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
5086         img_writer_emit_unset_mode () function.
5087
5088         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
5089         (mono_unwind_get_dwarf_pc_reg): Ditto.
5090
5091         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
5092         Move almost all platform specific code to a set of arch_ functions, 
5093         and document them to ease porting.
5094         
5095         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
5096
5097         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
5098
5099         * aot-compiler.c: Extract the image writing functionality into a separate
5100         module to reduce the size of this file.
5101
5102 2009-02-09  Geoff Norton  <gnorton@novell.com>
5103
5104         * mini-s390.c: Fix the signature of emit_sig_cookie.
5105
5106 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
5107
5108         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
5109
5110         * aot-runtime.c (is_shared_got_patch): Ditto.
5111
5112         * aot-runtime.c (load_named_code): Cope with the fact that 
5113         decode_got_entry () won't decode the patch fully if its corresponding got
5114         entry is already filled.
5115         
5116         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
5117         Initialize *ji.
5118         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
5119
5120         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
5121         as the moving pointer instead of 'buf' for consistency with the rest of the
5122         codebase.
5123         (mono_arch_create_monitor_exit_trampoline): Ditto.
5124
5125         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
5126         generic_class_init trampolines.
5127         (add_generic_class): Extract some code from add_generic_instances () into a
5128         separate function so it can be called from other places too.
5129         (compile_method): Call add_generic_class () for the classes of inflated methods
5130         referenced by the method.
5131         (can_encode_patch): Allow references to generic parameters.
5132
5133         * aot-runtime.c: Add support the patches required by the new trampolines.
5134         
5135         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
5136         support.
5137
5138         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
5139         full-aot support.
5140
5141         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
5142         this from get_throw_pending_exception, make the signature full aot compatible.
5143
5144         * Makefile.am (fullaotcheck): New target to run full-aot tests.
5145
5146         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
5147
5148         * exceptions.cs: Add a test.
5149
5150 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
5151
5152         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
5153         use the DWARF_DATA_ALIGN constant instead.
5154
5155         * exception-<ARCH>.c: Update after the above change.
5156
5157         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
5158         dwarf unwinder.
5159
5160         * mini-arm.c: Enable the dwarf unwinder.
5161
5162         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
5163         instead of mono_class_setup_vtable ().
5164
5165 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
5166
5167         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
5168         dwarf unwinder.
5169
5170         * mini-x86.h: Enable the dwarf unwinder.
5171
5172 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
5173
5174         Fix mcs/tests/test-7.cs
5175         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
5176         2009-02-03.
5177
5178 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
5179
5180         * mini.c (print_jit_stats): Remove some unused statistics.
5181
5182 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
5183
5184         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
5185
5186 2009-02-05  Mark Probst  <mark.probst@gmail.com>
5187
5188         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
5189         the method we get from mono_object_get_virtual_method() because
5190         that function does it properly, now.
5191
5192 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
5193
5194         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
5195         opcodes. Fixes #472775.
5196
5197 2009-02-05  Mark Probst  <mark.probst@gmail.com>
5198
5199         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
5200         fact that mono_find_jit_info() sometimes returns the context
5201         corresponding to the jit info in new_ctx.  Fixes #472600.
5202
5203 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
5204
5205         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
5206         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
5207         klass->enum_basetype directly.
5208
5209         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
5210         enum subtypes.
5211
5212         * unwind.c: Avoid 0 sized arrays.
5213
5214 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
5215
5216         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
5217         size on systems with 64k pages. Fixes #471389.
5218
5219 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5220
5221         Contributed under the terms of the MIT/X11 license by Steven
5222         Munroe <munroesj@us.ibm.com>.
5223
5224         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
5225         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
5226         necessary.
5227
5228 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5229
5230         Contributed under the terms of the MIT/X11 license by Steven
5231         Munroe <munroesj@us.ibm.com>.
5232
5233         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
5234         comparison fix.
5235
5236         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
5237         The trampoline can be longer on PPC64.
5238
5239 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5240
5241         Contributed under the terms of the MIT/X11 license by Steven
5242         Munroe <munroesj@us.ibm.com>.
5243
5244         * mini-ppc.c: Compiler warning fixes and trivial code
5245         simplifications.
5246
5247 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
5248
5249         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
5250         ins->dreg which could be a hardware register, not a vreg.
5251
5252         * aot-compiler.c (emit_method_dwarf_info): Ditto.
5253         
5254         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
5255         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
5256
5257         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
5258         
5259         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
5260         ->dreg, that is not the vreg we are looking for.
5261
5262         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
5263
5264         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
5265         LIVERANGE_END.
5266
5267         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
5268         strange crashes.
5269
5270 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
5271
5272         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
5273
5274         * aot-compiler.c (emit_line_number_info): Fix line number emission when
5275         the line diff is 0.
5276
5277         * aot-compiler.c: Add xdebug support on x86.
5278
5279         * unwind.c: Add x86 support.
5280         
5281         * aot-compiler.c (emit_exception_debug_info): Control the emission of
5282         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
5283
5284         * mini.c (mini_method_compile): Ditto.
5285         
5286         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
5287         the variable index.
5288
5289         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
5290         which mimic .push_section/.pop_section in GAS.
5291         
5292         * aot-compiler.c: Emit precise live range information for variables.
5293
5294         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
5295
5296         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
5297         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
5298         them.
5299
5300         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
5301         the live ranges of variables.
5302
5303         * mini.h (struct MonoMethodVar): Add two fields containing the live range
5304         of the variable in terms of native offsets.
5305
5306 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
5307
5308         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
5309         
5310 2009-02-02  Mark Probst  <mark.probst@gmail.com>
5311
5312         Contributed under the terms of the MIT/X11 license by Steven
5313         Munroe <munroesj@us.ibm.com>.
5314
5315         * exceptions-ppc.c (restore_regs_from_context): Correct operand
5316         order (offset then base reg) for ppc_load_multiple_regs.
5317         (emit_save_saved_regs) Correct operand order for
5318         ppc_store_multiple_regs.
5319         (mono_arch_get_call_filter): Correct operand order for
5320         ppc_load_multiple_regs.
5321
5322         * mini-ppc.c (emit_memcpy): Fix operand order for
5323         ppc_load_reg_update and ppc_store_reg_update.
5324         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
5325         (mono_arch_emit_epilog): Correct operand order for
5326         ppc_load_multiple_regs.
5327
5328         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
5329         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
5330
5331 2009-02-02  Mark Probst  <mark.probst@gmail.com>
5332
5333         * cpu-ppc64.md: Fixed storer4_memindex length.
5334
5335 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
5336
5337         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
5338         line number info.
5339         
5340         * aot-compiler.c (emit_line_number_info): Optimize this.
5341
5342 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
5343
5344         * aot-compiler.c: Disassemble tokens in the IL disassembly.
5345         
5346         * aot-compiler.c: Add debug info for methods without debug info by
5347         emitting an IL file and having the line number info referencing that file.
5348
5349         * aot-compiler.c: Optimize the size of the generated line number info.
5350
5351         * aot-compiler.c: Emit line number info in xdebug mode.
5352
5353         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
5354         million arguments.
5355
5356 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
5357
5358         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
5359
5360         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
5361         is used.
5362
5363 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
5364
5365         * basic-calls.cs: Test for the weird crash found on arm.
5366         
5367 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
5368
5369         * cpu-arm.md: Increase the size of storer8_membase_reg and
5370         loadr8_membase_reg to 24 bytes to accomodate the extra add.
5371
5372         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
5373         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
5374         reg to LR otherwise we'll be loading/storing from just the offset.
5375
5376 2009-01-30  Miguel de Icaza  <miguel@novell.com>
5377
5378         Question: if we are storing gint32's inside the "*native_offset",
5379         should we change the signature to "gint32 *native_offset" to
5380         ensure that we do not have type definition problems?
5381         
5382         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
5383         an int * as this is what the other function expects, causes
5384         problems with Freescale's compiler that defined int32_t to be a
5385         long and makes int incompatible 
5386
5387 2009-01-30  Miguel de Icaza  <miguel@novell.com>
5388
5389         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
5390         filename conflict with bjam.
5391
5392 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5393
5394         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
5395         as it might use decomposed ops.
5396
5397 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5398
5399         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
5400
5401         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
5402         is defined.
5403
5404         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
5405
5406         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
5407         offsets.
5408
5409         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
5410         way registers are stored in MonoContext on arm.
5411
5412         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
5413         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
5414
5415         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
5416
5417         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
5418
5419         * mini.c (mini_init): Register mono_isfinite.
5420
5421         * jit-icalls.c (mono_isfinite): New jit icall.
5422
5423         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
5424         
5425         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
5426         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
5427         the parent frame.
5428
5429 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5430
5431         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
5432         separate frame and stack pointers, so we must use FP to find the register
5433         spill area.
5434         The FP reg is retrieved from the MonoContext::regs array.
5435
5436 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5437
5438         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
5439         as FPA requires it.
5440
5441 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5442
5443         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
5444         return R4 and R8 when not running under softfloat.
5445
5446         Fixes basic-calls.exe
5447
5448 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5449
5450         * mini-arm.c: Implement some overflow opcodes.
5451
5452 2009-01-29  Miguel de Icaza  <miguel@novell.com>
5453
5454         * ssa.c: handle another alloca.h
5455
5456         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
5457         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
5458         MONO_ARCH_USE_SIGACTION. 
5459
5460         * aot-runtime.c, mini-exceptions.c: Replace platform define with
5461         capability defines.
5462
5463         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
5464
5465         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
5466         PPC targets as sigaction does not exist on all platforms, define
5467         this on a per-platform basis.
5468
5469         Instead of erroring out if the platform is not defined, include
5470         mini-ppc-os.h, and expect that the OS specific setting provides
5471         the required information.   
5472
5473 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5474
5475         * aot-compiler.c: Fix --enable-minimal=aot.
5476
5477 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5478
5479         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
5480         previous change.
5481
5482 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
5483
5484         * exceptions-arm.c: Fix warnings.
5485
5486         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
5487         ARM.
5488
5489         * mini-x86.c: Fix --enable-minimal=jit build.
5490
5491         * mini.c: Really fix --enable-minimal=jit build.
5492         
5493         * mini.c (construct_object_context_for_method): Move this outside
5494         the DISABLE_JIT block to fix the --enable-minimal=jit build.
5495
5496         "Backported" of r124984 from 2.0 branch.
5497         
5498         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
5499
5500         "Backport" of r124977 + r124978 from 2.0 branch.
5501         
5502         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
5503         to avoid calling mono_exception_from_token () from the throw trampoline.
5504         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
5505         for throwing corlib exceptions, this fixes full-aot support for corlib
5506         exceptions.
5507
5508         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
5509
5510 2009-01-29  Miguel de Icaza  <miguel@novell.com>
5511
5512         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
5513         part of the changes to split the code in mini into operating
5514         system specific files.
5515
5516         This patch was done by copying mini.c to the respective files to
5517         preserve SVN history.
5518
5519 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
5520
5521         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
5522
5523 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
5524
5525         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
5526         remoting-invoke-with-check wrappers of shared methods.
5527
5528         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
5529
5530 2009-01-27  Mark Probst  <mark.probst@gmail.com>
5531
5532         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
5533         optimization if the top of stack is the last instruction in the
5534         bblock.  Otherwise it might have been used after its definition.
5535         Fixes #469742.
5536
5537 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
5538
5539         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
5540         method as well when get_vcall_slot () fails to match a code sequence.
5541
5542         * mini-arm.c: Fix the android build, which doesn't have
5543         __aeabi_read_tp.
5544
5545 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
5546
5547         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
5548         the s390x build.
5549
5550 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
5551
5552         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
5553
5554 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
5555
5556         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
5557         and put its id into jinfo->used_regs. This is only used on amd64,
5558         which is currently the only platform generating unwind info.
5559
5560         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
5561         the dwarf unwinder. This is required to correctly handle async exceptions
5562         like thread abort and stack overflows, which can happen while a method
5563         is in the middle of its prolog or epilog.
5564         
5565         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
5566         the unwind info belonging to an AOTed method.
5567
5568         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
5569         into cfg->unwind_ops.
5570         
5571         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
5572
5573         * mini.c (mini_init): Call mono_unwind_init ().
5574         (mini_cleanup): Call mono_unwind_cleanup ().
5575
5576         * unwind.c: Add functions for managing a set of unwind info entries, allowing
5577         unwind info to be shared between methods.
5578
5579         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
5580         saved in the LMF.
5581
5582         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
5583         get_throw_pending_exception () to avoid initialization races.
5584
5585         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
5586         mono_arch_exceptions_init () function.
5587
5588         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
5589
5590 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
5591
5592         * mini.c (mono_get_domain_intrinsic): New helper function.
5593         (mono_get_thread_intrinsic): Ditto.
5594
5595         * mini-arm.c mini-ia64.c: Use the new helper functions.
5596         
5597         * method-to-ir.c (mono_method_to_ir): Fix the comment for
5598         the last constrained_call change, since it is needed in the non-AOT
5599         case as well.
5600
5601         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
5602         
5603         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
5604         mono_get_lmf_addr () on arm eabi linux.
5605
5606 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
5607
5608         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
5609         code sequence which matches a non-virtual call.
5610
5611 2009-01-23  Mark Probst  <mark.probst@gmail.com>
5612
5613         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
5614         stack pointer (r1).
5615
5616 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
5617
5618         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
5619         runtime-invoke wrappers, since they are also shared based on signature.
5620
5621 2009-01-22  Mark Probst  <mark.probst@gmail.com>
5622
5623         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
5624         info from the (correct) context.
5625
5626 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
5627
5628         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
5629         
5630         * unwind.c (mono_unwind_frame): New function to unwind through a frame
5631         using dwarf unwinding info. Not yet used.
5632
5633         * mini.c (mini_init): When using xdebug, disable freeing of domains.
5634
5635 2009-01-21  Mark Probst  <mark.probst@gmail.com>
5636
5637         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
5638         descriptors.
5639
5640         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
5641         special case and handle mono_arch_delegate_invoke_impl() returning
5642         function descriptors.
5643
5644         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
5645         trampolines return function descriptors, too.
5646
5647 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
5648
5649         * method-to-ir.c (handle_alloc): Avoid generic instances in the
5650         out_of_line optimization.
5651
5652 2009-01-21  Martin Baulig  <martin@ximian.com>
5653
5654         * mini.h
5655         (MonoCompile): Added `disable_deadce_vars' to disable removing
5656         unused variables.
5657
5658         * mini.c
5659         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
5660         inside the debugger.
5661
5662         * liveness.c (mono_analyze_liveness): Don't remove any unused
5663         variables if `cfg->disable_deadce_vars' is set.
5664
5665 2009-01-21  Mark Probst  <mark.probst@gmail.com>
5666
5667         * method-to-ir.c: Only apply exception constructor optimization if
5668         the the method actually belongs to an exception class.  Fixes
5669         #467456.
5670
5671 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
5672
5673         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
5674         change inside a #ifdef __mono_ppc64__.
5675
5676         * aot-compiler.c (compile_method): Remove the previous limitation.
5677
5678         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
5679         on type variables in AOTed code.
5680         
5681         * aot-compiler.c (compile_method): Skip generic methods having type 
5682         constraints on their generic parameters.
5683
5684         * aot-compiler.c (compile_method): Check for methods which cannot be
5685         encoded inside RGCTX_FETCH patches as well.
5686
5687         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
5688         build.
5689
5690 2009-01-20  Mark Probst  <mark.probst@gmail.com>
5691
5692         * method-to-ir.c: Force the vtable variable in shared generic code
5693         for the case that they might show up on a stack trace where they
5694         are needed.
5695
5696         * mini-exceptions.c: Save and use generic sharing info as well as
5697         IP in stack traces to resolve shared generic instantiations.
5698
5699 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
5700
5701         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
5702         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
5703
5704 2009-01-20  Mark Probst  <mark.probst@gmail.com>
5705
5706         * method-to-ir.c: Do generic sharing for array constructors.
5707
5708 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
5709
5710         * mini-exceptions.c (mono_print_thread_dump): Add information
5711         about the thread state using wapi_current_thread_desc.
5712
5713 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
5714
5715         * basic-simd.cs: Tests for the new constructors. 
5716
5717 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
5718
5719         * mini-ops.h: Added OP_EXPAND_*
5720
5721         * cpu-x86.md: Same.
5722
5723         * mini-x86.c (mono_arch_output_basic_block): Same.
5724         
5725         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
5726
5727 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
5728
5729         * iltests.il.in: Add a test for #467385.
5730
5731 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
5732
5733         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
5734         thread been cleaned up is not the same currently in execution.
5735
5736         Fixes appdomain-unload crashes on windows, osx and linux variants
5737         without the __thread keyword.
5738
5739 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
5740
5741         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
5742         (koush@koushikdutta.com). Implement this for android.
5743
5744         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
5745         begins with a digit.
5746
5747         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
5748         mono_marshal_get_write_barrier ().
5749
5750 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
5751
5752         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
5753         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
5754         that pass them on a register pair.
5755
5756         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
5757         test was crashing due to that.
5758
5759 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
5760
5761         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
5762         trampoline code. Include ucontext.h only if available.
5763
5764 2009-01-15  Mark Probst  <mark.probst@gmail.com>
5765
5766         * mini.c: mono_domain_lookup_shared_generic() takes an open method
5767         and doesn't check whether it's sharable, like it was before
5768         removing the shared generics hash.  This brings IronPython
5769         performance back to what it was before that change.
5770
5771 2009-01-14  Mark Probst  <mark.probst@gmail.com>
5772
5773         * method-to-ir.c: Handle delegate invocation optimization earlier,
5774         otherwise it would be handled (much more slowly) by the
5775         final/sealed optimization.
5776
5777 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
5778
5779         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
5780         domain is not set. Fixes #465864.
5781
5782 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5783
5784         * method-to-ir.c: Don't stop sharing of generic methods with catch
5785         clauses - we already handle those.
5786
5787 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5788
5789         * mini.c, mini.h: lookup_generic_method() is now
5790         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
5791         making the shared_generics_hash obsolete.
5792
5793 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5794
5795         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
5796         use the red zone.  Make room on the stack first and then use it,
5797         not the other way around.
5798
5799 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
5800
5801         * mini.c (mini_init): Call mono_xdebug_init ().
5802
5803         * aot-compiler.c (mono_xdebug_init): Make this non-static.
5804
5805 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
5806
5807         * TestDriver.cs: Add an --iter argument to run tests multiple times.
5808
5809         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
5810         trampolines.
5811
5812         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
5813         debug+unwind info for trampolines.
5814
5815         * mini.c (mono_create_unwind_op): New helper function.
5816
5817         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
5818
5819 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
5820
5821         * aot-compiler.c: Fix the build.
5822
5823 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
5824
5825         * Makefile.am: Update dtrace-prelink.sh location.
5826
5827 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
5828
5829         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
5830         optimization. Fixes #464520.
5831
5832 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
5833
5834         * mini-amd64.c : Adding code to save/restore non-volatile registers
5835            on Winx64.
5836
5837         * exceptions-amd64.c : Adding code to save/restore non-volatile 
5838           registers on Winx64.
5839
5840         Contributed under MIT/X11 license.
5841
5842 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
5843
5844         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
5845         __GNUC_MINOR__ which can break when the major version changes.
5846
5847 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
5848
5849         * basic-simd.cs: Add tests for usage of the sizeof opcode.
5850
5851 2009-01-07  Geoff Norton  <gnorton@novell.com>
5852
5853         * helpers.c:  Allow mono -v -v -v to work on darwin.
5854
5855 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
5856
5857         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
5858           pattern. 
5859
5860         Contributed under MIT/X11 license.
5861
5862 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
5863
5864         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
5865         instead of directly accessing type->data.klass. Fixes #462016.
5866         (mono_allocate_stack_slots_full): Ditto.
5867
5868         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
5869         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
5870
5871         * aot-compiler.c (emit_plt): Fix ARM build.
5872
5873 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
5874
5875         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
5876         
5877         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
5878         change.
5879
5880         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
5881         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
5882         #463357.
5883
5884         * iltests.il.in: Add a regression test.
5885
5886 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5887
5888         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
5889
5890 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5891
5892         * basic-simd.cs: Add a regression test for #462457.
5893
5894 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5895
5896         * mini-ops.h: Add a definition of XPHI.
5897
5898         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
5899
5900         * ssa.c (op_phi_to_move): Handle XPHI.
5901
5902         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
5903
5904         Fixes #462457
5905
5906 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5907
5908         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
5909
5910 2008-12-31  Geoff Norton  <gnorton@novell.com>
5911
5912         * mini-ppc.c: The prolog size allocated can be too small for darwin
5913         ppc32 under certain circumstances.  Also fix a small logic bug.
5914
5915 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
5916
5917         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
5918         while loading AOT methods.
5919
5920         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
5921         since only the former is nulled out after a successful cast. This prevents
5922         crashes with rethrown exceptions when using --debug=casts.
5923
5924 2008-12-24  Mark Probst  <mark.probst@gmail.com>
5925
5926         * mini.h: New macro for checking whether a method is final,
5927         i.e. whether the method or its class is marked final.
5928
5929         * method-to-ir.c: Use the new macro for all final-checks
5930         consistently.  Fixes the crash in the System.ServiceModel tests.
5931
5932 2008-12-23  Mark Probst  <mark.probst@gmail.com>
5933
5934         * mini-exceptions.c (get_exception_catch_class): Corrected another
5935         overly strict assertion.
5936
5937 2008-12-23  Mark Probst  <mark.probst@gmail.com>
5938
5939         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
5940         Clobbering it is not allowed because the caller might use it as
5941         the vtable register in the interface call.
5942
5943 2008-12-19  Mark Probst  <mark.probst@gmail.com>
5944
5945         * mini-exceptions.c (get_exception_catch_class): Corrected an
5946         overly strict assertion.
5947
5948 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
5949         
5950         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
5951
5952         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
5953
5954         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
5955
5956         * cpu-mips.md: correct lengths for certain long_ opcodes.
5957
5958         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
5959
5960         * 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().
5961         
5962 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
5963
5964         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
5965         
5966 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
5967         
5968         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
5969         
5970 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
5971
5972         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
5973         next basic block.
5974         
5975 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
5976
5977         * 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
5978
5979         * 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)
5980         
5981 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
5982         
5983         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
5984         
5985 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
5986
5987         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
5988         gshared code. Fixes #458947.
5989
5990         * generics.cs: Add a test.
5991
5992 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
5993         
5994         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5995         
5996         * mini-mips.c: first pass n32 code generation.
5997
5998         * mini-mips.h: datatypes and defines for n32 support.
5999
6000         * exceptions-mips.c: first pass n32 code generation.
6001         
6002         * tramp-mips.c: first pass n32 code generation.
6003         
6004         * cpu-mips.md: add long_ opcodes.
6005         
6006 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
6007
6008         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6009
6010         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6011         
6012         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6013         
6014         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6015
6016         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6017
6018         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6019
6020         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6021
6022         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6023
6024         * helpers.c: for mips/n32, don't pass -mips32 to objdump
6025
6026 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
6027
6028         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
6029
6030 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
6031
6032         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
6033
6034 2008-12-12  Mark Probst  <mark.probst@gmail.com>
6035
6036         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
6037         descriptors for helper functions directly in front of the code.
6038
6039 2008-12-11  Mark Probst  <mark.probst@gmail.com>
6040
6041         * method-to-ir.c: Removed an unnecessary assertion.
6042
6043 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
6044
6045         * method-to-ir.c: Merge SGEN changes from the old JIT.
6046
6047 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
6048
6049         * driver.c (compile_all_methods_thread_main): Handle failure of
6050         mono_get_method ().
6051
6052 2008-12-10  Mark Probst  <mark.probst@gmail.com>
6053
6054         * mini-ppc.c: Merged with mini-ppc64.c.
6055
6056         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
6057
6058         * Makefile.am: Use the same sources for PPC and PPC64.
6059
6060         * mini-ppc64.c: Removed.
6061
6062 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
6063
6064         * branch-opts.c (remove_block_if_useless): Extract fall through detection
6065         code to mono_bb_is_fall_through.
6066         
6067         * branch-opts.c (mono_remove_critical_edges): Same.
6068
6069 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
6070
6071         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
6072         expect that an OP_BR_REG will be there.
6073
6074 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
6075
6076         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
6077         for the many branch ops. The original check miss OP_BR_REG.
6078
6079         Fixes #457574.
6080         
6081 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
6082
6083         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
6084
6085 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
6086
6087         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
6088         while holding the aot lock.
6089
6090 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
6091
6092         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
6093         
6094 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
6095
6096         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
6097           to release all runtime callable wrappers held by the runtime.
6098
6099         Contributed under MIT/X11 license.
6100
6101 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
6102
6103         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
6104           for Winx64.
6105
6106         Contributed under MIT/X11 license.
6107
6108 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
6109
6110         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
6111         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
6112
6113 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
6114
6115         * cpu-mips.md: fix ckfinite length
6116
6117         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
6118         (mono_arch_lowering_pass): cleanup, rearrange for clarity
6119         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
6120         
6121 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
6122
6123         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
6124         
6125 2008-12-08  Geoff Norton  <gnorton@novell.com>
6126
6127         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
6128         size by 8 bytes as well.
6129
6130 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6131
6132         * basic-simd.cs: Fix method names for Vector16b.
6133         
6134 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6135
6136         * basic-simd.cs: Fix method names for Vector16sb.
6137
6138 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6139
6140         * basic-simd.cs: Fix method names for Vector8us.
6141         
6142 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6143
6144         * basic-simd.cs: Fix method names for Vector8s.
6145         
6146 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6147
6148         * basic-simd.cs: Fix method names for Vector4ui.
6149
6150 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6151
6152         * basic-simd.cs: Fix method names for Vector2l.
6153
6154 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6155
6156         * basic-simd.cs: Fix method names for Vector2d.
6157
6158 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6159
6160         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
6161         that are extension methods.
6162
6163 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6164
6165         * basic-simd.cs: Fix method names for Vector4f.
6166
6167 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
6168
6169         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
6170         as such. Fixes #456669.
6171
6172 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
6173
6174         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
6175         
6176 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
6177
6178         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
6179         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
6180         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
6181         (mips_adjust_stackframe): handle FP spills
6182                 
6183         * mini-ops.h: add mips_mtc1_s2
6184         
6185         * cpu-mips.md: add mips_mtc1_s2
6186         
6187 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
6188
6189         * unwind.c: New file, move the unwind info encoding functions here from
6190         aot-compiler.c, so they could be used at runtime too.
6191
6192 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
6193
6194         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
6195         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
6196         
6197 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
6198
6199         * mini-mips.c: cleanup warnings
6200         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
6201         (mips_adjust_stackframe): handle case of taking the address of stack locals
6202         
6203 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6204
6205         * aot-compiler.c: Implement a few functions missing from the asm writer.
6206         (emit_method_code): Only write symbols for methods when using the bin
6207         writer, since the assembler can't deal with the characters in our method
6208         names.
6209
6210         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
6211
6212         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
6213         call.
6214
6215         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
6216         a bit to also restore %rax.
6217
6218 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6219
6220         * mini-ppc.c: Some simple merges from mini-ppc64.c.
6221
6222 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6223
6224         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
6225         arguments.
6226
6227 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6228
6229         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
6230
6231         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
6232         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
6233
6234         * exceptions-ppc64.c: Removed.
6235
6236         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
6237
6238 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6239
6240         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
6241         tramp-ppc64.c.
6242
6243         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
6244
6245         * tramp-ppc64.c: Removed.
6246
6247 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6248
6249         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
6250         the TYPESPEC table.
6251
6252 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6253
6254         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
6255
6256         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
6257         mini-ppc.h instead of mini-ppc64.h.
6258
6259         * mini-ppc64.h: Removed.
6260
6261 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6262
6263         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
6264         
6265         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
6266         
6267 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6268
6269         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
6270         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
6271         code easier.
6272
6273 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6274
6275         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
6276
6277 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6278
6279         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
6280
6281 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6282
6283         * basic-simd.cs: Tests for operator == and != on Vector4f.
6284
6285 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6286
6287         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
6288
6289         * simd-intrinsics.c: Kill useless enum.
6290
6291 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6292
6293         * cpu-mips.md: add long_conv_to_ovf_i4_2
6294         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
6295
6296 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6297
6298         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
6299         
6300         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
6301
6302 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6303
6304         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
6305         
6306 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6307
6308         * basic-simd.cs: Add tests for new methods.
6309
6310 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6311
6312         * simd-intrinsics.c: Add support for operator == and !=
6313         on Vector4(u)i.
6314
6315         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
6316
6317 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6318
6319         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
6320
6321 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
6322
6323         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
6324
6325         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
6326         MONO_PATCH_INFO_ICALL_ADDR.
6327
6328         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
6329
6330         * aot-compiler.c: Resurrect full-aot support.
6331
6332 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6333
6334         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
6335         
6336 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6337
6338         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
6339         
6340 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
6341
6342         * basic-simd.cs: Fix tests to work under ppc.
6343         Remove tests for methods that will be removed.
6344
6345 2008-12-03  Mark Probst  <mark.probst@gmail.com>
6346
6347         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
6348         generic type (via a typedef or typeref) correctly.
6349
6350 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
6351
6352         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
6353         diagnose an assertion failure.
6354
6355 2008-12-02  Mark Probst  <mark.probst@gmail.com>
6356
6357         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
6358         Fix trampoline size.
6359
6360         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
6361         conversion opcodes are implemented natively instead via emulation.
6362
6363 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6364
6365         * cpu-mips.md: remove mips_xori
6366
6367         * mini-ops.h:  remove mips_xori
6368
6369         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
6370
6371         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
6372         
6373         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
6374         
6375 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6376
6377         * cpu-mips.md: fix instruction lengths.
6378
6379         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
6380
6381         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
6382
6383         * mini-ops.h: fix slti / sltiu op profiles.
6384         
6385 2008-12-02  Martin Baulig  <martin@ximian.com>
6386
6387         * method-to-ir.c (mono_method_to_ir): Disable debugging
6388         information for the init locals block to make the debugger stop
6389         after all locals have been initalized.
6390
6391 2008-12-02  Martin Baulig  <martin@ximian.com>
6392
6393         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
6394         running inside the debugger.
6395
6396 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
6397
6398         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
6399         is enabled.
6400
6401         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
6402         alu->alu imm optimization which only shows if deadce is disabled.
6403
6404         * aot-compiler.c: Rename the function names for the binary and asm writers
6405         so they can coexist in the same process. Rework the xdebug code to use the
6406         asm writer. This avoids the need to call into the runtime to dump the
6407         debugging info. Add more debugging info for types.
6408
6409         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
6410
6411         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
6412         cpu description tables, they can't occur in cpu-<ARCH>.md.
6413
6414         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
6415         the stack in CEE_LDFLDA. Fixes #450542.
6416
6417         * generics.cs: Add a new test.
6418
6419 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6420
6421         * mini-ops.h: updated MIPS opcodes
6422         * mini-mips.c: decompose long opts
6423         * mini-mips.h: decompose long opts
6424         
6425 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
6426
6427         * cpu-mips.md: fix length on int_rem_un
6428         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
6429         
6430 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
6431
6432         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
6433
6434         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
6435
6436 2008-11-29  Martin Baulig  <martin@ximian.com>
6437
6438         * mini-exceptions.c (mono_handle_native_sigsegv): Check
6439         mono_debug_using_mono_debugger() in addition to the
6440         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
6441
6442 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6443
6444         * mini-ops.h: updated more MIPS opcodes
6445         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
6446         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
6447         
6448 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6449
6450         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
6451
6452 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6453
6454         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
6455         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
6456         * mini-ops.h: correct selected mips opcode entries
6457         
6458 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6459
6460         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
6461         make them work.
6462
6463 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6464
6465         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
6466
6467 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6468
6469         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
6470         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
6471         * mini-mips.h: disable IMT
6472         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
6473         
6474 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6475
6476         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
6477
6478 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6479
6480         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
6481
6482 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
6483
6484         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
6485         consistency.
6486
6487 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6488
6489         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
6490         for Set/GetVector aligned versions.
6491
6492 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6493
6494         * basic-simd.cs: Add tests for Get/SetVector.
6495
6496 2008-11-27  Mark Probst  <mark.probst@gmail.com>
6497
6498         * mini.c: Removed g_slist_append_mempool().  Now in
6499         metadata/mempool.c.
6500
6501 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6502
6503         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
6504         size properly and make the bounds check optional.
6505
6506         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
6507         for SetVector and IsAligned.
6508
6509 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
6510
6511         * mini.c: Remove unused mono_normalize_opcodes () function.
6512
6513 2008-11-26  Mark Probst  <mark.probst@gmail.com>
6514
6515         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
6516         using the new atomic add ops now.
6517
6518         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
6519         add.
6520
6521 2008-11-26  Mark Probst  <mark.probst@gmail.com>
6522
6523         * mini-ppc64.c: Several fixes.
6524
6525 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6526
6527         * cpu-mips.md: added jump_table
6528         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
6529
6530 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6531
6532         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
6533
6534 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6535
6536         * mini-ops.h: corrected a handful of MIPS opcodes.
6537
6538 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6539
6540         * aot-compiler.c: MIPS to use ELF writer
6541
6542 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6543
6544         * mini-codegen.c: remove MIPS specific assert.
6545
6546 2008-11-25  Mark Probst  <mark.probst@gmail.com>
6547
6548         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
6549         fixes.  PPC64 now passes most of the runtime regressions.
6550
6551 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
6552
6553         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
6554         volatile intervals a bit.
6555
6556 2008-11-24  Mark Probst  <mark.probst@gmail.com>
6557
6558         * basic-long.cs: New test case.
6559
6560 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
6561
6562         * mini.c (mini_method_compile): Disable globalra for large methods for 
6563         now.
6564
6565         * regalloc2.c (order_moves): Add fp support.
6566
6567         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
6568         source bblock ends with an OP_BR_REG.
6569
6570         * ratests.cs: Add a new test.
6571
6572 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6573
6574         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
6575         sharing.  PPC64 now passes generics.exe.
6576
6577 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6578
6579         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
6580
6581 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
6582
6583         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
6584         memory when mono_jit_info_table_find () can't find the method in the
6585         LMF case.
6586
6587         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
6588         AOTed code too.
6589         
6590         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
6591         writer too.
6592
6593 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6594
6595         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
6596         Several fixes.  PPC64 now runs exceptions.exe and
6597         devirtualization.exe.
6598
6599 2008-11-22  Mark Probst  <mark.probst@gmail.com>
6600
6601         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
6602         arrays.exe and basic-math.exe.
6603
6604 2008-11-22  Mark Probst  <mark.probst@gmail.com>
6605
6606         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
6607         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
6608
6609 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6610
6611         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
6612
6613 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6614
6615         * method-to-ir.c: Move bounds checking macros to ir-emit.h
6616
6617         * ir-emit.h: Move macros from method-to-ir.c to here.
6618
6619 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6620
6621         * mini-ops.h: Correct the long simd ops to use LREG.
6622
6623 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
6624
6625         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
6626         
6627         * mini-ops.h: Correct the dreg type of a few long opcodes.
6628
6629         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
6630         Add netbsd support.
6631
6632 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
6633
6634         * mini-ppc.c: remove negative stack references in epilog
6635         for platforms that don't support the red zone.
6636
6637 2008-11-21  Mark Probst  <mark.probst@gmail.com>
6638
6639         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
6640         point regs.  Now PPC64 passes basic-calls.exe.
6641
6642 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6643
6644         * basic-simd.cs: Add tests for accessors of Vector2l.
6645
6646 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6647
6648         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
6649
6650         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
6651         
6652         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
6653
6654 2008-11-21  Mark Probst  <mark.probst@gmail.com>
6655
6656         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
6657         PPC64 passes basic-long.exe.
6658
6659 2008-11-20  Mark Probst  <mark.probst@gmail.com>
6660
6661         * decompose.c: Decompose carry and overflow add on PPC64 like on
6662         other 64 bit archs.  Don't decompose sub at all on PPC64.
6663
6664         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
6665         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
6666         basic-long.exe.
6667
6668 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6669
6670         * basic-simd.cs: Add tests for accessors of Vector2d.
6671
6672 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6673
6674         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
6675
6676         * cpu-x86.md: Same.
6677
6678         * mini-x86.c (mono_arch_output_basic_block): Same.
6679         
6680         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
6681
6682 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6683
6684         * basic-simd.cs: Add tests for accessors of Vector4f.
6685
6686 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6687
6688         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
6689
6690         * cpu-x86.md: Same.
6691
6692         * mini-x86.c (mono_arch_output_basic_block): Same.
6693         
6694         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
6695
6696 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6697
6698         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
6699
6700 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6701
6702         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
6703
6704         * cpu-x86.md: Same.
6705
6706         * mini-x86.c (mono_arch_output_basic_block): Same.
6707         
6708         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
6709
6710 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6711
6712         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
6713
6714 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6715
6716         * simd-intrinsics.c: Enable setters for Vector16sb.
6717
6718 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6719
6720         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
6721
6722         * cpu-x86.md: Same.
6723
6724         * mini-x86.c (mono_arch_output_basic_block): Same.
6725         
6726         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
6727
6728 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
6729
6730         * simd-intrinsics.c: Implement setter for Vector8us.
6731
6732 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
6733
6734         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
6735         for dead variables.
6736
6737 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
6738
6739         * mini-ppc.c: remove references to the red zone in the prolog
6740         (for systems that don't support it).
6741
6742 2008-11-19  Mark Probst  <mark.probst@gmail.com>
6743
6744         * cpu-ppc64.md: Fixed a few instruction lengths.
6745
6746         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
6747         now.
6748
6749 2008-11-19  Mark Probst  <mark.probst@gmail.com>
6750
6751         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
6752         basic.exe now.
6753
6754 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
6755
6756         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
6757
6758 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
6759
6760         * mini-ops.h: Added OP_INSERT_I2.
6761
6762         * cpu-x86.md: Same.
6763
6764         * mini-x86.c (mono_arch_output_basic_block): Same.
6765         
6766         * simd-intrinsics.c: Implement setter for Vector8s.
6767
6768         * simd-methods.h: Add the names of get setters of Vector8s.
6769
6770 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
6771
6772         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
6773         
6774         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
6775         parameters.
6776
6777         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
6778
6779 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6780
6781         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
6782         for PPC64.  An empty program runs now.
6783
6784 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
6785
6786         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
6787
6788         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
6789         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
6790         info for JITted code is emitted into a shared library, loadable into gdb.
6791
6792 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6793
6794         * Makefile.am: Changes to build PPC64.
6795
6796         * mini-arch.h: Include mini-ppc64.h on PPC64.
6797
6798 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6799
6800         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
6801         in PPC code up to r119147.
6802
6803 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6804
6805         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
6806         cpu-ppc64.md: Changes for PPC64.
6807
6808         Based on code submitted by andreas.faerber@web.de at
6809         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
6810         X11/MIT license.
6811
6812 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6813
6814         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
6815         cpu-ppc64.md: Copied from the corresponding PPC files from
6816         r118846.
6817
6818 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
6819
6820         * mini-ops.h: Added OP_ROUND.
6821
6822         * cpu-x86.md: Added round.
6823
6824         * mini-x86.c: Added support for intrinsicing Math.Round (double).
6825
6826         * basic-math.cs: Added test_0_round to test rounding.
6827
6828         Contributed under MIT/X11 license.
6829
6830 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
6831
6832         * aot-compiler.c : Fix the Winx64 build.
6833
6834         Contributed under MIT/X11 license.
6835
6836 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6837
6838         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
6839         in OP_EXTRACT_R8 to avoid possible stack corruption.
6840
6841 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6842
6843         * mini-ops.h: Added OP_EXTRACT_R8/I8.
6844
6845         * cpu-x86.md: Added extract_r8.
6846
6847         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
6848         
6849         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
6850         a couple of OP_EXTRACT_I4.
6851
6852         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
6853
6854         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
6855
6856 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6857
6858         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
6859         and not 4.1. 
6860
6861 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
6862
6863         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
6864         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
6865
6866         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
6867         are not needed any more.
6868
6869         * mini.h: Remove the unused INS_LIST macros.
6870
6871         * mini.c (mini_method_compile): Remove a disable globalra case which is no
6872         longer needed.
6873
6874         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
6875         ir-emit.h.
6876
6877         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
6878         mono_alloc_ireg () instead.
6879
6880         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
6881         macros.
6882
6883         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
6884         on amd64.
6885
6886         * aot-runtime.c (load_aot_module): Disable AOT when running under
6887         CAS.
6888
6889         * mini-amd64.h: Change the monitor fastpath defines to check for
6890         !PLATFORM_WIN32 so they work on *bsd too.
6891
6892         * mini.h mini.c mini-hhpa.c: Remove more unused code.
6893
6894         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
6895
6896         * mini.h (MonoCompile): Remove new_ir flag.
6897
6898         * regalloc.h regalloc.c: Remove unused code.
6899
6900         * cpu-*.md: Remove more unused opcodes.
6901
6902         * simple-cee-ops.h simple-mini-ops.h: Removed.
6903
6904         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
6905         
6906 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
6907
6908         * aliasing.h: Removed.
6909
6910         * *.c: Remove references to aliasing.h and inssel.h.
6911
6912         * mini.c: Remove additional unused functions.
6913
6914         * mini-ops.h cpu-*.md: Remove unused opcodes.
6915
6916 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
6917
6918         Remove the old JIT code.
6919
6920         * inssel*.brg: Removed.
6921
6922         * ssa.c abcremoval.c aliasing.c: Removed.
6923
6924         * ssa2.c: Renamed to ssa.c.
6925
6926         * abcremoval2.c: Renamed to abcremoval.c.
6927
6928         * *.c: Removed all !cfg->new_ir code.
6929
6930         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
6931         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
6932
6933         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
6934         
6935 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
6936
6937         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
6938         to simplify the code and cut back on the number of global symbols in the AOT
6939         file.
6940         
6941         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
6942
6943 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
6944
6945         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
6946         with the got/got_info tables.
6947
6948         * mini.h: Bump AOT file format version.
6949         
6950         * unwind.h: New file, contains definitions for stack unwinding.
6951
6952         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
6953         to cfg->unwind_ops.
6954         
6955         * aot-compiler.c: Generalize the emitting of unwind information to use the
6956         information in cfg->unwind_ops.
6957
6958         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
6959
6960         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
6961         AOT method frames. Enable writing symbols for methods by default.
6962
6963 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
6964
6965         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
6966         and make it work with vectors of element sizes 1, 2 and 4.
6967
6968         * simd-intrinsics.c: Enable getter for all vectors with element size
6969         1, 2 or 4.
6970
6971         * simd-methods.h: Add the names of other getters.
6972
6973         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
6974
6975         * cpu-x86.md: Same.
6976
6977         * mini-x86.c: Same.
6978
6979 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
6980
6981         * mini-ppc.h: portability fix.
6982
6983 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
6984
6985         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
6986         buggy and will overwrite it.
6987
6988 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
6989
6990         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
6991         Use it to emit local symbols for all methods so AOTed methods show up with
6992         their full name in gdb/valgrind output.
6993
6994 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
6995
6996         * mini-ppc.c: portability fixes.
6997
6998 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
6999
7000         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
7001         entries out of the if (!generic_shared...) code so it is always done.
7002         (mono_class_init_trampoline): Do the patching when running under valgrind
7003         too, newer versions of valgrind have no problems with it.
7004
7005 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
7006
7007         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
7008         further sections.
7009
7010 2008-11-13  Mark Probst  <mark.probst@gmail.com>
7011
7012         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
7013         filters.
7014
7015 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7016
7017         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
7018
7019 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7020
7021         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
7022
7023         * cpu-x86.md: Same.
7024
7025         * mini-x86.c: Same.
7026
7027         * simd-intrinsics.c: Same.
7028
7029 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7030
7031         * simd-intrinsics.c: Enable constructor intrinsics for all types.
7032
7033 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7034
7035         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
7036         to work with more Vector types.
7037
7038 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7039
7040         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
7041         store the elemens directly instead of using and intermediate.
7042
7043 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
7044
7045         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
7046
7047         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
7048         to preserve %eax for aot plt trampolines.
7049
7050         * aot-compiler.c (compile_method): Don't skip synchronized methods.
7051         (encode_method_ref): Flag synchronized methods so they won't go through
7052         the AOT trampoline.
7053
7054         * aot-compiler.c: Additional work to support AOTing synchronized methods/
7055         wrappers.
7056
7057         * cpu-ia64.md (jmp): Increase max length.
7058
7059 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
7060
7061         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
7062         open generic classes.
7063
7064         * aot-compiler.c: Enable the ELF writer on ELF platforms.
7065
7066         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
7067         box+brtrue optimization since it causes test failures on x86.
7068
7069 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
7070
7071         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
7072
7073         * cpu-x86.md: Same.
7074
7075         * mini-x86.c: Same.
7076
7077         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
7078         for simd ctor values. 
7079
7080         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
7081         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
7082
7083 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
7084
7085         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
7086         LogicalRightShift.
7087
7088         * simd-instrincs.c: Same.
7089
7090         * basic-simd.cs: Same.
7091
7092 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
7093
7094         * ratests.cs: Add more tests.
7095
7096         * regalloc2.c (add_spill_code): Handle more corner cases.
7097
7098 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
7099
7100         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
7101         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
7102         both the source an destination of an instruction.
7103
7104 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
7105
7106         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
7107         wapihandles.c: more portability changes.
7108
7109 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
7110
7111         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
7112         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
7113         safe to execute in a signal handler and the kernel provides better
7114         the info in /proc/self/smaps. Avoid the assert on sigaction during
7115         cleanup.
7116
7117 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
7118
7119         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
7120         do the bblock linking hack if it is actually needed.
7121
7122         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
7123         up linking.
7124
7125         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
7126         crash problem is fixed.
7127
7128         * branch-opts.c (mono_remove_critical_edges): Link up newly added
7129         bblocks.
7130
7131         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
7132         for catch clauses.
7133         (mini_method_compile): Set the starting value of next_vreg to 
7134         MAX_IREGS + MAX_FREGS when using globalra.
7135
7136         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
7137         filter clauses with BB_EXCEPTION_HANDLER.
7138
7139         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
7140
7141 2008-11-10  Mark Probst  <mark.probst@gmail.com>
7142
7143         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
7144         space for stdcall.  Fixes regressions on Win32.
7145
7146 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
7147
7148         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
7149         bblocks.
7150         (linear_scan): Remove an assert which doesn't seem to be needed.
7151
7152         * local-propagation.c (mono_local_deadce): Avoid a call to
7153         MONO_DELETE_INS which would screw up the instruction linking.
7154
7155         * mini.c (mono_decompose_op_imm): Make this work with globalra.
7156
7157         * regalloc2.c: Upgrade to work the current JIT code.
7158
7159 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
7160
7161         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
7162         case.
7163
7164         * aot-runtime.c: Remove some dead code.
7165
7166         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
7167         consistency.
7168         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
7169
7170         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
7171         trampolines using sscanf since atoi doesn't work on large unsigned values.
7172
7173         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
7174         Initialize code_size.
7175
7176 2008-11-08  Mark Probst  <mark.probst@gmail.com>
7177
7178         * method-to-ir.c (mini_emit_inst_for_method): Make
7179         Interlocked.CompareExchange work for Int arguments on 32 bit
7180         archs, as well.
7181
7182 2008-11-07  Mark Probst  <mark.probst@gmail.com>
7183
7184         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
7185
7186 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
7187
7188         * main.c Fix MSVC build.
7189
7190         Contributed under MIT/X11 license.
7191
7192 2008-11-06  Mark Probst  <mark.probst@gmail.com>
7193
7194         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
7195         alignment larger than 8 bytes are aligned correctly, too.
7196
7197         * mini.c: Honor the min_align field of MonoClass when laying out
7198         the stack.
7199
7200 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
7201
7202         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
7203
7204         * aot-compiler.c (emit_plt): Fix a warning.
7205         
7206         * aot-compiler.c: Implement ARM support in the binary writer.
7207
7208 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7209
7210         * basic-simd.cs: Add test for getter with byref arg.
7211         Fix the naming of a few tests.
7212         Add missing checks to a test.
7213
7214 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
7215
7216         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
7217
7218         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
7219         most of the full-aot support for monitor enter/exit trampolines.
7220
7221         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
7222         enter/exit trampoline creation functions.
7223
7224         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
7225         make dist.
7226
7227 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
7228
7229         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
7230         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
7231         implement the needed functionality without adding crap to the runtime.
7232
7233 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
7234
7235         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
7236         non-x86 builds.
7237
7238         * mini.c (mono_build_date): New global version holding the build date in
7239         string format.
7240         
7241         * Makefile.am (buildver.c): Generate a file containing the build date.
7242
7243         * main.c: Set the build date from the generated file.
7244
7245         * mini.c (mono_get_runtime_build_info): New helper function returning build
7246         information in a string format.
7247         
7248         * driver.c (mono_main): Print the build date in --version.
7249
7250         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
7251         file when the bind-to-runtime-version option is used.
7252
7253 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7254
7255         * simd-intrinsics.c: Fix bug when using getters and byref args. 
7256
7257 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7258
7259         * simd-methods.h: Rename prefetch methods.
7260
7261         * simd-intrinsics.c: Same.      
7262
7263 2008-11-05  Mark Probst  <mark.probst@gmail.com>
7264
7265         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
7266         sizes.
7267
7268 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7269
7270         * aot-compiler.c: Use the bundled elf header files instead of depending on
7271         the system one.
7272         
7273         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
7274         mempool.
7275
7276         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
7277         on every call.
7278
7279 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
7280
7281         * cpu-x86.md: Add store nta ops.
7282
7283         * mini-ops.h: Same.
7284
7285         * mini-x86.c: Same.
7286
7287         * mini.h: Add an enum for simd prefetch modes.
7288
7289         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
7290         of store. Use the changed code to support store nta.
7291
7292         * simd-intrinsics.c: Add prefetch ops for all vector types.
7293
7294 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7295
7296         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
7297         threads.
7298         
7299         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
7300         names.
7301
7302         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
7303         trampolines.
7304
7305 2008-11-04  Mark Probst  <mark.probst@gmail.com>
7306
7307         * mini-x86.c: Fixed commit.
7308
7309 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7310
7311         * aot-compiler.c (emit_plt): Align the plt section only on x86.
7312
7313 2008-11-04  Mark Probst  <mark.probst@gmail.com>
7314
7315         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
7316         and MONITOR_EXIT, for the ASM fastpaths.
7317
7318         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
7319         available.
7320
7321         * mini.c, patch-info.h: Signature and patch infos for
7322         Monitor.Enter/Exit trampolines.
7323
7324         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
7325
7326         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
7327         Monitor.Enter/Exit ASM fastpath for Linux.
7328
7329 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7330
7331         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
7332
7333         * objects.cs: Add a new test.
7334         
7335         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
7336
7337         * aot-runtime.c (load_method): Run class initialization in the PLT case even
7338         if MONO_LOG_LEVEL is set.
7339
7340         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
7341
7342         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
7343
7344         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
7345         
7346         * aot-compiler.c: Change the relocation code to use virtual addresses instead
7347         of file offsets. Align the sections belonging to the data segment to 
7348         PAGESIZE.
7349
7350 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
7351
7352         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
7353         elf.h. Port it to amd64.
7354
7355 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
7356
7357         * driver.c: Enable SIMD by default.
7358
7359 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
7360
7361         * cpu-x86.md: Add prefetch op.
7362
7363         * mini-ops.h: Same.
7364
7365         * mini-x86.c: Same.
7366
7367         * mini.h: Add an enum for simd prefetch modes.
7368
7369         * simd-methods.h: Add prefetch function names.
7370
7371         * simd-intrinsics.c: Add prefetch ops for all vector types.
7372
7373 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
7374
7375         * aot-compiler.c (emit_bytes): Speed this up a little.
7376
7377 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
7378
7379         * aot-compiler.c: Add JIT time etc. statistics.
7380         
7381         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
7382
7383         * mini.h (MonoCompile): Add 'got_offset' field.
7384
7385         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
7386         method_got_offsets array.
7387
7388         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
7389         wrappers.
7390
7391         * aot-compiler.c (compile_method): Add generic method instances referenced
7392         by the method to the list of methods to be compiled, this is required so if
7393         A<T> references B<T>, and another assembly references A<int>, then it will
7394         also get a copy of B<int>.
7395
7396         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
7397         when checking for monitor enter/exit.
7398
7399 2008-10-30  Mark Probst  <mark.probst@gmail.com>
7400
7401         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
7402         for Monitor.Enter and Monitor.Exit if enabled.
7403
7404         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
7405         Solaris.
7406
7407 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
7408
7409         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
7410         of an OP_MOVE. Fixes #440046.
7411
7412         * basic-long.cs: Add a new test.
7413
7414 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
7415
7416         * mini.h: Add synchronization note for the managed counter-part.
7417
7418         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
7419         returns the simd caps of the current cpu.
7420
7421 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
7422
7423         * basic-simd.cs: Remove Console.WriteLine.
7424
7425 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7426
7427         * basic-simd.cs: New tests for Vector2ul.
7428
7429 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7430
7431         * simd-intrinsics.c: Add new vector type Vector2ul.
7432
7433 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7434
7435         * basic-simd.cs: New tests for Vector2l.
7436
7437 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7438
7439         * cpu-x86.md: Add long version of most packed int ops.
7440
7441         * mini-ops.h: Same.
7442
7443         * mini-x86.h: Same.
7444
7445         * simd-intrinsics.c: Add new vector type Vector2l.
7446
7447 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7448
7449         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
7450
7451         * simd-methods.h: Remove SN_op_BitwiseXor.
7452
7453 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
7454
7455         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
7456         alignment.
7457
7458 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7459
7460         * basic-simd.cs: Test for Vector2d.
7461
7462         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
7463         value.
7464
7465 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7466
7467         * cpu-x86.md: Add double version of all packed float ops.
7468
7469         * mini-ops.h: Same.
7470
7471         * mini-x86.h: Same.
7472
7473         * simd-intrinsics.c: Add new vector type Vector2d.
7474
7475         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
7476
7477         * simd-methods.h: Add Duplicate.
7478
7479 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7480
7481         * basic-simd.cs: Test for packing with signed saturation.
7482
7483 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
7484
7485         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
7486         found in the TYPESPEC table.
7487
7488 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
7489
7490         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
7491         too.
7492
7493         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
7494
7495         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
7496         instead of the RVA, since the RVA can be changed by tools like the cil 
7497         stripper.
7498
7499         * method-to-ir.c (mono_method_to_ir2): Ditto.
7500
7501         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
7502         (deserialize_variable): Ditto.
7503
7504 2008-10-25  Martin Baulig  <martin@ximian.com>
7505
7506         * debug-mini.c (write_variable): Use
7507         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
7508
7509 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7510
7511         * cpu-x86.md: Add unsigned variants of packd and packw.
7512
7513         * mini-ops.h: Same.
7514
7515         * mini-x86.h: Emit the right instruction for packd and packw.
7516         Add unsigned variants of packd and packw.
7517
7518         * simd-intrinsics.c: Packd and packw were used in place of their
7519         unsigned variants. Change that.
7520         Add intrinsics for (Signed)PackWithSignedSaturation.
7521
7522         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
7523
7524 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7525
7526         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
7527
7528 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7529
7530         * mini-ops.h: Remove dword packed add/sub with saturation ops.
7531
7532         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
7533
7534         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
7535         sse instructions.
7536
7537         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
7538
7539 2008-10-24  Mark Probst  <mark.probst@gmail.com>
7540
7541         * method-to-ir.c, mini.c: Special casing for the synchronized
7542         wrapper for the ldtoken+GetTypeFromHandle case.
7543
7544 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
7545
7546         * mini.c (mono_replace_ins): Move this to branch-opts.c.
7547
7548         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
7549         created/split bblocks.
7550
7551 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7552
7553         * mini-ops.h: Add packed signed mul high.
7554         
7555         * cpu-x86.md: Same.
7556
7557         * mini-x86.c (mono_arch_output_basic_block): Same.
7558
7559         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
7560
7561         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
7562
7563 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7564
7565         * basic-simd.cs: Tests for Vector16sb.
7566
7567 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
7568
7569         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
7570
7571 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
7572
7573         * mini-ops.h: Add packed signed min, max and compare greater.
7574         
7575         * cpu-x86.md: Same.
7576
7577         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
7578         saturation.
7579
7580         * simd-methods.h: Add CompareGreaterThan.
7581
7582         * simd-methods.h: Remove CompareEquals.
7583
7584         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
7585
7586         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
7587
7588         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
7589         CompareEqual.
7590
7591 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
7592
7593         * basic-simd.cs: Fix tests due to change in the API.
7594
7595 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7596
7597         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
7598
7599 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7600
7601         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
7602
7603         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
7604         inst_offset as this has invalid values for LDADDR.
7605
7606 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7607
7608         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
7609
7610         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
7611
7612 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7613
7614         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
7615         for accessing field->data.
7616
7617 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7618
7619         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
7620
7621 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7622
7623         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
7624
7625         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
7626
7627 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7628
7629         * dominators.c (mono_compute_natural_loops): Allocate GList enties
7630         from the cfg mempool.
7631
7632 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
7633
7634         * basic-simd.cs: Tests for new methods in Vector8us.
7635
7636 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
7637
7638         * mini-ops.h: Add multiply and store high.
7639         
7640         * cpu-x86.md: Same.
7641
7642         * mini-x86.c (mono_arch_output_basic_block): Same.
7643
7644         * simd-methods.h: Same.
7645
7646         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
7647         and CompareEqual.
7648
7649 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
7650
7651         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
7652         mono_class_setup_vtable ().
7653
7654         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
7655         mono_class_get_vtable_entry () for accessing klass->vtable.
7656
7657         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
7658
7659         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
7660         found.
7661
7662         * method-to-ir.c (mono_save_token_info): Don't save references made from
7663         wrappers.
7664
7665         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
7666         of generic instances.
7667
7668         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
7669
7670 2008-10-19  Mark Probst  <mark.probst@gmail.com>
7671
7672         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
7673         OP_JMP depends on the method signature.  Calculate it properly.
7674
7675 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
7676         
7677         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
7678         called directly.
7679
7680         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
7681         instances.
7682         (emit_extra_methods): Add another table mapping method indexes to 
7683         offsets in the extra_method_info table.
7684
7685         * mini.h: Bump AOT file format version.
7686         
7687         * aot-runtime.c: Merge most of the code from mono_aot_get_method
7688         and mono_aot_get_method_from_token () into one function.
7689
7690 2008-10-19  Mark Probst  <mark.probst@gmail.com>
7691
7692         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
7693         separate counter.
7694
7695 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
7696
7697         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
7698         methods.
7699
7700         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
7701         disable_aot.
7702
7703         * mini.c (mono_patch_info_equal): Compare the generic context as well.
7704
7705         * mini.h: Bump aot file format version.
7706
7707         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
7708         AOT file can contain native code for methods which are not in the METHOD
7709         table. Generate code for non-sharable generic instances of generic methods
7710         found in the METHODSPEC table.
7711         
7712         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
7713         encoding generic type handles.
7714
7715         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
7716         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
7717
7718         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
7719         macros + MONO_ADD_INS.
7720
7721         * mini.c (mono_jump_info_token_new2): New function which takes a generic
7722         context as well.
7723
7724         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
7725
7726         * mini.h: Bump aot file format version.
7727
7728         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
7729
7730 2008-10-17  Mark Probst  <mark.probst@gmail.com>
7731
7732         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
7733         platforms, with definable stack alignment value.  Set to 16 now
7734         for all platforms.
7735
7736         * mini.c, mini.h, driver.c: Command line option for disabling
7737         stack alignment.
7738
7739 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7740
7741         * basic-simd.cs: Tests for new methods in Vector4ui.
7742
7743 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7744
7745         * mini-ops.h: Add packed int shuffle.
7746         
7747         * cpu-x86.md: Same.
7748
7749         * mini-x86.c (mono_arch_output_basic_block): Same.
7750
7751         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
7752         extract mask, max, min, shuffle.
7753
7754         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
7755
7756 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7757
7758         * basic-simd.cs: Tests for new methods in Vector8us.
7759
7760 2008-10-17  Mark Probst  <mark.probst@gmail.com>
7761
7762         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
7763         RuntimeTypeHandle, not a TypedReference.
7764
7765 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
7766
7767         * simd-intrinsics.c: remove relocations.
7768
7769 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
7770
7771         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
7772         optimizations from the x86 backend.
7773
7774 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
7775
7776         * simd-methods.h, simd-intrinsics.c: debloat method names and
7777         prepare for no relocations.
7778
7779 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7780
7781         * mini-ops.h: Add packed min/equal and sum of absolute differences.
7782         
7783         * cpu-x86.md: Same.
7784
7785         * mini-x86.c (mono_arch_output_basic_block): Same.
7786
7787         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
7788         extract mask, max, min and sum of absolute differences.
7789
7790         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
7791         method name.
7792
7793 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7794
7795         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
7796         Renamed one test for consistency.
7797
7798 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7799
7800         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
7801         fix to the code that deal with other blocks.
7802
7803 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7804
7805         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
7806
7807 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7808
7809         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
7810         that deals with vreg interference. Explicitly check for OP_LDADDR to be
7811         able to process the source reg.
7812
7813 2008-10-16  Martin Baulig  <martin@ximian.com>
7814
7815         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
7816
7817         * inssel.brg: Add `OP_HARD_NOP'.
7818
7819         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
7820
7821         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
7822         `OP_HARD_NOP' instruction when running inside the debugger.
7823
7824         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
7825         `OP_HARD_NOP' instruction when running inside the debugger.
7826
7827 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7828
7829         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
7830         now works. The issue with the regalloc tripping up no longer
7831         happens.
7832
7833         * simd-intrinsics.c (load_simd_vreg): Same.
7834
7835 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7836         
7837         * basic-simd.cs: Tests for new Vector8ui methods.
7838
7839 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7840
7841         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
7842         only for type. This fixes crashes where MonoInst::klass is checked
7843         for ops of type != VTYPE or OBJ.
7844
7845         * simd-intrinsics.c (load_simd_vreg): Same.
7846
7847 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7848
7849         * mini-ops.h: Add ops for packed shuffle/max/avg and
7850         extract mask.
7851         
7852         * cpu-x86.md: Same.
7853
7854         * mini-x86.c (mono_arch_output_basic_block): Same.
7855
7856         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
7857         extract mask.
7858
7859         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
7860         to emit extract mask op.
7861
7862         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
7863         to emit word shuffles.
7864
7865 2008-10-15  Mark Probst  <mark.probst@gmail.com>
7866
7867         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
7868         the largest alignment needed by a variable, but at least
7869         sizeof(gpointer).
7870
7871 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7872
7873         * basic-simd.cs: Tests for the fixes in the last commit.
7874
7875 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7876
7877         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
7878         no longer handles STACK_PTR input.
7879
7880         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
7881
7882         * simd-intrinsics.c (load_simd_vreg): New function that works like 
7883         get_simd_vreg   but handles STACK_PTR input.
7884
7885         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
7886         as the input can be an arbitrary pointer.
7887
7888         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
7889         LDADDR local optimization directly otherwise use a store op.
7890
7891 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7892
7893         * basic-simd.cs: Tests for dup low and dup high.
7894
7895 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7896
7897         * mini-ops.h: Add dup low and dup high ops.
7898         
7899         * cpu-x86.md: Same.
7900
7901         * mini-x86.c (mono_arch_output_basic_block): Same.
7902
7903         * simd-intrinsics.c (vector4f_intrinsics): Same.
7904
7905 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7906
7907         * basic-simd.cs: Tests for recently added functionality.
7908
7909 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7910
7911         * mini-ops.h: Add remaining sse1 fp ops.
7912         
7913         * cpu-x86.md: Add remaining sse1 fp ops.
7914
7915         * mini-x86.c (mono_arch_output_basic_block): Same.
7916
7917         * mini.h: Add enum for simd FP compare conditions.
7918
7919         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
7920
7921         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
7922         so the backed can generate the appropriate op.
7923
7924 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7925         This patch squeese one more byte from the SimdIntrinsc struct.
7926
7927         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
7928         a a shift amount intead of simply or'ing it.
7929
7930         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
7931
7932         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
7933         byte so we can have an aditional flags field without increasing struct size.
7934
7935         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
7936         against the simd_supported_versions bitmask.
7937
7938         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
7939
7940 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
7941
7942         * mini.c: remove rawbuffer code (the only use here is unsafe because
7943         it takes locks during signal handling and the kernel now provides much
7944         better info in proc/pid/smaps these days).
7945
7946 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
7947
7948         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
7949         OP_X86_PUSH_OBJ. Fixes #434620.
7950
7951         * objects.cs: Add a test.
7952         
7953 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
7954
7955         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
7956         that the packuswb/packusdw don't work with unsigned numbers for what
7957         would be negative numbers in signed format.
7958
7959         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
7960         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
7961
7962         * mini-ops.h: Add doubleword forms of many ops and packing ones.
7963
7964         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
7965
7966         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
7967
7968         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
7969
7970         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
7971         add more ops.
7972
7973         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
7974         version as the enum in mini.h.
7975
7976         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
7977         for sse3 ops, check the simd_version field if present. This way the code
7978         works with all versions of sse.
7979
7980 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7981
7982         * simd-intrinsics.c: Fixed intrinsic name typo.
7983
7984         * mini.h: Added missing simd exported function.
7985
7986         * basic-simd.cs: Added tests for Vector4ui.
7987         Fixed broken test for Vector16b.
7988
7989 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
7990
7991         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
7992         the max length to 64.
7993
7994 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7995
7996         * method-to-ir.c: Only do the fast virtual generic method call for
7997         non-wrapper methods.
7998
7999         * mini.h, mini-trampolines.c: The new generic virtual remoting
8000         trampoline handles virtual method calls via the vtable (as done by
8001         the fast virtual generic method calls) to remoting proxies.
8002
8003         * mini.c (mono_jit_create_remoting_trampoline): For generic
8004         methods reate a generic virtual remoting trampoline.
8005
8006         * mini-amd64.h: Enable fast virtual generic method calls again.
8007
8008 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8009
8010         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
8011         restore registers when doing tail calls.
8012
8013 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8014
8015         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
8016         Vector4ui.
8017
8018 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8019
8020         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
8021
8022 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8023
8024         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
8025
8026 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8027
8028         * basic-simd.cs: Retrofit for API changes.
8029
8030 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8031
8032         * mini-ppc.c: Handle integer stack arguments for tail calls.
8033
8034 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8035
8036         * optflags-def.h: Removed sse3 optimization.
8037
8038         * driver.c: Same.
8039
8040         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
8041         sse3.
8042
8043         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
8044
8045         * mini.h: Added enumeration with simd versions.
8046
8047         * simd-intrinsics.c (emit_intrinsics): Use the new static var
8048         for detecting SSE3.
8049
8050         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
8051
8052         * mini.c (mini_init): Call mono_simd_intrinsics_init.
8053
8054 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8055
8056         * basic-simd.cs: Added tests for Vector8u and Vector16u.
8057
8058         * basic-simd.cs: Fixed test naming.
8059
8060 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8061
8062         * mini-ops.h: Added ops for packed and saturated math, shifts
8063         and packing/unpacking.
8064
8065         * cpu-x86.md: Added descriptors for the above ops.
8066
8067         * mini-x86.c: Added code to emmit the above ops.
8068
8069         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
8070
8071 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
8072
8073         * aot-compiler.c (compile_method): Enable AOT for generic code.
8074
8075         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
8076
8077 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
8078
8079         * mini.c: add a workaround for a common screwup that ends up blamed
8080         to mono (other processes blocking signal delivery).
8081
8082 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8083
8084         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
8085         in the LDFLD/STFLD opcodes. Fixes #432673.
8086
8087         * iltests.il.in: Add a new test.
8088
8089 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
8090
8091         * mini-arm.c: attach the thread in unmanaged->managed transitions
8092         using delegates (bug #433148).
8093
8094 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
8095
8096        * basic-simd.cs: Use new ShuffleSel constants.
8097
8098 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
8099
8100         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
8101
8102         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
8103         only disable simd intrinsics if no sse2 is detected.
8104
8105         * optflags-def.h: Added sse3.
8106
8107         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
8108         is disabled.
8109
8110 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8111
8112         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
8113         when adding delegate-invoke wrappers.
8114
8115 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8116
8117         * Makefile.am: Reenable the simd tests.
8118
8119 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
8120
8121         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
8122           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
8123           other vreg is allocated to that hreg.
8124
8125         Contributed under MIT/X11 license.
8126
8127 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8128
8129         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
8130         yet checked in.
8131
8132 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
8133
8134         * basic-simd.cs: New test suite for SIMD intrinsics.
8135
8136         * Makefile.am: Added new tests.
8137
8138 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
8139
8140         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
8141
8142         * mini-ops.h: Same.
8143
8144         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
8145
8146         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
8147         using SSE2 aware opcodes.
8148
8149         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
8150         is enabled, this code path is only reachable if conversion ops are emmited after
8151         mono_method_to_ir.
8152
8153         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
8154
8155         This optimization saves 6 bytes per conversion against the old version.
8156
8157 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8158
8159         * aot-compiler.c (compile_method): Don't skip methods referencing 
8160         generic methods without a corresponding entry in token_info_hash, since
8161         encode_method_ref () can handle all generic methods now.
8162
8163         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
8164         generic context is set.
8165         
8166         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
8167         generic sharing of LDTOKEN.
8168
8169 2008-10-06  Mark Probst  <mark.probst@gmail.com>
8170
8171         * mini-amd64.h: Temporarily disabled fast virtual generic method
8172         calls because it breaks the System.Runtime.Remoting tests.
8173
8174 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8175
8176         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
8177
8178         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
8179         so inlining actually works.
8180         (check_inline_caller_method_name_limit): Ditto.
8181
8182 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
8183
8184         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
8185         64 bit safety (from Olaf Hering and Andreas Farber).
8186
8187 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8188         
8189         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
8190         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
8191         unused virtual call support code.
8192
8193         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
8194         
8195         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
8196         which can't use aot trampolines.
8197         (decode_patch): Don't create aot trampolines for methods which can't use
8198         them.
8199
8200         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
8201         use aot trampolines.
8202
8203         * mini.h: Bump AOT image format version.
8204         
8205 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
8206
8207         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
8208         to save_token_info () since cmethod is inflated for constrained calls.
8209
8210         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
8211
8212 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
8213
8214         * Makefile.am: Add build rules for ppc64.
8215         This avoids the build failing at pedump with unresolved symbols
8216         due to lack of arch_sources. Instead it will now fail earlier
8217         due to lack of cpu-ppc64.md.
8218
8219         Contributed under MIT/X11 license.
8220
8221 2008-10-04  Mark Probst  <mark.probst@gmail.com>
8222
8223         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
8224         tail calls.
8225
8226         * iltests.il.in: Add test case for tail call with many arguments.
8227
8228 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
8229
8230         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
8231         to the fast virtual generic method code until the aot case is fixed.
8232
8233 2008-10-03  Mark Probst  <mark.probst@gmail.com>
8234
8235         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
8236
8237 2008-10-03  Mark Probst  <mark.probst@gmail.com>
8238
8239         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
8240         thunks.
8241
8242 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
8243         
8244         * simd-intrinsics.c: Forgot to add this one.
8245
8246         * mini-codegen.c: Fix macro in case SIMD is not supported.
8247
8248 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
8249         
8250         This patch land initial JIT support for simd intrinsics.
8251
8252         * mini-x86.h: Added new define to make --enable_minimal work on x86.
8253
8254         * Makefile.am: Added simd-intrinsics.c
8255
8256         * simd-intrinsics.c: New file with simd instrinsic related
8257         code.
8258
8259         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
8260
8261         * cpu-x86.md: Add simd related instructions.
8262
8263         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
8264
8265         * driver.c: Added two new --regression variants.
8266
8267         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
8268
8269         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
8270
8271         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
8272         extract some complicated logic to helper functions.
8273
8274         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
8275
8276         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
8277
8278         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
8279         the specialized simplification pass.
8280
8281         * method-to-ir.c (mono_spill_global_vars): Use new macro.
8282
8283         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
8284
8285         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
8286         table.
8287
8288         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
8289         if MONO_ARCH_NEED_SIMD_BANK is defined.
8290
8291         * mini-ops.h: Added the new simd ops.
8292
8293         * mini-x86.c: Added mono_arch_xregname.
8294
8295         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
8296
8297         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
8298
8299         * mini-x86.h: Define simd related MONO_ARCH macros.
8300
8301         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
8302
8303         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
8304
8305         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
8306         MONO_CLASS_IS_SIMD to deal with simd related IR.
8307
8308         * mini.h (MonoInst): Added spill_var to the backend union.
8309
8310         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
8311
8312         * mini.h: Added forward declarations of the new simd fuctions.
8313
8314         * optflags-def.h: Added new optimization names SIMD.
8315
8316         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
8317
8318         * regalloc.h: Added support for working with 3 register banks.
8319
8320         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
8321
8322         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
8323
8324 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
8325
8326         * mini-exceptions.c: remove 64 bit related ifdef clutter.
8327
8328 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
8329
8330         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
8331         instead of one on 64 bit systems.
8332
8333         * method-to-ir.c: Remove unused includes.
8334
8335 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
8336
8337         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
8338         cfg->used_int_regs, since the two are different on arm.
8339
8340 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8341
8342         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
8343         mono_method_get_vtable_index() to get the vtable index.
8344
8345 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8346
8347         * method-to-ir.c (mono_method_to_ir2): Don't create native
8348         wrappers for array methods, because they're never called (and if
8349         they were called they wouldn't work).
8350
8351 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8352
8353         * method-to-ir.c (mono_method_to_ir2): Array methods are
8354         special-cased and must not be invoked indirectly via the (M)RGCTX
8355         when generic sharing is turned on.  Fixes #431413.
8356
8357 2008-10-01  Mark Probst  <mark.probst@gmail.com>
8358
8359         * method-to-ir.c: When generic sharing is active, call
8360         non-interface virtual generic methods via the standard trampoline.
8361
8362         * mini-trampolines.c: Handle virtual generic shared methods.
8363
8364         * mini.h, mini-x86.c, mini-x86.h: New argument for
8365         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
8366         method thunks and which is the trampoline to call if the lookup
8367         fails.  Enable the virtual generic method thunk for x86.
8368
8369         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
8370         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
8371         argument but assert that it's NULL, because these archs don't yet
8372         implement the virtual generic method thunk.  Changes in the IMT
8373         thunk data structures.
8374
8375 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
8376
8377         * aot-compiler.c (emit_globals): Avoid invalid characters in
8378         the static linking symbol.
8379
8380         * objects.cs: Add a test for the range check optimization. Fix warnings.
8381
8382         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
8383         optimization from the current JIT.
8384
8385         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
8386         later in decompose_array_access_opts () to allow more optimizations.
8387
8388         * method-to-ir.c (mono_handle_soft_float): Rename this to 
8389         mono_decompose_soft_float () for consistency.
8390
8391         * mini-ops.h: Fix arguments of OP_STRLEN.
8392
8393         * method-to-ir.c (save_cast_details): Extract the cast details saving code
8394         into a separate function.
8395         (reset_cast_details): Ditto.
8396         (handle_unbox): Save cast details. Fixes #431254.
8397
8398         * method-to-ir.c: Remove some obsolete FIXMEs.
8399
8400 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8401
8402         * ir-emit.h (alloc_dreg): Write a warning before crashing.
8403
8404 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8405
8406         * mini-codegen.c: More work on macros to make them
8407         ready for multiple regbanks.
8408
8409 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8410
8411         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
8412
8413         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
8414
8415 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8416
8417         * mini-codegen.c (mono_spillvar_offset): Proper support for
8418         multiple regbanks.
8419
8420 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
8421
8422         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
8423         the stack overflow changes.
8424
8425 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8426
8427         * mini-codegen.c: Make all bank macros depend on reg_bank.
8428
8429         * mini-codegen.c (mono_local_regalloc): Make free mask
8430         initialization regbank aware.
8431
8432 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8433
8434         * mini-codegen.c (mono_local_regalloc): Extract callee
8435         mask selection to a function and make it regbank aware.
8436
8437 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8438
8439         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
8440         code to deal with many regbanks.
8441
8442 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
8443
8444         * mini-codegen.c: More fp->regbank changes.
8445
8446 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
8447
8448         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
8449         of a hardcoded constant.
8450
8451 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
8452
8453         * method-to-ir.c (type_from_stack_type): Fix typo.
8454
8455 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
8456
8457         * mini-ia64.c (emit_move_return_value): Convert float return values to
8458         double.
8459
8460         * objects.cs: Add a new test.
8461         
8462         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
8463         VARARG methods to fix an assert later.
8464
8465         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
8466         end so it at least compiles.
8467
8468 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
8469
8470         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
8471
8472 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
8473
8474         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
8475         optimization to a new function (emit_optimized_ldloca_ir) and enable
8476         it for both ldloca and ldloca_s.
8477
8478 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
8479
8480         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
8481         gshared CASTCLASS code.
8482
8483         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
8484         amd64, where the libc stack unwinder encounters stack frames referring to
8485         native code in unmapped memory.
8486
8487         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
8488         sharing.
8489
8490         * generics.cs: Add new test.
8491
8492 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
8493
8494         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
8495         add a check that one of the ARM_FPU_ constants is defined.
8496
8497         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
8498         
8499         * mini-exceptions.c: Fix build on non-altstack platforms.
8500
8501         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
8502         sharing of vtypes.
8503
8504         * ir-emit.h: Add a comment to NEW_PCONST.
8505
8506         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
8507
8508         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
8509
8510         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
8511         after the changes to MonoJitDomainInfo.
8512
8513 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8514
8515         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
8516
8517 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8518
8519         * mini-ppc.c: Compiler warning fixes.
8520
8521 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8522
8523         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
8524         for pinvokes.
8525
8526 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8527
8528         * exceptions-ppc.c, mini-ppc.h: Compile
8529         mono_arch_handle_altstack_exception() on Darwin, too.
8530
8531 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8532
8533         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
8534         work on archs which don't have generic sharing implemented, only
8535         without the vtable_arg.
8536
8537 2008-09-26  Mark Probst  <mark.probst@gmail.com>
8538
8539         * mini.c: Added comment explaining why delegate ctor icall
8540         wrappers are compiled.
8541
8542 2008-09-26  Mark Probst  <mark.probst@gmail.com>
8543
8544         * mini.c: Don't produce trampolines to delegate ctor icall
8545         wrappers but compile them upfront.
8546
8547 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
8548
8549         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
8550         runtime-set function when going back to managed code. Currently this
8551         is used to set back the protection on the soft ovf pages and/or to
8552         throw the stack overflow exception that happened in unmanaged code.
8553
8554 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
8555
8556         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
8557         runtime-set function when going back to managed code. Currently this
8558         is used to set back the protection on the soft ovf pages and/or to
8559         throw the stack overflow exception that happened in unmanaged code.
8560
8561 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
8562
8563         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
8564         the support code for restoring stack protection after stack overflows
8565         that happen in unmanaged code. Don't set the exec permission on the
8566         soft overflow area.
8567
8568 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
8569
8570         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
8571         delegate->method_ptr is set. Fixes #428054.
8572
8573 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
8574
8575         * tests.cs: Rename to ratests.cs.
8576
8577         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
8578         emit_get_rgctx_... functions.
8579
8580 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8581
8582         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
8583
8584 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8585
8586         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
8587         before asserting that method is sharable.
8588
8589 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8590
8591         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
8592         whether method needs a static RGCTX wrapper used instead of
8593         complex conditions.
8594
8595         * generic-sharing.c, mini.h: A few functions moved to
8596         metadata/generic-sharing.c.
8597
8598 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8599
8600         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
8601         Generic code sharing for value types, which essentially means
8602         treating value type methods like static methods.  The RGCTX is
8603         passed in the same way.
8604
8605 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
8606
8607         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
8608         opcode when creating multi-dimensional arrays of open types.
8609
8610         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
8611         open generic types.
8612
8613         * generics.cs: Add a test.
8614
8615         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
8616
8617 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
8618
8619         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
8620
8621         * mini.c (mini_method_compile): Set it when running under the debugger. 
8622
8623         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
8624         vreg optimization if the flag is set.
8625
8626         * driver.c (mono_main): Add --attach= option to pass options to
8627         the attach agent.
8628
8629         * mini.c (sigquit_signal_handler): Start the attach agent.
8630
8631         * ssapre.c: Disable this to save space since it is not yet ported to
8632         linear IR.
8633
8634         * regalloc2.c: Disable this to save space.
8635
8636         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
8637
8638 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
8639
8640         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
8641         the -v option useful again.
8642
8643 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
8644
8645         * mini-amd64.c (mono_arch_output_basic_block): Add support for
8646         --break-at-bb.
8647
8648         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
8649         arrays of arrays. Fixes #428406.
8650
8651         * method-to-ir.c (mini_emit_castclass): Ditto.
8652
8653         * objects.cs: Add new test.
8654         
8655 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
8656
8657         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
8658         was wrong at it choked against target_type_is_incompatible for byref types.
8659
8660 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
8661
8662         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
8663         places.
8664
8665 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
8666
8667         * mini-exceptions.c: update a few more exceptions-related counters.
8668
8669 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
8670
8671         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
8672         new functions to allocate from persistent mempools.
8673
8674 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
8675
8676         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
8677         multiple register banks in the future.
8678
8679         * mini-codegen.c (mono_local_regalloc): Fix a warning.
8680
8681 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
8682
8683         * mini.c (type_to_eval_stack_type): Remove duplicated function.
8684
8685         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
8686
8687         * mini.h: Export type_to_eval_stack_type.
8688
8689         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
8690         is only ins->klass of byref types.
8691
8692 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
8693
8694         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
8695         (mini_emit_memcpy2): Ditto.
8696
8697         * mini-amd64.c: Fix a warning.
8698
8699 2008-09-21  Mark Probst  <mark.probst@gmail.com>
8700
8701         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
8702         linking.
8703
8704 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
8705
8706         * method-to-ir.c: Extract stloc micro-optimization to a
8707         function and apply it to all cases.
8708
8709 2008-09-19  Mark Probst  <mark.probst@gmail.com>
8710
8711         * method-to-ir.c: Don't fail generic code sharing in cases we
8712         already support.
8713
8714 2008-09-18  Mark Probst  <mark.probst@gmail.com>
8715
8716         * mini-ppc.c: Handle structs in tailcalls on Darwin.
8717
8718 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
8719
8720         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
8721         implementation.
8722
8723 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
8724
8725         * trace.c: make tracing more useful and correct, with per-thread
8726         id and indent info.
8727
8728 2008-09-15  Mark Probst  <mark.probst@gmail.com>
8729
8730         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
8731         doing a method call and the argument is an R4.
8732
8733 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
8734
8735         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
8736         generic methods.
8737
8738 2008-09-13  Mark Probst  <mark.probst@gmail.com>
8739
8740         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
8741
8742 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
8743
8744         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
8745         (MONO_JUMP_TABLE_FROM_INS): Ditto.
8746
8747 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
8748
8749         * driver.c: Add a --agent argument (not supported yet) to load managed
8750         agent assemblies before loading the main assembly, similarly to how the
8751         Java VM handles agents.
8752
8753 2008-09-11  Mark Probst  <mark.probst@gmail.com>
8754
8755         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
8756         function to do stack layout of local variables.
8757
8758 2008-09-11  Mark Probst  <mark.probst@gmail.com>
8759
8760         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
8761         calculation.
8762
8763 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
8764
8765         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
8766         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
8767         JIT if DISABLE_JIT is defined.
8768
8769         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
8770         defined.
8771
8772 2008-09-10  Mark Probst  <mark.probst@gmail.com>
8773
8774         * iltests.il.in: Disable the fconv test on PPC (the result is
8775         undefined according to ECMA).
8776
8777 2008-09-10  Mark Probst  <mark.probst@gmail.com>
8778
8779         * iltests.il.in: Enable tail call tests for PPC.
8780
8781         * mini.h: Add variable for storing incoming valuetype argument
8782         addresses for tail calls.
8783
8784         * mini-ppc.c: Implement valuetype arguments and return values for
8785         tailcalls on Linux.
8786
8787 2008-09-09  Mark Probst  <mark.probst@gmail.com>
8788
8789         * mini-ppc.c: Partially implement tail calls (struct arguments and
8790         return values not supported).
8791
8792         * method-to-ir.c: Enable tail calls on PPC.
8793
8794 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
8795
8796         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
8797         runtime-invoke wrappers to work around the problem of them getting
8798         assigned to a random class.
8799
8800         * aot-runtime.c (mono_aot_get_method): Ditto.
8801         
8802 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
8803
8804         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
8805         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
8806
8807 2008-09-07  Mark Probst  <mark.probst@gmail.com>
8808
8809         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
8810         until they're implemented properly.
8811
8812         * exceptions-ppc.c: Use arch-independent exception-handling code
8813         instead of custom one.
8814
8815         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
8816         for Linear IR.
8817
8818         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
8819
8820         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
8821         applies when __powerpc__ is defined.
8822
8823 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
8824
8825         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
8826         methods to their code to avoid computing the full name of wrappers and
8827         doing a lookup in a string hash table.
8828
8829 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
8830
8831         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
8832         we identify bblocks before method_to_ir () is ran.
8833
8834         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
8835         Also avoid optimizing branches pointing to themselves.
8836
8837         * mini.c (mini_method_compile): Ditto. Fixes #422947.
8838
8839 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
8840
8841         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
8842
8843 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
8844
8845         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
8846         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
8847         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
8848         'buf'.
8849
8850         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
8851         jumped to the same entry in plt_jump_table.
8852
8853 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
8854
8855         * method-to-ir.c (initialize_array_data): Handle field with RVA from
8856         dynamic images.
8857
8858 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
8859
8860         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
8861         other assignment can be if converted. Saves 1.5% on corlib size and fixes
8862         #421807.
8863
8864 2008-08-29  Geoff Norton  <gnorton@novell.com>
8865
8866         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
8867         segment, and doesn't properly handle .space as .text.  Fixes
8868         AOT Mach/ARM
8869
8870 2008-08-29  Geoff Norton  <gnorton@novell.com>
8871
8872         * mini.c: Disable the mach exception handler when running on 
8873         ARM
8874
8875 2008-08-29  Geoff Norton  <gnorton@novell.com>
8876
8877         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
8878         globals on Darwin/ARM
8879
8880 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
8881
8882         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
8883         since too many things depend on it. Instead, call 
8884         mono_runtime_set_no_exec ().
8885         
8886         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
8887         the new JIT.
8888
8889         * aot-compiler.c: Add an 'asm-only' AOT option.
8890
8891         * mini.c: Avoid initializing the runtime when doing AOT compilation.
8892                 
8893         * aot-compiler.c (compile_method): Disable gshared support for now as it
8894         doesn't yet work.
8895
8896 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
8897
8898         * mini-amd64.h : Fix a compiler warning.
8899
8900         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
8901           Changed to use a callback function to retrieve the unwind info.
8902           This avoids problems observed when code blocks were removed by
8903           unloading an app domain.
8904
8905         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
8906           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
8907           to work properly.
8908
8909         Contributed under MIT/X11 license.
8910
8911 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
8912
8913         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
8914           case to keep the stack aligned to 8.
8915
8916         Contributed under MIT/X11 license.
8917
8918 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
8919
8920         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
8921         avoid repeated linear searches.
8922
8923 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
8924
8925         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
8926         methods it can't handle.
8927         
8928         * aot-compiler.c (add_method): Avoid adding a method twice.
8929         (add_wrappers): Add runtime invoke wrappers for all methods.
8930
8931         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
8932         function to create an aot-compatible version of this trampoline.
8933
8934         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
8935
8936 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
8937
8938         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
8939
8940         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
8941         with a generic sharing failure.
8942
8943         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
8944
8945         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
8946         CEE_RETHROW. Fixes #419634.
8947
8948         * mini.c (mono_method_to_ir): Ditto.
8949
8950         * exceptions.cs: Add a new test.
8951         
8952         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
8953         to mono_type_stack_size_internal () since some callers might not pass in
8954         an rgctx.
8955
8956         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
8957         instrument_prolog. Fixes #419878.
8958
8959         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
8960         doubles in soft float mode volatile.
8961
8962 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
8963
8964         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
8965
8966         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
8967         to handle soft float correctly.
8968
8969         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
8970         the fast path.
8971
8972         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
8973
8974         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
8975         to sp, since the generics catch code requires it.
8976
8977         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
8978         copying.
8979
8980         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
8981         mono_arch_emit_imt_argument ().
8982
8983         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
8984
8985         * mini-arm.c tramp-arm.c: Generic sharing updates.
8986
8987 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
8988
8989         * mini-arm.c: Fix the arm build.
8990
8991         * generic-sharing.c (mini_type_get_underlying_type): New helper function
8992         handling enums, generic instances and generic sharing.
8993         (mini_type_stack_size_full): Ditto.
8994
8995         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
8996         
8997         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
8998
8999         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
9000
9001         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
9002         trampolines.
9003
9004         * mini-arm.c: Various small generic sharing changes.
9005
9006         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
9007         this for x86.
9008         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
9009         custom code.
9010
9011         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
9012         helper function to return a generic class init trampoline.
9013
9014         * method-to-ir.c mini.c: Use it.
9015         
9016         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
9017         arch-specfic function to return a generic class init trampoline.
9018
9019         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
9020         the GENERIC_CLASS_INIT custom code.
9021
9022         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
9023         a fatal error, not a sharing failure.
9024
9025         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
9026         needed.
9027
9028         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
9029         trampoline argument from MONO_ARCH_VTABLE_REG.
9030
9031         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
9032         order of the arguments to the C trampoline: pass 'slot' as the trampoline
9033         argument, and pass the vtable in VTABLE_REG.
9034
9035         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
9036         order of the arguments to the C trampoline: pass 'slot' as the trampoline
9037         argument, and pass the vtable in VTABLE_REG.
9038         (mono_arch_create_trampoline_code_full): Remove some special casing for
9039         the rgctx fetch trampoline.
9040
9041         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
9042         Fixes #419273.
9043
9044         * iltests.il: Add a test for it.
9045
9046 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
9047
9048         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
9049
9050         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
9051         no longer needed.
9052
9053         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
9054         use mono_jit_info_table_find () to avoid recursion.
9055         (mono_delegate_trampoline): Add a sync wrapper here.
9056
9057         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
9058         here.
9059
9060         * mini.c (mono_method_to_ir): Ditto.
9061         
9062         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
9063         add_sync_wrapper argument. Don't add a sync wrapper here.
9064         (mono_create_jump_trampoline): Don't add a sync wrapper here.
9065
9066         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
9067         
9068 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
9069
9070         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
9071           of nonvolatile registers back from MonoContext to CONTEXT.
9072
9073         Contributed under MIT/X11 license.
9074
9075 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
9076
9077         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
9078           arguments on Winx64 there are only 4 argument registers.  For this
9079           logic to work the last argument must be pulled from the stack.  
9080
9081         Contributed under MIT/X11 license.
9082
9083 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
9084
9085         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
9086
9087         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
9088         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
9089         encode/decode_method_ref ().
9090
9091         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
9092
9093         * aot-runtime.c (decode_patch): Ditto.  
9094
9095         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
9096         MONO_PATCH_INFO_METHOD.
9097
9098         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
9099         MonoGenericJitInfo.
9100
9101         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
9102         MonoGenericJitInfo.
9103
9104         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
9105
9106         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
9107         one from the caller.
9108
9109         * aot-runtime.c (decode_generic_inst): New function to decode and
9110         return a interned generic inst.
9111         (decode_klass_ref): Use it.
9112         (decode_method_ref): Ditto.
9113
9114         * aot-compiler.c (emit_exception_debug_info): Save 
9115         jinfo->has_generic_jit_info too.
9116
9117 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
9118
9119         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
9120
9121         * iltests.il.in: Add a test for fconv_to_i.
9122
9123         * liveness.c: Disable the liveness2 pass for now to save space.
9124
9125         * regalloc2.c: Include mempool-internals.h to fix warnings.
9126
9127         * aot-compiler.c (encode_method_ref): Encode the context of generic
9128         instance methods.
9129
9130         * aot-runtime.c (decode_method_ref): Inflate generic methods using
9131         the context saved in the aot file.
9132
9133         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
9134
9135         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
9136
9137         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
9138         volatile so they won't be optimized away.
9139
9140 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
9141
9142         * ssa.c:
9143         * ssa2.c:
9144         * mini.c:
9145         * regalloc2.c:
9146         * dominators.c: Remove duplicated functions that now are in
9147         mempool-internals.h.
9148
9149 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
9150
9151         * aot-compiler.c: Fix warnings.
9152
9153         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
9154
9155         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
9156
9157         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
9158         as the patch type.
9159
9160         * mini.c (mono_resolve_patch_target): Ditto.
9161         
9162         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
9163         (encode_klass_ref): Add support for encoding VARs/MVARs.
9164
9165         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
9166
9167         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
9168         the handling of the got entries into a separate 'decode_got_entry' function.
9169         Add support for RGCTX_FETCH.
9170
9171         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
9172         clobbered by the trampoline code.
9173
9174         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
9175         not clobbered by the indirect calling code.
9176
9177 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
9178
9179         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
9180         to fix the build.
9181
9182 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
9183
9184         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
9185         signature using the compilation mempool otherwise we would leak it.
9186
9187 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
9188
9189         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
9190         mono_emit_abs_call ().
9191
9192         * patch-info.h: Add GENERIC_CLASS_INIT.
9193
9194         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
9195
9196         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
9197         as their target as a near call.
9198
9199         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
9200         ABS handling code.
9201         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
9202
9203         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
9204         call to a runtime function described by a patch.
9205
9206         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
9207         mono_emit_abs_call, this has the advantage that the ABS handling code in
9208         mono_codegen () can handle them both, and can handle other stuff in the
9209         future without additional code.
9210
9211         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
9212         entry.
9213         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
9214         abs addresses.
9215
9216         * mini.h: Add missing bblock related prototypes.
9217
9218         * mini.h (MonoCompile): Remove unused reverse_inst_list and
9219         reverse_inst_list_len fields.
9220
9221         * mini.c: Refactor this file a bit by moving branch optimizations to 
9222         branch-opts.c.
9223
9224         * method-to-ir.c: Merge generic sharing changes missed earlier.
9225
9226         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
9227
9228         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
9229         shared patches. Process METHODCONST as a shared patch.
9230
9231         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
9232         as it crashes on the 2.0 mscorlib.
9233
9234         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
9235         to cause crashes.
9236         
9237         * aot-compiler.c: Use is_plt_patch () in a few additional places.
9238         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
9239         by IMT.
9240
9241         * aot-compiler.c: Reorganize the got handling code to be a bit more
9242         understandable.
9243
9244 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
9245
9246         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
9247         mono_patch_info_equals/hash, and use it to massively simplify
9248         get_plt_index ().
9249
9250         * mini.c (mono_patch_info_hash): Simplify this and add support for
9251         more patch types.
9252
9253         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
9254
9255         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
9256         handling code, since an offset is not enough to identify a trampoline.
9257
9258         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
9259
9260 2008-08-17  Mark Probst  <mark.probst@gmail.com>
9261
9262         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
9263
9264         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
9265
9266         * mini-ops.h: Argument and result types for OVF_CARRY ops.
9267
9268         * decompose.c: PPC decompositions for various ops.
9269
9270         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
9271
9272 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
9273
9274         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
9275         call the generic trampoline code using a call, instead of a jump, to
9276         remove some special casing from the generic trampoline code.
9277
9278         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
9279         (mono_codegen): Ditto.
9280
9281         * aot-compiler.c aot-runtime.c: Ditto.
9282
9283         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
9284
9285         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
9286         helper function to find the offset corresponding to a lazy fetch trampoline.
9287
9288         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
9289         when doing generic sharing.
9290
9291         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
9292         places.
9293         
9294         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
9295         mini-trampolines.c to be with the other trampoline creation functions.
9296
9297         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
9298         as it is equal to method->signature in most cases, add a 
9299         mono_emit_method_call_full variant which takes a signature and an imt
9300         argument as well.
9301
9302 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
9303
9304         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
9305         to this function, since it could be computed easily from the method 
9306         argument.
9307         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
9308         more.
9309
9310         * method-to-ir.c mini.c: Remove references to 
9311         compile_generic_method_wo_context.
9312
9313         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
9314         generic method calls.
9315         
9316         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
9317         dimensional non-szarrays.
9318
9319         * mini.c (mini_init): Register mono_array_new_1.
9320
9321         * jit-icalls.c (mono_array_new_1): New jit icall.
9322
9323         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
9324         pointing to the method.
9325
9326         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
9327         method addresses belonging to METHOD_JUMP patches in the 
9328         jump_target_got_slot_hash.
9329         (mono_aot_load_method): Ditto.
9330
9331         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
9332         METHOD_JUMP patches.
9333
9334         * mini.c (mini_create_jit_domain_info): New helper function which 
9335         initializes/frees domain->runtime_info.
9336         (mini_free_jit_domain_info): Ditto.
9337         (mini_init): Install the domain hook functions with the runtime.
9338
9339         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
9340         information maintained by the JIT.
9341
9342         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
9343         insertion into jump_table_hash into mono_codegen (), also implement proper
9344         locking.
9345
9346         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
9347         tail calls, it is already done by the aot code.
9348         
9349         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
9350         mechanism on amd64.
9351
9352         * iltests.il.in: Make the jmp test a bit more complex.
9353
9354         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
9355         generic instances which doesn't have a token.
9356
9357         * aot-runtime.c (decode_method_ref): Ditto.
9358         
9359         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
9360         can handle this case now.
9361         (handle_box): Ditto.
9362
9363 2008-08-15  Geoff Norton  <gnorton@novell.com>
9364
9365         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
9366         debugging check.
9367
9368 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
9369
9370         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
9371         calling generic methods.
9372
9373         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
9374
9375         * aot-runtime.c (decode_patch_info): Ditto.
9376
9377         * mini.c (mono_resolve_patch_target): Ditto.
9378         
9379         * patch-info.h: Add METHOD_RGCTX.
9380
9381         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
9382
9383 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
9384
9385         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
9386         arguments in registers.
9387
9388         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
9389         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
9390
9391         * mini.c (mini_method_compile): Abort aot compilation for generic
9392         methods if generic sharing is disabled.
9393         
9394         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
9395         an mrgctx.
9396
9397         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
9398         requiring an mrgctx.
9399
9400         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
9401         store instructions when converting a vcall to a normal call.
9402
9403         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
9404         mono_arch_find_jit_info.
9405
9406 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
9407
9408         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
9409         avoid calling mono_method_full_name () for every method even if the
9410         env var is not set.
9411         (check_inline_caller_method_name_limit): Ditto.
9412
9413 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
9414
9415         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
9416         assemblies in one run.
9417
9418         * aot-compiler.c (mono_compile_assembly): Only print out a count of
9419         skipped methods if it is not 0.
9420
9421         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
9422
9423 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
9424
9425         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
9426           MONO_ARCH_HAVE_UNWIND_TABLE.
9427
9428         Contributed under MIT/X11 license.
9429
9430 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
9431
9432         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
9433           from default optimizaton list on Winx64.
9434
9435         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
9436
9437         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
9438           the LMF from the MonoJitTlsData structure.
9439
9440         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
9441
9442         Contributed under MIT/X11 license.
9443
9444 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
9445
9446         * mini.c (sigsegv_signal_handler): Fix the build.
9447
9448         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
9449         assembly->aot_module.
9450
9451         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
9452         hash table. This simplifies and speeds up a lot of code, and fixes support
9453         for .netmodules.
9454
9455         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
9456         with the runtime.
9457
9458         * mini-exceptions.c: Ditto.
9459         
9460         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
9461         'native_offset' argument, since these are computed in the 
9462         mono_find_jit_info () function.
9463
9464         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
9465         is used by exceptions-ppc.c.
9466
9467         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
9468         mono_arch_find_jit_info ().
9469         
9470         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
9471         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
9472         generic code in mini-exceptions.c.
9473
9474 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
9475
9476         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
9477
9478         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
9479         
9480         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
9481         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
9482         called while holding the loader lock. Fixes #415608.
9483         (mono_aot_get_method_from_token_inner): Ditto.
9484
9485 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
9486
9487         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
9488         to reduce differences between this and the generic implementation in
9489         mini-exceptions.c.
9490         (ves_icall_get_frame_info): Ditto.
9491
9492         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
9493
9494         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
9495         longer neccesarry.
9496
9497         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
9498         mono_arch_get_call_filter () and make it non-static, for consistency with the
9499         other architectures.
9500
9501 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
9502
9503         * mini.c:
9504         * local-propagation.c:
9505         * mini-x86.c: Correct the name of arch defines.
9506
9507 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
9508
9509         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
9510         NO_EMULATE_LONG_SHIFT_OPS define.
9511
9512 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
9513
9514         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
9515         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
9516
9517         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
9518         MACH fixes. Merged from the 2.0 branch.
9519
9520         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
9521
9522         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
9523         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
9524
9525         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
9526
9527         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
9528         mono_marshal_get_native_wrapper () signature changes.
9529
9530 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
9531
9532         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
9533         conversion bug under arm.
9534
9535 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
9536
9537         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
9538
9539         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
9540         with overflow checking.
9541
9542 2008-08-05  Marek Habersack  <mhabersack@novell.com>
9543
9544         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
9545         to the genmdesc.pl file
9546
9547 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
9548
9549         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
9550         arg_array in the soft-float versions of the LOAD/STORE macros.
9551
9552         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
9553         implementation.
9554
9555         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
9556
9557 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
9558
9559         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
9560         a float HFA. Fixes #413621.
9561
9562 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
9563
9564         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
9565         frame_size to args_size. Fixes build.
9566
9567 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
9568
9569         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
9570         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
9571
9572         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
9573         the stack are not unaligned. Fixes #413247.
9574         
9575 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
9576
9577         * mini.c: update jitted methods performance counters.
9578
9579 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
9580
9581         * mini-exceptions.c: increase the exceptions thrown performance
9582         counter in mono_handle_exception ().
9583
9584 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
9585
9586         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
9587         can work with netmodules.
9588
9589 2008-07-28  Geoff Norton  <gnorton@novell.com>
9590
9591         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
9592         regression tests.
9593
9594 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
9595
9596         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
9597         correct place.
9598
9599 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
9600
9601         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
9602           The float param registers and other param registers must be the 
9603           same index on Windows x64.
9604
9605         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
9606           ArgValuetypeAddrInIReg argument case.  Setting the argument
9607           op to OP_VTARG_ADDR (OP_REGOFFSET)).
9608
9609         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
9610           variable computed above as the copy length for arguments of storage
9611           type ArgValuetypeAddrInIReg.
9612
9613         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
9614           ArgValuetypeAddrInIReg argument case.  This case will rely on
9615           mono_arch_emit_outarg_vt to emit the correct code later in the process.
9616
9617         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
9618           a 32 byte stack allocation for all calls.  We will omit the adjustment for
9619           jump and tail call instructoins as they do not follow the typical call behavior.
9620
9621         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
9622           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
9623           local variable and pass the local variable by reference to the called method.
9624
9625         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
9626           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
9627           of a struct is passed in a register it must be saved with the other
9628           volatile argument on the stack.
9629
9630         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
9631           frame pointer the stack adjustment value must be saved to the unwind 
9632           info structure.
9633
9634         Contributed under MIT/X11 license.
9635
9636 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
9637
9638         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
9639         which got lost in the merge.
9640
9641 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
9642
9643         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
9644         build.
9645
9646         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
9647         
9648         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
9649         icalls, since they won't be patched.
9650
9651         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
9652         different code sequence when running under valgrind to prevent some valgrind
9653         errors.
9654
9655         * iltests.il.in: Add new regression test.
9656
9657         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
9658         end with a throw.
9659
9660         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
9661         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
9662
9663         * iltests.il.in: Add new test.
9664
9665         * aot-compiler.c: Fix some warnings.
9666
9667         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
9668         Fixes #412494.
9669
9670 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
9671
9672         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
9673         (mini_usage_jitdeveloper): Add a missing --wapi option.
9674
9675 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9676
9677         * mini-codegen.c: Simplify the is_fp macros.
9678         (free_up_ireg): Remove, use free_up_reg instead.
9679         (free_up_reg): Fix the fp case.
9680
9681 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
9682
9683         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
9684         lowered earlier.
9685
9686         * exceptions-x86.c: Merge some changes which seemed to have got lost
9687         in the linear-ir merge.
9688
9689         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
9690
9691         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
9692         long vreg volatile even if the variable was already created.
9693
9694         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
9695         volatile variables.
9696
9697 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
9698
9699         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
9700
9701         * mini.c (mono_jit_compile_method_inner): Add support for 
9702         MONO_EXCEPTION_BAD_IMAGE.
9703
9704         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
9705         mini_method_get_context () returns NULL. Fixes #356531.
9706
9707         * mini.c (mono_method_to_ir): Ditto.
9708         
9709         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
9710         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
9711
9712 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9713
9714         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
9715         in the LDFTN implementation.
9716
9717 2008-07-25  Mark Probst  <mark.probst@gmail.com>
9718
9719         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
9720         code, patch calls to icalls, too, even if they're not in the
9721         shared generic code hash.  Fixes #411962.
9722
9723 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9724
9725         * cpu-x86.md: Increase the length of the fcall opcodes.
9726
9727         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
9728         calls returning floats.
9729
9730         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
9731         on NEWARR.
9732         
9733         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
9734         missed earlier.
9735
9736         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
9737         into the domain->method_code_hash.
9738
9739         * aot-compiler.c: Fix win32 build.
9740
9741         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
9742         
9743         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
9744         gshared NEWARR implementation.
9745
9746         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
9747
9748         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
9749         can be used outside of method_to_ir.
9750
9751         * mini.h (MonoCompile): Add arg_types field.
9752
9753         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
9754         
9755         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
9756         the values of the local arg_array and param_types array.
9757
9758 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
9759
9760         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
9761         got accesses might only get generated later when NEWOBJ is decomposed.
9762         
9763         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
9764         looking up the native code of the target method when a delegate is called
9765         for the first time.
9766
9767         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
9768         optimization.
9769
9770         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
9771
9772         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
9773         AOT work on platforms without a working dlsym implementation.
9774
9775         * mini.h: Bump AOT image format version.
9776         
9777 2008-07-24  Mark Probst  <mark.probst@gmail.com>
9778
9779         * mini-exceptions.c: Free a MonoType with
9780         mono_metadata_free_type() instead of g_free().
9781
9782         * aot-runtime.c: Free a MonoType.
9783
9784 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
9785
9786         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
9787         optimization.
9788
9789         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
9790         fp stack on x86.
9791
9792 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
9793         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
9794         profiler hook.
9795
9796 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
9797
9798         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
9799         NEWOBJ calls on valuetypes.
9800
9801         * iltests.il.in: Add new test.
9802
9803         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
9804
9805 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
9806
9807         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
9808         is no longer needed.
9809
9810         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
9811         non register sized integer arguments.
9812         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
9813         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
9814         emit_memcpy2 ().
9815
9816         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
9817         CEE_MONO_RETOBJ.
9818         
9819         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
9820         two a binop with different sized arguments is emitted.
9821
9822         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
9823         instruction in the ins==NULL case.
9824
9825 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
9826
9827         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
9828
9829         * mini-x86.c: Fix osx build.
9830
9831         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
9832         opcodes as well.
9833
9834         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
9835         instruction for non int sized variables.
9836
9837         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
9838         implementation.
9839
9840 2008-07-23  Robert Jordan  <robertj@gmx.net>
9841
9842         * method-to-ir.c: Fix MSVC build.
9843
9844 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
9845
9846         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
9847         a non int sized type, widen it to an int since newer versions of gcc seem to
9848         generate code which needs this.
9849
9850         * ssa2.c abcremoval2.c: Fix warnings.
9851
9852         * *: Merge the Linear IR branch.
9853
9854         The original branch is at trunk/branches/vargaz/mini-linear-il, and
9855         the ChangeLog file there describes all the changes done over the years. 
9856         Further documentation can be found at www.mono-project.com/Linear_IL.
9857
9858 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
9859
9860         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
9861           The float param registers and other param registers must be the 
9862           same index on Windows x64.
9863
9864         Contributed under MIT/X11 license.
9865
9866 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
9867
9868         * mini.c: Make the previous fix GC safe.
9869
9870 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
9871
9872         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
9873
9874 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
9875
9876         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
9877           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
9878           ArgValuetypeAddrInIReg instead.
9879
9880         Contributed under MIT/X11 license.
9881
9882 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
9883
9884         * mini-codegen.c (get_register_spilling): Fix a warning.
9885
9886 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
9887
9888         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
9889         for types which the initialization fails. Raises the provided exception
9890         at the right stop after cleanup.
9891
9892 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
9893
9894         * aot-compiler.c: Free most of the memory allocated during compilation.
9895
9896         * mini.c (mini_parse_debug_options): Fix a leak.
9897         
9898         * mini.c (mini_method_compile): Don't add the method to the jit info tables
9899         during aot compilation.
9900
9901 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
9902
9903         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
9904         it has too much register pressure.
9905
9906 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
9907
9908         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
9909
9910 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
9911
9912         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
9913         on x86.
9914
9915         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
9916         on amd64 similar to the way it is done on arm.
9917
9918         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9919
9920         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
9921         consistency, normalize error messages, avoid loading aot-only modules in
9922         normal mode.
9923
9924         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
9925         for consistency.
9926
9927         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
9928
9929 2008-07-11  Martin Baulig  <martin@ximian.com>
9930
9931         * debug-debugger.h
9932         (MonoDebuggerInfo): Add `interruption_request'.
9933
9934 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
9935
9936         * aot-compiler.c (emit_plt): Remove some dead code.
9937
9938         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
9939
9940         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
9941         return the plt info offset belonging to a given plt entry.
9942
9943         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
9944         mono_aot_get_plt_info_offset.
9945         
9946         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
9947         similar to the amd64 code by makeing jumps through a separate jump table 
9948         instead of embedding the jump addresses into the code.
9949
9950 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
9951
9952         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
9953         method.
9954
9955 2008-07-10  Martin Baulig  <martin@ximian.com>
9956
9957         * mini.c (mini_method_compile): Disable generics sharing when
9958         running in the debugger.
9959
9960 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
9961
9962         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
9963
9964         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
9965         the local register allocator from running out of registers on x86 when 
9966         using aot.
9967
9968 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
9969
9970         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
9971         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
9972         C4146.
9973
9974         Contributed under MIT/X11 license.
9975
9976 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
9977
9978         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
9979         speed up the assembler.
9980
9981 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
9982
9983         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
9984         support.
9985
9986         * mini.c: Move the soft float handling macros a bit earlier, add 
9987         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
9988         place.
9989
9990         * mini.h: Add prototype for mono_arch_fixup_jinfo.
9991
9992         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
9993         read-only to help catch code allocation requests.
9994         
9995         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
9996         and turn it off when using --aot-only or when compiling with --aot=full.
9997
9998         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
9999         jump table for switches from the normal domain mempool, not the code
10000         manager.
10001
10002         * mini-trampolines.c (get_unbox_trampoline): New function to return an
10003         unbox trampoline which handles aot-only mode too.
10004
10005         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
10006         an AOTed unbox trampoline.
10007
10008         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
10009
10010 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
10011
10012         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
10013         ""
10014
10015         Contributed under MIT/X11 license.
10016
10017 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
10018
10019         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
10020           the unwind information for the method at the end of the allocated block.
10021           
10022         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
10023           MonoCompileArch to hold the unwind info for SEH on Winx64
10024         
10025         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
10026           frame pointer info for the method being compiled.
10027           
10028         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
10029           the call to mono_exception_from_token.
10030           
10031         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
10032           storing the method prolog information in a format that the Winx64 SEH can understand.  This
10033           information is stored a the end of the method block because it is all 32-bit offset based.
10034
10035         Contributed under MIT/X11 license.
10036
10037 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
10038
10039         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
10040
10041         * wapihandles.c: Fix warnings.
10042
10043         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
10044         mode.
10045
10046         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
10047         mono_jit_compile_method in aot-only mode since that calls the type 
10048         initializer.
10049         
10050         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
10051         get_delegate_invoke_impl in aot-only mode.
10052
10053         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
10054
10055 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
10056
10057         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
10058
10059         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
10060         is on by default.
10061
10062         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
10063
10064         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
10065         init trampoline from the AOT file as well.
10066
10067         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
10068         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
10069         code.
10070
10071         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
10072         mono_init.
10073
10074         * exceptions-amd64.c: Add _full variants for the remaining exception code
10075         creation functions as well, allow emission of relocatable code, remove
10076         caching since that is now done by the caller.
10077
10078         * mini-exceptions.c: Add _full variants for the remaining exception code
10079         creation functions as well, add aot-only support.
10080
10081         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
10082         if we can determine a proper token for them.
10083         (add_wrappers): Add a few more wrappers.
10084         (emit_method_code): Remove some dead code.
10085         (emit_trampolines): Emit exception code too.
10086
10087         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
10088
10089         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
10090         mono_array_new_va which avoids varargs.
10091
10092         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
10093
10094         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
10095         mono_arch_create_specific_trampoline () in all places.
10096
10097         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
10098         a bit so it can be used for other things as well.
10099         
10100         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
10101         on demand as well.
10102
10103         * exceptions-amd64.c: Rename the caching from the exception code creation
10104         functions, it is done by the caller instead.
10105         
10106         * exceptions-amd64.c: Change the signature of the exception code creation 
10107         functions to allow the creation of relocatable code later.
10108
10109         * mini-exceptions.c: Add a set of functions to query the various 
10110         runtime-generated exception functions.
10111
10112         * mini.c mini-exceptions.c: Use the newly added functions instead of the
10113         mono_arch_.. () functions.
10114         
10115 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
10116
10117         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
10118
10119         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
10120
10121         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
10122         (mini_get_vtable_trampoline): Ditto.
10123
10124         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
10125         code in the AOT case by returning the code size and a list of relocations to
10126         the caller.
10127
10128         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
10129
10130 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
10131
10132         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
10133           clean the stack.
10134
10135         Contributed under MIT/X11 license.
10136
10137 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
10138
10139         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
10140         so the buffer size can be computed correctly. Fixes #404735.
10141
10142         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
10143         normally as cfg->debug_info is already freed.
10144
10145 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
10146
10147         * mini-amd64.c: For calls returning vtypes in registers, don't store
10148         the return address on the stack, instead allocate a separate local for
10149         it. Fixes #404729.
10150
10151 2008-07-05  Mark Probst  <mark.probst@gmail.com>
10152
10153         * mini-trampolines.c, mini.h: Add an argument to
10154         mono_create_jit_trampoline_in_domain() for turning off the adding
10155         of the sync wrapper.
10156
10157         * mini.c: Use the JIT trampoline without sync instead of
10158         ldftn_nosync in static RGCTX invoke wrappers so that the call can
10159         be patched.
10160
10161 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10162
10163         * driver.c: Turn on GSHARED optimization by default.
10164
10165 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
10166
10167         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
10168         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
10169
10170         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
10171         create a variant of the generic trampoline code callable from AOTed trampolines.
10172
10173         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
10174         trampoline code callable from AOTed trampolines.
10175
10176         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
10177
10178 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10179
10180         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
10181         pass-through manner.
10182
10183         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
10184         and don't fail sharing for them anymore.
10185
10186         * mini-exceptions.c: Handle exceptions in shared generic methods.
10187
10188         * generic-sharing.c: When checking the context of a generic
10189         method, also check its class's context.  Don't treat wrappers as
10190         sharable.
10191
10192         * mini-trampolines.c: Some code factored out to
10193         metadata/generic-sharing.c.  Handle the MRGCTX case.
10194
10195         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
10196         we must deal with the method being of another instantiation of the
10197         class.  Add static rgctx invoke wrappers to generic methods.
10198
10199 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10200
10201         * mini.c: Provide all jit infos of generic shared methods with a
10202         generic jit info.
10203
10204         * mini-exceptions.c: Handle the new situation that a generic info
10205         might be available, but not info about the this/vtable/mrgctx
10206         variable.
10207
10208 2008-07-03  Mark Probst  <mark.probst@gmail.com>
10209
10210         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
10211         generic methods.
10212
10213 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
10214
10215         * dominators.c (check_dominance_frontier): Fix a warning.
10216
10217         * mini.h: Add some missing prototypes.
10218
10219         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
10220
10221         * driver.c (mono_jit_init_version): Correct the comments since the first
10222         argument should be the name of the root domain, not a filename.
10223
10224         * aot-runtime.c (make_writable): Error out if this is called while running
10225         with --aot-only.
10226         (load_aot_module): Ditto.
10227
10228         * aot-compiler.c: Really fix the computation of method indexes.
10229
10230         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
10231         optimizations as this is no longer called frequently.
10232
10233         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
10234         method and the invoke impl code and pass it to the delegate trampoline instead of
10235         just the delegate class.
10236
10237 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
10238
10239         * aot-compiler.c: Fixup the computation of method indexes.
10240         (add_wrappers): Create the base methods of the runtime invoke wrappers using
10241         the method builder infrastructure.
10242
10243         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
10244         has no header.
10245
10246         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
10247         mode, load the method right away instead of creating a trampoline.
10248
10249         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
10250
10251         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
10252         some checks a bit.
10253
10254 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
10255
10256         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
10257         (mono_aot_load_method): Use method_index instead of method->token.
10258
10259         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
10260         can handle icalls etc. properly.
10261
10262         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
10263
10264         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
10265
10266         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
10267         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
10268         JIT_ICALL_ADDR patch type.
10269
10270         * patch-info.h: Add JIT_ICALL_ADDR patch type.
10271
10272         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
10273         request flag.
10274         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
10275
10276         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
10277
10278 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
10279
10280         * mini.c: Use domain->jit_code_hash_lock for controlling access to
10281         domain->jit_code_hash.
10282
10283 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
10284
10285         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
10286
10287 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
10288
10289         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
10290         get_this_arg_from_call, let it compute it when needed.
10291
10292         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
10293         gsctx from code only when needed.
10294
10295         * mini-trampolines.c (get_generic_context): Rename this to 
10296         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
10297         it can be called by the arch backends.
10298
10299         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
10300
10301 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
10302
10303         * driver.c (mono_main): Add experimental --aot-only command line option.
10304
10305         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
10306         set.
10307
10308 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
10309
10310         * driver.c (DllMain): Remove mono_module_handle.
10311
10312         Contributed under MIT/X11 license.
10313
10314 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
10315
10316         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
10317         for emitting methods which are not in the source assembly. Detect and report
10318         failure of assembling+linking.
10319         
10320         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
10321
10322         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
10323
10324 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
10325
10326         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
10327
10328 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
10329
10330         * mini.h: Remove some obsolete prototypes.
10331
10332         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
10333
10334 2008-06-24  Mark Probst  <mark.probst@gmail.com>
10335
10336         * mini.c (get_object_generic_inst): Variable-sized arrays are not
10337         supported by Visual Studio, so use alloca().
10338
10339 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
10340
10341         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
10342         Fixes #402585.
10343
10344 2008-06-23  Mark Probst  <mark.probst@gmail.com>
10345
10346         * mini.c: Fail sharing of a generic method if it contains an open
10347         catch clause (because we don't pass MRGCTXs yet).
10348
10349 2008-06-23  Mark Probst  <mark.probst@gmail.com>
10350
10351         * mini.c: When compiling a method with generic sharing, insert the
10352         method instantiated with an all-Object generic context into the
10353         jit info table, instead of the context of the first instantiation
10354         of the method we happen to compile.
10355
10356 2008-06-18  Martin Baulig  <martin@ximian.com>
10357
10358         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
10359         `major_version' and `minor_version'.
10360
10361 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10362
10363         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
10364         mono_method_is_generic_sharable_impl() takes an additional
10365         argument specifying whether to treat type variables as reference
10366         types.
10367
10368 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10369
10370         * mini.h: Removed obsolete prototypes.
10371
10372 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10373
10374         * mini.c: Don't fail generic sharing for initobj and sizeof - we
10375         already handle them.
10376
10377 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10378
10379         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
10380         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
10381         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
10382         tramp-x86.c: Added a MonoGenericContext* argument to
10383         mono_arch_get_unbox_trampoline() so that it can call other
10384         functions which require it.
10385
10386 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10387
10388         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
10389         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
10390         mono_arch_get_this_arg_from_call() takes a
10391         MonoGenericSharingContext* as well.
10392
10393 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10394
10395         * mini.c: Factor out code for emitting unbox into emit_unbox() and
10396         implement generic sharing of unbox.
10397
10398 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10399
10400         * mini.c: Don't compute the vtable to determine whether a field is
10401         special static, because it might not work for open types.
10402
10403 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10404
10405         * mini.c: Removed the unused token_type and token_source arguments
10406         from get_runtime_generic_context_ptr().
10407
10408 2008-06-17  Marek Habersack  <mhabersack@novell.com>
10409
10410         * mini.c (ADD_BINOP): fix the build
10411
10412 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
10413
10414         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
10415         a widening op.
10416
10417 2008-06-16  Mark Probst  <mark.probst@gmail.com>
10418
10419         * mini.h: Removed class relations enum that's not used anymore.
10420
10421 2008-06-16  Mark Probst  <mark.probst@gmail.com>
10422
10423         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
10424
10425         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
10426         the lazy fetch trampoline access code.
10427
10428 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
10429
10430         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
10431
10432 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
10433
10434         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
10435
10436         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
10437
10438         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
10439
10440 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10441
10442         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
10443         intrinsics.
10444
10445         * mini-ops.h: Add MIN/MAX_UN opcodes.
10446
10447         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
10448         intrinsics.
10449
10450         * basic-math.cs: Add more min/max tests.
10451
10452         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
10453
10454 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10455
10456         * mini.c: Small fix in the prologue of emit_castclass.
10457
10458 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10459
10460         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
10461
10462         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
10463         do not work even for unsigned types. Fixes #400014.
10464
10465         * basic-math.cs: Add regression tests for unsigned Min/Max.
10466
10467 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10468
10469         * mini.c: Added additional context_used argument to several
10470         functions, which will be needed for sharing generic methods.  Use
10471         GET_RGCTX macro wherever appropriate.  Declare only one
10472         context_used in mono_method_to_ir().
10473
10474 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10475
10476         * mini.c, generic-sharing.c: Removed generic class relations.
10477
10478         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
10479         functions due to MRGCTX changes.
10480
10481 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10482
10483         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
10484         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
10485         with calculated IMT.
10486
10487         * mini.c: Generic sharing of calls via generic interfaces.
10488
10489         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
10490         generic method with non-constant MonoGenericContext*.  Instead,
10491         the context is taken out of the method itself.
10492
10493 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10494
10495         * mini.c: Generic sharing of ldvirtftn.
10496
10497 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10498
10499         * mini.c: Generic sharing of ldftn.
10500
10501 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10502
10503         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
10504
10505 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10506
10507         * mini.c: Generic sharing of the special case of ldtoken followed
10508         by a call to GetTypeFromHandle.
10509
10510 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10511
10512         * mini.c: Generic sharing of box for nullable types.
10513
10514 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10515
10516         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
10517         are passed on the stack. Fixes #324807.
10518
10519 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
10520
10521         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
10522         for the ArgValuetypeAddrInIReg case.
10523
10524         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
10525         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
10526
10527         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
10528         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
10529         local variable and pass the local variable by reference to the called method.
10530           
10531         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
10532         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
10533
10534         Contributed under MIT/X11 license.
10535
10536 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
10537
10538         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
10539
10540         * debug-mini.c (mono_debug_print_vars): Release memory after printing
10541         everything.
10542
10543 2008-06-10  Martin Baulig  <martin@ximian.com>
10544
10545         * debug-mini.c
10546         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
10547
10548 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
10549
10550         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
10551         possible error when no arguments are passed.
10552
10553         Contributed under MIT/X11 license.
10554
10555 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
10556
10557         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
10558         where the file name is NULL.
10559
10560 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
10561
10562         * mini.c: Fix s390 build.
10563
10564 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
10565
10566         * trace.c (mono_trace_parse_options): Fix warnings.
10567
10568         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
10569
10570 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
10571
10572         * mini.c (remove_block_if_useless): Avoid printing the method name.
10573         
10574         * mini.c: Remove needless setting of ins->cil_code which is now done by 
10575         MONO_INST_NEW.
10576
10577         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
10578         LMF. Not yet used.
10579
10580         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
10581         translated code after it has been patched.
10582
10583 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
10584
10585         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
10586         avoid problems during code patching on SMP systems.
10587         (emit_call): Avoid adding a patch info which is already added by 
10588         emit_call_body.
10589         (mono_arch_emit_exceptions): Ditto.
10590
10591 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
10592
10593         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
10594         MONO_TYPE_ISSTRUCT already checks for it.
10595
10596 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
10597
10598         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
10599           structs with floats on Winx64 the float registers are not used.  
10600           The integer registers are always used..
10601         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
10602           only one register will be used and only if the size of the struct 
10603           is 1,2,4, or 8 bytes.
10604
10605         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
10606           to work for Winx64.
10607
10608         Contributed under MIT/X11 license.
10609
10610 2008-06-05  Martin Baulig  <martin@ximian.com>
10611
10612         * debug-debugger.c (debugger_lookup_class): Also call
10613         mono_class_setup_methods() here; we're only called from RTI.
10614
10615 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
10616
10617         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
10618         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
10619         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
10620         Post-process object files and add dtrace-generated object, if necessary.
10621
10622         Contributed under MIT/X11 license.
10623
10624 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10625
10626         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
10627         element class.
10628
10629         * mini.c: Generic sharing for unbox.any and castclass.
10630
10631 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10632
10633         * mini.c: Ignore tailcall prefix in shared generic code and when
10634         doing calls which require a vtable/rgctx argument.
10635
10636 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10637
10638         * mini.c: Don't free the JIT info.
10639
10640         * driver.c: Changes in the JIT info table testing code.
10641
10642 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
10643
10644         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
10645         interruption. Fix some warnings.
10646
10647         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
10648         interruption_checkpoint.
10649
10650 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
10651
10652         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
10653         from embedding applications.
10654
10655 2008-06-02  William Holmes  <billholmes54@gmail.com>
10656
10657         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
10658           reserving 32 bytes on the stack when making calls. 
10659
10660         Contributed under MIT/X11 license.
10661
10662 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
10663
10664         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
10665         the linear IL branch.
10666
10667         * driver.c: Print out more information for --version on arm.
10668
10669 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
10670
10671         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
10672         bb_exit instead, since out of line bblocks might not actually be emitted
10673         out-of-line.
10674         
10675         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
10676         maximum epilog size for out of line bblocks if tracing is enabled.
10677
10678         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
10679
10680 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
10681
10682         * arrays.cs: Regression tests for allocating arrays with negative sizes.
10683
10684 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
10685
10686         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
10687         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
10688         opcodes.
10689
10690 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
10691
10692         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
10693         the 'value' to store is a constant.
10694
10695         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
10696
10697         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
10698         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
10699
10700 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
10701
10702         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
10703         for accessing method->generic_container.
10704
10705 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
10706
10707         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
10708         
10709         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
10710
10711         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
10712
10713         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
10714         fails.
10715
10716 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
10717
10718         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
10719
10720         * mini.c: Handle the case when mono_class_vtable () fails.
10721
10722 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
10723         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
10724         the stat profiler.
10725
10726 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10727
10728         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
10729         together with domain sharing.
10730
10731 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10732
10733         * mini.c: Treat callvirts to final methods like non-virtual calls
10734         when doing generic sharing, i.e. look them up in the runtime
10735         generic context.
10736
10737 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10738
10739         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
10740         with computed types (for generic sharing).
10741
10742         * mini.c: Generic sharing for mkrefany and refanyval.
10743
10744 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
10745
10746         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
10747         possible.
10748
10749         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
10750         the generic sharing code.
10751         
10752         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
10753         when needed.
10754
10755 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
10756
10757         * mini.h: Remove the declaration of mono_aot_init_vtable ().
10758
10759 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
10760
10761         * driver.c: updated copyright date
10762
10763 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
10764
10765         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
10766         needed.
10767
10768 2008-05-19  Martin Baulig  <martin@ximian.com>
10769
10770         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
10771         pointing to the new `_mono_debug_using_mono_debugger' variable.
10772
10773         * driver.c
10774         (mono_main): Check mono_debug_using_mono_debugger() rather than
10775         the `MONO_INSIDE_MDB' environment variable to check whether we're
10776         inside the debugger.
10777
10778 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
10779
10780         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
10781         argument.
10782
10783 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
10784
10785         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
10786
10787         * mini.c: Added mini_assembly_can_skip_verification. This
10788         function checks if the assembly requested to skip verification. 
10789         Fixes part of #387274.
10790
10791 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
10792
10793         * mini.c (mini_get_method): Disable the check for open generic classes when
10794         using generic sharing.
10795
10796         * generics.cs: Add a test for #387034.
10797
10798         * mini.c (mini_get_method): Check whenever the method class is an open generic
10799         type, and return NULL in that case, causing a verification error. Fixes
10800         #384123.
10801
10802 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10803
10804         * driver.c (mono_main): Revert r102623. The right
10805         thing to do is to enable the verifier under verifiable
10806         unless a --security flag was passed.
10807
10808         We need this non-trivial behavior for --verify-all otherwise
10809         mcs-compileall won't be able to use it. As it needs everything to
10810         be verified under validil.
10811
10812 2008-05-06  Martin Baulig  <martin@ximian.com>
10813
10814         Fix #383749.
10815
10816         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
10817         (mono_debugger_thread_cleanup): Likewise.
10818         (mono_debugger_extended_notification): Likewise.
10819
10820 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10821
10822         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
10823         against both inflated and non-inflated methods. We need to check against the
10824         generic definition for cases where the instantiated method is not visible.
10825         We need to check against the inflated types for cases where the instantiation
10826         changes any super type. This fixes #382986.
10827
10828         Note that this doesn't need to be applied to other parts of mono_method_to_ir
10829         that check for visibiliy as generic params only appears as the type subject
10830         of tokens on call opcodes. Field manipulation and ldftn must always
10831         target an exact type.
10832
10833 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10834
10835         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
10836         if no related --security flag is passed.
10837
10838 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10839
10840         * mini-arch.h: Prepare support for ppc64.
10841
10842         Contributed under MIT/X11 license.
10843
10844 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10845
10846         * aot-runtime.c: Prepare support for ppc64.
10847
10848         Contributed under MIT/X11 license.
10849
10850 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10851
10852         * mini-ops.h: Prepare support for ppc64.
10853
10854         Contributed under MIT/X11 license.
10855
10856 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
10857
10858         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
10859
10860         Contributed under MIT/X11 license.
10861
10862 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
10863
10864         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
10865         assemblies, since aot_name is not a full path, causing us to load MS.NET 
10866         assemblies on windows.
10867
10868 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
10869
10870         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
10871         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
10872         * main.c: Use UTF-8 encoded command line instead of Windows default code
10873         page on Windows to support Unicode.
10874         * driver.c (DllMain): New function for mixed-mode assembly support.
10875         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
10876         export __stdcall functions without decoration.
10877
10878         Contributed under MIT/X11 license.
10879
10880 2008-04-28  Mark Probst  <mark.probst@gmail.com>
10881
10882         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
10883         saving it very early.
10884
10885 2008-04-28  Mark Probst  <mark.probst@gmail.com>
10886
10887         * mini.h, mini.c: Lots of code for accessing the old RGCTX
10888         deleted.  The only way to access the new RGCTX is via the
10889         trampline.
10890
10891         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
10892         vtable instead of the RGCTX to static methods.
10893
10894         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
10895         accessing the new RGCTX.
10896
10897         * generic-sharing.c: There is no separation between self, type
10898         arguments and other types in the RGCTX anymore.
10899
10900 2008-04-25  Jonathan Chambers <joncham@gmail.com>
10901
10902         * mini-amd64.c (add_general): Remove previous stack adjustment.
10903         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
10904         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
10905         for 32 bytes of stack space reserved for all calls.
10906         
10907         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
10908         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
10909         adjustment.
10910         
10911         Code contributed under MIT/X11 license.
10912
10913 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
10914
10915         * mini.c (mini_method_verify): Only verify non-inflated methods, check
10916         against the root definition, peeling out method and type instantiations.
10917         Cache verify success results, code that fails verification is still
10918         checked multiple times.
10919
10920 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
10921
10922         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
10923
10924 2008-04-23  Jonathan Chambers <joncham@gmail.com>
10925
10926         * mini-amd64.c (add_general): Always increment stack on Win64.
10927         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
10928         on Win64.
10929         
10930         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
10931         stack based argument handling on Win64.
10932         
10933         Code contributed under MIT/X11 license.
10934
10935 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
10936
10937         * Makefile.am (version.h): Add support for git-svn.
10938
10939 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
10940
10941         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
10942         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
10943         avoiding allocations and libc functions which might deadlock.
10944         
10945         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
10946         'no-gdb-backtrace' option is set.
10947
10948         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
10949
10950         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
10951
10952 2008-04-21  Martin Baulig  <martin@ximian.com>
10953
10954         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
10955         and `get_lmf_addr'; `notification_address' is no longer a pointer.
10956
10957 2008-04-21  Martin Baulig  <martin@ximian.com>
10958
10959         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
10960         `thread_vtable', `event_handler_ptr' and `event_handler'.
10961
10962 2008-04-21  Martin Baulig  <martin@ximian.com>
10963
10964         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
10965         allows delayed initialization of the `executable_code_buffer' when
10966         attaching.
10967
10968 2008-04-21  Martin Baulig  <martin@ximian.com>
10969
10970         * mini.h (mono_debugger_create_notification_function): Removed.
10971         * tramp-*.c (mono_debugger_create_notification_function): Removed.
10972
10973         * mdb-debug-info64.s
10974         (MONO_DEBUGGER__notification_function): Added this in the .text section.
10975
10976         * mdb-debug-info32.s
10977         (MONO_DEBUGGER__notification_function): Added this in the .text section.
10978
10979         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
10980         currently only works on x86 and x86_64, so don't create it on ppc.
10981
10982 2008-04-21  Martin Baulig  <martin@ximian.com>
10983
10984         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
10985
10986         * mini.c
10987         (mini_method_compile): In the fp elimination check, check
10988         `debug_options.mdb_optimizations' in addition to
10989         mono_debug_using_mono_debugger().       
10990
10991         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
10992         disable some JIT optimizations which are only disabled when
10993         running inside the debugger.
10994         Added `--help-debug' option to describe the debugging options.
10995         (parse_debug_options): New static function to parse the `--debug'
10996         options, so we can easily add more stuff in future.
10997
10998 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
10999
11000         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
11001         the method has no body.
11002
11003 2008-04-19  Jonathan Chambers <joncham@gmail.com>
11004
11005         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
11006         assembly is not allowed in MSVC 64-bit compiler. 
11007         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
11008         as we get floating point exceptions everywhere.
11009         
11010         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
11011         correctly align arguments for call to throw_exception.
11012         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
11013         
11014         Code contributed under MIT/X11 license.
11015
11016 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
11017
11018         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
11019
11020 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
11021
11022         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
11023
11024         * mini-amd64.c (NEW_INS): Set cil_code.
11025
11026         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
11027         from mini-amd64.c so all debugger related logic is in one place.
11028
11029         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
11030         later won't have a random ip assigned to them.
11031
11032 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
11033
11034         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
11035         the arch specific function initializes code_size.
11036         (mono_create_delegate_trampoline): Ditto.
11037
11038         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
11039         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
11040         platforms.
11041
11042         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
11043         running under the debugger.
11044
11045         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
11046         debugger.
11047
11048         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
11049         debugger. Also move the disabling of optimizations here from driver.c.
11050         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
11051         debugger.
11052
11053         * mini.h (MonoCompile): Add a few new flags.
11054
11055 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
11056
11057         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
11058         so the cil_code field of created MonoInst's is properly set.
11059         (mini_select_instructions): Ditto.
11060
11061         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
11062         (MONO_INST_NEW_CALL): Ditto.
11063
11064         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
11065         in many places so the ins->cil_code field is properly initialized.
11066
11067         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
11068         place.
11069
11070 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
11071
11072         * mini.c (mini_method_compile): Print a different message when compiling a 
11073         shared method.
11074         
11075         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
11076         > 1.
11077
11078 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
11079
11080         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
11081         SSE2 instructions.
11082
11083         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
11084         
11085 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
11086
11087         * mini.c (handle_stack_args): Make this return void since its return value was
11088         never used. Also set cfg->unverifiable for invalid IL instead of calling
11089         G_BREAKPOINT ().
11090
11091 2008-04-10  Mark Probst  <mark.probst@gmail.com>
11092
11093         * mini.c: Make sure "this" is live in catch clauses with type
11094         variables in shared generic code.
11095
11096 2008-04-08  Mark Probst  <mark.probst@gmail.com>
11097
11098         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
11099         generic_class_is_reference_type() to ensure the proper behaviour
11100         when sharing generic code and the type in question is a type
11101         argument.
11102
11103 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
11104
11105         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
11106         race conditions when printing thread dumps. Fixes #377738.
11107
11108 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
11109         
11110         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
11111         shows up when both MonoInst arguments can cause aliasig.
11112         There is likely no way in the current JIT to trigger this problem, but
11113         it showed up in the development of generics sharing, when in a new
11114         opcode both args of an OP_GROUP can be aliases (addresses of a local).
11115         When the generics sharing code will be committed, its tests will be
11116         valid also for this bug.
11117
11118 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
11119
11120         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
11121         PATCH_INFO_METHOD.
11122
11123         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
11124         NULL.
11125
11126 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
11127
11128         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
11129         use a more detailed exception message for InvalidCastException.
11130
11131         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
11132
11133         * driver.c (mono_main): Add --debug=casts option to turn on better 
11134         InvalidCastException message details.
11135
11136         * mini.c (mini_get_debug_options): New helper function to return the address of
11137         the debug_options variable.
11138
11139         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
11140         the jit_tls TLS variable.
11141
11142         * mini.c (mono_jit_tls): New TLS variable.
11143
11144         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
11145         option is used.
11146
11147 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
11148
11149         * mini.h: Removed verifer related stuff. This code was moved to verify.c
11150
11151         * mini.c: Removed verifer related stuff, code moved to verify.c.
11152
11153         * driver.c: Using code from verify.c instead of mini.c.
11154
11155 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
11156
11157         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
11158         longer valid.
11159
11160 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
11161
11162         * mini.c (check_for_method_verify): Enabling verification of
11163         corlib if mono_verify_all is set. Bugs in the verifier preventing that
11164         have been fixed.
11165
11166 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
11167
11168         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
11169         caller saved registers as well.
11170         
11171         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
11172         saved registers as well.
11173
11174 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
11175
11176         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
11177
11178         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
11179         code.
11180
11181 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
11182
11183         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
11184         to get_call_info.
11185         (get_call_info): Take a gsctx argument instead of 'cfg'.
11186
11187 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
11188
11189         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
11190         mono_verify_all is set.
11191
11192         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
11193
11194         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
11195
11196 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
11197
11198         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
11199         an exception.
11200
11201         * driver.c mini.c mini.h: Add a --verify-all development option to test the
11202         verifier and the code generated by the compiler.
11203
11204 2008-03-25  Mark Probst  <mark.probst@gmail.com>
11205
11206         * mini.c: Generic sharing of the non-nullable case of the box
11207         instruction.
11208
11209 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
11210
11211         * inssel.brg: Fix the build.
11212
11213         * iltests.il.in: Add a test for lconv.ovf.u8.un.
11214
11215 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
11216
11217         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
11218         Array:Address. Fixes #372410.
11219
11220         * iltests.il.in: New tests for readonly prefix.
11221
11222 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
11223
11224         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
11225         mini-trampolines.c.
11226
11227         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
11228         mini-exceptions.c.
11229
11230         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
11231         
11232         * mini.c (mono_decompose_op_imm): New helper function.
11233
11234         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
11235         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
11236         return value.
11237
11238         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
11239         mono_arch_output_basic_block. Fix warnings.
11240
11241         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
11242         for now.
11243
11244 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
11245
11246         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
11247         since the extra frame is now detected automatically inside the loop.
11248
11249         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
11250         opts which are now in mono_peephole_ins ().
11251         
11252         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
11253
11254         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
11255         frames and skip duplicate managed-to-native frames. Fixes #367665.
11256
11257         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
11258         opts which are now in mono_peephole_ins ().
11259         (mono_arch_peephole_pass_2): Ditto.
11260
11261         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
11262
11263         * mini-codegen.c (mono_peephole_ins): New helper function containing the
11264         arch independent peephole optimizations.
11265
11266         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
11267         opts which are now in mono_peephole_ins ().
11268
11269         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
11270         
11271         * mini-s390.c (mono_arch_output_basic_block): Fix build.
11272
11273         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
11274         pattern.
11275
11276         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
11277         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
11278         opcode. 
11279
11280 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
11281
11282         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
11283         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
11284         return value.
11285
11286         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
11287         mono_arch_output_basic_block. Fix warnings.
11288
11289 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11290
11291         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
11292         conv.ovf.u.un.
11293
11294 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11295
11296         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
11297         conv.ovf.u.un.
11298
11299         * iltests.il: Add new tests.
11300
11301 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
11302
11303         * mini.c: Removed Windows version macros.
11304
11305 2008-03-20  Mark Probst  <mark.probst@gmail.com>
11306
11307         * generic-sharing.c: Put reflection types in the extensible part
11308         of the runtime generic context.
11309
11310         * mini.c: Generic sharing of the GetTypeHandle special case of the
11311         ldtoken instruction.
11312
11313 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11314
11315         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
11316
11317         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
11318         
11319         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
11320         consistency with the other version on the linear IR branch.
11321
11322         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
11323
11324         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
11325
11326         * iltests.il.in: Add new tests.
11327
11328 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
11329
11330         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
11331
11332         * iltests.il.in: Add new tests.
11333
11334 2008-03-19  Mark Probst  <mark.probst@gmail.com>
11335
11336         * mini.c: Two variables with the same name were declared in
11337         nesting contexts and one wasn't initialized.  Fixed.
11338
11339 2008-03-19  Mark Probst  <mark.probst@gmail.com>
11340
11341         * mini.c: Generic sharing of the initobj instruction.
11342
11343 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
11344
11345         * mini.c: make the test to optimize ldtoken from typeof() more
11346         precise.
11347
11348 2008-03-18  Mark Probst  <mark.probst@gmail.com>
11349
11350         * mini.c: Generic sharing of the initobj instruction for reference
11351         types.
11352
11353 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
11354
11355         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
11356         the mono_breakpoint_clean_code() code to perform bound checks.
11357
11358 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
11359
11360         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
11361         mono_arch_patch_callsite() to include the start of the managed method
11362         to be able to perform bound checks.
11363
11364 2008-03-17  Mark Probst  <mark.probst@gmail.com>
11365
11366         * mini.c: Generic sharing for the isinst instruction.
11367
11368 2008-03-17  Mark Probst  <mark.probst@gmail.com>
11369
11370         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
11371         inssel-long32-mips.brg: Added opcodes for doing indirect calls
11372         with the runtime generic context argument.
11373
11374         * mini.c: Share calls to several types of unsharable methods by
11375         putting the address of the method code in the runtime generic
11376         context and doing an indirect call.
11377
11378         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
11379         to switches.
11380
11381 2008-03-16  Mark Probst  <mark.probst@gmail.com>
11382
11383         * generic-sharing.c: Change due to a change in the runtime genric
11384         context API.
11385
11386 2008-03-15  Martin Baulig  <martin@ximian.com>
11387
11388         * tramp-x86.c
11389         (mono_arch_nullify_class_init_trampoline): Add call to
11390         mono_breakpoint_clean_code() to make things work when running
11391         inside the debugger.
11392
11393         * tramp-amd64.c
11394         (mono_arch_nullify_class_init_trampoline): Add call to
11395         mono_breakpoint_clean_code() to make things work when running
11396         inside the debugger.
11397
11398 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
11399
11400         * inssel-long.brg (reg): Fix 64 bit build.
11401
11402 2008-03-14  Mark Probst  <mark.probst@gmail.com>
11403
11404         * mini.c, mini.h: Share static generic code by passing it an
11405         implicit argument pointing to the runtime generic context.
11406
11407         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
11408         inssel-long32-mips.brg: New opcodes for calling shared static,
11409         which need to be passed the runtime generic context.
11410
11411         * mini-amd64.c, mini-x86.c: Save the runtime generic context
11412         argument on the stack in the prologue if needed.  New function for
11413         finding the runtime generic context argument from the registers
11414         saved by the trampoline.
11415
11416         * mini-amd64.h, mini-x86.h: Specify which register to use for the
11417         runtime generic context argument.
11418
11419         * tramp-amd64.c: Also restore the register used for the runtime
11420         generic context argument.
11421
11422         * mini-trampoline.c: Resolve shared static calls by consulting the
11423         runtime generic context via the new argument.
11424
11425         * generic-sharing.c: Add an argument to sharability-checking
11426         functions that specifies whether type variables should be treated
11427         as sharable type arguments.
11428
11429         * inssel-x86.brg: Removed a superfluous, buggy rule.
11430
11431         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
11432         to switches.
11433
11434 2008-03-14  Martin Baulig  <martin@ximian.com>
11435
11436         * debug-debugger.c (main_thread_handler): Call
11437         mono_runtime_run_main() without sending any notifications.
11438
11439         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
11440
11441 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
11442
11443         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
11444
11445 2008-03-14  Mark Probst  <mark.probst@gmail.com>
11446
11447         * tramp-x86.c: Fixed register restore offsets in the trampoline
11448         code for ECX and EDX.
11449
11450 2008-03-12  Geoff Norton  <gnorton@novell.com>
11451
11452         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
11453         different ucontext_t implementations.
11454         * exceptions-arm.c: Use the above defines to get exceptions working on 
11455         iPhone (based on a patch by Luke Howard lukeh@padl.com)
11456         * mini-arm.c: Implement iPhone icache support (based on a patch by
11457         Luke Howard lukeh@padl.com)
11458
11459 2008-03-12  Mark Probst  <mark.probst@gmail.com>
11460
11461         * mini.c: Enable generic sharing of calls to non-static
11462         non-interface non-generic non-value-type methods.
11463
11464         * mini-trampolines.c: Resolve calls from shared generic code.
11465
11466 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
11467
11468         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
11469
11470         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
11471
11472 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
11473
11474         * mini.c: some fixes for the AOT compiler.
11475
11476 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
11477
11478         * cpu-amd64.md: Add clob:1 to some float opcodes.
11479
11480 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
11481
11482         * mini.h: Added MiniVerifierMode enumeration.
11483
11484         * mini.c: Added mini_verifier_set_mode to control
11485         the usage of the new verifier.
11486
11487         * mini.c (mono_method): Integrated the new verifier.
11488
11489         * driver.c: Extended --security option with validil and
11490         verifiable options to activate the new verifier.
11491
11492 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
11493
11494         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
11495         optimization to ctors taking 0 or 2 arguments too.
11496
11497         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
11498         a bit.
11499
11500         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
11501
11502         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
11503
11504 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
11505
11506         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
11507         non-aot case as well.
11508
11509         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
11510
11511         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
11512         changes.
11513
11514         * aot-compiler.c (encode_patch): Ditto.
11515
11516         * mini.h (G_MININT32): Fix the definition of this.
11517
11518 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
11519
11520         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
11521
11522         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
11523
11524 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
11525
11526         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
11527         methods returning vtypes in registers.
11528         (mono_arch_allocate_vars): Ditto.
11529
11530         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
11531
11532         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
11533
11534         * generics.cs: Add a test from the linear IR branch.
11535
11536         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
11537
11538         * mini.c (inline_method): Cache failed inline attempts.
11539
11540 2008-03-04  Mark Probst  <mark.probst@gmail.com>
11541
11542         * mini.c: For shared methods of generic classes put the location
11543         of "this" into the MonoGenericJitInfo.
11544
11545         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
11546         register out of a MonoContext by register number.  Add the generic
11547         sharing context as an argument to mono_arch_find_this_argument().
11548
11549         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
11550         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
11551         for new arch function.
11552
11553         * mini-exception.c: Handle open exception clauses in shared
11554         generic code.
11555
11556         * mini-trampolines.c: Supply additional argument to
11557         mono_arch_find_this_argument().
11558
11559 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
11560
11561         * Makefile.am (regtests): Run the bench.exe tests last.
11562
11563 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
11564
11565         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
11566         a bit.
11567
11568 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
11569
11570         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
11571         with MS.
11572
11573         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
11574         
11575         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
11576
11577         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
11578         whose class has no cctor.
11579
11580         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
11581
11582 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
11583
11584         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
11585         unverified.
11586
11587 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
11588
11589         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
11590         to be in sync with the code on the linear IR branch.
11591
11592         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
11593
11594         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
11595
11596 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
11597
11598         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
11599
11600         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
11601
11602         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
11603
11604         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
11605
11606         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
11607         
11608         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
11609         body.
11610
11611 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
11612
11613         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
11614         OP_LOADR4_MEMBASE emission.
11615
11616         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
11617         (mono_spillvar_offset_float): Ditto.
11618
11619         * mini-mips.c (mono_arch_emit_prolog): Ditto.
11620
11621         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
11622         emission.
11623
11624         * basic-long.cs: Add regression tests for them.
11625
11626         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
11627         use.
11628         (mono_arch_allocate_vars): Fix representation of single-precision float
11629         argument.
11630         (mono_arch_output_basic_block): Ditto.
11631
11632         * inssel-mips.brg: Ditto, remove duplicate items.
11633
11634         * mini-mips.c (emit_load_volatile_arguments): New function to handle
11635         arguments of tail calls as on other platforms.
11636         (mono_arch_output_basic_block): Handle tail calls.
11637
11638         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
11639         register.
11640
11641         * objects.cs (test_5_pass_static_struct): Add test for it.
11642
11643         Contributed under MIT/X11 license.
11644
11645 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
11646
11647         * Makefile.am: Use gmcs for compiling the regression tests.
11648
11649         * *.2.cs *.2.il: Rename to *.cs and *.il.
11650
11651 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
11652
11653         * regalloc.h: Make the vassign array smaller.
11654
11655         * mini.c (mini_method_compile): Remove an unused field in cfg.
11656
11657         * mini-codegen.c: Add a bunch of micro optimizations.
11658
11659 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
11660
11661         * regalloc.h: Remove some unused fields.
11662
11663 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
11664
11665         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
11666
11667         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
11668
11669 2008-02-22  Mark Probst  <mark.probst@gmail.com>
11670
11671         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
11672
11673         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
11674         trampoline: Fetch an entry from the runtime generic context.  If
11675         it's NULL, jump to the actual trampoline to fill the runtime
11676         generic context.  Otherwise, return it.
11677
11678         * mini.c: Call the lazy fetch trampoline to get entries out of the
11679         runtime generic context.
11680
11681         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
11682         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
11683         tramp-sparc.c: Stubs for the lazy fetch trampoline.
11684
11685 2008-02-21  Mark Probst  <mark.probst@gmail.com>
11686
11687         * mini.c: Fetch data out of the extensible part of the runtime
11688         generic context instead of calling a helper function.
11689
11690         * generic-sharing.c: Some functions moved into
11691         metadata/generic-sharing.c.  Helper function for fetching other
11692         types now checks and asserts against extensible rgctx (just for
11693         debugging purposes - the helper function isn't called anymore
11694         unless for debugging).
11695
11696 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
11697
11698         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
11699         for tail calls up to the point that the tests in iltests.exe run. Also add a
11700         dummy CKFINITE implementation.
11701         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
11702         needed for trampoline LMF frames.
11703
11704         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
11705         trampoline LMF frames.
11706
11707 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
11708
11709         * mini.c (inline_method): clean any pending loader error when inlining fail.
11710         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
11711
11712 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
11713
11714         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
11715
11716         * aot-runtime.c (decode_patch_info): Ditto.
11717
11718         * mini.c (mono_resolve_patch_target): Ditto.
11719         
11720         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
11721         icall wrappers.
11722
11723         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
11724         
11725         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
11726         if it references an icall address.
11727
11728 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
11729
11730         * cpu-s390x.md: Remove some more unused opcodes.
11731         
11732         * cpu-s390x.md: Remove some unused opcodes.
11733
11734         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
11735         mono_op_imm_to_op ().
11736
11737         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
11738         instead of a switch statement.
11739         
11740         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
11741         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
11742
11743         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
11744         
11745         * mini-codegen.c: Remove unused mono_regstate2_... functions.
11746
11747         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
11748         -1.
11749
11750 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
11751
11752         * driver.c (mono_main): Improve error reporting when an assembly cannot be
11753         opened. Fixes #362607.
11754
11755         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
11756
11757         * iltests.il.in: Add a test for static methods in interfaces.
11758
11759 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
11760
11761         * genmdesc.c (build_table): Fix a crash on older glib versions.
11762
11763         * cpu-sparc.md: Remove some unused opcodes.
11764         
11765         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
11766         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
11767
11768         * cpu-amd64.md: Remove some unused opcodes.
11769
11770         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
11771         like the other opcodes.
11772
11773 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
11774
11775         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
11776
11777         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
11778
11779         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
11780         variables 'cfg' instead of 'm' for consistency.
11781
11782         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
11783
11784         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
11785         argument holding the vtype return address, to avoid the ambigious use of
11786         cfg->ret for this purpose.
11787
11788         * mini.c (NEW_RETLOADA): Use vret_addr if set.
11789
11790         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
11791         
11792         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
11793         new mono_print_ins () function which only takes one argument.
11794
11795 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
11796
11797         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
11798         macro arguments.
11799
11800 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
11801
11802         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
11803
11804         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
11805
11806         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
11807         opcodes and other small changes.
11808
11809         * mini-ops.h: Add some new opcodes from the linear IR branch.
11810
11811         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
11812
11813         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
11814         opcodes, use the REG_MEMBASE opcodes instead.
11815         
11816         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
11817         opcodes, use the REG_MEMBASE opcodes instead.
11818         
11819         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
11820         linear IR branch.
11821
11822         * mini.c (mono_op_imm_to_op): New helper function.
11823
11824         * mini-ops.h: Add some opcodes from linear IR branch.
11825
11826 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
11827
11828         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
11829         <tsv@solvo.ru>.
11830
11831 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
11832
11833         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
11834         OP_ICONV_TO_R4/R8.
11835
11836         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
11837
11838 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
11839
11840         * aot-compiler.c (emit_method_code): Add an assert.
11841
11842         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
11843         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
11844         methods.
11845
11846 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
11847
11848         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
11849         some load/store opcodes so they are consistent. 
11850         (mono_arch_emit_prolog): Simplify some code.
11851
11852         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
11853
11854         * objects.cs: Add tests for large argument offsets on ARM.
11855
11856         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
11857         stack offsets. Fixes #359651.
11858
11859         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
11860
11861         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
11862
11863         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
11864
11865         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
11866
11867         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
11868
11869         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
11870         rid of CEE_CONV_R_UN.
11871
11872         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
11873
11874 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
11875
11876         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
11877
11878         * mini.c (mono_normalize_opcodes): Add some more opcodes.
11879
11880         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
11881
11882         * cpu-amd64.md: Remove some unused opcodes.
11883
11884         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
11885
11886         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
11887
11888         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
11889         arch specific functions for its parts. Call the peephole pass after local
11890         regalloc so the prolog can compute a more accurate max_offset.
11891         
11892         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
11893         the corresponding OP_I/OP_L opcodes.
11894
11895         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
11896
11897         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
11898
11899 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
11900
11901         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
11902         as they are handled in mini.c.
11903
11904         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
11905         
11906         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
11907         case since it is handled in mini.c.
11908
11909         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
11910
11911         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
11912
11913         * *.c: Use the new opcodes in the IR and back end code.
11914
11915         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
11916
11917         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
11918
11919 2008-02-06  Mark Probst  <mark.probst@gmail.com>
11920
11921         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
11922         an assert because it has a race condition.
11923
11924 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
11925
11926         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
11927
11928         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
11929
11930         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
11931
11932         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
11933         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
11934
11935 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
11936
11937         * cpu-amd64.md (move): Correct the maximum size of move.
11938
11939 2008-02-05  Mark Probst  <mark.probst@gmail.com>
11940
11941         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
11942         the generic class init trampoline to return quickly if the class
11943         is already inited.
11944
11945 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
11946
11947         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
11948         issues where an 32 bit callsite cannot be patched by a 64 bit address.
11949
11950 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
11951
11952         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
11953         branch.
11954
11955 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
11956
11957         * objects.cs: Add some soft-float tests.
11958
11959         * mini.c: Fix a couple more soft-float issues.
11960
11961         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
11962
11963         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
11964         avoid a REX prefix.
11965
11966 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
11967
11968         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
11969         exception happens while compiling a virtual method.
11970
11971 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
11972
11973         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
11974         
11975         * mini-sparc.c: Fix build.
11976
11977         * mini-sparc.c (get_call_info): Add support for generic sharing.
11978
11979         * mini-exceptions.c: Add a FIXME.
11980
11981 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
11982
11983         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
11984         altstack handling code.
11985
11986         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
11987         
11988         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
11989
11990         * mini-s390.c: Add support for generic sharing.
11991
11992         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
11993         Fix CAS on s390.
11994         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
11995
11996         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
11997
11998         * mini-s390x.c: Add support for generic sharing.
11999         
12000         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
12001         Fix CAS on ia64.
12002         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
12003
12004         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
12005         can be used since it takes a 16 bit signed immediate.
12006
12007         * inssel-s390x.brg: Fix OP_SETRET.
12008
12009         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
12010
12011         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
12012
12013         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
12014
12015         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
12016
12017         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
12018         in one place.
12019
12020         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
12021         stuff.
12022
12023         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
12024         of the unused mono_arch_patch_delegate_trampoline stuff.
12025
12026 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
12027
12028         * basic-long.cs: Move the fp related tests to basic-float.cs.
12029
12030         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
12031
12032         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
12033
12034         * basic-calls.cs: Add a test for proper float argument passing.
12035
12036         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
12037         if the context corresponds to an exception received through a signal.
12038
12039         * exceptions.cs: Add a test for nullref handling at the start of a try
12040         clause.
12041
12042         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
12043
12044         * jit-icalls.c (mono_break): New JIT icall.
12045
12046         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
12047
12048         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
12049
12050 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
12051
12052         * cpu-*.md: Get rid of unused opcodes.
12053
12054         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
12055
12056         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
12057         by all platforms.
12058
12059         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
12060         define.
12061
12062         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
12063         the arch independent trampoline code in mini-trampolines.c.
12064
12065         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
12066
12067         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
12068
12069         * mini-s390.h: Remove an unused define.
12070         
12071         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
12072         the arch independent trampoline code in mini-trampolines.c.
12073
12074         * mini-arm.c (mono_arch_emit_prolog): Fix build.
12075
12076 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
12077
12078         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
12079
12080         * mini-s390.c (mono_arch_emit_prolog): Fix build.
12081
12082         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
12083
12084         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
12085
12086         * cpu-amd64.md: Use smaller sizes for int opcodes.
12087
12088         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
12089
12090         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
12091         objects.cs.
12092
12093         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
12094         debugging.
12095
12096         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
12097         instead of though a pointer to save an indirection when accessing elements of
12098         the array.
12099
12100         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
12101         some typos.
12102         (NOT_IMPLEMENTED): New helper macro.
12103         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
12104         of a bb.
12105
12106         * *.c: Use the new helper macro.
12107
12108 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
12109
12110         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
12111
12112 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
12113
12114         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
12115         stack slots.
12116
12117 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
12118
12119         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
12120         profiling is enabled.
12121         
12122         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
12123         the end.
12124         (mono_arch_emit_prolog): Add more first bblock optimizations.
12125
12126         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
12127         in order if possible.
12128         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
12129         bblock, since the arguments are still in their original registers.
12130
12131         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
12132
12133 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
12134
12135         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
12136         as well.
12137
12138         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
12139         offset 0.
12140
12141         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
12142
12143         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
12144         process async exceptions received while in unmanaged code.
12145
12146         * mini.c (mini_init): Install a callback with the runtime which will be called
12147         when a thread receives an async exception while in unmanaged code.
12148
12149         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
12150
12151         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
12152
12153 2008-01-16  Wade Berrier  <wberrier@novell.com>
12154
12155         * cpu-g4.md:
12156         * cpu-arm.md:
12157         * cpu-s390x.md:
12158         fix build
12159
12160 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
12161
12162         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
12163         compilation with sun cc.
12164
12165         * cpu-*.md: Fix the build.
12166
12167         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
12168
12169         * mini-amd64.h: Add some comments to the MonoLMF structure.
12170
12171         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
12172         
12173         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
12174         in the LMF structure if possible. This saves two instructions in the
12175         managed->native wrappers.
12176
12177         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
12178
12179 2008-01-16  Mark Probst  <mark.probst@gmail.com>
12180
12181         * generic-sharing.c: New type argument lookup code which uses the
12182         runtime generic context template.
12183
12184 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
12185
12186         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
12187
12188         * mini-arm.c (add_general): Fix arm eabi parameter passing.
12189         (mono_arch_output_basic_block): Fix localloc implementation.
12190
12191         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
12192
12193         * mini-ia64.c (peephole_pass): Fix ia64 build.
12194
12195         * mini-amd64.c (peephole_pass): Fix a warning.
12196         
12197         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
12198         at a constant offset from sp/fp.
12199
12200         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
12201         instead of obtaining it from *lmf in the managed method case.
12202
12203 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
12204
12205         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
12206
12207 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
12208
12209         * mini.h (MonoInstList): New type.
12210         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
12211         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
12212         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
12213         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
12214         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
12215         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
12216         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
12217         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
12218         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
12219         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
12220         MONO_INST_LIST_FOR_EACH_ENTRY,
12221         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
12222         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
12223         mono_inst_list_first, mono_inst_list_last,
12224         mono_inst_list_next, mono_inst_list_prev): New instruction
12225         list handling interfaces.
12226         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
12227         list head 'ins_list'.
12228         (MonoInst): Replace next pointer with list head 'node'.
12229         (MonoCallInst): Make 'out_args' a MonoInstList.
12230         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
12231         (MonoCompile): Delete reverse_inst_list and
12232         reverse_inst_list_len.
12233         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
12234         mono_arch_lowering_pass, mono_arch_local_regalloc,
12235         mono_arch_output_basic_block, mono_arch_emit_prolog):
12236         Convert to new instruction lists.
12237         (insert_after_ins): Delete.
12238         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
12239         instruction lists.
12240         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
12241         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
12242         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
12243         mono_emulate_opcode, mono_emit_load_got_addr,
12244         inline_method, mono_method_to_ir, mono_print_bb_code,
12245         print_dfn, decompose_pass, nullify_basic_block,
12246         replace_out_block_in_code, remove_block_if_useless,
12247         merge_basic_blocks, move_basic_block_to_end,
12248         try_unsigned_compare, optimize_branches, mono_print_code,
12249         mini_select_instructions, remove_critical_edges): Likewise.
12250         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
12251         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
12252         mono_arch_output_basic_block, mono_arch_emit_prolog):
12253         Likewise.
12254         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
12255         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12256         mono_arch_output_basic_block): Likewise.
12257         (inst_list_prepend, insert_after_ins): Delete.
12258         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
12259         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
12260         instruction lists.
12261         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
12262         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
12263         mono_arch_emit_prolog): Likewise.
12264         * cfold.c (mono_constant_fold): Likewise.
12265         * liveness.c (visit_bb, mono_analyze_liveness,
12266         optimize_initlocals): Likewise.
12267         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
12268         * graph.c (mono_draw_code_cfg): Likewise.
12269         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
12270         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
12271         mono_ssa_cprop): Likewise.
12272         * abcremoval (get_relations_from_previous_bb, process_block):
12273         Likewise.
12274         * local-propagation (mono_cprop_invalidate_values,
12275         mono_local_cprop_bb): Likewise.
12276         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
12277         peephole_pass, mono_arch_output_basic_block,
12278         mono_arch_emit_prolog): Likewise.
12279         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
12280         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12281         mono_arch_emit_prolog): Likewise.
12282         (insert_after_ins): Delete.
12283         * aliasing.c (print_code_with_aliasing_information,
12284         mono_build_aliasing_information, mono_aliasing_deadce):
12285         Convert to new instruction lists.
12286         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
12287         peephole_pass, NEW_INS, mono_arch_lowering_pass,
12288         mono_arch_local_regalloc, mono_arch_output_basic_block):
12289         Likewise.
12290         (insert_after_ins): Delete.
12291         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
12292         peephole_pass, mono_arch_output_basic_block): Convert to
12293         new instruction lists.
12294         * mini-codegen (InstList, inst_list_prepend,
12295         insert_after_ins): Delete.
12296         (insert_before_ins, get_register_force_spilling,
12297         get_register_spilling, free_up_ireg, free_up_reg,
12298         create_copy_ins, create_spilled_store, alloc_int_reg,
12299         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
12300         to new instruction lists.
12301         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
12302         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12303         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
12304         (insert_after_ins): Delete.
12305         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
12306         mono_arch_local_regalloc, mono_arch_output_basic_block,
12307         mono_arch_call_opcode): Convert to new instruction lists.
12308         (insert_after_ins): Delete.
12309         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
12310         peephole_pass, mono_arch_output_basic_block,
12311         mono_arch_emit_prolog): Convert to new instruction lists.
12312
12313 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
12314
12315         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
12316
12317         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
12318         Fixes #353182.
12319
12320         * Makefile.am (version.h): Make this work with non-bash shells.
12321
12322 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
12323
12324         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
12325
12326 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
12327
12328         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
12329         the InitializeArray optimization.
12330
12331 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
12332
12333         * mini.c driver.c: Don't include os/gc_wrapper.h.
12334
12335 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
12336
12337         * mini.c (print_jit_stats): Print GC statistics if available.
12338
12339 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
12340
12341         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
12342
12343 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
12344
12345         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
12346
12347 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
12348
12349         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
12350         
12351         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
12352
12353         * driver.c (mono_main): Ditto.
12354
12355 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
12356
12357         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
12358
12359         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
12360         in the vtable can't be encoded.
12361         (compile_method): Ditto.
12362
12363 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
12364
12365         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
12366         defined.
12367
12368         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
12369         lmf->rbp.
12370
12371         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
12372         the top LMF entry belongs to the current method.
12373
12374         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
12375
12376 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
12377
12378         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
12379         
12380         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
12381
12382         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
12383
12384         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
12385
12386         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
12387
12388         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
12389         implementation.
12390
12391         * basic-float.cs: Add an ulong->double cast test.
12392
12393 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
12394
12395         * mini.c (mono_method_to_ir): Fix a warning.
12396
12397 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
12398
12399         * mini-ops.h: Add OP_SWITCH.
12400
12401         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
12402         CEE_SWITCH in back-end code, use OP_SWITCH instead.
12403
12404 2007-12-11  Geoff Norton  <gnorton@novell.com>
12405
12406         * mini-s390x.c: Minor change to the MAX() define to allow
12407         it to compile with other gcc versions.
12408
12409 2007-12-11  Geoff Norton  <gnorton@novell.com>
12410
12411         * cpu-s390x.md:
12412         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
12413
12414 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
12415
12416         exceptions-arm.c (mono_arch_get_restore_context): Restore
12417         the frame pointer.
12418
12419         exceptions-arm.c (throw_exception): Save the frame pointer.
12420         This is a partial fix for #323747. Only the client side is
12421         fixed.
12422
12423 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
12424
12425         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
12426         was using an unrelated variable to log the class which
12427         needed the cctor to be called. This was crashing on arm.
12428
12429 2007-12-09  Robert Jordan  <robertj@gmx.net>
12430
12431         * mini-x86.c (mono_arch_emit_epilog):
12432         Consider all kinds of 64-bit types. Fixes #323114.
12433
12434 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
12435
12436         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
12437
12438 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12439
12440         * mini-amd64.c (peephole_pass): Add a missing instruction check.
12441
12442 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
12443
12444         * mini.c: run type ctor before allocating an object, not only
12445         when running it's constructor method (fixes at least part of bug #342507).
12446
12447 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12448         
12449         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
12450         
12451         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
12452         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
12453         function.
12454
12455         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
12456         mono_generic_class_init_trampoline () the same as it is done with the other
12457         trampolines.
12458
12459         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
12460         aot-runtime.c aot-compiler.c: Implement AOT support.    
12461
12462 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12463
12464         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
12465         build for archs which don't have the vtable trampoline defined
12466         yet.
12467
12468 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12469
12470         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
12471
12472         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
12473
12474         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
12475
12476         * tramp-<ARCH>.c: Use the new helper function.
12477
12478 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12479
12480         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
12481         trampoline call, which takes a vtable argument.
12482
12483         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
12484         OP_TRAMPCALL_VTABLEs like other calls.
12485
12486         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
12487         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
12488         call.  Implemented a support function which fetches the vtable
12489         from a register set.
12490
12491         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
12492         Implemented a generic class init trampoline, using the
12493         OP_TRAMPCALL_VTABLE opcode.
12494
12495         * mini.c: Implemented static field access when sharing generic
12496         code.  This implies initing the class using the new
12497         OP_TRAMPCALL_VTABLE call.
12498
12499 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12500
12501         * mini.c: Don't compile methods with sharing enabled if their
12502         classes are disabled for sharing.
12503
12504 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
12505
12506         * inssel.brg: Add a missing sign extension to the GETCHR and array access
12507         opcodes. Fixes #346563.
12508
12509         * objects.cs: Add a new test.
12510
12511         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
12512
12513         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
12514         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
12515
12516 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
12517
12518         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
12519
12520 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
12521
12522         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
12523         code stream.
12524
12525 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
12526
12527         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
12528
12529         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
12530         optimization in the AOT case.
12531         
12532 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
12533
12534         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
12535         
12536         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
12537
12538         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
12539
12540         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
12541
12542         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
12543         is created by the inlined delegate ctor.
12544
12545         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
12546
12547         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
12548
12549 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
12550
12551         * cpu-x86.md: Fix the length of ckfinite.
12552
12553 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
12554
12555         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
12556         
12557         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
12558         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
12559
12560         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
12561
12562         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
12563         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
12564
12565 2007-11-28  Martin Baulig  <martin@ximian.com>
12566
12567         * mini-x86.c
12568         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
12569         after creating the trampoline.
12570
12571 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
12572
12573         * aot-runtime.c (load_aot_module): Check runtime version if needed.
12574
12575         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
12576         the same version.
12577
12578         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
12579         instead of the calling method to help AOT.
12580
12581         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
12582
12583 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
12584
12585         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
12586         is defined.
12587
12588 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
12589
12590         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
12591         
12592         * aot-compiler.c (compile_method): Correct check for generic method definitions.
12593         (encode_method_ref): No need to handle generic method definitions specially.
12594
12595         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
12596
12597         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
12598         decode_klass_info.
12599
12600         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
12601         encode_klass_info.
12602         (compile_method): Enable generic sharing.
12603
12604 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
12605
12606         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
12607         (mini_method_compile): Add preliminary support for AOTing shared generic code.
12608
12609         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
12610         generic code.
12611
12612         * mini-trampolines.c: Fix a warning.
12613
12614         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
12615         NEW_PCONST.
12616         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
12617         (generic_class_is_reference_type): Remove unused function.
12618
12619         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
12620         in the generic vtable trampoline case.
12621
12622         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
12623         
12624         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
12625         return an AOT method based on a vtable slot.
12626
12627         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
12628
12629         * mini.c (mini_get_vtable_trampoline): Export this.
12630
12631 2007-11-22  Martin Baulig  <martin@ximian.com>
12632
12633         * debug-debugger.h
12634         (MonoDebuggerInfo): Move `debugger_version' up.
12635
12636 2007-11-22  Martin Baulig  <martin@ximian.com>
12637
12638         * mini-amd64.c
12639         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
12640
12641         * mini-trampolines.c
12642         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
12643         after compiling the method.
12644
12645 2007-11-20  Martin Baulig  <martin@ximian.com>
12646
12647         * debug-mini.c
12648         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
12649         (mono_debugger_remove_breakpoint): Likewise.
12650         (mono_debugger_check_breakpoints): Likewise.
12651
12652         * debug-debugger.c: Implement the new breakpoint interface here.
12653
12654 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
12655
12656         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
12657         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
12658
12659         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
12660
12661 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
12662
12663         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
12664
12665         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
12666         mini.c.
12667
12668         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
12669         mini.c.
12670
12671         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
12672         returning a vtype in a register.
12673
12674         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
12675         here from the arch specific code.
12676
12677         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
12678         mini.c.
12679
12680         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
12681         (mono_arch_emit_prolog): Increment maximum prolog size.
12682
12683         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
12684         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
12685
12686         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
12687         MonoGenericSharingContext.
12688
12689         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
12690         MonoGenericSharingContext. Allocate memory from the cfg mempool.
12691
12692 2007-11-15  Mark Probst  <mark.probst@gmail.com>
12693
12694         * mini.c, mini.h, generic-sharing.c: Functions for producing code
12695         which extract fields out of the runtime generic context.  Full
12696         sharing of the NEWARR opcode.
12697
12698 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
12699
12700         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
12701         --enable-minimal=ssa.
12702
12703 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
12704
12705         * mini-trampolines.c (mono_delegate_trampoline): Update after 
12706         mono_marshal_get_delegate_invoke () signature change.
12707
12708 2007-11-13  Mark Probst  <mark.probst@gmail.com>
12709
12710         * mini.c: Removed the shared context in favor of the generic
12711         sharing context.  Allocate the MonoJitInfo structure with room for
12712         the generic sharing context if it's needed.
12713
12714         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
12715         domain-internals.h now.
12716
12717         * mini-x86.c: Pass the generic sharing context to get_call_info ().
12718
12719         * generic-sharing.c: Several changes for working without a shared
12720         context and instead operating on open types instead.
12721
12722 2007-11-12  David S. Miller  <davem@davemloft.net>
12723
12724        * inssel-sparc.brg: Fix double instruction emit.
12725
12726 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
12727
12728         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
12729         Get/Set/Address methods.
12730         
12731         * mini.c debug-debugger.c mini-trampolines.c: Update after 
12732         mono_marshal_get_delegate_invoke signature change.
12733
12734 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
12735
12736         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
12737         This can happens with dynamic methods. Fixes the other bug in #322722.
12738
12739 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
12740
12741         * tramp-arm.c (mono_arch_patch_callsite): Support patching
12742         BX call sequence.
12743
12744         * mini-arm.c (arm_patch): Implement patching of BX call
12745         sequence. Fixes one of the bugs in #322722.
12746
12747 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
12748
12749        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
12750        under Linux.  We only need to flush every 32-byte cache line.    
12751
12752 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
12753
12754         * mini.c:
12755         move_basic_block_to_end: Add branches when needed, eventually creating
12756         a new BB.
12757         optimize_branches: added a parameter that tells if it's ok to create
12758         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
12759         and avoid calling move_basic_block_to_end when it's not ok.
12760         Fixes bug 318677.
12761
12762 2007-11-07  Mark Probst  <mark.probst@gmail.com>
12763
12764         * mini.c: Abort inlining call to InitializeArray if something
12765         looks wrong.  Let the icall handle it, which now has proper safety
12766         checks.
12767
12768 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
12769
12770         * mini.c (mono_spill_call): add support for soft-float.
12771
12772         * mini.c (mono_method_to_ir): add support for soft-float
12773         to inlined functions that return float.
12774
12775         * mini.c (mono_method_to_ir): add support for soft-float
12776         to cee_stsfld opcode on float fields.
12777
12778 2007-11-05  Geoff Norton  <gnorton@novell.com>
12779
12780         * mini-x86.h: Fix the structure access for X86 Leopard.
12781
12782
12783 2007-11-05  Martin Baulig  <martin@ximian.com>
12784
12785         * mini-trampolines.c
12786         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
12787         after compiling the method to notify the debugger.
12788
12789 2007-11-05  Martin Baulig  <martin@ximian.com>
12790
12791         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
12792
12793 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
12794
12795         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
12796         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
12797
12798 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
12799
12800         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
12801         native-to-managed wrappers.
12802         
12803 2007-11-01  Geoff Norton  <gnorton@novell.com>
12804
12805         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
12806         members.
12807
12808 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
12809
12810         * mini.c, mini-x86.c: when getting back from unmanaged code
12811         to managed via a marshaled delegate we also need to set the
12812         right domain.
12813
12814 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
12815
12816         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
12817         for amd64.
12818
12819 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
12820
12821         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
12822         let the debugger or other external agents to tell the JIT when
12823         a sw breakpoint has been inserted in the code that the JIT needs
12824         to be able to inspect.
12825
12826 2007-10-31  Martin Baulig  <martin@ximian.com>
12827
12828         * debug-debugger.h
12829         (MonoDebuggerInfo): Remove `runtime_class_init'.
12830
12831 2007-10-30  Martin Baulig  <martin@ximian.com>
12832
12833         * debug-mini.h
12834         (mono_debugger_thread_created): Added `MonoThread *' argument.
12835         (mono_debugger_extended_notification): New public method.
12836         (mono_debugger_trampoline_compiled): New public method.
12837
12838         * debug-mini.c
12839         (MonoDebuggerThreadInfo): Added `thread' and
12840         `extended_notifications' fields.
12841
12842         * debug-debugger.c
12843         (debugger_executable_code_buffer): New static variable.
12844
12845         * debug-debugger.h
12846         (MonoDebuggerInfo): Added `executable_code_buffer',
12847         `executable_code_buffer_size', `breakpoint_info_area',
12848         `breakpoint_table' and `breakpoint_table_size'.
12849
12850 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
12851
12852         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
12853         that IP  either is an unused value or the vtable pointer. IMT 
12854         calls use vtable + offset now. Reduced by almost half the size
12855         of IMT entries.
12856
12857 2007-10-26  Jonathan Chambers <joncham@gmail.com>
12858
12859         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
12860         defines to access param registers. Replace long usage with
12861         gsize as sizeof(long) != sizeof(void*) on Win64.
12862
12863         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
12864         on Win64. Fix intrinsic, use _AddressOfReturnAddress
12865         instead of non-existant _GetAddressOfReturnAddress.
12866
12867         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
12868         param registers. Save/restore %rdi and %rsi in MonoLMF.
12869
12870         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
12871         param registers. Modify (throw_exception) signature to take 
12872         %rdi and %rsi on Win64. 
12873
12874         Code is contributed under MIT/X11 license.
12875
12876 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
12877
12878         * helpers.c: unlink debugging output files.
12879
12880 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
12881
12882         * mini.c: Move mono_create_ftnptr () to object.c.
12883
12884 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
12885
12886         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
12887         optional. This function can now be used to disassemble code generated
12888         outside the JIT such as trampolines and IMT thunks.
12889
12890         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
12891
12892         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
12893         vtable pointer from a ldr instruction.
12894
12895         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
12896         new IMT call sequence.
12897
12898         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
12899         call sequence for interface invocations.
12900
12901         * mini-arm.c (mono_arch_emit_imt_argument): added, required
12902         for imt support. This function is empty since IMT on ARM requires no
12903         special handling on the IR side.
12904
12905         * mini-arm.c (mono_arch_find_imt_method): added, required for
12906         imt support.
12907
12908         * mini-arm.c (mono_arch_find_this_argument): added, required
12909         for imt support.
12910
12911         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
12912         a ldr instruction to load a value stored in the code stream.
12913
12914         * mini-arm.c (mono_arch_build_imt_thunk):added, required
12915         for imt support.
12916
12917
12918 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
12919
12920         * mini.c (mini_init): Install the jump trampoline callback.
12921
12922 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12923
12924         * mini-trampolines.c: handle synchronized methods with the common
12925         vtable trampoline (bug #335601).
12926
12927 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
12928
12929         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
12930
12931         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
12932         64 bit platforms.
12933
12934         * mini-ia64.h mini-ia64.c: Add support for IMT.
12935
12936         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
12937         prolog. Fixes #331958.
12938
12939 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
12940
12941         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
12942
12943 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12944
12945         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
12946         trampoline.
12947
12948 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12949
12950         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
12951         trampoline.
12952
12953 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
12954
12955         * mini-x86.c, mini-x86.h: x86 support for the common vtable
12956         trampoline.
12957
12958 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
12959
12960         * mini-trampolines.c: changed the magic rampoline to understand
12961         the common vtable trampoline method: the method to invoke is
12962         determined by the vtable displacement of the call.
12963
12964 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12965
12966         * mini.c, mini.h: register the common vtable trampoline if the
12967         architecture supports it.
12968
12969 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12970
12971         * cpu-amd64.md: use the correct max length for tls_get.
12972
12973 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
12974
12975         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
12976         CEE_STELEM_ANY. Fixes #333696.
12977
12978 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
12979
12980         * exceptions-x86.c: provide more graceful handling of the case where
12981         we followed a bogus function pointer from managed code (bug #332866).
12982
12983 2007-10-11  Mark Probst  <mark.probst@gmail.com>
12984
12985         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
12986         replaces the generic_shared flag and will carry more information
12987         in the future.
12988
12989         * generic-sharing.c: Added mini_type_stack_size() which allows
12990         allows open types if given a generic sharing context.
12991         mini_get_basic_type_from_generic() takes a
12992         MonoGenericSharingContext* instead of a MonoCompile* now.
12993
12994         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
12995         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
12996         mini-sparc.c, mini-x86.c: Trivial changes required by the two
12997         changes above.  Just passing arguments through to the right
12998         places.
12999
13000 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
13001
13002         * mini-arm.c: unify the call emission to emit_code_seq().
13003
13004 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
13005
13006         * tramp-arm.c: reduced the trampoline size.
13007
13008 2007-10-10  Mark Probst  <mark.probst@gmail.com>
13009
13010         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
13011         variable handling out of arch-specific code.
13012
13013 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
13014
13015         * mini-arm.c: implemented fast delegate dispatch.
13016
13017 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
13018
13019         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
13020         that fp elimination is turned off if the space required by locals is too
13021         big. Fixes #331958.
13022
13023 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
13024
13025         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
13026         ARM to the new style trampoline.
13027
13028 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
13029
13030         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
13031
13032         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
13033
13034 2007-10-09  Martin Baulig  <martin@ximian.com>
13035
13036         * debug-debugger.h
13037         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
13038         `field_info_offset_offset'.     
13039
13040 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
13041
13042         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
13043         removed more internal usage of the r11 register and made it available
13044         to the register allocator.
13045
13046 2007-10-08  Mark Probst  <mark.probst@gmail.com>
13047
13048         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
13049         when sharing generics and treat type variables as references.
13050
13051 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
13052
13053         * mini-ppc.c: started removing the internal uses of register r11
13054         to eventually allow the register allocator to manage it as an
13055         additional available register.
13056
13057 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
13058
13059         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
13060
13061 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
13062
13063         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
13064         specific trampolines as they are not performance critical as a jump
13065         target (maybe align as before only for AOT code?). This saves about
13066         200 KB of native code on x86 for monodevelop startup.
13067
13068 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
13069
13070         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
13071         monodevelop startup.
13072
13073 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
13074
13075         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
13076
13077         * mini-sparc.h mini-sparc.c: Implement IMT support.
13078
13079         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
13080         its smaller and doesn't clobber sparc_g1.
13081
13082         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
13083
13084 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
13085
13086         * mini-ppc.c: optimized the size of the IMT thunks a bit.
13087
13088 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
13089
13090         * mini-ppc.c: implemented fast delegate invocation.
13091
13092 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
13093
13094         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
13095
13096 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
13097
13098         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
13099         code to the new style trampoline in preparation for IMT support.
13100
13101 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
13102
13103         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
13104         systems already. This also reduces the specific trampiline sizes and
13105         prepares for the use of r12 as the IMT identifier register.
13106
13107 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13108
13109         * mini-mips.h: endianess fix (simplified from a patch by
13110         Thomas Kunze <thommy@tabao.de>, bug #323737).
13111
13112 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
13113
13114         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
13115         to access ucontext fields and enable netbsd support
13116         (partially from Magnus Henoch <mange@freemail.hu>).
13117
13118 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13119
13120         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
13121         use the preprocessor from the CPP env var if it is set.
13122
13123 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
13124
13125         * mini-trampolines.c: fixed an assertion and moved it earlier in the
13126         code, before interface_offset gets used.
13127
13128 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
13129
13130         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
13131         mono_class_setup_vtable () before accessing klass->vtable.
13132
13133 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
13134
13135         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
13136         hackish.
13137
13138 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13139
13140         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
13141         IMT slots (this saves hundreds of KB of memory in programs like
13142         IronPython and Monodevelop).
13143
13144 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
13145
13146         * mini.c: print the delegate counter.
13147
13148 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
13149
13150         * mini-x86.c: make it easier to enable the debugging code for IMT
13151         slots.
13152
13153 2007-09-28  Martin Baulig  <martin@ximian.com>
13154
13155         * debug-debugger.h
13156         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
13157         `mono_method_klass_offset' and `mono_method_token_offset'.
13158
13159 2007-09-20  Mark Probst  <mark.probst@gmail.com>
13160
13161         * mini.c: First generics sharing implementation.  Can only share
13162         in very simple cases.  If sharing doesn't work it falls back to
13163         dedicated compilation.
13164
13165         * mini.h: Flag in MonoCompile to specify whether generic
13166         compilation is shared.  Flags enum for marking which generic inst
13167         of a context is used.  Prototypes for helper functions.
13168
13169         * generic-sharing.c: Helper functions for generic method sharing.
13170
13171         * optflags-def.h: Optimization flag (gshared) for enabling generic
13172         method sharing added.
13173
13174         * Makefile.am: generic-sharing.c added.
13175
13176 2007-09-19 Daniel Nauck <dna@mono-project.de>
13177
13178         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
13179
13180 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
13181         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
13182         fixes bug 325507.
13183
13184 2007-09-19  Martin Baulig  <martin@ximian.com>
13185
13186         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
13187         mono_debug_cleanup() is now part of mono_cleanup().
13188
13189 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
13190
13191         * driver.c (mono_main): Fix a warning.
13192
13193 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
13194
13195         * aot-compiler.c: Optimize various parts when processing large assemblies.
13196         Fixes ##325568.
13197
13198         * mini.c (mono_patch_info_hash): Improve hash function.
13199
13200 2007-09-14  Jonathan Chambers <joncham@gmail.com>
13201
13202         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
13203         
13204         Code is contributed under MIT/X11 license.
13205
13206 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
13207
13208         * mini.c (mini_init): Fix a leak.
13209
13210         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
13211
13212 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13213
13214         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
13215
13216 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
13217
13218         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
13219
13220 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
13221
13222         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
13223         variance tests.
13224
13225         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
13226
13227         * mini.c (handle_alloc): Enable managed allocators in AOT code.
13228
13229         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
13230
13231         * aot-runtime.c (decode_patch_info): Ditto.
13232
13233 2007-09-12  Jonathan Chambers <joncham@gmail.com>
13234
13235         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
13236         static case. Cache delegates in architecture specific code, 
13237         based on number of parameters.
13238         
13239         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
13240         in architecture specific code, based on number of parameters.
13241         
13242         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
13243         caching happen in architecture specific code now.
13244         
13245         Code is contributed under MIT/X11 license.
13246
13247 2007-09-12  Jonathan Chambers <joncham@gmail.com>
13248
13249         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
13250         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
13251         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
13252
13253         Code is contributed under MIT/X11 license.
13254
13255 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
13256         * mini.c: (mono_thread_abort) Fixed bug #82416.
13257
13258 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
13259
13260         * mini.: hook the new managed GC allocation feature into the JIT.
13261
13262 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
13263
13264         * mini.c: implementation for the new runtime tls opcode.
13265
13266 2007-09-11  Martin Baulig  <martin@ximian.com>
13267
13268         * debug-debugger.h
13269         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
13270         `mono_method_inflated_offset'.
13271
13272 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
13273
13274         * driver.c mini.h mini.c: Add a new devel command line option for injecting
13275         async exceptions into a method.
13276
13277         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
13278         purpose of testing whenever the unwinder works at every instruction.
13279
13280 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
13281
13282         * mini.c: check accessibility of method used in ldftn (fixes
13283         bug #82635).
13284
13285 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
13286
13287         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
13288
13289         * inssel.brg: Fix a warning.
13290
13291 2007-09-03  Martin Baulig  <martin@ximian.com>
13292
13293         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
13294         now takes the `main_method' as argument.
13295
13296 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
13297
13298         * cpu-sparc.md (endfilter): Add missing src1:i argument.
13299
13300 2007-08-30  Jonathan Chambers <joncham@gmail.com>
13301
13302         * driver.c: include the cil-coff.h header on Windows.
13303         
13304         Code is contributed under MIT/X11 license.
13305
13306 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
13307
13308         * mini.c, driver.c: don't include the cil-coff.h header.
13309
13310 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
13311
13312         * mini.c: flag places that needs fixes fo soft-float support.
13313
13314 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
13315
13316         * mini.h, inssel-float.brg: fix soft-float constant loads on big
13317         endian systems (partially from Dean Jenkins, bug #81924).
13318
13319 2007-08-28  Mark Probst  <mark.probst@gmail.com>
13320
13321         * mini.c (check_linkdemand): Remove embedded reference object in
13322         call to LinkDemandSecurityException.
13323         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
13324         with an IntPtr instead of a reference object.
13325
13326 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
13327
13328         * mini.c (handle_initobj): Handle alignment properly.
13329
13330         * inssel.brg (mini_emit_memset): Ditto. 
13331
13332         * inssel.brg (mini_emit_memcpy): Ditto. 
13333
13334         * inssel-sparc.brg: Ditto.              
13335
13336         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
13337
13338 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
13339
13340         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
13341         exceptions raised in unmanaged code. Fixes part of #82594.
13342
13343 2007-08-24  Mark Probst  <mark.probst@gmail.com>
13344
13345         * mini.c (mono_method_to_ir), declsec.c
13346         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
13347
13348 2007-08-22  Martin Baulig  <martin@ximian.com>
13349
13350         * debug-mini.h
13351         (MonoDebuggerThreadInfo): New typedef.
13352         (mono_debugger_thread_table): New global variable.
13353         (mono_debugger_thread_created): New public function.
13354         (mono_debugger_thread_cleanup): New public function.
13355
13356         * debug-debugger.h
13357         (MonoDebuggerInfo):
13358         - removed `get_current_thread' and `lookup_assembly'.
13359         - removed `data_table'.
13360         - added `thread_table'.
13361
13362         * mini.c
13363         (mono_thread_start_cb): Call mono_debugger_thread_created().
13364         (mono_thread_attach_cb): Likewise.
13365         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
13366         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
13367         initial domain.
13368
13369         * driver.c (mono_main): Move mono_debug_init() up, before calling
13370         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
13371
13372 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13373
13374         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
13375         together when passing several arguments of type double (gives a small
13376         speedup and saves a few bytes of generated code).
13377
13378 2007-08-20  Jb Evain  <jbevain@novell.com>
13379
13380         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
13381
13382 2007-08-20  Jb Evain  <jbevain@novell.com>
13383
13384         * mini.c (mono_method_to_ir): throw MethodAccessException
13385         and FieldAccessException instead of InvalidProgramException.
13386
13387 2007-08-20  Mark Probst  <mark.probst@gmail.com>
13388
13389         * mini.c: CoreCLR security checks.
13390
13391         * mini.h: Removed MonoSecurityMode (moved to
13392         metadata/security-manager.h) and mono_security_mode global var
13393         (replaced by set/get functions in security-manager.h).
13394
13395         * driver.c: Added "core-clr-test" security mode for testing.  Used
13396         set-function for setting security mode.
13397
13398 2007-08-17  Mark Probst  <mark.probst@gmail.com>
13399
13400         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
13401         the new jit_info_table.
13402
13403         * driver.c: Test code for the new jit_info_table (enabled by the
13404         define MONO_JIT_INFO_TABLE_TEST).
13405
13406 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
13407
13408         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
13409         detection of call <REG> instruction sequence. Fixes build on freebsd.
13410
13411 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
13412
13413         * mini-exceptions.c: Fix a warning.
13414
13415 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
13416
13417         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
13418         stack overflow handling code on amd64 too.
13419
13420         * mini-exceptions.c (mono_setup_altstack): Make this use 
13421         mono_thread_get_stack_bounds ().
13422
13423         * mini-x86.h: Disable sigaltstack on solaris x86.
13424
13425 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
13426
13427         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
13428
13429 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
13430
13431         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
13432
13433 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
13434
13435         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
13436
13437         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
13438
13439 2007-08-03  Neale Ferguson <neale@sinenomine.net>
13440
13441         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
13442         due to alignment.
13443
13444 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
13445
13446         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
13447         to be emitted (bug #82281).
13448
13449 2007-08-01  Martin Baulig  <martin@ximian.com>
13450
13451         Merged the `debugger-dublin' branch.
13452
13453         * debug-debugger.h (MonoDebuggerInfo):
13454         Removed the `old_*' compatibility entries.
13455         Added `debugger_version' and `data_table'.
13456         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
13457         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
13458
13459         * debug-mini.c
13460         (MiniDebugMethodBreakpointInfo): Add `address_list'.
13461         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
13462         instead of a `gconstpointer'.
13463         (mono_debugger_insert_method_breakpoint): Return a
13464         `MonoDebugMethodAddressList *'.
13465
13466 2007-06-28  Martin Baulig  <martin@ximian.com>
13467
13468         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
13469
13470 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
13471
13472         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
13473         __builtin_frame_address () since it is broken on older gcc versions.
13474
13475 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
13476
13477         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
13478         on the stack overflow handling and made the managed stack overflows
13479         catchable in most cases using soft guard pages.
13480         * exceptions-x86.c: added code to restore the protection in the soft
13481         guard pages at the end of exception handling.
13482
13483 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
13484
13485         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
13486
13487 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13488
13489         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
13490         exception handling.
13491
13492 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13493
13494         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
13495         signal handling support until it has been ported to the new mechanism.
13496         * mini.c: fixed stack overflow detection and use the new
13497         architecture code  to handle signals on the altstack.
13498
13499 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
13500
13501         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
13502         stack overflows on the alt stack.
13503
13504 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
13505
13506         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
13507         stack overflows on the alt stack.
13508
13509 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
13510
13511         * exceptions-ppc.c: cleanup preparing for altstack support.
13512
13513 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
13514
13515         * exceptions-arm.c: cleanup preparing for altstack support.
13516
13517 2007-07-27  Mark Probst  <mark.probst@gmail.com>
13518
13519         * mini.c (print_jit_stats): Output hazard pointer stats.
13520
13521 2007-07-26  Mark Probst  <mark.probst@gmail.com>
13522
13523         * driver.c, mini.c: Replaced security mode flags with a single
13524         enum variable.
13525
13526 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13527
13528         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
13529
13530 2007-07-25  Mark Probst  <mark.probst@gmail.com>
13531
13532         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
13533         (which doesn't do anything yet) for activating Core CLR
13534         (Silverlight) security.
13535
13536 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
13537
13538         * mini-codegen.c: work around a possible gcc bug on arm.
13539
13540 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
13541
13542         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
13543         message for platforms that don't support AOT compilation.
13544
13545 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
13546
13547         * mini.h, mini.c, driver.c: temporary smcs hack.
13548
13549 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
13550
13551         * mini-arm.h, mini-arm.c: arm EABI fixes.
13552
13553 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
13554
13555         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
13556         case.
13557
13558         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
13559         trampolines taking a method argument.
13560
13561         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
13562
13563         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
13564         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
13565
13566         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
13567         JIT compilation throws an exception. Fixes #82050.
13568
13569 2007-07-19  Mark Probst  <mark.probst@gmail.com>
13570
13571         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
13572         with the MONO_EXCEPTION_ defines.
13573
13574 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
13575
13576         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
13577         #82117.
13578         
13579         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
13580         the cause of an assertion.
13581
13582 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
13583
13584         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
13585         removed.
13586
13587 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
13588
13589         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
13590         assert. Should fix #82103.
13591
13592 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
13593
13594         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
13595         here too. Fixes #82095.
13596
13597         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
13598         addresses.
13599
13600         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
13601
13602         * mini-amd64.h: Enable IMT for amd64.
13603         
13604         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
13605
13606 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
13607
13608         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
13609
13610 2007-07-12  Mark Probst  <mark.probst@gmail.com>
13611
13612         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
13613         as soon as check_linkdemand sets an exception_type.
13614
13615 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
13616
13617         * mini-x86.c: fixed offsets for IMT call sequence.
13618         * mini-x86.h: enable IMT again.
13619
13620 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
13621
13622         * trace.c (mono_trace_enter_method): Decode MonoType too.
13623
13624         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
13625
13626         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
13627
13628         * mini-amd64.c: Add preliminary IMT implementation.
13629         
13630 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
13631
13632         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
13633         understand the new IMT-base interface invocation (thanks to
13634         Daniel Nauck for the report and the remote debugging session).
13635
13636 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
13637
13638         * mini-x86.c: size and speed optimizations for the IMT bsearch.
13639
13640 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
13641
13642         * Makefile.am (aotcheck): Make this actually use the AOTed code.
13643
13644 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
13645
13646         * mini-trampolines.c: implement AOT IMT support.
13647         * mini-x86.h: enable IMT support for wider testing.
13648
13649 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
13650
13651         * inssel.brg (emit_imt_argument): Add aot support here.
13652
13653         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
13654
13655 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
13656
13657         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
13658         of the IMT implementation, partially from massi, with my
13659         implementation of the bsearch sequence. Disabled by default until
13660         the AOT code is implemented.
13661
13662 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
13663
13664         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
13665
13666         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
13667
13668 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13669
13670         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
13671         arch-independent IMT JIT code from Massimiliano
13672         Mantione (massi@ximian.com) with small cleanups from me.
13673
13674 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
13675
13676         * Makefile.am: fix svn invocation to get the svn revision to be
13677         independent of the local language (build fix).
13678
13679 2007-07-09  Mark Probst  <mark.probst@gmail.com>
13680
13681         * mini.c (inline_method): Reset cfg->exception_type if the
13682         inlining is aborted.  Fixes: 82049.
13683
13684 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
13685
13686         * mini.c: remove assert from exception handling code when exception_ptr
13687         is not set.
13688
13689 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
13690
13691         * mini.c (mono_codegen): Add an assert.
13692
13693         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
13694         enter and leave code.
13695         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
13696
13697 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13698
13699         * mini-ppc.c: fixed memory corruption for localloc(0)
13700         (bug #81852).
13701
13702 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
13703         
13704         * mini.c: Fix warnings.
13705
13706 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
13707
13708         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
13709         to emit better double->int conversions.
13710
13711 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
13712
13713         * mini.c: the provided Min/Max optimizations are valid for unisgned
13714         ints.
13715
13716 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
13717
13718         * 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
13719
13720 2007-06-28  Miguel de Icaza  <miguel@novell.com>
13721
13722         * mini.c (mono_running_on_valgrind): Add support for reporting the
13723         method and  its boundaries to valgrind.
13724
13725 2007-06-28  Martin Baulig  <martin@ximian.com>
13726
13727         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
13728
13729 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
13730
13731         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
13732
13733         * generic.2.cs: Add new test case.
13734
13735 2007-06-25  Martin Baulig  <martin@ximian.com>
13736
13737         Merged the `debugger-dublin' branch.
13738
13739         * debug-mini.c
13740         (mono_debugger_insert_method_breakpoint): New public method.
13741         (mono_debugger_remove_method_breakpoint): Likewise.
13742         (mono_debugger_check_breakpoints): New static method.
13743         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
13744
13745         * debug-debugger.h (MonoDebuggerInfo):
13746         Renamed (to keep backward compatibility in the vtable):
13747         `insert_breakpoint' -> `old_insert_breakpoint'.
13748         `remove_breakpoint' -> `old_remove_breakpoint'.
13749         `create_string' -> `old_create_string'.
13750         `lookup_class' -> `old_lookup_class'.
13751         `lookup_type' -> removed; changed into a dummy field.
13752         `lookup_assembly' -> `old_lookup_assembly'.
13753         Added (same functionality, but different signature):
13754         `create_string', `lookup_class', `lookup_assembly'
13755         Added new:
13756         `get_method_addr_or_bpt', `remove_method_breakpoint',
13757         `runtime_class_init'.
13758
13759         * debug-debugger.c: Merged the `debugger-dublin' branch.
13760
13761 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
13762
13763         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
13764         well.
13765         (peephole_pass): Likewise.
13766
13767 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
13768
13769         * driver.c: hopefully make setaffinity work also for ancient
13770         versions of linux.
13771
13772 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
13773
13774         * driver.c : win32 build fix.
13775
13776 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
13777
13778         * driver.c: check for the MONO_NO_SMP env var and bind to a single
13779         processor if it is set.
13780
13781 2007-06-21  Martin Baulig  <martin@ximian.com>
13782
13783         * debug-mini.h: New file.
13784
13785         * debug-mini.c
13786         (mono_debugger_insert_breakpoint_full): Moved here from
13787         ../metadata/mono-debug-debugger.c.
13788         (mono_debugger_remove_breakpoint): Likewise.
13789         (mono_debugger_breakpoint_callback): Likewise.
13790
13791 2007-06-15  Raja R Harinath  <rharinath@novell.com>
13792
13793         * jit-icalls.c (mono_helper_compile_generic_method): Update to
13794         changes in MonoGenericClass.
13795
13796 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
13797
13798         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
13799
13800 2007-06-14  Raja R Harinath  <rharinath@novell.com>
13801
13802         * jit-icalls.c (mono_helper_compile_generic_method): Update to
13803         removal of MonoGenericMethod.
13804
13805 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13806
13807         * mini-exceptions.c: hooks for the exception events profiling API.
13808
13809 2007-06-14  Randolph Chung  <tausq@debian.org>
13810
13811         * Makefile.ma: Add hppa target.
13812         * mini-arch.h: Include mini-hppa.h
13813         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
13814         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
13815         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13816
13817 2007-06-14  Randolph Chung  <tausq@debian.org>
13818
13819         * inssel.brg: Add rules for "chained" compare-branch operations so that
13820         a single compare op can affect multiple branches.  Adjust cost for
13821         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
13822         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
13823         cost for some rules so that they can more easily be overridden by
13824         per-arch rules (with fixes from lupus).
13825         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13826
13827 2007-06-13  Randolph Chung  <tausq@debian.org>
13828
13829         * mini-ops.h: Reorder branch ops so that they match the order of the
13830         corresponding CEE_* ops.  The code expects them this way.
13831         Add new ops for HPPA target.
13832         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13833
13834 2007-06-13  Randolph Chung  <tausq@debian.org>
13835
13836         * mini-exceptions.c: Handle cases where the stack grows towards
13837         larger addresses.
13838         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13839
13840 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
13841
13842         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
13843         counter.
13844         * driver.c: explain where a non-matching corlib is found.
13845
13846 2007-06-13  Mark Probst  <mark.probst@gmail.com>
13847
13848         * mini.c (print_jit_stats): Output dynamic code allocation stats.
13849
13850 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
13851
13852         * mini-exceptions.c: Generate a method profile leave event during
13853         an exception to ensure that the profiler gets notified.
13854
13855 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
13856
13857         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
13858         branch.
13859
13860         * cpu-amd64.md: Add long_and/or/xor opcodes.
13861
13862 2007-06-06  Wade Berrier  <wberrier@novell.com>
13863
13864         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
13865         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
13866         length of instruction shr_imm (expected 8, got 10)
13867
13868 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
13869
13870         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
13871
13872 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13873
13874         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
13875         MonoInternalHashTable again (fixed bug in the internal hash table
13876         code).
13877
13878 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13879
13880         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
13881         Have to figure out what makes it crash the SWF regression.
13882
13883 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
13884
13885         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
13886
13887 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13888
13889         * mini.c: optimize out the type check when storing null in a
13890         reference array.
13891
13892 2007-06-04  Mark Probst  <mark.probst@gmail.com>
13893
13894         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
13895         MonoInternalHashTable.
13896
13897 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
13898
13899         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
13900         signed integer methods.
13901
13902 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
13903
13904         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
13905         permanently since the current approach doesn't work.
13906
13907 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
13908
13909         * inssel.brg (stmt): Only call delegate->invoke_impl if 
13910         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
13911
13912 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
13913
13914         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
13915         the sreg2==rdx case.
13916         
13917         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
13918         account if it contains a rex prefix.
13919         (peephole_pass): Handle OP_FMOVE as well.
13920
13921 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
13922
13923         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
13924         as it causes regressions.
13925
13926 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
13927
13928         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
13929         static case as well.
13930
13931         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
13932
13933         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
13934         (mono_arch_get_this_arg_from_call): Ditto.
13935
13936         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
13937
13938         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
13939         invoke_impl field.
13940
13941         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
13942         (mono_arch_get_this_arg_from_call): Ditto.
13943
13944         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
13945         
13946         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
13947         try to create optimized invoke code and use that for further invocations. 
13948         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
13949
13950         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
13951
13952 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
13953
13954         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
13955         sealed classes or methods.
13956         *devirtualization.cs: tests for the new optimization
13957
13958 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
13959
13960         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
13961         by the update_volatile () function.
13962
13963 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
13964
13965         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
13966         require it.
13967
13968         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
13969
13970 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
13971
13972         * mini.c: Add configure checks for header files.
13973         * mini-x86.c: Add configure checks for header files.
13974         * trace.c: Add configure checks for header files.
13975         * aot-runtime.c: Add configure checks for header files.
13976         * aot-compiler.c: Add configure checks for header files.
13977         * driver.c: Add configure checks for header files.
13978         * mini-codegen.c: Add configure checks for header files.
13979         
13980         Code is contributed under MIT/X11 license.
13981
13982 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
13983
13984         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
13985         icompare_imm -128 + op_iclt. Fixes #81703.
13986
13987 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
13988
13989         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
13990
13991 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
13992
13993         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
13994         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
13995         so that all isinst checks now use "interface_bitmap".
13996
13997 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
13998
13999         * cpu-amd64.md (jmp): Fix a warning.
14000
14001         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
14002
14003         * basic.cs: Add new regression test.
14004
14005         * basic.cs: Remove test which is now in basic-long.cs.
14006
14007         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
14008
14009         * basic-long.cs: Add new test.
14010         
14011 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
14012
14013         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
14014
14015 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
14016
14017         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
14018
14019         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
14020         places.
14021         
14022         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
14023         throwing code a bit.
14024
14025         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
14026         the exception throwing code a bit.
14027
14028         * mini-x86.c (get_call_info): Allocate result from a mempool.
14029
14030 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
14031
14032         * aot-compiler.c (find_typespec_for_class): Fix the assert.
14033
14034         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
14035
14036         * mini.h (MonoCompile): Add 'token_info_hash' field.
14037
14038         * mini.c: Save token->method associations during compilation so the AOT 
14039         compiler can use it.
14040         
14041         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
14042         which reference generic classes and methods.
14043
14044 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
14045
14046         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
14047
14048         * aot-compiler.c (compile_method): Fix a typo in a comment.
14049
14050         * aot-runtime.c (decode_cached_class_info): Skip generic types.
14051
14052         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
14053         everything generic.
14054
14055         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
14056
14057 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
14058
14059         * mini.h (MonoCompile): Add 'args' field.
14060
14061         * mini.c (mono_compile_create_vars): Store variables representing the arguments
14062         into cfg->args.
14063
14064         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
14065
14066 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
14067
14068         * mini.c (mono_compile_get_interface_var): Remove this unused function.
14069
14070         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
14071
14072         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
14073         opcodes for some opcodes.
14074
14075         * mini.h *.brg *.c: Use the new opcodes.
14076
14077 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
14078
14079         * mini.h: Bumped aot revision.
14080
14081         * inssel.brg: modified code generation of type checks for interfaces
14082         to use the new "MonoClass.interface_bitmap" instead of the old
14083         "MonoClass.interface_offsets".
14084
14085 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
14086
14087         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
14088
14089 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
14090
14091         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
14092         64 bit platforms.
14093
14094 2007-04-27  Neale Ferguson <neale@sinenomine.net>
14095
14096         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
14097
14098 2007-04-27  Wade Berrier  <wberrier@novell.com>
14099
14100         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
14101         mini.h) to fix build.
14102
14103 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
14104
14105         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
14106         
14107         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
14108         causes the corlib unit tests to fail.
14109
14110 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
14111
14112         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
14113
14114         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
14115
14116         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
14117         opcodes to the comparison relations.
14118
14119         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
14120         opcodes to their types.
14121         
14122         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
14123
14124         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
14125         it in cfg->arch.cinfo.
14126
14127         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
14128
14129         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
14130         cfg->cil_offset_to_bb.
14131
14132 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
14133
14134         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
14135         created becase of initlocals.
14136
14137 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
14138
14139         * mini-alpha.c cpu-alpha.md: More alpha port work from 
14140         Sergey Tikhonov <tsv@solvo.ru>.
14141
14142 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
14143
14144         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
14145
14146 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
14147
14148         * cpu-s390.md (break): Correct the length of break instruction.
14149
14150 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14151
14152         * mini.c: fix a couple of soft-float issues and comments.
14153
14154 2007-04-15  Miguel de Icaza  <miguel@novell.com>
14155
14156         * trace.c (is_filenamechar): - is also a filename char.
14157
14158 2007-04-15  Neale Ferguson <neale@sinenomine.net>
14159
14160         * mini-s390.c: Correct checking for enum type in return value processing.
14161
14162 2007-04-14  Raja R Harinath  <rharinath@novell.com>
14163
14164         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
14165         (version.h): Makefile is in the build directory.
14166
14167 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
14168
14169         * mini-amd64.h: fix for assertion failure on Solaris/amd64
14170
14171 2007-04-11  Martin Baulig  <martin@ximian.com>
14172
14173         * mini.c (can_access_member): Fix handling of generic classes;
14174         fixes #81259.
14175
14176 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
14177
14178         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
14179
14180 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
14181
14182         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
14183
14184 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
14185
14186         * mini-codegen.c: make sure the right spill amount is
14187         used for fp or integer registers (fixes the float_sub_spill() on ppc).
14188
14189 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
14190
14191         * mini-ppc.c: fixes for the fp_branch_nan test.
14192
14193 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
14194
14195         * basic.cs: Comment out new test which still fails on ia64.
14196
14197 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14198
14199         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
14200
14201 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14202
14203         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
14204
14205 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
14206
14207         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
14208         on 64 bit machines. Fixes part of #80738.
14209
14210         * basic.cs: Add regression test.
14211
14212 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
14213
14214         * inssel.brg basic.cs: Revert previous change to fix build.
14215
14216         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
14217         platforms.
14218         
14219         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
14220
14221         * basic.cs: Add new regression test.
14222
14223 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
14224
14225         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
14226         many arguments.
14227
14228 2007-03-16  Neale Ferguson <neale@sinenomine.net>
14229
14230         * cpu-s390x.md: Correct length of break instruction.
14231
14232 2007-03-16  Neale Ferguson <neale@sinenomine.net>
14233
14234         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
14235         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
14236
14237 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
14238
14239         * *.c: Begin WIN64 port.
14240         * mini.c:  Use correct register in profiler.
14241         * mini-amd64.c: No inline assembly on Win64.
14242         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
14243         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
14244         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
14245         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
14246         mono_arch_ip_from_context for Win64.
14247         
14248         Contributed under MIT/X11 license.
14249
14250 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
14251
14252         * exceptions-amd64.c (seh_handler): Ditto.
14253
14254         * exceptions-x86.c (seh_handler): Fix a memory leak.
14255
14256 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
14257
14258         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
14259         mini-s390x.c: fixed peephole optimizations to deal
14260         correctly with 1 and 2 byte reload avoidance.
14261
14262 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
14263
14264         * cpu-s390.md, cpu-s390x.md: update localloc length.
14265
14266 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
14267
14268         * cpu-g4.md: added missing descriptions.
14269
14270 2007-03-14  Miguel de Icaza  <miguel@novell.com>
14271
14272         *  Makefile.am: Add support so the tail tests are not executed on
14273         PowerPC as that is a known limitation of the PowerPC port.
14274
14275 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
14276
14277         * runmdesc.bat:  Move to msvc directory.
14278         
14279 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
14280
14281         * runmdesc.bat:  Run executable that was produced by the current
14282         target and sent via an argument.
14283         
14284 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
14285
14286         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
14287         #81102.
14288
14289         * generics.2.cs: Add regression test.
14290
14291 2007-03-09  Wade berrier  <wberrier@novell.com>
14292
14293         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
14294
14295 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
14296
14297         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
14298         AOT code depends on this.
14299
14300 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
14301
14302         * mini.c: more precise tracking of types in the eval stack
14303         (part of fix for bug #81044).
14304
14305 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
14306
14307         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
14308
14309         * aot-compiler.c (encode_patch): Remove an obsolete comment.
14310
14311 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
14312
14313         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
14314
14315         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
14316
14317 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
14318
14319         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
14320         a pointer on 64 bit systems. Fixes #80190.
14321
14322         * iltests.il: Add new regression test.
14323
14324 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14325
14326         * mini.c: inline a constant for Environment.IsRunningOnWindows.
14327
14328 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
14329
14330         * trace.c: Remove an erroneous alignemnt check when tracing.
14331           Fixes --trace on OSX86.
14332
14333 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
14334
14335         * mini-$(arch).h: initialize SP in context for all the archs.
14336
14337 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
14338
14339         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
14340         regressions in the thread tests.
14341
14342 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
14343
14344         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
14345         - fixed implementation of LOCALLOC opcode
14346         - implemented non-un compare for floats
14347         - code cleanup
14348         - implementation of FDIV and CKFINITE opcodes
14349         - fixes for latest mono updates
14350         - additional arch opcodes
14351
14352 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
14353
14354         * Makefile.am: simplify and merge rules for cross-compilation.
14355
14356 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
14357
14358         * local-propagation.c: Actually *apply* the fix for bug 80591...
14359
14360 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
14361
14362         * mini-exceptions.c: backuot part of the last change
14363         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
14364
14365 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
14366         * inssel.brg: Fix bug 59286.
14367
14368
14369 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
14370
14371         * mini-exceptions.c: patch from Zoltan to correctly check for
14372         stack boundaries (using the stack register, not the frame register),
14373         fixes bugs #80724, #79717.
14374
14375 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
14376
14377         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
14378         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
14379
14380         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
14381         presence of frame pointer elimination.
14382
14383 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
14384         
14385         * mini-x86.h: NetBSD UCONTEX_REG defines.
14386
14387 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
14388
14389         * inssel-amd64.brg: Fix amd64 build.
14390
14391 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
14392
14393         * mini.h: remove extern to workaround what looks likes gcc bug 26905
14394         on amd64.
14395
14396 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
14397
14398         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
14399         ends.
14400
14401         * mini-<ARCH>.c: Use mono_is_regsize_var ().
14402
14403 2007-01-30 Mark Mason <mason@broadcom.com>
14404
14405            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
14406            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
14407            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
14408            beginning support for CEE_JMP [not quite working yet]
14409            * tramp-mips.c: LMF handling now works
14410         
14411 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
14412
14413         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
14414
14415         * mini.h (NULLIFY_INS): New macro.
14416
14417 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14418
14419         * mini.c: statistical profiler fix for windows, patch
14420         from Tor Lillqvist (tml@novell.com).
14421
14422 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
14423         * local-propagation.c: Fix bug 80591.
14424
14425 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
14426
14427         * Makefile.am: put back the --export-dynamic option as with
14428         the previous gmodule flags (thanks to Robert Jordan).
14429
14430 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
14431
14432         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
14433
14434         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
14435         simplify and speed up the local register allocator. Also rename some fields
14436         like iassign->vassign.
14437         
14438         * regalloc.c: Remove some functions which are no longer used since their
14439         inlined version is in mini-codegen.c.
14440         
14441         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
14442
14443         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
14444
14445 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
14446
14447         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
14448         narrowing. Fixes #80622.
14449
14450         * iltests.il: Add new regresssion test. 
14451
14452 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
14453
14454         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
14455         debug-debugger.c, debug-debugger.h: warning fixes.
14456         * driver.c: updated copyright year and made it fit in one line.
14457
14458 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
14459
14460         * aot-runtime.c: updated to use mono-dl instead of gmodule.
14461
14462 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
14463
14464         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
14465
14466         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
14467
14468         * iltests.il: Add new test for bug #80507.
14469
14470 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14471
14472         * mini-arm.h: use soft-float also on vfp for now.
14473
14474 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
14475
14476         * mini.c: fix some more soft-float issues.
14477
14478 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
14479
14480         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
14481
14482 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
14483         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
14484         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
14485         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
14486
14487 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
14488
14489         * mini-arm.c: typo fix.
14490
14491 2007-01-23  Neale Ferguson <neale@sinenomine.net>
14492
14493         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
14494
14495 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
14496
14497         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
14498         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
14499
14500         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
14501
14502         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
14503
14504         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
14505         
14506         * inssel.brg: Fix a warning.
14507
14508         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
14509
14510         * abcremoval.c ssa.c ssapre.c: Update after this change.
14511         
14512         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
14513
14514         * dominators.c (df_set): Use mono_bitset_union_fast.    
14515
14516 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
14517
14518         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
14519         mini-codegen.c: reduce relocations and memory usage for the cpu
14520         description.
14521
14522 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
14523
14524         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
14525
14526         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
14527         to reduce their size.
14528
14529 2007-01-19 Mark Mason <mason@broadcom.com>
14530
14531         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
14532         * mini-mips.c: more configuration macros, support long conditional branches, additional
14533         asserts, fix epilog instrumentation.
14534         * mini-mips.h: use standard stack walk
14535         * cpu-mips.md: increase size of div, rem and conditional branches
14536         
14537 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
14538
14539         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
14540         to cpu spec data.
14541
14542 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
14543
14544         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
14545         (compile_method): Ditto.
14546
14547         * aot-runtime.c (decode_klass_info): Ditto.
14548
14549         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
14550         needed by the code generated by inssel.brg. Also fix a warning.
14551
14552 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
14553
14554         * mini.c: deal with enums that become genericinsts by
14555         being nested in a generic class (bug #79956).
14556
14557 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
14558
14559         * mini.c: match the generic definition to check for
14560         private access with generic types (bug #78431).
14561
14562 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
14563
14564         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
14565         to make life easier for people cross-compiling that insist on not
14566         using scratchbox.
14567
14568 2007-01-17 Mark Mason <mason@broadcom.com>
14569
14570         * inssel-long.brg: patch to deal with mips missing flags
14571         * inssel-long32-mips.brg: implement overflow checks
14572         * insset-mips.brg: implement overflow checks
14573         * mini-mips.h: implement conditional exception handling
14574         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
14575           Remove unused code, minor cleanups.
14576         * exceptions-mips.c: minor cleanups
14577         * mini-ops.h: add mips conditional exception ops
14578         * cpu-mips.md: add mips conditional exception ops
14579
14580         
14581 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
14582
14583         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
14584         to deal with mips missing of flags.
14585
14586 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
14587
14588         * exceptions-ppc.c: execute fault handlers.
14589
14590 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
14591
14592         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
14593
14594 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
14595
14596         * mini.c: handle also floating point values in initialize_array.
14597
14598 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
14599
14600         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
14601         array initialization and make it conditional on the intrins option.
14602
14603 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
14604
14605         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
14606         relocations and put the patch info names close to the enum definition.
14607
14608 2007-01-15 Mark Mason <mason@broadcom.com>
14609
14610         * basic.cs, exceptions.cs: break up large tests to increase debugability.
14611
14612 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14613
14614         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
14615
14616 2007-01-12  Raja R Harinath  <rharinath@novell.com>
14617
14618         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
14619
14620 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
14621
14622         * Makefile.am: distribute the mips sources.
14623
14624 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14625
14626         * mini-codegen.h: handle bug #80489 here, by excluding ecx
14627         directly.
14628
14629 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
14630
14631         * cpu-x86.md: back out for now as this triggers other regressions.
14632
14633 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
14634
14635         * cpu-x86.md: force src1 and dest regpair for long shift instructions
14636         to eax:edx, so ecx can't get allocated to them (bug #80489).
14637
14638 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
14639
14640         * mini.c, mini-exceptions.c: enabled running fault handlers
14641         (bug #80469).
14642
14643 2007-01-03  Miguel de Icaza  <miguel@novell.com>
14644
14645         * driver.c: If nothing fail, do not use the string "failed",
14646         because it makes it very annoying to view test result logs on the
14647         web. 
14648
14649 2006-12-30  Miguel de Icaza  <miguel@novell.com>
14650
14651         * debug-debugger.c (mono_debugger_main): Rename "main" to
14652         "main_method" to prevent a warning.
14653
14654         Remove a warning for unused field.
14655
14656 2006-12-28  Martin Baulig  <martin@ximian.com>
14657
14658         * debug-debugger.c
14659         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
14660
14661 2006-12-22  Martin Baulig  <martin@ximian.com>
14662
14663         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
14664         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
14665         seperate `.mdb_debug_info' section, so we can access it from the
14666         debugger even if the binary is stripped.
14667
14668         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
14669         from the `.mdb_debug_info' here to prevent the linker from
14670         removing that section.
14671
14672         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
14673         mdb-debug-info64.s.
14674
14675 2006-12-19  Robert Jordan  <robertj@gmx.net>
14676
14677         * mini-x86: enable the code to return small structures in
14678         registers for FreeBSD as well. Fixes bug #80278.
14679         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
14680
14681 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14682
14683         * mini-x86.c: align the stack when calling the profiler
14684         function instrumenting the prolog (on OSX).
14685
14686 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
14687
14688         * mini.c: emit a break opcode where Debugger.Break () is called.
14689
14690 2006-12-13  Miguel de Icaza  <miguel@novell.com>
14691
14692         * mini.c (mono_method_to_ir): Provide useful information on this
14693         assert, to prevent others from debugging like I did.
14694
14695 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14696
14697         * mini.c: enable code which was incorrectly commented
14698         (bug #80235).
14699
14700 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
14701
14702         * mini-x86.c: enable on OSX, too, the code to return small
14703         structures in registers.
14704
14705 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14706
14707         * mini-x86.c: remove the use of the dynamic code manager here, too.
14708
14709 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
14710
14711         * mini.h, debug-debugger.c, tramp-*.c: fixed 
14712         mono_debugger_create_notification_function() to use
14713         mono_global_codeman_reserve () instead of a dynamic code manager.
14714
14715 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
14716
14717         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
14718         ves_array_element_address() jit icall and use a generated
14719         managed method instead (which is about 4 times faster for a rank 3
14720         array access).
14721
14722 2006-11-29  Mark Mason  <mason@broadcom.com>
14723
14724         * basic-calls.cs: additional tests for passing
14725         structures as function arguments.
14726
14727 2006-11-29  Mark Mason  <mason@broadcom.com>
14728
14729         * mini-mips.h: disable custom exception handling
14730         * mini-mips.c: throw/rethrow should use jalr to call
14731         exception stubs.  Fixed bug with passing structures
14732         by value. More support for tracing floating point
14733         functions.
14734
14735 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14736
14737         * mini.c: fixed typo in the soft-float ldind.r4 handling
14738         (bug #80086).
14739
14740 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
14741
14742         * mini.c, mini.h, driver.c: added --runtime command line
14743         option to select a different runtime than the autodetected one.
14744         * jit.h: added API for embedders to initialize with a specific
14745         runtime version.
14746
14747 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
14748
14749         * mini.c: handle also boxing of r4 values (bug #80024).
14750
14751 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14752
14753         * mini-ppc.c: force indirect calls until we reserve
14754         enough address space for all the generated code.
14755
14756 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
14757
14758         * exceptions-arm.c: workaround bugs in the libc definition
14759         of struct ucontext.
14760
14761 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14762
14763         * inssel.brg: fixes from me and Mark Mason.
14764
14765 2006-11-23  Dick Porter  <dick@ximian.com>
14766
14767         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
14768         semaphore display now we've fixed the initial value
14769
14770 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14771
14772         * inssel.brg: partially revert the last change to fix the build.
14773
14774 2006-11-21  Mark Mason  <mason@broadcom.com>
14775
14776         * inssel.brg: Add and use compare-and-branch macros to support
14777         architectures that do not have condition code registers (ie. MIPS).
14778         * *-mips.{c,brg,md}: Fix copyright statements
14779
14780 2006-11-20  Mark Mason  <mason@broadcom.com>
14781
14782         * Makefile.am: remove mini-codegen.c from list of MIPS sources
14783         * mini.c: Allow GET_CONTEXT to be specified by the arch port
14784         * mini.h: Added declaration for mono_print_ins()
14785         * mini-codegen.c: added ins_spec initializer for MIPS
14786         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
14787         vreg to be virtual and hreg to be non-virtual.
14788         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
14789         is not yet working/implemented correctly.
14790         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
14791         non-static, fixup calls to print_ins() from other parts in the file.
14792
14793 2006-11-20  Mark Mason  <mason@broadcom.com>
14794
14795         * basic-calls.cs: added tests for passing structures as arguments
14796         to calls.
14797
14798 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14799
14800         * inssel-long32.brg: optimize signed division by power of two.
14801
14802 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
14803
14804         * mini-arm.c: added support for interworking with thumb code
14805         (mono must be still be built using the ARM instruction encoding).
14806
14807 2006-11-19  Miguel de Icaza  <miguel@novell.com>
14808
14809         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
14810         verifier has different rules for it.   Fixes a few verifier issues
14811         in the test suite.
14812
14813         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
14814         at the end, so people know what happened.
14815
14816 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
14817
14818         * brach-opts.c: in optimize_exception_target() make sure we
14819         are in a catch clause (fixes bug #79871).
14820
14821 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14822
14823         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
14824         more soft-float support fixes.
14825
14826 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
14827
14828         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
14829         that are passed half on the stack and half in registers.
14830
14831 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
14832
14833         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
14834         more mips integration work from Mark E Mason 
14835         <mark.e.mason@broadcom.com>.
14836
14837 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
14838
14839         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
14840         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
14841         tramp-mips.c: added sources for the mips port, not
14842         integrated in the build yet. Contributed by
14843         Mark E Mason <mark.e.mason@broadcom.com>.
14844
14845 2006-11-14  Neale Ferguson <neale@sinenomine.net>
14846
14847         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
14848
14849 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14850
14851         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
14852         put the soft-float rules in its own file since it seems to
14853         break s390 compilation.
14854
14855 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14856
14857         * mini-arm.c: fixed wrnings.
14858
14859 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
14860
14861         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
14862         inssel-arm.brg: ARM support for soft-float.
14863
14864 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
14865
14866         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
14867         loads and stores of 32 bit fp values.
14868
14869 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
14870
14871         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
14872
14873         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
14874         works. Fixes #79852 and #79463.
14875
14876 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14877
14878         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
14879         more soft-float support WIP and fixes.
14880
14881 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
14882
14883         * mini-arm.c: some VFP updates.
14884
14885 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
14886
14887         * mini-exceptions.c: 0 is a valid local var offset in some
14888         architectures, don't assert (bug #78508).
14889
14890 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
14891
14892         * exceptions-arm.c: fixed off by one error in stack walk code.
14893
14894 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
14895
14896         * mini.h, mini.c: more precise tracking of type load exceptions.
14897
14898 2006-11-03  Robert Jordan  <robertj@gmx.net>
14899
14900         * Makefile.am: [WIN32] Add monow.exe target.
14901         * driver.c: [WIN32] Don't detach the console when debugging.
14902         Fixes bug #79797.
14903         
14904 2006-10-30  Miguel de Icaza  <miguel@novell.com>
14905
14906         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
14907
14908 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
14909
14910         * aot-compiler.c (emit_method_info): Add a case missed earlier.
14911
14912         * driver.c (mini_regression): Fix --regression with AOT.
14913
14914         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
14915
14916 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
14917
14918         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
14919
14920         * mini-sparc.h: Don't use sigaction on sparc/linux.
14921
14922         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
14923
14924         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
14925
14926         * mini-exceptions.c: Add proper include files for getpid ().
14927
14928 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
14929
14930         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
14931         address instead of a MonoJitInfo* to avoid decoding the exception info for the
14932         method.
14933
14934         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
14935         name cache to reduce its size.
14936
14937         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
14938
14939 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
14940
14941         * mini-x86.c: Save/restore the current LMF structure more efficiently using
14942         the mono_lmf TLS variable.
14943
14944         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
14945         trampoline lmf frames.  
14946
14947         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
14948
14949 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
14950
14951         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
14952         the mono_lmf TLS variable.
14953
14954         * mini-exceptions.c: Access the LMF structure through accessors.
14955
14956         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
14957         variable instead of in jit_tls->lmf.
14958
14959         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
14960         
14961         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
14962         trampoline lmf frames.
14963
14964         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
14965
14966 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
14967
14968        * mini.c trace.c mini-x86.c: Revert these too.
14969         
14970        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
14971        signature change.
14972
14973 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
14974
14975         * genmdesc.c: removed now dead code.
14976
14977 2006-10-09  Robert Jordan <robertj@gmx.net>
14978
14979         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
14980
14981 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
14982
14983         * mini.h: do not leave gaps in the opcode values.
14984
14985 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
14986
14987         * jit-icalls.h: flag functions as internal here, too.
14988
14989 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
14990
14991         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
14992         functions with the internal attribute.
14993
14994 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
14995
14996         * aot-compiler.c: fclose the file descriptor in the profile read loop.
14997
14998 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
14999
15000         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
15001         for soft-float.
15002
15003 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
15004
15005         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
15006         tail calls as on other platforms.
15007
15008         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
15009
15010         * iltests.il: Add a few tailcall tests.
15011
15012 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
15013
15014         * driver.c: fix loop for old compilers (bug #79521).
15015
15016 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
15017
15018         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
15019
15020         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
15021
15022         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
15023         metadata without any code.
15024
15025         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
15026         more precise debugging information using gdb.
15027
15028 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
15029
15030         * inssel-ia64.brg: Make the helper methods static.
15031
15032 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
15033
15034         * inssel-x86.brg: make the helper methods static.
15035
15036 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
15037
15038         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
15039
15040 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
15041
15042         * mini.c: updates for monoburg changes.
15043         * inssel.brg: make a few helper functions static as they should.
15044
15045 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
15046
15047         * Makefile.am: Move mini-codegen.c to common_sources.
15048
15049 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
15050
15051         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
15052         instructions.
15053         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
15054         mini-ppc.h: port to use the common local register allocator.
15055
15056 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
15057
15058         * mini.h: Remove the comment too then.
15059
15060 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
15061
15062         * mini.h: put back backend.data which is to be used shortly and
15063         doesn't increase the size of MonoInst. If any 64 bit arch aligned
15064         pointers on 4 byte boundaries it'd have much bigger issues running
15065         and you can ifdef it out anyway.
15066
15067 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
15068
15069         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
15070         MonoInst size by 4 bytes on 64 bit machines.
15071
15072 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
15073
15074         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
15075         replacement with more meaningful field names. Arch maintainers, please
15076         check the assigned names are good enough for your arch.
15077
15078 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
15079
15080         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
15081         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
15082
15083 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
15084
15085         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
15086         relocations and memory requirements, put the optimization flags
15087         definitions in their own file.
15088
15089 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
15090
15091         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
15092
15093         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
15094
15095 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
15096
15097         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
15098
15099 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
15100
15101         * inssel.brg: use the correct function to get the size of an item
15102         in an array, given an element class.
15103         * aot-compiler.c: do not access class->class_size directly.
15104
15105 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
15106
15107         * mini.h, debug-mini.c: added a debugging function to print
15108         info about local variables and arguments in a jitted method.
15109
15110 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
15111
15112         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
15113
15114         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
15115
15116 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
15117
15118         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
15119         inner and outer loops when passing vtypes.
15120
15121 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
15122
15123         * mini-ppc.c: take into account the cpu errata for cache flushing
15124         which caused some random errors (bug #79381).
15125
15126 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
15127
15128         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
15129         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
15130
15131 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
15132
15133         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
15134         loaded.
15135
15136         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
15137         freebsd ports tree.
15138
15139         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
15140         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
15141
15142         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
15143         displacement.
15144
15145 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
15146
15147         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
15148
15149 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
15150
15151         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
15152         macro does not have to be changed during debugging.
15153
15154         * 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>.
15155
15156         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
15157
15158         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
15159         
15160         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
15161         MONO_ARCH_NO_EMULATE_MUL is defined.
15162
15163         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
15164
15165         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
15166
15167         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
15168
15169         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
15170         
15171 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
15172
15173         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
15174         stuff to mini-exceptions.c where it is used.
15175
15176         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
15177         setup code, the real one is in mini-exceptions.c.
15178
15179         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
15180         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
15181         some changes from the freebsd ports tree.
15182
15183         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
15184         constants.
15185         
15186         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
15187
15188 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
15189
15190         * mini.c: on Linux, check for /proc to be mounted
15191         (bug# 79351, novell bug#201204).
15192
15193 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
15194
15195         * mini.c: handle cases where pthread_attr_getstack() behaves
15196         incorrectly (bug #78096).
15197
15198 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
15199
15200         * mini-arm.c: support larger stack frames (bug #79272).
15201
15202 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
15203
15204         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
15205
15206         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
15207         tokens.
15208
15209         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
15210         mono_class_from_name () to find a class from its name.
15211
15212         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
15213
15214 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
15215
15216         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
15217
15218 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
15219
15220         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
15221
15222 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
15223
15224         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
15225         callinfo->trampoline.
15226
15227         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
15228         fixes #79271.
15229         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
15230         future.
15231
15232 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
15233
15234         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
15235
15236 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
15237
15238         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
15239         stats.method_trampolines, it is already done by the generic trampoline code.
15240
15241         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
15242         
15243 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
15244
15245         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
15246
15247         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
15248
15249         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
15250
15251         * mini.c (print_jit_stats): Print mscorlib mempool size too.
15252         
15253         * mini.c (print_jit_stats): Print new stats.
15254
15255         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
15256
15257 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
15258
15259         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
15260         Address on two dimensional arrays. Fixes #78729.
15261
15262         * mini.h (MonoCompile): Add a 'skip_visibility' field.
15263
15264         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
15265         a method.
15266
15267         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
15268
15269         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
15270         #79130.
15271         
15272         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
15273         a race condition.
15274         (mini_get_ldelema_ins): Ditto.
15275
15276 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
15277
15278         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
15279         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
15280         Fixes #79213.
15281
15282 2006-08-29 Neale Ferguson <neale@sinenomine.net>
15283
15284         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
15285         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
15286
15287         * exceptions-s390x.c: Cosmetic change.
15288
15289         * tramp-s390.c: Fix warning.
15290
15291         * cpu-s390.md: Correct length of mul_imm.
15292
15293 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
15294
15295         * aot-compiler.c: added binary writer with ELF backend
15296         implementation (only on Linux/x86 for now).
15297
15298 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
15299
15300         * Makefile.am: Don't run net 2.0 AOT tests.
15301
15302         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
15303         (mono_compile_assembly): Skip net 2.0 assemblies as well.
15304
15305         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
15306
15307 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
15308
15309         * aot-compiler.c: simplified and refactored the asm-writing code
15310         to allow different backends.
15311
15312 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
15313
15314         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
15315
15316         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
15317         little. Share patches of type TYPE_FROM_HANDLE as well.
15318
15319         * mini.c (mono_patch_info_equal): New helper function.
15320         (mono_patch_info_hash): Ditto.
15321
15322         * aot-compiler.c (emit_method_code): Fix s390 build.
15323
15324         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
15325         is not handled because it is stored as a flag and not as a type ctor. Fixes
15326         #79016.
15327
15328 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
15329
15330         * aot-compiler.c: Fix computation of GOT slot statistics.
15331         
15332         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
15333         Also remove support for not PIC AOT.
15334
15335         * mini.h: Bump AOT file format version.
15336
15337         * objects.cs: Add a test for #78990.
15338
15339         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
15340         (peter.dettman@iinet.net.au). Fixes #79087.
15341
15342         * basic-long.cs: Add a test for the above.
15343
15344 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
15345
15346         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
15347         
15348         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
15349         code somewhat.
15350
15351 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
15352
15353         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
15354         exceptions.
15355
15356 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
15357
15358         * mini.c: Don't verify COM proxy invoke calls
15359         
15360
15361 2006-08-10  Dick Porter  <dick@ximian.com>
15362
15363         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
15364         which process is holding semaphores locked.
15365
15366 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
15367
15368         * mini-ia64.c mini-amd64.c: Fix #79027.
15369
15370         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
15371
15372         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
15373
15374         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
15375         implicit arguments in a vararg call. Fixes #79027.
15376
15377 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
15378
15379         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
15380         (mono_get_array_new_va_signature): Ditto.
15381
15382 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
15383
15384         * aot-runtime.c: Call init_plt lazily.
15385
15386         * inssel-long.brg: Fix unsigned long->int conversion.
15387
15388         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
15389
15390         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
15391         that most data is now in the .rss/.data section.
15392
15393 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
15394
15395         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
15396
15397         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
15398
15399         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
15400
15401         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
15402
15403         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
15404         virtual call. Fixes #79010.
15405
15406         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
15407         and use the result as the this argument in the real call.
15408
15409         * generics.2.cs: Add a new test for #79010.
15410         
15411 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
15412
15413         * mini-x86.c: Fix a warning.
15414
15415         * aot-compiler.c: Add a bunch of statistics.
15416
15417         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
15418
15419 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
15420
15421         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
15422
15423 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
15424
15425         * 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>.
15426
15427 2006-07-13  Miguel de Icaza  <miguel@novell.com>
15428
15429         * mini.c (mono_method_to_ir): Obtain the original method in the
15430         CIL stream and use this to perform validation.
15431
15432         Fixed: #78816
15433
15434 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
15435
15436         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
15437         (mono_arch_call_opcode): Ditto.
15438
15439         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
15440         #78826.
15441
15442         * mini.c (mono_patch_info_dup_mp): New helper function.
15443         
15444         * aot-compiler.c (compile_method): Fix some of the memory allocated during
15445         compilation. Fixes #78827.
15446
15447 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
15448
15449         * declsec.c: Use original security informations for
15450           MONO_WRAPPER_MANAGED_TO_MANAGED.
15451
15452 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
15453
15454         * mini.c: Allow Com Interop methods/classes and
15455         don't verify COM wrapper calls
15456         
15457
15458 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
15459
15460         * inssel-long32.brg: Fix long->i4 checked conversion.
15461
15462         * exceptions.cs: Add a test for the above.
15463
15464 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
15465
15466         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
15467
15468         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
15469         leaks.
15470
15471         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
15472         #78775.
15473
15474 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
15475
15476         * mini.c: Fix solaris/x86 exception handling.
15477
15478         * Makefile.am: Get rid of $(ICU_LIBS).
15479
15480 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
15481
15482         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
15483         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
15484         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
15485
15486         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
15487
15488         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
15489         this function causes a SIGSEGV.
15490
15491 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
15492
15493         * mini.c: Remove unused solaris/x86 includes.
15494
15495 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
15496
15497         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
15498
15499 2006-06-20  Jb Evain  <jbevain@gmail.com>
15500
15501         * cpu-g4.md: fix max length of start_handler instruction.
15502
15503 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
15504         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
15505
15506 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
15507         * ssa.c: Fixed bug 78653 for SSA based deadce.
15508         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
15509         MonoInst.flags, used in SSA based deadce.
15510         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
15511         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
15512
15513 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
15514
15515         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
15516         it can end up using non executable memory on ppc64 systems
15517         running ppc32 userspace (fix from Johannes Berg).
15518
15519 2006-06-14  Dick Porter  <dick@ximian.com>
15520
15521         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
15522         4.1.1
15523
15524 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
15525         * mini.c: Made so that inline is locally disabled if it would
15526         trigger a .cctor, because too many apps depend on this behavior
15527         (which seems to be also the one of the MS CLR).
15528
15529 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
15530
15531         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
15532         No idea why this worked before.
15533
15534         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
15535         which branch to outer exception clauses since they could skip the
15536         inner finally clauses. Fixes #78633.
15537
15538         * exceptions.cs: Add a test for the above.
15539
15540         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
15541         Fixes #78629.
15542
15543         * iltests.il: Add a test for the above.
15544
15545 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
15546
15547         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
15548         after the end of a try bblock, to prevent asserts in mini_method_compile ().
15549
15550         * iltests.il: Add a test for the above.
15551
15552 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
15553
15554         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
15555         
15556         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
15557         methods as instrinsics.
15558
15559 2006-06-09  Wade Berrier <wberrier@novell.com>
15560
15561         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
15562         (simple-cee-ops.h ssapre-mini-ops.h)
15563
15564 2006-06-09  Neale Ferguson <neale@sinenomine.net>
15565
15566         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
15567         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
15568         instruction).
15569         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
15570         * cpu-s390x.md: Fix max. length values for a couple of instructions.
15571
15572 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
15573
15574         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
15575
15576 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
15577
15578         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
15579         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
15580         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
15581         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
15582         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
15583         of opcodes, so that bug 78549 should not happen again.
15584         * ssapre.c: Updated to use the renamed files.
15585
15586 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
15587
15588         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
15589         in OP_ATOMIC_EXCHANGE_I4.
15590
15591 2006-06-07  Wade Berrier <wberrier@novell.com>
15592
15593         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
15594         in mono_debugger_create_notification_function)
15595
15596 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
15597
15598         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
15599         
15600         * mini.c (type_from_stack_type): Disable some changes which do not
15601         seem to work.
15602
15603         * driver.c: Reenable opts.
15604
15605         * mini.h (MonoStackSlot): New structure to keep track of the verification state
15606         of the evaluation stack.
15607         
15608         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
15609         evaluation stack trace at entry to the bblock.
15610
15611         * mini.c (merge_stacks): New function to perform verification of stack merges.
15612         Turned off by default.
15613
15614         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
15615         STACK_MP.
15616         
15617 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
15618
15619         * local-propagation.c: Fixed bug 78549.
15620
15621 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
15622
15623         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
15624
15625 2006-06-02  Miguel de Icaza  <miguel@novell.com>
15626
15627         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
15628         tramp-arm.c, tramp-ia64.c
15629         (mono_debugger_create_notification_function): Update signature to
15630         new signature and use new protocol for creating the notification
15631         function.  
15632
15633         Should fix the build.
15634
15635 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
15636
15637         * exceptions-ppc.c (mono_jit_walk_stack)
15638         (ves_icall_get_frame_info): Fix the build
15639
15640 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
15641
15642         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
15643
15644 2006-05-31  Raja R Harinath  <rharinath@novell.com>
15645
15646         * il2tests.2.il: New file for generics CIL tests.  Add test for
15647         #78019.
15648         * Makefile.am: Update.
15649
15650         Fix #78019
15651         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
15652         to nullable types.
15653
15654 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
15655
15656         * aliasing.c: Fixed bug 78311.
15657
15658 2006-05-29  Martin Baulig  <martin@ximian.com>
15659
15660         * mini-exceptions.c (mono_find_jit_info): When computing the
15661         native offset, check whether we're actually inside the method's
15662         code; call mono_debug_print_stack_frame() to format the frame.
15663         (ves_icall_System_Exception_get_trace): Call
15664         mono_debug_print_stack_frame() to format the stack frame.
15665         (ves_icall_get_trace): Update to the new debugging API.
15666         (mono_jit_walk_stack_from_ctx): Likewise.
15667         (ves_icall_get_frame_info): Likewise.
15668
15669         * mini.c (get_method_from_ip): Use the new debugging API.
15670         (mono_print_method_from_ip): Likewise.
15671
15672         * exceptions-ppc.c
15673         (mono_jit_walk_stack): Use the new debugging API.
15674         (ves_icall_get_frame_info): Likewise.   
15675
15676 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
15677
15678         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
15679
15680 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
15681
15682         * mini.c: Added "limitator" to inline for debugging.
15683
15684 2006-05-24  Martin Baulig  <martin@ximian.com>
15685
15686         * debug-debugger.c (mono_debugger_init): Create a private,
15687         malloc()-based code manager for the notification function and
15688         intentionally leak it on exit.  This fixes the crash-on-exit race
15689         condition.
15690
15691         * tramp-amd64.c
15692         (mono_debugger_create_notification_function): Added
15693         `MonoCodeManager *' argument.
15694
15695         * tramp-x86.c
15696         (mono_debugger_create_notification_function): Added
15697         `MonoCodeManager *' argument.
15698
15699 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
15700
15701         * aliasing.c: Fixed 64 bit issue.
15702         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
15703         default since all known bugs are fixed (one more time!).
15704
15705 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
15706
15707         * mini.c: write barrier support.
15708
15709 2006-05-23  Martin Baulig  <martin@ximian.com>
15710
15711         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
15712         check at the top of the file.
15713
15714 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
15715
15716         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
15717         reverting changes without reason and without changelog entries.
15718
15719 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
15720
15721         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
15722         to a few opcodes. Fixes #78439.
15723
15724         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
15725         consistency with other archs.
15726
15727         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
15728
15729 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
15730
15731         * debug-debugger.c: fix the build.
15732
15733 2006-05-17  Martin Baulig  <martin@ximian.com>
15734
15735         * debug-debugger.c
15736         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
15737         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
15738         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
15739         (debugger_attach): Call GC_mono_debugger_add_all_threads().
15740
15741 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
15742
15743         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
15744
15745 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
15746
15747         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
15748         MONO_TYPE_GENERICINST.
15749         
15750         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
15751         MONO_TYPE_GENERICINST.
15752
15753 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
15754
15755         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
15756         #78325.
15757
15758 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
15759
15760         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
15761         mempool.
15762         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
15763
15764 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
15765
15766         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
15767         mono_trace_cleanup ().
15768
15769         * iltests.il: Fix problem with the newly added test.
15770
15771         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
15772         due to register constraints, free up the previous hreg. Fixes #78314.
15773
15774         * iltests.il: Add new test for #78314.  
15775
15776         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
15777         Interlocked.Add. Fixes #78312.
15778
15779         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
15780         
15781 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
15782
15783         * inssel.brg (mini_emit_virtual_call): Fix a warning.
15784
15785 2006-05-05  Martin Baulig  <martin@ximian.com>
15786
15787         * debug-mini.c (mono_debug_open_block): New method.
15788
15789         * mini-amd64.c
15790         (mono_arch_output_basic_block): Call mono_debug_open_block() at
15791         the beginning of each basic block.
15792
15793         * mini-x86.c
15794         (mono_arch_output_basic_block): Call mono_debug_open_block() at
15795         the beginning of each basic block.
15796
15797 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
15798
15799         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
15800         default until I understand why they break the build on amd64.
15801
15802 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
15803
15804         * mini.c (mini_cleanup): Call mono_cleanup ().
15805
15806         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
15807         errors.
15808
15809 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
15810
15811         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
15812         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
15813         default since all known bugs are fixed, and I cannot reproduce bug
15814         77944... I'm asking Matt Hargett to test again after this commit.
15815
15816 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
15817
15818         * mini-codegen.c: Fixed typo that thrashed inline.
15819
15820 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
15821
15822         * dominators.c (compute_dominators): Avoid using a worklist since
15823         it is not correct in some cases. Instead, iterate over all bblocks as
15824         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
15825
15826 2006-04-28  Miguel de Icaza  <miguel@novell.com>
15827
15828         * mini.c (mono_jit_compile_method_inner): Use
15829         mono_prepare_exception_from_error that resets the value
15830         internally.
15831
15832 2006-04-27  Miguel de Icaza  <miguel@novell.com>
15833
15834         * mini.c: Move the mini_loader_error_to_exception to metadata. 
15835         
15836 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
15837
15838         * aliasing.c: Fixed bug 78210.
15839
15840 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
15841
15842         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
15843         default until all their problems (or the ones they trigger) are fixed.
15844
15845 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
15846
15847         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
15848         
15849         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
15850         as loaded only after resolving patches since that could invoke the same method.
15851
15852         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
15853
15854         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
15855         functions.
15856
15857         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
15858         AOT loader.
15859
15860         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
15861         stack.
15862
15863         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
15864         made from AOT code through the PLT table.
15865
15866         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
15867         holding the plt offset when a call is made to the aot plt trampoline.
15868         
15869 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
15870
15871         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
15872         amd64 AOT support.
15873
15874         * Makefile.am (common_sources): Fix build breakage.
15875
15876         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
15877         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
15878         intra-assembly calls if possible.
15879         
15880         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
15881
15882         * mini-trampolines.c: Handle PLT entries.
15883
15884         * mini.c: Avoid creating a GOT var for calls.
15885
15886         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
15887         from mscorlib code.
15888
15889         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
15890         from mscorlib code.
15891
15892         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
15893         AOT code.       
15894
15895         * mini.h: Bump AOT file format version.
15896         
15897         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
15898         covers more cases.
15899
15900 2006-04-25  Martin Baulig  <martin@ximian.com>
15901
15902         * driver.c: Disable copyprop, consprop and inline when running
15903         inside the debugger.
15904
15905 2006-04-25  Martin Baulig  <martin@ximian.com>
15906
15907         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
15908         with `get_current_thread' and added `detach'.
15909         (MonoDebuggerMetadataInfo): Added `thread_size',
15910         `thread_tid_offset', `thread_stack_ptr_offset' and
15911         `thread_end_stack_offset'.
15912
15913 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
15914
15915         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
15916         aot-runtime.c.
15917
15918         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
15919         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
15920
15921         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
15922
15923         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
15924
15925         * aot.c: Add support for ADJUSTED_IID.  
15926
15927 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
15928
15929         * aot.c (emit_method_order): Don't align method_order_end.
15930
15931         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
15932         the interface ID changes.
15933
15934 2006-04-21  Dick Porter  <dick@ximian.com>
15935
15936         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
15937         cleaning up a thread.  Fixes the new part of bug 77470.
15938
15939 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
15940
15941         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
15942         to managed wrapper.
15943                      
15944 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
15945
15946         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
15947         
15948         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
15949         SIGSEGV. Fixes #78072.
15950
15951         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
15952         unregister our SIGABRT handler.
15953
15954 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
15955
15956         * mini.c: Disabled inline where it can alter the call stack in a
15957         way visible from managed code.
15958         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
15959         default.
15960
15961 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
15962
15963         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
15964         on other platforms. Fixes #78089.
15965
15966 2006-04-13  Martin Baulig  <martin@ximian.com>
15967
15968         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
15969         determine whether we're inside the debugger.
15970
15971         * debug-debugger.h
15972         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
15973
15974 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
15975
15976         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
15977         handler clauses. Fixes #78024.
15978
15979         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
15980         in the CALL_MEMBASE opcodes. Fixes #78088.
15981         (mono_arch_get_vcall_slot_addr): Ditto.
15982
15983 2006-04-10  Martin Baulig  <martin@ximian.com>
15984
15985         * debug-debugger.c: The thread handling code has now been moved
15986         into ../metadata/threads.c.
15987
15988 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
15989
15990         * driver.c (mono_main): Fix --with-gc=none build.
15991
15992         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
15993         (mono_spillvar_offset_float): Ditto.
15994         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
15995         hreg, not when its !global, since on ia64, there is a third category: stacked
15996         registers.      
15997
15998 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
15999
16000         * mini.c: set MonoInst->klass for load field address and a few other
16001         places.
16002
16003 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
16004
16005         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
16006
16007 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
16008
16009         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
16010         the branch opt changes.
16011
16012 2006-04-06  Dick Porter  <dick@ximian.com>
16013
16014         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
16015         
16016         * wapihandles.c (mini_wapi_seminfo): 
16017         * driver.c (mono_main): Add semaphore info option
16018
16019 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
16020
16021         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
16022         branch optimization changes. Fixes #78009.
16023
16024 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
16025
16026         * mini.c: ignore accessibility of methods in managed->native wrappers.
16027
16028 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
16029
16030         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
16031         
16032         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
16033
16034 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
16035
16036         * mini.c: Modify the branch optimizations to preserve the invariant that
16037         the entries inside the in_bb and out_bb arrays are unique.
16038         (mono_unlink_bblock): Avoid creation of new arrays.
16039
16040 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
16041
16042         * mini.c (mono_unlink_bblock): Fix regression caused by previous
16043         change (#77992).
16044
16045 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
16046
16047         * mini.c (optimize_branches): Remove the "optimizations" in
16048         the cbranch1/cbranch2 -> branch cases which were causing several
16049         problems in the past. Fixes #77986.
16050
16051 2006-03-31  Chris Toshok  <toshok@ximian.com>
16052
16053         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
16054         default optimizations :(
16055
16056 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
16057
16058         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
16059         branch.
16060
16061 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
16062
16063         * local-propagation.c: Added comments to structs and removed
16064         "Mono" prefixes from local tree mover types.
16065
16066 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
16067
16068         * Makefile.am (arch_sources): Define this for each architecture so 
16069         libmono_la_SOURCES is defined in one place.
16070
16071 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
16072
16073         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
16074         from handles/.
16075
16076 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
16077
16078         * driver.c: print the GC name supplied by configure.
16079
16080 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
16081
16082         * local-propagation.c: Added tree mover, and moved here all the
16083         local propagation code from mini.c
16084         * mini.c: Added support for treeprop, and moved all the local
16085         propagation code to local-propagation.c
16086         * mini.h: Added support for treeprop
16087         * driver.c: Added support for treeprop, enabled consprop, copyprop,
16088         treeprop, inline and deadce by default
16089         * Makefile.am: Added local-propagation.c
16090
16091 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
16092
16093         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
16094
16095 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
16096
16097         * debug-debugger.c: make it compile without the Boehm GC.
16098
16099 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16100
16101         * mini.c: fixed issue with mismatch when an icall is registered
16102         with multiple names but same address.
16103
16104 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
16105
16106         * declsec.c, mini-exceptions.c: use write barrier to set reference
16107         fields of managed objects.
16108
16109 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
16110
16111         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
16112         (can_access_internals): Fix a warning.
16113
16114         * mini.c (print_method_from_ip): Rename this to 
16115         mono_print_method_from_ip so it gets exported.
16116
16117         * trace.c: Deal with strings inside StringBuilder's containing garbage
16118         and fix memory leaks. Fixes #77848.
16119
16120 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
16121
16122         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
16123         fixes #77787.
16124
16125 2006-03-16 Neale Ferguson <neale@sinenomine.net>
16126         
16127         * mini-s390.c: Remove OP_X86_TEST_NULL.
16128
16129 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
16130
16131         * mini.c: use the correct GetHashCode() for the moving collector.
16132
16133 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
16134
16135         * liveness.c: Regalloc spill cost tuning.
16136
16137 2006-03-15 Neale Ferguson <neale@sinenomine.net>
16138         
16139         * mini-s390x.h: Correct S390_LONG macro.
16140
16141         * mini-s390x.c: Cleanup unused code.
16142
16143 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
16144
16145         * jit-icalls.h: New file.
16146
16147         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
16148         icalls and include that instead of including jit-icalls.c.
16149
16150         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
16151         OP_X86 opcodes.
16152
16153 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
16154
16155         * mini.c: when checking for member accessibility, also check for
16156         friend assemblies and for explicit interface implementations.
16157
16158 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
16159
16160         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
16161
16162         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
16163
16164         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
16165         common cases are done first.    
16166
16167         * mini-ops.h: Only define platform specific opcodes on the given platform.
16168
16169         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
16170         branch.
16171         
16172 2006-03-14  Martin Baulig  <martin@ximian.com>
16173
16174         Revert Paolo's change from r57348:
16175
16176         * mini.h: don't use gboolean for bitfields.
16177         * mini.c: verifier changes for fields and methods accessibility.
16178
16179 2006-03-13  Neale Ferguson <neale@sinenomine.net>
16180
16181         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
16182
16183         * mini-s390x.c: Fix conv_r_un.
16184
16185         * cpu-s390, cpu-s390x.md: Fix lengths.
16186
16187 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
16188
16189         * mini.c: nested types have access to all the nesting
16190         levels, not just the enclosing types.
16191
16192 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16193
16194         * mini.c: added a few more verification checks.
16195
16196 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
16197
16198         * liveness.c: Merge optimizations from the linear-il branch.
16199
16200 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
16201
16202         * mini-ia64.c (emit_call): Add a comment.
16203
16204         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
16205
16206         * tramp-ia64.c: Fix some warnings.
16207
16208 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
16209
16210         * mini.h: don't use gboolean for bitfields.
16211         * mini.c: verifier changes for fields and methods accessibility.
16212
16213 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
16214
16215         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
16216         lazy icall wrapper changes.
16217
16218         * dominators.c: Replace all the dominator algorithms with faster
16219         ones from the linear-il branch.
16220
16221         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
16222         the mempool.
16223
16224         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
16225         common cases are done first.
16226
16227         * mini-amd64.c: Fix some warnings.
16228
16229         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
16230         from the mempool.
16231
16232         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
16233         added code.
16234
16235         * mini.h: Add a missing prototype.
16236
16237 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
16238
16239         * mini.c: Compile icall wrappers lazily.
16240
16241         * mini-codegen.c: Use printf instead of g_print since its much faster.
16242
16243         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
16244         function.
16245
16246         * mini.c (optimize_branches): Cache the negative result from 
16247         remove_block_if_useless ().
16248
16249         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
16250         Also fix some bblock linking issues.
16251
16252         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
16253         assembly files.
16254
16255         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
16256
16257         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
16258         accessed fields first, for better cache behavior.
16259         
16260 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16261
16262         * mini.c: speedup IList<T> array accesses.
16263
16264 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
16265
16266         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
16267         inline_costs counter. Fixes #77190.
16268
16269 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
16270
16271         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
16272         trace messages. Fixes #77706.
16273
16274 2006-03-04  Martin Baulig  <martin@ximian.com>
16275
16276         * tramp-amd64.c, tramp-x86.c
16277         (mono_debugger_create_notification_function): Use
16278         mono_global_codeman_reserve() to allocate a buffer at runtime and
16279         return it.
16280
16281         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
16282
16283         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
16284         notification function at runtime and then call `initialize' in the
16285         `MONO_DEBUGGER__debugger_info' vtable.
16286
16287 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
16288
16289         * iltests.il: Fix a visibility problem.
16290
16291 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
16292
16293         * driver.c, mini.c: add hooks for the counters API.
16294
16295 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
16296
16297         * driver.c: show disabled options.
16298
16299 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16300
16301         * linear-scan.c: always use cost-driven selection.
16302
16303 2006-02-28  Raja R Harinath  <rharinath@novell.com>
16304
16305         * jit-icalls.c (helper_compile_generic_method): Revert change from
16306         2006-02-24.
16307
16308 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
16309
16310         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
16311
16312 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
16313
16314         * inssel.brg: style fixes, mostly to force the updated monoburg
16315         to run for people using svn.
16316
16317 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
16318
16319         * mini.c: match monoburg changes.
16320
16321 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16322
16323         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
16324         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
16325         declaration in the header file.
16326
16327 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
16328
16329         * helpers.c: reduce relocations and mem usage.
16330
16331 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
16332
16333         * mini.h, mini-codegen.c: disable logging features if
16334         requested by configure.
16335
16336 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
16337
16338         * mini.c: tiny verifier changes.
16339
16340 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
16341
16342         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
16343         cpu-pentium.md: stack alignment changes for osx/x86,
16344         partially from Geoff Norton <gnorton@customerdna.com>.
16345
16346 2006-02-24  Raja R Harinath  <harinath@gmail.com>
16347
16348         * jit-icalls.c (helper_compile_generic_method): Update to changes
16349         in metadata/class.c.
16350
16351 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
16352         
16353         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
16354         
16355         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
16356         interface calls with large offsets.
16357
16358 2006-02-23  Raja R Harinath  <rharinath@novell.com>
16359
16360         * jit-icalls.c (helper_compile_generic_method): Document the
16361         special-case we depend on so that we can inflate the method twice
16362         with the same context with no bad side-effects.
16363
16364 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
16365
16366         * mini-x86.c, mini-amd64.c: fix for case when xen support
16367         is disabled.
16368
16369 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
16370
16371         * mini-x86.c, mini-amd64.c: generate code to access tls items
16372         in a faster way for Xen systems.
16373
16374 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
16375
16376         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
16377         updates and compilation fixes for the OSX/x86 port, mostly from
16378         Geoff Norton <gnorton@customerdna.com>.
16379
16380 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16381
16382         * inssel.brg: faster interface call implementation
16383         to sync with the interface_offsets MonoVTable changes.
16384
16385 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
16386
16387         * mini.c: more verification checks.
16388
16389 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
16390
16391         * mini.c: added a few more verification checks.
16392
16393 2006-02-17      Neale Ferguson <neale@sinenomine.net>
16394
16395         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
16396         facility on the processor and use it if available.
16397
16398 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
16399
16400         * driver.c, aot.c, mini.c: throw exception if the IL code is
16401         invalid or unverifiable.
16402
16403 2006-02-17  Raja R Harinath  <rharinath@novell.com>
16404
16405         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
16406         m.StructField.
16407
16408 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
16409
16410         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
16411
16412 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16413
16414         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
16415         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
16416         handling of instantiated generic valuetypes.
16417
16418 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
16419
16420         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
16421         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
16422         instead.
16423
16424         * generics.2.cs: Revert the nullable reftypes tests.
16425
16426 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
16427
16428         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
16429         using __builtin_frame_address (1) as it doesn't work in the presence
16430         of optimizations. Hopefully fixes #77273.
16431
16432         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
16433         -> generics.cs change as it doesn't work with some automake versions.
16434
16435 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16436
16437         * mini.c: handle systems that sue a different way to
16438         retrieve the stack address of the current thread.
16439
16440 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
16441
16442         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
16443         it specially in the makefile.
16444
16445         * generics.2.cs: Add tests for nullable reference types.
16446
16447 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16448
16449         * mini.c: always handle the case when mono_jit_init()
16450         is called in a thread different from the main thread,
16451         confusing libgc (bug #77309).
16452
16453 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
16454
16455         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
16456
16457 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16458
16459         * mini.c: change optimize_branches () to use a single loop
16460         and introduce a new optimization to simplify some range checks.
16461
16462 2006-02-03  Martin Baulig  <martin@ximian.com>
16463
16464         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
16465         and merged with debugger_thread_manager_add_thread().
16466         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
16467         inform the debugger about the main thread.
16468
16469 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
16470
16471         * basic.cs: Add test for div.un/rem.un constant folding.
16472
16473 2006-02-03  Neale Ferguson <neale@sinenomine.net>
16474
16475         * cpu-s390x.md: correct int_xor_imm length
16476
16477 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
16478
16479         * generics.2.cs: New test for #77442.
16480
16481         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
16482         #77442.
16483
16484 2006-02-02  Martin Baulig  <martin@ximian.com>
16485
16486         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
16487         <mono/metadata/mono-debug-debugger.h>   
16488
16489         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
16490
16491 2006-02-02  Martin Baulig  <martin@ximian.com>
16492
16493         * debug-debugger.h: New header file for debug-debugger.c.
16494
16495         * debug-debugger.c: Big API cleanup; don't run the managed Main()
16496         function is a separate thread anymore; add support for attaching.
16497
16498 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
16499
16500         * tramp-x86.c: Fix a warning.
16501
16502 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
16503
16504         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
16505         on very large methods.
16506
16507         * aot.c (load_patch_info): Fix a warning.
16508
16509 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
16510
16511         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
16512         mini-ops.h: alu membase optimizations.
16513
16514 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
16515
16516         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
16517         to speedup StringBuilder.
16518
16519 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
16520
16521         * dominators.c (mono_compute_natural_loops): Fix detection of
16522         loop body start blocks.
16523
16524         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
16525
16526 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
16527
16528         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
16529         #75145.
16530
16531 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
16532
16533         * aliasing.c: Fixed aliasing issue on 64 bit archs.
16534
16535 2006-01-25  Martin Baulig  <martin@ximian.com>
16536
16537         * debug-debugger.c: Moved the `MonoDebuggerManager' and
16538         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
16539         started to cleanup this file a little bit.
16540
16541 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
16542
16543         * mini.c: optimize a codepath frequently happening in generics code.
16544
16545 2006-01-23  Martin Baulig  <martin@ximian.com>
16546
16547         * Makefile.am: Only compile debug-debugger.c on supported platforms.
16548
16549         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
16550         functions directly.
16551
16552         * driver.c: debug-debugger.c is only available if
16553         `MONO_DEBUGGER_SUPPORTED' is defined.   
16554
16555 2006-01-23  Martin Baulig  <martin@ximian.com>
16556
16557         * debug-debugger.c: Only enable this on platforms where the Mono
16558         Debugger is working (x86 and x86_64).
16559
16560 2006-01-21  Martin Baulig  <martin@ximian.com>
16561
16562         The Mono Debugger is now using the normal `mono' instead of the
16563         `mono-debugger-mini-wrapper' when executing managed code.
16564
16565         * debug-debugger.c: New file; previously known as
16566         debugger/wrapper/wrapper.c.
16567
16568         * debug-mini.c (mono_init_debugger): Removed.
16569
16570         * driver.c (mono_main): Added new `--inside-mdb' command line
16571         argument which is used when running inside the debugger.
16572
16573 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
16574
16575         * liveness.c (mono_analyze_liveness): Remove some unused data
16576         structures.
16577
16578 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
16579
16580         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
16581
16582 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
16583
16584         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
16585         depends on implementation details of monobitset.
16586
16587         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
16588         Fixes #77271.
16589
16590 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
16591
16592         * liveness.c: Update after monobitset changes.
16593
16594 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
16595
16596         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
16597
16598 2006-01-11 Neale Ferguson <neale@sinenomine.net>
16599
16600         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
16601
16602         * mini-s390x.c: Remove warning messages.
16603
16604 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
16605
16606         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
16607
16608 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
16609
16610         * generics.2.cs: Add ldelem/stelem_any test.
16611
16612 2006-01-10 Neale Ferguson <neale@sinenomine.net>
16613
16614         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
16615
16616 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
16617
16618         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
16619         
16620 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
16621
16622         * generics.2.cs: Reenable vtype tests.
16623
16624         * inssel-x86.brg: Remove an icorrect valuetype rule.
16625
16626 2006-01-06 Neale Ferguson <neale@sinenomine.net>
16627
16628         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
16629         initial support for OP_ABS.
16630
16631 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16632
16633         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
16634
16635 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16636
16637         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
16638         conversion and implement LADD/LSUB.
16639
16640         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
16641         architectures.
16642
16643 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16644
16645         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
16646
16647         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
16648         architectures.
16649
16650 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16651
16652         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
16653         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
16654         (stack walk problem).
16655
16656 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
16657
16658         * aot.c (mono_aot_load_method): Fix a warning.
16659
16660 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16661
16662         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
16663
16664 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
16665
16666         * iltests.il: Add test for #77148.
16667
16668         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
16669         #77148.
16670
16671 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16672
16673         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
16674
16675 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16676
16677         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
16678         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
16679
16680         * basic-long.cs: Add lconv-to-r4/r8 tests.
16681
16682 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
16683
16684         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
16685
16686         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
16687         here as on other archs.
16688
16689 2005-12-29 Neale Ferguson <neale@sinenomine.net>
16690
16691         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
16692
16693 2005-12-29 Neale Ferguson <neale@sinenomine.net>
16694
16695         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
16696         
16697         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
16698
16699         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
16700         instrument_prolog; Add memory_barrier instruction.
16701
16702 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
16703
16704         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
16705
16706 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
16707
16708         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
16709
16710         * aliasing.c inssel.brg: Fix warnings.
16711
16712         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
16713         could skip initialization of some parts of memory.
16714
16715         * mini.c mini-ia64.c: Fix warnings.
16716
16717         * inssel-sparc.brg: Add an implementation of lneg which actually works.
16718
16719 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
16720
16721         * aliasing.c (mono_build_aliasing_information): Add a workaround for
16722         a crash seen on sparc.
16723
16724         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
16725         
16726         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
16727
16728 2005-12-21 Neale Ferguson <neale@sinenomine.net>
16729
16730         * mini-ops.h: Add s390_backchain instruction
16731
16732         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
16733
16734         * cpu-s390.md: Add s390_backchain instruction
16735
16736         * mini-s390.c: Significant ABI changes
16737
16738         * mini-s390.h: Cater for zero length structures
16739
16740 2005-12-20 Neale Ferguson <neale@sinenomine.net>
16741
16742         * mini-s390.c: ABI fixes
16743
16744         * inssel-s390.brg: Remove debug statements
16745
16746         * cpu-s390.md: Fix length of ATOMIC_xx operations
16747
16748 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
16749
16750         * basic-float.cs: Add float<->long conversion tests.
16751
16752 2005-12-16 Neale Ferguson <neale@sinenomine.net>
16753
16754         * mini-s390.c: Fix LOCALLOC processing.
16755
16756         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
16757
16758 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
16759
16760         * iltests.il: Add tests for some opcodes not covered by the other
16761         tests.
16762
16763 2005-12-15 Neale Ferguson <neale@sinenomine.net>
16764
16765         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
16766         register loading for Tail processing; Correct trace output.
16767
16768         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
16769
16770         * cpu-s390.md: Correct size of jmp instruction. 
16771
16772 2005-12-13 Neale Ferguson <neale@sinenomine.net>
16773
16774         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
16775
16776 2005-12-13 Neale Ferguson <neale@sinenomine.net>
16777
16778         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
16779           Bring s390 up to current level.
16780
16781 2005-12-12  Zltan Varga  <vargaz@gmail.com>
16782
16783         * generics.2.cs: Disable the newly added tests as they do not work yet.
16784         
16785         * generics.2.cs: Add valuetype tests.
16786
16787 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
16788
16789         * basic-long.cs: Add i4->u8 test.
16790
16791         * objects.cs: Add tests for JIT intrinsic.
16792
16793         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
16794         optimizations lost by a mistake.
16795
16796 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
16797
16798         * basic-long.cs: Remove a test moved to objects.cs.
16799
16800         * arrays.cs: Add more array tests.
16801
16802 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
16803
16804         * arrays.cs: Add new tests for multi-dimensional arrays.
16805
16806 2005-12-06  Raja R Harinath  <rharinath@novell.com>
16807
16808         * Makefile.am (test_sources2): Add generics.2.cs.
16809         (EXTRA_DIST): Add test_sources2.
16810
16811 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
16812
16813         Support for boxing and unboxing nullable types as well as the
16814         isinst operation on nullables, per the CLI ammendment.
16815
16816         * inssel.brg (CEE_ISINST): Special case for nullable
16817
16818         * mini.c (handle_unbox_nullable): new method
16819         (handle_box): Special case for nullable types
16820         (mono_method_to_ir): Call handle_unbox_nullable in correct
16821         places.
16822
16823         * generics.2.cs: New test suite
16824
16825         * Makefile.am: Support for regression tests with generics.
16826
16827 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
16828
16829         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
16830         allocated to registers. Fixes #76800.
16831
16832 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
16833
16834         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
16835
16836 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
16837
16838         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
16839         of platforms.
16840
16841 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
16842
16843         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
16844         objects.cs.
16845
16846         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
16847         
16848         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
16849 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
16850
16851         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
16852         single precision before storing to a single precision location.
16853
16854 2005-11-28  Raja R Harinath  <rharinath@novell.com>
16855
16856         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
16857
16858 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
16859
16860         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
16861         correct files.
16862
16863         * basic.cs: Remove test_0_byte_compares test which was moved to
16864         objects.cs a long time ago.
16865
16866 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
16867
16868         * aliasing.c: Fixed aliasing issue on 64 bit archs.
16869
16870 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
16871
16872         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
16873         handlers are called.
16874
16875         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
16876         throwing code.
16877
16878          * mini-ia64.c: Add support for the throw->branch exception 
16879         optimization.   
16880
16881         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
16882
16883 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
16884
16885         * mini.c: Enabled "fastpath" deadce :-)
16886         
16887 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
16888
16889         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
16890         alias analysis pass to support it.
16891         * mini.h: Likewise.
16892         * ssa.c: Likewise.
16893         * liveness.c: Likewise (liveness computation can use aliasing
16894         information to be more accurate).
16895         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
16896         moreover made so that "--compile-all" uses the given optimization
16897         flags and not the default ones.
16898         * aliasing.c: Alias analysis (new file).
16899         * aliasing.h: Likewise.
16900         * Makefile.am: added "aliasing.c" and "aliasing.h".
16901         
16902 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
16903
16904         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
16905         OP_L opcodes.
16906
16907 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
16908
16909         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
16910         fp >= end_of_stack exit condition, as it is not needed, and it might
16911         become true for fp eliminated frames.
16912
16913 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
16914
16915         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
16916         coded offsets.
16917
16918 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
16919
16920         * mini-arm.c: fixed alignment of doubles/longs to match
16921         the C ABI (bug #76635).
16922
16923 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
16924
16925         * aot.c: fix compilation with --enable-minimal=aot.
16926
16927 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
16928
16929         * mini-arm.c: fixed compatibility with the new
16930         floating point emulator package for compares.
16931
16932 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
16933
16934         * mini.c : reverted sig->pinvoke changes (r51396-51397).
16935
16936 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
16937
16938         * mini-exceptions.c (print_stack_frame): Output to stderr.
16939         (mono_handle_native_sigsegv): Ditto.
16940
16941 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
16942
16943         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
16944         OP_LCONV_TO_OVF_I implementation.
16945
16946         * mini-amd64.c: Add support for the throw->branch exception 
16947         optimization.
16948
16949         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
16950         when the catch clause catches a more general exception, i.e. Object.
16951
16952 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
16953
16954         * cpu-ia64.md: Remove unused opcodes.
16955
16956         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
16957         specific defines for architectures defining USE_SIGACTION.
16958
16959         * mini-ia64.c: Fix some warnings.
16960
16961         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
16962         version seemed to skip a frame.
16963
16964 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
16965
16966         * mini.c: Clean up the usage of sig->pinvoke flag. Now
16967         only calls which are made to native code use this flag.
16968
16969 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
16970
16971         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
16972         varargs methods as well.
16973         
16974         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
16975         which have save_lmf set. Reorganize methods prologs a bit.
16976
16977         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
16978         debugger to the proper place.
16979
16980 2005-10-29  Martin Baulig  <martin@ximian.com>
16981
16982         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
16983         when running inside the debugger until the debugger has support
16984         for it.
16985
16986 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
16987
16988         * mini.h: Fix a warning.
16989
16990 2005-10-24  Miguel de Icaza  <miguel@novell.com>
16991
16992         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
16993         we expose publicly, this returns the string.
16994
16995 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
16996
16997         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
16998         with fp elimination.
16999
17000 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
17001
17002         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
17003         native stacktrace using the glibc 'backtrace' function if available.
17004
17005 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
17006
17007         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
17008
17009         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
17010         handle SIGSEGVs received while in native code.
17011
17012         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
17013         code, call mono_handle_native_sigsegv which will abort the runtime
17014         after printing some diagnostics, instead of converting it into a
17015         confusing NullReferenceException.
17016
17017 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
17018
17019         * cpu-pentium.md: Remove unused opcodes.
17020
17021 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
17022
17023         * mini-amd64.h (MonoLMF): Add rsp field.
17024
17025         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
17026         the lmf too.
17027
17028 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
17029
17030         * mini-codegen.c (get_register_spilling): Fix some warnings.
17031
17032 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
17033
17034         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
17035         elimination during exception handling. Enable fp elimination by
17036         default.
17037
17038         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
17039         elimination.
17040
17041 2005-10-16  Martin Baulig  <martin@ximian.com>
17042
17043         * mini-exceptions.c
17044         (mono_debugger_run_finally): New public method for the debugger.
17045
17046 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
17047
17048         * debug-mini.c (mono_debug_init_method): Fix warning.
17049
17050         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
17051         the 'exname' parameter const to fix some warnings.
17052
17053 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
17054
17055         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
17056         introduced by the previous patch.
17057
17058 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
17059
17060         * basic-float.cs: Add test for precision of float arithmetic.
17061
17062         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
17063         when loading/storing single values from/to memory.
17064
17065         * mini.c (mono_jit_compile_method_with_opt): Create the function
17066         pointers in the correct domain.
17067
17068 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
17069
17070         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
17071         introduced by previous patch.
17072         
17073         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
17074         when out_filter_idx is NULL.
17075
17076         * mini-exceptions.c: Don't run filter clauses twice during exception
17077         handling. Fixes #75755.
17078
17079 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
17080
17081         * aot.c: Add support for ldflda wrappers.
17082
17083         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
17084         #75902.
17085
17086 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
17087
17088         * mini.c, mini.h: do not consider exception handlers blocks when
17089         setting up interface variables.
17090
17091 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
17092
17093         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
17094
17095 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
17096
17097         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
17098         causes a regression.
17099
17100         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
17101
17102 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
17103
17104         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
17105         of the OP_P definitions.
17106
17107         * TODO: Add a proposal for dealing with the CEE/OP mess.
17108
17109         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
17110         optimizations from the x86 port.
17111
17112         * cpu-amd64.md: Ditto.
17113
17114         * basic.cs basic-long.cs: Add tests.
17115
17116 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
17117
17118         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
17119         Patrik Torstensson's implementation of my exception-handling
17120         optimization idea, when the exception object is not used
17121         (bug #62150).
17122
17123 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
17124
17125         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
17126         of the mul_imm optimizations from the old jit.
17127
17128 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
17129
17130         * mini.c, liveness.c: patch by Patrik Torstensson and
17131         Zoltan Varga to improve performance in methods with
17132         exception clauses.
17133
17134 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
17135
17136         * driver.c: Remove 'Globalization' entry from --version.
17137
17138 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
17139
17140         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
17141         there is a profiler interested in JIT events.
17142
17143         * aot.c: Load profile files produced by the AOT profiling module, and
17144         reorder methods based on the profiling info. Add a 'method_order' table
17145         to the AOT file to make mono_aot_find_jit_info work with the reordered
17146         methods.
17147
17148         * mini.h: Bump AOT file version info.
17149
17150 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
17151
17152         * mini-arm.h: work around what looks like a gcc bug when optimizations
17153         are enabled.
17154
17155 2005-09-28  Raja R Harinath  <rharinath@novell.com>
17156
17157         * Makefile.am (AM_CFLAGS): Don't use += to append inside
17158         conditionals.  Use ...
17159         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
17160
17161 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
17162
17163         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
17164         to determine the amount of memory to copy when passing valuetypes.
17165
17166         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
17167         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
17168
17169 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
17170
17171         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
17172         information about aot.
17173
17174 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
17175
17176         * *.c: Replace the use of {Enter,Leave}CriticalSection with
17177         macros. This will allow a deadlock debugger to easily be plugged
17178         in.
17179
17180 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
17181
17182         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
17183
17184 2005-09-27  Raja R Harinath  <rharinath@novell.com>
17185
17186         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
17187         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
17188         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
17189         ($(arch_built)) [CROSS_COMPILING]: Error out.
17190
17191 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
17192
17193         * aot.c: Add support for the no_special_static flag for classes.
17194
17195 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
17196
17197         * Reapply reverted patches.
17198
17199         * *: Revert r50174 as well.
17200
17201         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
17202
17203 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
17204
17205         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
17206
17207 2005-09-23  Miguel de Icaza  <miguel@novell.com>
17208
17209         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
17210         part of the SIG_HANDLER_SIGNATURE.  
17211
17212 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
17213
17214         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
17215         statistics.
17216
17217         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
17218         introduced by previous patch.
17219
17220 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
17221
17222         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
17223         saved registers too.
17224
17225         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
17226         upon the information returned by get_call_info ().
17227         
17228         * mini-x86.c (add_float): Fix stack size calculation.
17229         (mono_arch_call_opcode): Rewrite this so it works based up the
17230         information returned by get_call_info ().
17231         (mono_arch_get_this_vret_args): Ditto.
17232
17233 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
17234
17235         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
17236         in cinfo to determine the registers which need to be used.
17237
17238 2005-09-20  Miguel de Icaza  <miguel@novell.com>
17239
17240         * driver.c (mono_main): Add --server and --desktop flags. 
17241
17242 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
17243
17244         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
17245         registers as global registers.
17246
17247         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
17248         longer needed with the new register allocator.
17249
17250         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
17251
17252         * cpu-ia64.md: Remove unused opcodes.
17253         
17254         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
17255         
17256 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
17257
17258         * cpu-amd64.md: Remove unused opcodes.
17259
17260         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
17261         needed with the new register allocator.
17262
17263         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
17264         reg-reg moves.
17265
17266 2005-09-16  Raja R Harinath  <rharinath@novell.com>
17267
17268         * Makefile.am (check-local): Don't invoke semdel-wrapper.
17269
17270 2005-09-16  Martin Baulig  <martin@ximian.com>
17271
17272         * exceptions-amd64.c
17273         (throw_exception): Don't call mono_debugger_throw_exception() if
17274         we're a rethrow - see the FIXME in the code.
17275
17276 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
17277
17278         * mini.c (mono_init_exceptions): This only works on some architectures.
17279         
17280 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
17281
17282         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
17283         on ia64.
17284
17285         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
17286
17287         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
17288         now in mini-exceptions.c.
17289
17290 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
17291
17292         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
17293         now in mini-exceptions.c.
17294
17295 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
17296
17297         * exceptions-x86.c: Applied patch from Patrik Torstensson 
17298         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
17299
17300         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
17301         code into mini-exceptions.c. Add some assertions to it.
17302
17303 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
17304
17305         * aot.c (emit_section_change): Applied patch from "The Software Team" 
17306         (<software@solmersa.com>). Fix as errors on windows.
17307
17308 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
17309
17310         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
17311         method info into the LMF.
17312
17313 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
17314         
17315         * mini-ia64.c: Add proper unwind info for method epilogs.
17316
17317         * exceptions-ia64.c: Add some code to help debugging.
17318         
17319         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
17320
17321         * mini-exceptions.c: Fix warning.
17322
17323 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
17324
17325         * mini.c: Really fix build.
17326
17327         * mini-x86.c mini-amd64.c: Fix build.
17328
17329 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
17330
17331         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
17332
17333         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
17334         some Interlocked methods as intrinsics.
17335
17336         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
17337         for Thread methods as well.
17338
17339         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
17340
17341         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
17342
17343         * mini-ia64.c mini-x86.c mini-amd64.c 
17344         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
17345         OP_MEMORY_BARRIER.
17346         
17347         * mini.c (mono_init_exceptions): Fix build breakage.
17348
17349 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
17350
17351         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
17352         of instructions. Use the new ia64_unw_op macros for emitting unwind
17353         info.
17354
17355         * mini.c (mono_init_exceptions): Initialize exception handling
17356         related trampolines at startup.
17357
17358 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
17359
17360         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
17361
17362 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
17363
17364         * mini.c: Handle type loading errors gracefully during compilation and
17365         throw the appropriate exception.
17366
17367 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
17368
17369         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
17370         for the mono binary.
17371
17372 2005-09-09  Martin Baulig  <martin@ximian.com>
17373
17374         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
17375         the release.
17376
17377 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
17378
17379         * mini-arm.h: use emulation for conv.r.un for the release.
17380
17381 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
17382
17383         * mini-arm.c, objects.cs: more fixes and tests for them.
17384
17385 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
17386
17387         * mini-arm.c: align structures to at least 4 bytes to be able
17388         to keep our current optimized memcpy.
17389
17390 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
17391
17392         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
17393
17394 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17395
17396         * mini.c: ignore SIGPIPE.
17397
17398 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
17399
17400         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
17401
17402         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
17403
17404 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
17405
17406         * mini.h: Add prototype for mono_allocate_stack_slots_full.
17407
17408 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
17409
17410         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
17411         exception handling support.
17412         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
17413         patch by Brian Koropoff <briank@marakicorp.com>).
17414
17415 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
17416
17417         * mini.c: revert another 'optimization' which breaks when
17418         items on the eval stack need to be saved at a basic block end
17419         (bug #75940).
17420
17421 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
17422
17423         * jit-icalls.c: for arrays, ensure we always provide
17424         lower bounds.
17425
17426 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
17427
17428         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
17429         
17430         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
17431
17432 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
17433
17434         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
17435         arguments in their original register.
17436
17437 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
17438
17439         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
17440         memset/memcpy.
17441
17442         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
17443         when ssapre is enabled.
17444
17445         * inssel-long.brg: Fix bug in previous patch.
17446
17447         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
17448         multiplication by a constant.
17449
17450 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
17451
17452         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
17453         icc.
17454
17455         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
17456         saving registers.
17457
17458 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
17459
17460         * inssel-arm.brg: apply changes tested by Brian Koropoff
17461         <briank@marakicorp.com>.
17462
17463 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
17464
17465         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
17466         
17467 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
17468
17469         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
17470         to the same register if dreg is just a base register.
17471         (print_ins): Improve printing of membase opcodes.
17472
17473         * inssel-x86.brg: Add optimized ldind(reg) rules.
17474
17475         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
17476
17477 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
17478
17479         * mini.c: when running under valgrind, set the stack bottom for
17480         the GC at the actual approximate stack for the app (fixes running
17481         mono with valgrind).
17482
17483 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
17484
17485         * mini.c: do no break at the first valuetype to init found
17486         (fixes bug #75791).
17487
17488 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
17489
17490         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
17491
17492 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
17493
17494         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
17495
17496 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
17497
17498         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
17499
17500 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17501
17502         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
17503
17504         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
17505         code.
17506
17507         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
17508         code.
17509
17510         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
17511         methods.
17512
17513 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
17514
17515         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
17516
17517 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17518
17519         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
17520         in the tail recursion optimization.
17521
17522         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
17523         debug info into the assembly file.
17524
17525         * iltests.il: Add test for filter regions.
17526
17527         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
17528         initial stack of filter regions. Fixes #75755.
17529
17530 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
17531
17532         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
17533         stack requirements.
17534
17535 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17536
17537         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
17538         the check for an already compiled method on non-ia64 platforms.
17539         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
17540         proper domain.
17541
17542         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
17543
17544         * inssel-x86.brg: Add some optimized call rules.
17545
17546 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
17547
17548         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
17549         method here.
17550
17551         * mini.h mini-trampolines.c: Pass the trampoline argument to 
17552         mono_arch_patch_delegate_trampoline.
17553
17554         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
17555
17556         * mini-trampolines.c: Fix build.
17557
17558         * mini-amd64.h: Add delegate trampolines.
17559
17560         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
17561
17562         * inssel-amd64.brg: Add optimized call rules.
17563         
17564         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
17565
17566         * inssel-ia64.brg: Add optimized ldind(reg) rules.
17567
17568 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
17569
17570         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
17571         change.
17572
17573         * mini-ia64.c: Remove LMF fixmes.
17574
17575         * mini-ia64.h: Remove most fields from LMF.
17576
17577         * inssel-ia64.brg (stmt): Fix unaligned access errors.
17578
17579         * mini-trampolines.c: Add support for IA64 function descriptors.
17580
17581         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
17582         for IA64 function descriptors.
17583
17584 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
17585
17586         * tramp-arm.c: patch the vtable for virtual calls. Added
17587         support code to register/unregister the LMF.
17588         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
17589         more LMF work.
17590
17591 2005-08-19  Dick Porter  <dick@ximian.com>
17592
17593         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
17594         bit value if needed.
17595
17596 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
17597
17598         * mini.c (mini_get_method): Move handling of wrapper data here.
17599
17600         * mini.c (mono_method_to_ir): Add support for dynamic methods.
17601
17602         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
17603         virtual.
17604
17605         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
17606         bblock->code does not remain empty.
17607
17608 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
17609
17610         * arrays.cs: Add regression test for #75832.
17611
17612         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
17613         rules. Fixes #75832.
17614
17615         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
17616         instruction scheduling.
17617
17618 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
17619
17620         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
17621
17622 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
17623
17624         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
17625
17626         * mini-codegen.c: Fix VC build.
17627
17628         * cpu-pentium.md: Increase length of atomic_exhange_i4.
17629
17630 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17631
17632         * mini.h: fix signature for mono_register_opcode_emulation.
17633
17634 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
17635
17636         * mini.c: Get rid of most of the helper_sig_... constants using
17637         mono_create_icall_signature ().
17638
17639 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
17640
17641         * jit-icalls.c (helper_ldstr): New helper function.
17642
17643         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
17644
17645         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
17646         throw, load the string using a helper call instead of creating a string object.
17647
17648         * aot.c: Update after LDSTR changes.
17649
17650         * mini.h: Bump AOT file version.
17651         
17652         * aot.c: Save class size info into the AOT file. Print more statistics during
17653         compilation.
17654
17655         * mini.h: Bump AOT file version.
17656
17657         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
17658         ordering of disasm cases. Fixes #74957.
17659
17660 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
17661
17662         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
17663         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
17664         the generic code needed for the ARM port.
17665
17666 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
17667
17668         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
17669         inssel-arm.brg: more ARM features and fixes.
17670
17671 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
17672
17673         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
17674         ARM port work in progress.
17675
17676 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
17677
17678         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
17679
17680         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
17681
17682         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
17683
17684         * inssel.brg (mini_emit_memset): Add support for unaligned access.
17685
17686         * *-ia64.*: Ongoing IA64 work.
17687         
17688         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
17689
17690 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
17691
17692         * TODO: Remove out-of-data todo stuff.
17693
17694         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
17695         dead code.
17696
17697         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
17698
17699         * mini.h: Bump corlib version.
17700
17701 2005-07-27  Martin Baulig  <martin@ximian.com>
17702
17703         * mini-codegen.c
17704         (create_copy_ins): Added `const unsigned char *ip' argument; set
17705         `copy->cil_code' from it.
17706
17707 2005-07-27  Martin Baulig  <martin@ximian.com>
17708
17709         * mini-exceptions.c (mono_handle_exception): Don't call
17710         mono_debugger_handle_exception() for filters.
17711
17712 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
17713
17714         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
17715         as well.
17716
17717 2005-07-26  Martin Baulig  <martin@ximian.com>
17718
17719         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
17720
17721         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
17722         helper_compile_generic_method() if the method is actually virtual
17723         and non-final.
17724
17725 2005-07-26  Martin Baulig  <martin@ximian.com>
17726
17727         * mini.c
17728         (trampoline_code): Renamed to `mono_trampoline_code' and made it
17729         public; this is now accessed directly by the debugger.
17730         (mono_generic_trampoline_code): Removed.
17731
17732         * debug-mini.c
17733         (mono_debug_init_method): Also add interncalls and wrappers.
17734
17735 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
17736
17737         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
17738
17739 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
17740
17741         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
17742
17743 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
17744
17745         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
17746
17747 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
17748
17749         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
17750         getting TLS offsets on AMD64 too.
17751
17752 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
17753
17754         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
17755
17756 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
17757
17758         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
17759         inssel-arm.brg, mini-arm.h: ARM port work in progress.
17760
17761 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
17762
17763         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
17764
17765         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
17766         to mini.c.
17767
17768         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
17769         mono_sparc_is_virtual_call ().
17770         
17771         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
17772
17773         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
17774         trampoline parameters.
17775
17776         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
17777         
17778         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
17779         to mono_arch_get_vcall_slot_addr.
17780
17781         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
17782         trampoline code.
17783
17784         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
17785
17786 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
17787
17788         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
17789
17790 2005-07-19  Martin Baulig  <martin@ximian.com>
17791
17792         * exceptions-amd64.c (throw_exception): Call
17793         mono_debugger_throw_exception() here like we're doing it on i386.
17794
17795 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
17796
17797         * mini-ia64.c: Add optimized TLS access support.
17798
17799 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
17800
17801         * mini-exceptions.c: Ongoing IA64 work.
17802
17803         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
17804
17805         * mini.c: Use the default optimization set when embedding. Fixes
17806         #75194.
17807
17808 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
17809
17810         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
17811         of trampolines to a separate file.
17812
17813         * mini-trampolines.c: New file.
17814
17815         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
17816         separate file.
17817         
17818         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
17819         amd64/ia64 code.
17820
17821         * mini-codegen.c: Fix cygwin build.
17822
17823 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
17824
17825         * mini.c: Add some minor changes needed by the IA64 port.
17826
17827         * *-ia64.*: Ongoing IA64 work.
17828
17829 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
17830
17831         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
17832         trampolines into arch-independent and arch-dependent parts.
17833
17834         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
17835
17836 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
17837
17838         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
17839
17840         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
17841         the xp-regalloc-branch for amd64.
17842
17843         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
17844         xp-regalloc-branch for x86.
17845
17846 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
17847
17848         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
17849
17850 2005-07-06  Martin Baulig  <martin@ximian.com>
17851
17852         * mini.c
17853         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
17854         (mono_jit_runtime_invoke): Likewise.
17855
17856 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
17857
17858         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
17859         on x86 too.
17860         
17861         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
17862         without loading their metadata. Reorganize the file format so exception handling+
17863         debug info is kept separate from normal method info. Create MonoJitInfo 
17864         structures for methods lazily.
17865
17866         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
17867         loading metadata.
17868         (x86_class_init_trampoline): Patch AOT class init trampolines too.
17869
17870         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
17871
17872         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
17873         in AOT code.
17874
17875         * mini.h: Bump AOT file version.
17876
17877 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
17878
17879         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
17880
17881 2005-07-01  Raja R Harinath  <rharinath@novell.com>
17882
17883         * Makefile.am (check-local): Call semdel-wrapper.
17884
17885 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
17886
17887         * mini-x86.c: Revert the last change as it seems to break the build..
17888
17889 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
17890
17891         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
17892         
17893         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
17894
17895 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
17896
17897         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
17898         outside of the macro, so strange stuff doesn't happen with gcc4
17899         (NEW_AOTCONST_TOKEN): Likewise.
17900
17901 2005-06-28  Martin Baulig  <martin@ximian.com>
17902
17903         * mini.c (mini_class_is_system_array): New static method; use this
17904         instead of `klass->parent == mono_defaults.array_class' everywhere
17905         since this also works for the new generic array class.
17906
17907 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
17908
17909         * inssel.brg: Remove warnings.
17910
17911 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
17912
17913         * mini-ia64.c: Ongoing IA64 work.
17914
17915         * basic-float.cs: Add float->i1 conversion test.
17916
17917         * iltests.il: Add conv.u4 test.
17918
17919 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
17920
17921         * inssel-long.brg: Fix bug caused by last change.
17922
17923 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
17924
17925         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
17926         BSDs.  Allows the x86 JIT to work on OSX86
17927
17928 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
17929
17930         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
17931         u4->i8 conversion.
17932
17933         * mini-ia64.c: Ongoing IA64 work.
17934
17935 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
17936
17937         * mini-ia64.c: Ongoing IA64 work.
17938
17939         * driver.c: Clean up jit_code_hash as well when using --regression.
17940
17941         * inssel-long.brg: Fix long->i4/u4 conversion rules.
17942
17943         * basic-long.cs: Add tests for long->u4 conversion.
17944
17945 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
17946
17947         * mini.c: Take mono_get_domainvar out of macros. This makes sure
17948         that we do not depend on undefined C behavior: the order stuff
17949         gets evaluated within an expression. Fixes mono when compiled on
17950         GCC 4.
17951
17952 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
17953
17954         * *-ia64.*: Ongoing IA64 work.
17955
17956         * aot.c: Lower memory usage while loading AOT methods.
17957
17958         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
17959
17960         * mini.h: Bump AOT file format version.
17961
17962 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
17963
17964         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
17965
17966 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
17967
17968         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
17969         not on callee assembly). Fixed some comments.
17970
17971 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
17972
17973         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
17974         it gets proper disassembly.
17975         (emit_method_info): Remove some dead code.
17976
17977         * mini.c (mini_method_compile): Allways allocate the GOT var in
17978         mono_method_to_ir for emulating opcodes.
17979
17980 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
17981
17982         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
17983         before freeing the code memory. Fixes #74990.
17984
17985         * objects.cs: Add regression test for #74992.
17986
17987         * liveness.c: Extend live ranges of arguments to the beginning of the
17988         method. Fixes #74992.
17989
17990         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
17991         so it points into the faulting instruction.
17992
17993 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
17994
17995         * jit-icalls.c (mono_imul_ovf): Add exception handling.
17996
17997         * *-ia64.*: Ongoing IA64 work.
17998
17999         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
18000
18001 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
18002
18003         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
18004
18005         * *-ia64.*: Ongoing IA64 work.
18006
18007 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
18008
18009         * basic-long.cs: Add tests for add/sub.ovf.
18010
18011         * basic.cs: Add tests for sub.ovf.
18012
18013         * *-ia64.*: Ongoing IA64 work.
18014
18015 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
18016
18017         * *-ia64.*: Ongoing IA64 work.
18018
18019         * basic.cs: Add conv.ovf.i4.un test.
18020
18021 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
18022
18023         * mini.c: (remove_block_if_useless) Fixed bug 75061.
18024         
18025 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18026
18027         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
18028
18029 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
18030
18031         * *-ia64.*: Ongoing IA64 work.
18032
18033 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18034
18035         * trace.[ch]:
18036         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
18037
18038 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
18039
18040         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
18041
18042 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
18043
18044         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
18045
18046         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
18047         of a call is callable by a near call.
18048
18049 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
18050
18051         * mini-ia64.c: Ongoing IA64 work.
18052
18053 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
18054
18055         * genmdesc.c: Make the generated array non-static.
18056
18057         * inssel-long.brg: Fix LSHR_IMM rule.
18058
18059         * *-ia64.*: Ongoing IA64 work.
18060
18061         * *-ia64.*: Ongoing IA64 work.
18062
18063 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
18064
18065         * *-ia64.*: Ongoing IA64 work.
18066
18067         * *-ia64.*: Ongoing IA64 work.
18068         
18069         * mini-ia64.c: Ongoing IA64 work.
18070
18071         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
18072
18073 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
18074
18075         * objects.cs basic-calls.cs: Move some tests to objects.cs.
18076         
18077         * objects.cs basic-long.cs: Move some tests to objects.cs.
18078
18079 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
18080
18081         * *-ia64.*: Ongoing IA64 work.
18082
18083         * iltests.il: Add a new test.
18084
18085         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
18086         newobj. Fixes #75042.
18087
18088 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
18089
18090         * *-ia64.*: Ongoing IA64 work.
18091         
18092         * *-ia64.*: Ongoing IA64 work.
18093         
18094         * *-ia64.*: Ongoing IA64 work.
18095
18096         * basic.cs objects.cs: Move tests accessing static variables as well.
18097
18098         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
18099
18100 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
18101
18102         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
18103
18104         * driver.c: Always print failed tests.
18105
18106         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
18107         frame pointer.
18108
18109         * *ia64*: Ongoing IA64 work.
18110
18111 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
18112
18113         * basic.cs: Add tests for add.ovf. Fix warnings.
18114
18115 2005-05-18  Miguel de Icaza  <miguel@novell.com>
18116
18117         * driver.c (mono_main): Avoid crash if no argument is passed to
18118         --break;  Do not use g_error, but f_printf.   And fix all other
18119         ocurrences of the same crash.
18120
18121 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
18122
18123         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
18124         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
18125         Fixes #74742.
18126
18127 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
18128
18129         * *-ia64.*: Add beginnings of IA64 backend.
18130
18131         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
18132
18133 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
18134
18135         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
18136         Fixes #74925.
18137
18138         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
18139
18140         * mini-amd64.c: Fix a warning.
18141
18142 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
18143
18144         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
18145         in float_neg. Fixes #74897.
18146
18147         * mini-amd64.c (emit_call): Fix another near call bug.
18148
18149 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
18150
18151         * declsec.c: Keep the appdomain information in the structure. Added a 
18152         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
18153         value gets overwritten).
18154         * declsec.h: Set the default MonoArray for the the stack to 6. Added
18155         an MonoAppDomain member to MonoSecurityFrame.
18156         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
18157         used in the stack walk. Now use a MonoArray which grow (double) when
18158         it gets full.
18159
18160 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
18161
18162         * mini.c: Re-enabled runtime cleanup, since running threads should
18163         now properly stop when exiting.
18164
18165 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
18166
18167         * mini-codegen.c: New file contaning the arch-independent local
18168         register allocator. Not used by any architectures yet.
18169
18170         * mini.h linear-scan.c: Merge some changes from the 
18171         mini-xp-local-regalloc branch.
18172
18173 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
18174
18175         * mini-amd64.c (emit_call): Fix calls to native functions when the
18176         runtime is compiled as a shared library. Fixes #74756.
18177
18178         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
18179         on a literal field. Fixes #74751.
18180
18181 2005-04-25  Raja R Harinath  <rharinath@novell.com>
18182
18183         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
18184
18185 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
18186
18187         * objects.cs: Add missing null casting test.
18188
18189 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
18190
18191         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
18192         in wrapper methods. Also rename 'address' variable to 'offset'.
18193
18194 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
18195
18196         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
18197         warnings.
18198         
18199         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
18200
18201         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
18202         work on windows.
18203
18204 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
18205
18206         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
18207
18208 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
18209
18210         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
18211         just the last bytes.
18212
18213 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
18214
18215         * aot.c (mono_compile_assembly): Fix warning.
18216
18217         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
18218         by the _MSC_VER stuff.
18219
18220 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
18221
18222         * inssel-long.brg: Fix #74588.
18223
18224         * cpu-amd64.md: Fix #74591.
18225
18226         * iltests.il: Add new regression tests.
18227
18228 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
18229
18230         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
18231         valuetype.
18232
18233 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
18234
18235         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
18236
18237         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
18238         from Bill Middleton <flashdict@gmail.com>.
18239
18240 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
18241
18242         * arrays.cs: Add new regression test. Fix warnings.
18243
18244 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
18245
18246         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
18247         and leakage in CKFINITE.
18248
18249         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
18250         this to a null op since it is called on amd64 too.
18251
18252         * exceptions-amd64.c (get_throw_trampoline): Align stack.
18253
18254         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
18255         body since this is not used on amd64.
18256         
18257         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
18258
18259         * mini-amd64.c: Remove obsolete fixmes.
18260
18261         * mini.c (print_method_from_ip): Fix debugging support.
18262
18263 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18264
18265         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
18266         so that expressions that don't give much gain are not reduced.
18267         * ssapre.h: Likewise.
18268
18269 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
18270
18271         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
18272
18273         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
18274
18275         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
18276
18277 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
18278
18279         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
18280
18281         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
18282
18283 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
18284
18285         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
18286         stack touching.
18287
18288         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
18289
18290         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
18291
18292         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
18293
18294         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
18295         MONO_ARCH_USE_SIGACTION. Fixes #74252.
18296
18297         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
18298
18299         * mini-x86.c: Fix up stack overflow handling.   
18300
18301         * exceptions.cs: Add new regression test.
18302
18303 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
18304
18305         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
18306         mono_jit_thread_attach.
18307
18308         * mini.c (mono_method_to_ir): Verify called method is not abstract.
18309
18310 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
18311
18312         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
18313         avoid calling constructors using callvirt.
18314
18315         * inssel.brg: Fix #74073.
18316
18317 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
18318
18319         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
18320         compilation with non-GCC compilers.
18321         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
18322         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
18323
18324 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
18325
18326         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
18327         klass->interface_offsets (will likely fix bug#74073).
18328
18329 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
18330
18331         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
18332
18333 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
18334
18335         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
18336         to amd64_div_reg_size ().
18337         
18338         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
18339
18340 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
18341
18342         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
18343
18344 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
18345
18346         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
18347
18348 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
18349
18350         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
18351         
18352         * mini.c (mono_precompile_assembly): Load and precompile referenced
18353         assemblies as well. Fixes #74015.
18354
18355 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
18356
18357         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
18358
18359 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
18360
18361         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
18362         a lot of checks and (anyway) permissions cannot work until corlib is 
18363         loaded.
18364
18365 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
18366
18367         * mini-ppc.c: fixed ABI issue on sysv/ppc.
18368
18369 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
18370
18371         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
18372         calls (fixes bug#72824).
18373
18374 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18375
18376         * mini.c: fix tail recursion elimination (see test in bug#73936).
18377
18378 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
18379
18380         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
18381         some fp functions in sse2 mode.
18382
18383 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
18384
18385         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
18386
18387 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
18388
18389         * mini.h mini.c: Add mono_get_jit_tls_key ().
18390
18391         * mini-x86.c: Enable fast TLS support on windows.
18392
18393 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
18394
18395         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
18396         * mini.c: Check for p/invoke method when generating code. If a
18397         p/invoke method, or it's class, isn't decorated with [Suppress
18398         UnmanagedCodeSecurity] then generate code to call System.Security.
18399         UnmanagedDemand (only if the security manager is active).
18400
18401 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
18402
18403         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
18404         last change as it seems to cause strange crashes.
18405         
18406 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18407
18408         * *.c: handle unsafe function pointers where needed.
18409
18410 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
18411
18412         * mini.c (mono_jit_free_method): Remove the fixme too.
18413
18414 2005-03-15  Miguel de Icaza  <miguel@novell.com>
18415
18416         * mini.c: As discussed, make the code actually free the delegate
18417         thunk now, to enable the debugging of delegate problems, use
18418         MONO_DEBUG=1 when running Mono. 
18419
18420         This takes also care of parts of the leaks as seen by Joe.
18421
18422 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
18423
18424         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
18425         thread_tls_offset calculation.
18426
18427 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
18428
18429         * declsec.c: Reworked linkdemand checks for icall. The previous code
18430         was using the declaration code (untrusted) and didn't work as expected
18431         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
18432         specific case.
18433
18434 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
18435
18436         * iltests.il: Add new localloc test.
18437
18438         * mini-amd64.c: Handle large stack allocations the same way as on
18439         windows if stack overflow handling is working.
18440         
18441         * mini-amd64.c: Allocate the signal stack using mmap.
18442
18443         * mini.c (sigsegv_signal_handler): Fix reading of context.
18444
18445         * mini-exceptions.c: Fix up stack overflow handling.
18446
18447         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
18448
18449         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
18450
18451         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
18452
18453         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
18454
18455         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
18456         tramp_init functions as they are no longer needed.
18457
18458 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
18459
18460         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
18461         
18462         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
18463
18464         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
18465         
18466         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
18467         support that now.
18468
18469         * mini-ops.h: Add OP_LMUL_IMM.
18470
18471         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
18472         long mul/div opcodes as intrinsic.
18473
18474         * mini-amd64.c (emit_call): Handle the case when the callee might be
18475         an AOT method.
18476
18477 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
18478
18479         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
18480         extra safe.
18481         
18482         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
18483
18484         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
18485
18486 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
18487
18488         * mini.c (mono_codegen): Don't leak here, to help people running
18489         monogrind.
18490
18491 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
18492
18493         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
18494         conversions in sse2 mode.
18495
18496         * basic-float.cs: Add regression test.
18497         
18498         * mini-amd64.c: Reenable sse2.
18499
18500 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
18501
18502         * mini-amd64.c: Disable sse2 until some regressions are fixed.
18503
18504 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
18505
18506         * driver.c: Copyright text should include 2005.
18507         
18508 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
18509
18510         * cpu-amd64.md (load_membase): Fix more max lengths.
18511
18512 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
18513
18514         * cpu-amd64.md (load_membase): Fix max length.
18515
18516         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
18517
18518         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
18519
18520         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
18521         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
18522
18523         * basic-float.cs: Add rounding regression test.
18524
18525         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
18526
18527 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
18528
18529         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
18530         structures in registers for pinvoke wrappers.
18531
18532 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
18533
18534         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
18535
18536 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
18537
18538         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
18539         wrapper to mono_jit_thread_attach.
18540
18541         * mini.c (mini_jit_thread_attach): New jit icall.
18542
18543         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
18544         native->managed wrappers.
18545
18546         * exceptions.cs: Add new regression test.
18547
18548         * mini.c (optimize_branches): Check regions in the cbranch to throw
18549         block case as well. Fixes #73242.
18550
18551 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18552
18553         * mini.c: thread safety fixes.
18554
18555 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
18556
18557         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
18558         patching stuff, since delegates use jump trampolines so there is
18559         no caller.
18560
18561         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
18562         jump trampolines.
18563         
18564         * tramp-amd64.c: Fix build.
18565
18566         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
18567         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
18568
18569         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
18570         Rename this to mono_arch....
18571         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
18572
18573         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
18574
18575         * mini-amd64.c (emit_call): If both the caller and the callee is
18576         guaranteed to have 32 bit addresses, emit a normal call.
18577
18578         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
18579
18580         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
18581         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
18582         method_ptr inside delegates.
18583
18584 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
18585
18586         * mini.c (mono_jit_free_method): Free the method info even if the native code is
18587         invalidated. Fixes #73001.
18588
18589         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
18590
18591         * mini-x86.c: Only use stdcall for pinvokes on windows.
18592
18593 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
18594
18595         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
18596         * mini-x86.c: remove unreliable __thread var offset detection,
18597         use the correct accessors and enable by default.
18598
18599 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
18600
18601         * mini.c (mono_jit_free_method): Fix memory leak.
18602
18603 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
18604
18605         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
18606
18607 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
18608
18609         * cpu-amd64.md: Fix lengths of atomic opcodes.
18610
18611 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
18612
18613         * driver.c: try to not imply using ICU is any good.
18614
18615 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
18616
18617         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
18618         functions as inline ops.
18619
18620         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
18621         some Interlocked functions as inline ops.
18622
18623         * mini.c (move_basic_block_to_end): Fix bug in last patch.
18624
18625         * mini.h (MonoBasicBlock): Reorganize fields a bit.
18626
18627         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
18628
18629         * mini.c: Add support for OP_NOT_TAKEN.
18630
18631         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
18632         structures in registers for pinvoke wrappers.
18633
18634         * mini-amd64.c: Fix warnings.
18635
18636 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
18637
18638         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
18639
18640         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
18641
18642         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
18643         address instead of loading the address from it.
18644
18645         * mini-x86.c: Add support for returning small structs in registers
18646         on Win32. Fixes part of #70864.
18647         
18648 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
18649
18650         * trace.c (get_token): Improve error checking.
18651
18652 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
18653
18654         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
18655
18656 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
18657  
18658         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
18659         it can be reused for MonoClass.
18660         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
18661         _LINKDEMAND.
18662
18663 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
18664
18665         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
18666         instead of a MonoReflectionMethod. The method information wasn't used
18667         when displaying SecurityException details (but will be now).
18668
18669 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
18670
18671         * Makefile.am : windows build fix.
18672
18673 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
18674
18675         * iltests.il: Add new regression test.
18676
18677         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
18678         #72522.
18679
18680 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
18681  
18682         * mini.c: Moved linkdemand check into helper function check_linkdemand
18683         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
18684         LDFTN, LDVIRTFTN).
18685
18686 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
18687
18688         * declsec.c: Added statistics counter for different kinds of 
18689         LinkDemands.
18690         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
18691         (and commented) declaration.
18692         * mini.c: Added statistics counter for security Demand code 
18693         generation. Added display of security statistics.
18694
18695 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
18696
18697         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
18698         Fix compilation errors under gcc-2.95.
18699
18700 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
18701
18702         * mini.c, driver.c: Use the new jit trampoline hashtable
18703
18704 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18705
18706         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
18707
18708 2005-02-11  Martin Baulig  <martin@ximian.com>
18709
18710         * debug-mini.c (mono_debug_close_method): Free the line number array.
18711
18712 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
18713
18714         * aot.c: Break up large methods into smaller ones. Share GOT slots for
18715         icalls.
18716
18717         * mini.h: Bump AOT file format version. 
18718
18719 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
18720
18721         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
18722         APTC and P/Invoke.
18723         * declsec.h: Added macros to get/set lazyly initialized security 
18724         informations about assemblies. Added new enum for different type of
18725         possible LinkDemand violation. Added function to check LinkDemands.
18726         * mini.h: Added a field to MonoCompile to hold any security violation
18727         detected when JITting a method (so it can be thrown later).
18728         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
18729         and CEE_CALLVIRT. Added code to throw exception at the end of
18730         mini_method_compile (note: the exception is unhandled right now).
18731
18732 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
18733
18734         * mini.c, jit-icalls.c: use the managed implementation of
18735         memset for initobj and memset, to avoid managed <-> unmanaged
18736         transitions.
18737
18738 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
18739
18740         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
18741         optimization if it would need a GOT var.
18742
18743         * basic.cs: Add tests for constant propagation and switch statements.
18744
18745         * ssa.c: Fix out-of-range constant propagation and switch statements.
18746
18747 2005-02-09    <vargaz@freemail.hu>
18748
18749         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
18750
18751 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
18752
18753         * cpu-amd64.md (load_membase): Fix max length of load_membase.
18754
18755 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18756
18757         * mini.c: update to new signature of mono_class_get_allocation_ftn().
18758
18759 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
18760
18761         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
18762         arithmetic operations.
18763
18764 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
18765
18766         * mini-ppc.c: add a workaround for broken user code that
18767         DllImports vararg functions with non-vararg signatures.
18768
18769 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18770
18771         * mini.c (mono_jit_compile_method_inner): Add detection and a 
18772         meaningfull error message for assemblies written in Managed C++.
18773
18774         * tramp-amd64.c mini-amd64.h: Add support for 
18775         create_trampoline_from_token ().
18776
18777         * aot.c mini-x86.c abcremoval.c: Applied patch from
18778         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
18779
18780 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
18781
18782         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
18783         which takes a MonoImage/token as parameter instead of a MonoMethod.
18784
18785         * aot.c: Use the new trampoline for initializing vtables.
18786
18787         * aot.c: Add support for ldfld/stfld_remote wrappers.
18788
18789         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
18790         rules for compare <MEM>, IMM.
18791
18792         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
18793
18794         * aot.c: Handle inherited finalizers correctly.
18795
18796 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
18797
18798         * inssel.brg (stmt): Add a missing _setup_... ().
18799
18800         * aot.c: Save some parts of the class state to the AOT file and use it
18801         to recompute that state when a class is initialized.
18802
18803         * mini.c: Install AOT hooks into the runtime.
18804
18805         * mini.h: Bump AOT file format version.
18806         
18807         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
18808         Fixes #72148.
18809
18810         * iltests.il: Add new test.
18811
18812 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
18813
18814         * mini.c: fix typo.
18815
18816 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
18817
18818         * mini.c: setup the statistical profiler in the thread attach
18819         callback to cope with the new single thread code.
18820
18821 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
18822
18823         * mini-ppc.c: ensure we have enough room for the profiler
18824         calls (fixed bug#72084).
18825
18826 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
18827
18828         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
18829         it.
18830
18831 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18832
18833         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
18834
18835 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18836
18837         * ssapre.c: Fixed an issue with down safety (this allows IronPython
18838         to succesfully execute parrotbench).
18839         * ssapre.h: Likewise.
18840
18841 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18842
18843         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
18844         variable for stores to method arguments (fixes a SSAPRE issue).
18845
18846 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18847
18848         * mini.c: handle value types in dup, fixes gen-112.cs.
18849
18850 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
18851
18852         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
18853         sequence for calls in dynamic methods to avoid thunks.
18854
18855 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18856
18857         * mini.c: correctly remove dynamic methods from the hashtable.
18858
18859 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18860
18861         * driver.c: Disabled SSAPRE until fix the bug that appears
18862         in IronPython's parrotbench.
18863
18864 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
18865
18866         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
18867
18868         * mini.c (mono_method_to_ir): Revert the previous change.
18869         
18870         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
18871         when AOT compiling.
18872
18873         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
18874         mono_jit_info_table_find () etc. when running under valgrind.
18875
18876         * inssel.brg: Fix warnings.
18877
18878         * mini-exceptions.c: Fix warnings.
18879
18880 2005-01-31  Martin Baulig  <martin@ximian.com>
18881
18882         * driver.c (compile_all_methods_thread_main): Don't try to compile
18883         generic methods or anything which has type parameters.
18884
18885 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
18886
18887         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
18888
18889         * TestDriver.cs: Add --verbose flags.
18890
18891         * graph.c ssa.c: Fix 64 bit warnings.
18892         
18893         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
18894         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
18895         Fix 64 bit warnings.
18896
18897         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
18898         variable not spotted by gcc.
18899         
18900         * mini-amd64.c inssel-amd64.brg: Applied patch from  
18901         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
18902         X86_COMPARE_MEMBASE opcodes.
18903
18904         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
18905
18906 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
18907
18908         * *: MonoMethod->signature might be NULL now. You *MUST* use
18909         mono_method_signature.
18910
18911 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18912
18913         * driver.c (compile_all_methods_thread_main): Compile the methods
18914         without invoking cctors.
18915
18916 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18917
18918         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
18919         * basic-calls.cs: test for the above.
18920
18921 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18922
18923         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
18924         MonoJitInfo changes.
18925
18926 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
18927
18928         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
18929         eagerly if it contains dynamic methods.
18930         
18931         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
18932
18933         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
18934         trace, it is now computed by an icall from trace_ips.
18935         
18936         * mini-exceptions.c: Fix a warning.
18937
18938 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
18939
18940         * mini-exceptions.c: don't bother getting stack trace info if
18941         it's not going to be used.
18942
18943 2005-01-27  Raja R Harinath  <rharinath@novell.com>
18944
18945         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
18946         ssapre-mini-ops.h.
18947
18948 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
18949
18950         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
18951
18952         * aot.c: Avoid calling mono_method_get_header () if not needed.
18953
18954         * mini.h: Bump AOT file format version.
18955         
18956         * mini.c (mono_emit_native_call): Allocate a GOT var here.
18957
18958         * mini.c (mono_print_tree): Print more info for calls.
18959
18960 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
18961
18962         * declsec.h: Remove warning by adding missing include for marshal.h
18963
18964 2005-01-26  Martin Baulig  <martin@ximian.com>
18965
18966         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
18967         `ip' twice.
18968
18969 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
18970
18971         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
18972         flags.
18973
18974         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
18975
18976         * aot.c (mono_compile_assembly): Fix a warning.
18977
18978 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
18979
18980         * declsec.c: Look for security attributes on the original MonoMethod 
18981         (and not the wrapped one). This fix permissions on icalls.
18982
18983 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
18984
18985         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
18986
18987         * mini.c (mono_allocate_stack_slots): Add a fixme.
18988
18989         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
18990
18991 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18992
18993         * inssel.brg: optimize casts of sealed types (more
18994         optimizations waiting for fixes in remoting).
18995
18996 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
18997
18998         * inssel.brg (stmt): Add another dummy rule.
18999
19000         * driver.c: Fix warnings.
19001
19002         * driver.c (mono_main): If running under valgrind, instruct glib to use
19003         the system allocation functions so valgrind can track the memory
19004         allocated by the g_... functions.
19005
19006         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
19007
19008         * mini-ops.h: Add OP_DUMMY_STORE opcode.
19009
19010         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
19011
19012         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
19013         variables in try regions.
19014
19015         * mini.c (mini_method_compile): Don't disable optimizations on large
19016         methods when AOT compiling.
19017
19018         * mini.c (mono_allocate_stack_slots): New arch independent method to 
19019         allocate stack slots. Not yet used.
19020
19021 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
19022
19023         * debug-mini.c (mono_debug_close_method): Plug some leaks.
19024
19025 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
19026
19027         * mini-ppc.c: make the branch info relative as the code
19028         buffer can be reallocated.
19029
19030 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
19031
19032         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
19033         * driver.c: Removed the AOT/security restriction. Now initialize the
19034         security manager (in metadata) if --security is used.
19035         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
19036         rather than the pointer to declarative security, when AOT is used.
19037
19038 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
19039
19040         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
19041         basic blocks, reduced intrinsic exception throwing code size.
19042
19043 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
19044
19045         * driver.c (mini_usage): Reorder the usage screen.
19046
19047 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
19048
19049         * mini.c (mono_resolve_patch_target): Fix warning.
19050
19051 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
19052
19053         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
19054         previous patch.
19055
19056         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
19057
19058         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
19059         breaks the amd64 build.
19060
19061         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
19062         register allocation. Fixes #71454.
19063
19064         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
19065
19066         * arrays.cs: Add new regression test.   
19067
19068 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19069
19070         * ssapre.c: Turned usage of snprintf to GString.
19071         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
19072         (I left it on by mistake in my previous commit).
19073
19074 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
19075
19076         * mini.c, cfold.c, basic-calls.cs: preserve side effects
19077         on cond branch optimization (fixes bug# 71515).
19078
19079 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19080
19081         * abcremoval.c: Fixed bug 71062.
19082         * abcremoval.h: Likewise.
19083
19084 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19085
19086         * mini.c: Added a new functionality to optimize_branches, the removal
19087         of useless basic blocks, and fixed some problem in the removal of
19088         critical edges; some utility functions added for both purposes.
19089         * ssapre.c: Added complex expression support, and fixed bug 70637.
19090         * ssapre.h: Likewise.
19091         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
19092         enabled in SSAPRE.
19093         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
19094         * driver.c: Re-enabled SSAPRE.
19095
19096 2005-01-19  Martin Baulig  <martin@ximian.com>
19097
19098         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
19099         the result of mono_get_method_constrained().
19100
19101 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
19102
19103         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
19104         manager.
19105
19106 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
19107
19108         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
19109         be detected.  Fixes #59296.
19110
19111 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
19112
19113         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
19114         which can happen. Fixes #71361.
19115
19116 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
19117
19118         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
19119         manager.
19120
19121 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
19122
19123         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
19124         appdomain-unload.exe to fail.
19125         
19126         * mini.c: Fix some memory leaks.
19127
19128 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
19129
19130         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
19131         Fixed bug and sped up some codepaths.
19132
19133 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
19134
19135         * mini.c: Fix some memory leaks.
19136
19137         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
19138         conversion.
19139
19140         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
19141
19142         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
19143         #71320.
19144
19145         * iltests.il: Add regression test for #71320.
19146
19147 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
19148
19149         * mini.c (mono_codegen): Fix installation of profiler hooks.
19150
19151         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
19152
19153 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
19154
19155         * mini.h, mini.c, cfold.c: optimize access to enum
19156         readonly fields, too. Eval conditional branches if possible
19157         to perform unreachable code removal in more cases.
19158
19159 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
19160
19161         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
19162
19163         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
19164         code manager.
19165
19166         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
19167         WinXP DEP. Fixes #71244.
19168
19169 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
19170
19171         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
19172
19173 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
19174
19175         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
19176
19177 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
19178
19179         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
19180         changes.
19181
19182         * mini.h: Bump AOT version.
19183
19184         * mini.h (MonoCompile): Change exvar to a hash table.
19185
19186         * mini.c: Allocate a separate exvar for each handler block.
19187
19188         * mini.c: Get rid of the computation of filter_lengths, its not needed.
19189
19190         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
19191         ex var with the pending exception and only throw if the two are equal.
19192         Fixes #68552.
19193         
19194         * exceptions.cs: Add tests for rethrow and nested catch clauses.
19195
19196         * mini-x86.c: Fix warnings.
19197
19198         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
19199         used by all the ports now.
19200
19201         * aot.c: Add write-symbols and save-temps options.
19202
19203 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
19204
19205         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
19206
19207 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
19208
19209         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
19210         operations.
19211
19212         * tramp-s390.c: Check vtable slot belongs to the domain.
19213
19214         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
19215         as per other platforms.
19216
19217         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
19218
19219 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
19220
19221         * driver.c: we don't run the Main() code in a subthread anymore.
19222
19223 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
19224
19225         * mini.c: added experimental rtc support in the statistical
19226         profiler: if the user has the permission, more accurate statistics
19227         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
19228         The MONO_RTC value must be restricted to what the linux rtc allows:
19229         power of two from 64 to 8192 Hz.
19230
19231 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
19232
19233         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
19234
19235 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
19236
19237         * mini-ppc.c: better icache flush for smp.
19238
19239 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
19240
19241         * mini-amd64.c (emit_move_return_value): Fix memory leak.
19242
19243         * mini-x86.c (get_call_info): Add the get_call_info () code from the
19244         amd64 port, not yet used.
19245
19246 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
19247
19248         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
19249         a struct type.
19250
19251 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
19252
19253         * driver.c: Added --security option to activate the security manager.
19254         Right now this will allow code generation for declarative demands and
19255         is disabled when AOT is specified.
19256         * mini.c: Add code generation for declarative security demands.
19257         * mini.h: Add mono_use_security_manager as an extern gboolean.
19258
19259 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
19260
19261         * aot.c (mono_compile_assembly): Speed up compilation a bit by
19262         emitting more dense assembly code.
19263
19264         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
19265         exception throwing stuff.
19266
19267 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
19268
19269         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
19270         dead code.
19271
19272         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
19273         left in by mistake.
19274
19275         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
19276         fixed.
19277
19278         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
19279
19280         * tramp-*.c: Only patch vtable slots if the object is in the current
19281         domain. Fixes appdomain-unload.exe.
19282
19283         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
19284         
19285         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
19286         x86 branch.
19287
19288 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
19289
19290         * mini.c (reverse_branch_op): New helper function.
19291
19292         * mini.c (optimize_branches): Run the new optimization only on 
19293         platforms which support it. Also reverse all kinds of branches.
19294
19295         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
19296
19297         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
19298         a throw statement.
19299
19300         * mini.c (optimize_branches): Reverse not-equals branches if the false
19301         bblock is a throw. This happens a lot of time with argument checking in
19302         corlib.
19303
19304         * mini.c (mono_codegen): Add support for placing basic blocks after
19305         the function epilogue.
19306
19307         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
19308         function epilogue.
19309         
19310 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
19311
19312         * mini.c (setup_stat_profiler): Only set this up if the platform
19313         supports ITIMER_PROF.
19314
19315 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
19316
19317         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
19318         previous patch.
19319
19320         * inssel.brg: Fix a warning.
19321
19322 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
19323
19324         * mini.c: added support for statistical profiler 
19325         (run with: --profile=default:stat).
19326
19327 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
19328
19329         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
19330
19331         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
19332
19333         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
19334         related to global registers from the amd64 port.
19335
19336 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
19337
19338         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
19339
19340         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
19341         with global registers.
19342         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
19343
19344         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
19345
19346 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
19347
19348         * debug-mini.c (encode_value): Fix off-by-one.
19349
19350         * aot.c (encode_value): Likewise.
19351
19352         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
19353
19354 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
19355
19356         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
19357         AOT.
19358
19359         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
19360         
19361         * aot.c (emit_method_info): Increase size of temp buffer.
19362
19363         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
19364         the AOT case.
19365
19366 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
19367
19368         * aot.c (emit_method_info): Fix build.
19369         
19370         * aot.c: Further rework of the AOT file format to reduce the size of
19371         the method info data.
19372
19373         * mini.h: Bump AOT file format version.
19374
19375 2004-12-27  Martin Baulig  <martin@ximian.com>
19376
19377         * mini.c (mini_get_method): New static method; call
19378         mono_get_method_full() and mono_get_inflated_method().
19379         (mono_method_to_ir): Use mini_get_method() instead of
19380         mono_get_method_full(). 
19381
19382 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
19383
19384         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
19385
19386 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
19387
19388         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
19389
19390         * inssel-amd64.brg: Add some optimization rules.
19391
19392 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
19393
19394         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
19395         standard not GC'd stuff is fine.
19396
19397 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
19398
19399         * aot.c: Rework the AOT file format to get rid of most of the global
19400         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
19401
19402         * mini.h: Bump AOT file format version.
19403         
19404 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
19405
19406         * mini.h: Bump AOT file format version.
19407
19408         * aot.c (mono_aot_is_got_entry): New function to determine if an 
19409         address is inside a GOT.
19410
19411         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
19412
19413         * cpu-pentium.md: Increase the maximum size of some instructions which
19414         might involve a got access.
19415         
19416         * mini.c (get_method_from_ip): Another debug helper function.
19417
19418         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
19419         when got var accesses are created during the decompose phase.
19420
19421         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
19422
19423         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
19424         argument mini_compile_method and to MonoCompile, and use this to
19425         determine whenever a given method is compiled for AOT. This allows the
19426         other methods compiled during AOT compilation to be free of AOT stuff,
19427         so the backends does not need to add special support for them by
19428         creating a fake GOT etc.
19429
19430         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
19431         longer needed.
19432
19433 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
19434
19435         * mini.c (mono_method_to_ir): It turns out that some of the
19436         x-appdomain wrappers are lax with types, so just ignore this for
19437         all wrappers.
19438
19439         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
19440         at the vtable->klass. If it is non-shared code we can just use the
19441         vtable.
19442
19443 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
19444
19445         * mini-ppc.c: access MonoDomain from tls, too.
19446
19447 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
19448
19449         * declsec.c: Removed unused variable (and related warning ;-)
19450
19451 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
19452
19453         * iltests.il: New test for LDELEMA on an array of ref types.
19454
19455         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
19456         all ldelema's on reftypes.
19457         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
19458         it was the wrong place to put it.
19459
19460         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
19461         register to pop to make this cleaner, at the request of Paolo.
19462
19463 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
19464
19465         * mini-ops.h (OP_GETHASHCODE): New op.
19466
19467         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
19468
19469         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
19470         operation.
19471
19472         For a microbenchmark, this reduces the cost of Hashtable.get_Item
19473         by 25%.
19474         
19475         * mini-x86.c (mono_arch_output_basic_block): Rather than
19476
19477         add ebp, 4
19478
19479         Emit
19480
19481         pop edx
19482
19483         The first is 3 bytes while the second is 1. This saves 36 kb on
19484         mscorlib, quite a big saving. When bootstraping mcs, I was able to
19485         see a small boost because of icache locality.
19486
19487         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
19488
19489 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
19490
19491         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
19492         started code sharing with the generic code.
19493
19494 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
19495
19496         * mini-ppc.c, cpu-g4.md: added code for direct access to
19497         tls data slots.
19498
19499 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
19500
19501         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
19502          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
19503         to OP_TLS_GET.
19504
19505 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
19506
19507         * declsec.c|h: Added functions to cache the declarative stack modifiers
19508         in MonoJitInfo and to create a security frame from a MonoJitInfo 
19509         structure.
19510         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
19511         created. Register internal calls for System.Security.SecurityFrame::
19512         _GetSecurityFrame and _GetSecurityStack.
19513         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
19514         the definitions for the new stack walk/callback mechanism.
19515         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
19516         first security frame for LinkDemands and InheritanceDemands) and
19517         GetSecurityStack for Demands. Both use the new mono_walk_stack code
19518         from lupus.
19519         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
19520         walk initialization (lupus).
19521
19522 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
19523
19524         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
19525         idiom.
19526         (handle_loaded_temps): Do not create a temporary variable for
19527         things that we know are temps. They will never be modified.
19528         (mono_spill_call): Set MONO_INST_IS_TEMP
19529         (mono_emulate_opcode): ditto
19530         (emit_tree): ditto
19531         (mono_method_to_ir.CEE_DUP): ditto
19532
19533 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
19534
19535         * mini.c (type_to_eval_stack_type): Make this handle the void type
19536         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
19537         (emit_tree): use ip_in_bb to special case some common idioms
19538         Update all callers to pass in the IP.
19539         (mono_method_to_ir): Make CEE_CALL* do the above as well.
19540
19541         This gives us a nice 2% speedup in mcs bootstrap.
19542
19543         * mini-x86.c (peephole_pass): Peephole pass to make
19544         mov  [foo], eax
19545         push [foo]
19546
19547         into
19548
19549         mov [foo], eax
19550         push eax
19551
19552         * mini.c (ip_in_bb): new method.
19553         (mono_method_to_ir): use this method rather than doing the hash
19554         lookup ourselves.
19555
19556         * linear-scan.c (mono_linear_scan): When expiring actives, you
19557         don't need to keep around variables that expire on this
19558         instruction. This makes it so that:
19559              a = b + 1
19560         will turn into:
19561              store (ebx add (ebx, 1))
19562         which will become
19563              add ebx, 1
19564
19565 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
19566
19567         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
19568         combination to avoid doing two copies. Fix up problems with previous
19569         patch.
19570
19571         * mini.c: Fix 64 bit warnings.
19572
19573         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
19574
19575 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
19576
19577         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
19578         changes from the x86 code.
19579
19580         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
19581
19582 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
19583
19584         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
19585         throwing code to reduce its size, unify the AOT and non-aot code and 
19586         get rid of relocations in the AOT case.
19587
19588         * mini-x86.h mini.c exceptions-x86.c 
19589         (mono_arch_get_throw_corlib_exception): New arch specific function to 
19590         raise corlib exceptions which doesn't require relocations in the 
19591         caller.
19592
19593         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
19594
19595 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
19596
19597         * mini.c (mono_emit_method_call): Only allocate the got var when it is
19598         needed.
19599
19600         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
19601         in the AOT case.
19602
19603 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19604
19605         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
19606         with add function when used from Inc/dec atomic 
19607         functions. Re-enabled optimization on x86.
19608         * mini-ops.h: renamed atomic_add functions to
19609         allow _add to match the Interlocked::Add and
19610         _add_next to match Interlocked::Inc/Dec.
19611
19612 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
19613
19614         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
19615         linking of BBs to the end BB, and enabled SSAPRE also with
19616         consprop and copyprop (which was prevented by that bug).
19617
19618 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19619
19620         * mini-x86.c: disabling the Interlocked optimizing code. 
19621
19622 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
19623
19624         * aot.c (load_aot_module): Move reading of got_addr after the AOT
19625         file version check.
19626         
19627 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19628
19629         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
19630         interlocked optimization due lack of support on x86, rewrote 
19631         exchange to take into account that base may be in eax.
19632         
19633         xsp works again; activated Interlocked optimizing code.
19634         
19635 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
19636
19637         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
19638
19639 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
19640
19641         * mini-ops.h: Add new opcodes.
19642
19643         * mini.h: Add new patch types. Add got_var to MonoCompile.
19644
19645         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
19646         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
19647         make it work with all kinds of patchable code.
19648
19649         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
19650         address of the GOT, and referencing entries in the GOT.
19651
19652         * mini.c: Add code to load the GOT address if needed by an opcode.
19653
19654         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
19655         independent AOT code on the x86 using an elf-style Global Offset Table.
19656
19657 2004-12-14  Raja R Harinath  <rharinath@novell.com>
19658
19659         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
19660
19661 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19662
19663         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
19664         when running xsp.
19665
19666 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
19667
19668         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
19669         of Interlocked:Increment/Decrement/Add as inline ops.
19670         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
19671
19672 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
19673
19674         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
19675         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
19676
19677 2004-12-12  Duncan Mak  <duncan@ximian.com>
19678
19679         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
19680         again. `patch_info->table_size' is no longer valid after Zoltan's
19681         commit #37636.
19682
19683 2004-12-12  Martin Baulig  <martin@ximian.com>
19684
19685         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
19686         if we are the "real" method, ie. not an inlined method inside it.
19687
19688 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
19689
19690         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
19691         before we look in the special fields table. This fixes
19692         ../tests/thread-static-init.cs.
19693
19694 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19695
19696         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
19697         for Array get_Rank and get_Length. Fixes bug #70465.
19698
19699 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
19700
19701         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
19702         separate structure to reduce the size of MonoJumpInfo.
19703
19704 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
19705
19706         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
19707
19708 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
19709
19710         * mini.c (mini_get_inst_for_method): Changed to allow ports
19711         to return a MonoInst instead of opcode 
19712         (renamed mini_get_opcode_for_method to better reflect the new functionality)
19713         
19714         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
19715         Allow ports to return a created MonoInst instead of op-code, will enable
19716         new optimizations.
19717         (renamed mini_get_opcode_for_method to better reflected the functionality)
19718
19719 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
19720
19721         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
19722
19723 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19724
19725         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
19726         Fixes #69985.
19727
19728 2004-12-08  Martin Baulig  <martin@ximian.com>
19729
19730         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
19731         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
19732
19733 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19734
19735         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
19736         correctly.
19737
19738         * exceptions.cs: Disable some tests which depend on properties of x86 fp
19739         arithmetic.
19740
19741 2004-12-08  Raja R Harinath  <rharinath@novell.com>
19742
19743         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
19744
19745 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
19746
19747         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
19748         bug introduced by the previous patch.
19749
19750 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
19751
19752         * mini-ppc.c, objectc.cs: handle large structs passed by value
19753         (fixes bug #69972).
19754
19755 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
19756
19757         * mini-ppc.c: OP_ARGLIST implementation from
19758         Geoff Norton  <gnorton@customerdna.com>.
19759
19760 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
19761
19762         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
19763         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
19764
19765 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
19766
19767         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
19768
19769 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19770
19771         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
19772         support.
19773
19774 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
19775
19776         * mini-sparc.c: Zero out localled-ed memory.
19777
19778         * iltests.il: Add tests for zeroing out localloc-ed memory.
19779
19780 2004-12-04  Martin Baulig  <martin@ximian.com>
19781
19782         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
19783         mono_method_get_signature_full().       
19784
19785 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
19786
19787         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
19788         and some utility functions (always for SSAPRE), integrated SSAPRE.
19789         * mini.h: Likewise.
19790         * driver.c: Added ssapre option.
19791         * ssa.c: Small fix on OP_ARG handling.
19792         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
19793         * Makefile.am: Likewise.
19794
19795 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
19796
19797         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
19798         now in the xp code.
19799
19800         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
19801         icall.
19802
19803 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19804
19805         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
19806         
19807         * cpu-s390.md : Increase instruction length of oparglist.
19808
19809         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
19810
19811 2004-11-30  Martin Baulig  <martin@ximian.com>
19812
19813         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
19814         virtual generic methods.  We call a special helper_compile_generic_method()
19815         icall to retrieve the method from the vtable, inflate and compile
19816         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
19817
19818         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
19819
19820 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
19821
19822         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
19823
19824 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
19825
19826         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
19827         Fixes #69929.
19828
19829 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
19830
19831         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
19832         platforms with PIC aot.
19833
19834 2004-11-28  Martin Baulig  <martin@ximian.com>
19835
19836         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
19837         Fixes gen-112.cs.
19838
19839 2004-11-28  Martin Baulig  <martin@ximian.com>
19840
19841         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
19842         the result of mono_type_get_underlying_type() to check whether
19843         we're byref.
19844
19845 2004-11-26  Martin Baulig  <martin@ximian.com>
19846
19847         * mini.c
19848         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
19849         in the g_assert().
19850
19851 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
19852
19853         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
19854         the same way as the other arguments so they won't get clobbered.
19855
19856         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
19857         calls through R11 since it is clobbered by the trampoline code.
19858
19859 2004-11-26  Raja R Harinath  <rharinath@novell.com>
19860
19861         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
19862         pick up in-tree mscorlib.dll.
19863
19864 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
19865
19866         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
19867
19868         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
19869         runtime data/code are now stored in a table similar to the GOT in ELF. 
19870         This allows the code itself to be position independent.
19871
19872         * aot.c: Fix loading of referenced assemblies after the lazy assembly
19873         loading changes.
19874
19875         * aot.c: Attach ELF type (object/function) directives to all global
19876         symbols.
19877
19878         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
19879
19880         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
19881
19882         * mini-amd64.h: Turn on PIC AOT code.
19883
19884         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
19885         returning the offset within an OP_AOTCONST instruction where the GOT
19886         offset needs to be added.
19887
19888         * mini.h: Bump AOT file format version.
19889
19890 2004-11-25  Martin Baulig  <martin@ximian.com>
19891
19892         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
19893         uninflated generic methods.
19894
19895 2004-11-25  Martin Baulig  <martin@ximian.com>
19896
19897         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
19898
19899 2004-11-24  Martin Baulig  <martin@ximian.com>
19900
19901         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
19902         original klass (this only applies for generic instances).
19903
19904 2004-11-24  Martin Baulig  <martin@ximian.com>
19905
19906         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
19907         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
19908         that array).
19909
19910 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
19911
19912         * mini.c (mono_method_to_ir): Disable inlining for methods containing
19913         localloc. Fixes #69678.
19914
19915         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
19916         
19917 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
19918
19919         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
19920         used SSE registers on pinvoke calls. Fixes #69774.
19921
19922 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
19923
19924         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
19925         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
19926
19927 2004-11-23  Raja R Harinath  <rharinath@novell.com>
19928
19929         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
19930         Refer directly to the mcs/ tree.
19931
19932 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19933
19934         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
19935         Check if a trampoline for a synchronized method is required. 
19936
19937 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
19938
19939         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
19940         with localloc if needed. Throe arithmetric exception in
19941         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
19942         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
19943
19944 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
19945
19946         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
19947         types before switching on type.  Fixes #69622.
19948
19949 2004-11-19  Raja R Harinath  <rharinath@novell.com>
19950
19951         * Makefile.am (check-local): New.  Integrate into 'make check'.
19952         (MCS,RUNTIME): Define using in-tree mono and mcs.
19953         (ILASM): New.
19954         (%.exe): Use $(ILASM).
19955
19956 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
19957
19958         * mini-ppc.c: adjust initial prolog size (bug #69691).
19959
19960 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
19961
19962         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
19963         #69664.
19964
19965 2004-11-17  Raja R Harinath  <rharinath@novell.com>
19966
19967         * Makefile.am (clean-local): Rename from 'clean'.
19968
19969 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19970
19971         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
19972         to mono_arch_is_int_overflow. 
19973         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
19974         SIGFPE events.
19975
19976 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
19977
19978         * declsec.c|h: New files to support declarative security attributes.
19979         Added function to check if a method has (applicable) security.
19980         * mini.c|h: Add check for declarative security attributes in
19981         mono_method_check_inlining.
19982         * Makefile.am: Added declsec.c and declsec.h to the build.
19983
19984 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
19985
19986         * mini.c, mini.h: update to keep dynamic code info per-domain.
19987
19988 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
19989
19990         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
19991         (mini_init): Get rid of it from here too.
19992
19993 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
19994
19995         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
19996         implemented OP_RETHROW (patch by Geoff Norton
19997         <gnorton@customerdna.com>).
19998
19999 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
20000
20001         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
20002         between appdomains.  Fixes appdomain-unload on PPC.
20003
20004 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
20005
20006         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20007         mini-exceptions.c: handle the new wrapper types.
20008         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
20009         token value as a MonoClass* when compiling a wrapper.
20010         mono_jit_create_remoting_trampoline now takes an additional
20011         MonoRemotingTarget parameter.
20012         
20013 2004-11-10  Martin Baulig  <martin@localhost>
20014
20015         * mini.c (mono_method_to_ir): Use `generic_container->context'
20016         rather than creating a new one.
20017
20018 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20019
20020         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
20021
20022         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
20023
20024 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
20025
20026         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
20027         the experimental aot cache stuff.
20028
20029 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
20030
20031         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20032         mini-exceptions.c: update to exception clause structure changes.
20033
20034 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
20035
20036         * exceptions-x86.c (throw_exception): Fix warnings.
20037
20038         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
20039         for OP_RETHROW.
20040
20041 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
20042
20043         * exceptions-sparc.c (get_throw_exception): Really fix this.
20044
20045 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
20046
20047         * tramp-*.c: we no longer support icalls without wrappers, so
20048         a bit of code can be removed here
20049
20050 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
20051
20052         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
20053         patch.
20054
20055         * cpu-sparc.md: Add op_rethrow.
20056
20057         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
20058
20059         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
20060
20061         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
20062         * mini-ops.h: Add OP_RETHROW.
20063
20064         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
20065
20066         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
20067
20068 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
20069         
20070         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
20071         Makes the output much easier to read
20072
20073 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
20074
20075         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
20076         prevents another huge leak when compiling with ssa. Secondly, the
20077         performance of doing this rather than freeing the lists is much
20078         better. GList does a lock every time you allocate a list link,
20079         so that it can use a memory pool. So, it is better to just use
20080         a memory pool of our own.
20081         
20082         * ssa.c, linear-scan.c: replace g_list_remove_link with
20083         g_list_delete.  The remove one does not free the GList, so we were
20084         leaking memory. On -O=all --compile-all with corlib, this cut down
20085         3 MB of allocations.
20086
20087 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
20088
20089         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
20090
20091         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
20092
20093         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
20094         into a new function mono_create_jit_trampoline ().
20095
20096 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
20097
20098         * trace.c (get_spec): Allow tracing of classes without a namespace.
20099
20100 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
20101
20102         * mini.c: Fix pointer overwrite in mini_method_compile.
20103
20104 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
20105
20106         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
20107         The darwin ABI needs some special handling for 1 and 2 byte structs
20108         Lets use lbz/lhz instead of lwz everywhere.
20109         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
20110         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
20111         Use stb/sth for the former, and put the latter always on stack instead of in
20112         argument registers.
20113
20114 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
20115
20116         * trace.c (is_filenamechar): Add '_'.
20117
20118 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
20119
20120         * mini-s390.c: Fix prolog length to allow for large trace requirements.
20121
20122         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
20123
20124 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
20125
20126         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
20127         depends on libmonogc. Fixes #68805.
20128
20129 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
20130
20131         * mini.c (mono_jit_free_method): Provide extra information for
20132         this error.  Currently this leaks, but will be turned into a
20133         developer option in the future.
20134
20135 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
20136
20137         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
20138
20139 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
20140
20141         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
20142         boundary. Fixes reading of PATCH_INFO_R4 and R8.
20143         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
20144
20145 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
20146
20147         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
20148         trampolines for AOT code.
20149
20150 2004-10-22    <vargaz@freemail.hu>
20151
20152         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
20153         constructed types. Fixes #68136.
20154
20155 2004-10-21  Martin Baulig  <martin@ximian.com>
20156
20157         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
20158         if it returns true, unwind the stack to the call instruction.
20159
20160 2004-10-21    <vargaz@freemail.hu>
20161
20162         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
20163
20164         * mini.h: Bump AOT version number.
20165
20166         * objects.cs: Add another test for unbox trampolines.
20167
20168         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
20169         valuetype methods.
20170
20171 2004-10-20    <vargaz@freemail.hu>
20172
20173         * driver.c: Add SHARED to the set of optimizations tested.
20174
20175         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
20176
20177         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
20178         used by CEE_NEWARR.
20179
20180         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
20181
20182 2004-10-20  Martin Baulig  <martin@ximian.com>
20183
20184         * mini-exceptions.c (mono_handle_exception): Call
20185         mono_debugger_handle_exception() to tell the debugger about
20186         catch/finally clauses.
20187
20188 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
20189
20190         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
20191
20192         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
20193         #68447.
20194
20195 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
20196
20197         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
20198         methods as their native size, fixed bug #57543, #57545.
20199         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
20200         This saves a temporary register and mullw call down into 1 (minor perf
20201         increase for cases like sum = sum * 5;  This use to translate into:
20202             li r11,5
20203             mullw r28,r28,r11
20204         It now translates to
20205             mulli r28,r28,5
20206
20207 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
20208
20209         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
20210         #68388.
20211
20212 2004-10-11  Martin Baulig  <martin@ximian.com>
20213
20214         * mini.c (mono_method_to_ir): If we're a generic method, get the
20215         MonoGenericContainer from our MonoMethodNormal and create a
20216         MonoGenericContext from it.
20217
20218 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
20219
20220         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
20221
20222         * basic-long.cs: Add test for checked i8->i2 cast.
20223
20224 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20225
20226         * inssel-ppc.brg: added a couple of speedup rules.
20227
20228 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
20229
20230         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
20231         to speed up rebuilds.
20232
20233 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20234
20235         * mini-s390.c: Minor fix to OP_OR_IMM.
20236
20237 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
20238
20239         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
20240         better. Fixes appdomain-unload.exe on sparc.
20241
20242 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
20243
20244         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
20245         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
20246         see bug 67324.
20247
20248 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
20249
20250         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
20251
20252 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
20253
20254         * mini.c: Always generate a field read/write wrapper for members
20255         of the class MarshalByRefObject since the actual instance could
20256         be a CBO.
20257
20258 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
20259
20260         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
20261
20262 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
20263
20264         * driver.c mini.h trace.c: Move the setting of the main assembly into
20265         a separate function called mono_trace_set_assembly () and call it after
20266         actually loading the main assembly. Fixes #66872.
20267
20268 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
20269
20270         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
20271         using the code manager.
20272
20273 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
20274
20275         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
20276
20277 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
20278
20279         * cpu-amd64.md: Fix bug in previous patch.
20280         
20281         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
20282         #66650.
20283
20284 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
20285
20286         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20287         mini-exceptions.c: updates for changed stack walk interface.
20288
20289 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20290
20291         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
20292
20293 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
20294
20295         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
20296
20297 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
20298
20299         * driver.c (mini_regression_list): Do not call mono_assembly_close 
20300         since assemblies can't be unloaded.
20301         
20302 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20303
20304         * cpu-amd64.md: Fix more instruction lengths.
20305
20306         * cpu-amd64.md: Fix lengths of some instructions.
20307
20308 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
20309
20310         * inssel.brg: Make the array ldelema check aot friendly.
20311
20312 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20313
20314         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
20315
20316         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
20317
20318 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
20319
20320         * mini-x86.c: Fix build.
20321
20322         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
20323         mono_type_get_underlying_type () helper function to simplify code.
20324         
20325 2004-09-09  Martin Baulig  <martin@ximian.com>
20326
20327         * mini-amd64.c: Don't access `type->data.klass' directly, call
20328         mono_class_from_mono_type() instead since the type may be a
20329         generic instance.
20330
20331 2004-09-09  Martin Baulig  <martin@ximian.com>
20332
20333         * mini-amd64.c (get_call_info): Fix support for generic instances.
20334         (add_valuetype): Use mono_class_from_mono_type() to get the class
20335         since we can be a generic instance.
20336
20337 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
20338
20339         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
20340
20341 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
20342
20343         * liveness.c: reset spill costs on each scan: bug 62107
20344
20345 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
20346
20347         * exceptions-sparc.c (mono_arch_find_jit_info): remove
20348         unnecessary line that doesn't compile
20349
20350 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20351
20352         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
20353         trampolines, make them call an error function so people can fix their
20354         code.
20355
20356 2004-09-06  Martin Baulig  <martin@ximian.com>
20357
20358         * mini.c (mono_method_to_ir): When initializing locals, handle a
20359         generic instances like a valuetype if it's a valuetype and like a
20360         class if it's a class.
20361
20362 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20363
20364         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
20365         stack. Fixes #64674.
20366
20367         * exceptions.cs: Add test for unwinding of call arguments.
20368
20369 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
20370
20371         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
20372         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
20373         set the carry/borrow flag). The sparc and s390 implementations
20374         can now use optimized versions (and simplify the code). ppc bugfixes.
20375
20376 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20377
20378         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
20379
20380 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
20381
20382         * inssel-amd64.brg: Remove leftover 32 bit rule.
20383
20384         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
20385
20386 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
20387
20388         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
20389         mono_arch_find_jit_info functions into a new function. Fix a memory
20390         leak.
20391
20392         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
20393         refactored code.
20394         
20395 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20396
20397         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
20398         as well.
20399         
20400         * exceptions.cs: Add array size tests.
20401
20402         * mini.c: Allocate a separate icall wrapper for each arity of 
20403         mono_array_new_va. Fixes #59509.
20404
20405         * exceptions.cs: Add testcase for 64578.
20406
20407         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
20408
20409         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
20410         
20411 2004-09-02  Martin Baulig  <martin@ximian.com>
20412
20413         * mini.c (mono_method_to_ir): When initializing the locals, call
20414         handle_initobj() on the generic instance itself, not its
20415         underlying type.
20416
20417 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20418
20419         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
20420         MonoJitInfo for dynamic methods.
20421
20422         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
20423
20424         * mini.c: Add support for freeing JIT data for dynamic methods.
20425         
20426 2004-09-01  Martin Baulig  <martin@ximian.com>
20427
20428         * mini-x86.c (is_regsize_var): Added support for generic
20429         instances.
20430         (mono_arch_emit_prolog): Make this compile again, use
20431         `x86_push_imm_template (code)'.
20432
20433 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
20434
20435         * mini-x86.c: make all push_imm instructions that get
20436         patched always emit the long form
20437
20438 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
20439
20440         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
20441         in a per-domain hash.
20442
20443         * mini-amd64.c (merge_argument_class_from_type): Handle generic
20444         types.
20445
20446 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
20447
20448         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
20449         work.
20450         
20451         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
20452         work.
20453
20454         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
20455         Beginnings of SSE2 support.
20456
20457         * exceptions.cs: Add more tests for checked int<->uint casts.
20458
20459 2004-08-28  Martin Baulig  <martin@ximian.com>
20460
20461         * mini-x86.c (mono_arch_instrument_epilog): Added support for
20462         generic instances.
20463
20464         * mini.c
20465         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
20466         Handle generic instances recursively.
20467
20468 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20469
20470         * iltests.il: test for conv.u8 on a constant
20471
20472 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20473
20474         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
20475         LCONV_x4 (shrun_32 (membase)).
20476
20477 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20478
20479         * inssel-x86.brg: c&p rules for push/setret of long
20480
20481 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
20482
20483         * inssel-x86.brg: c&p rules for compare (base, regvar) and
20484         compare (regvar, base)
20485
20486         * inssel-x86.brg: more burg love
20487
20488         * inssel.brg: more cleanup
20489
20490         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
20491
20492 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
20493
20494         * basic-long.cs, basic-calls.cs: new tests for optimization.
20495
20496 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
20497
20498         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
20499         patch.
20500
20501 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20502
20503         * mini-amd64.c (read_tls_offset_from_method): Add another case.
20504         
20505 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
20506
20507         * inssel.brg (mini_emit_memcpy): use 
20508         NO_UNALIGNED_ACCESS to disable memcpy optimization
20509
20510 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20511
20512         * mini-amd64.c: Handle generic types in various places.
20513
20514         * mini.c (mono_method_to_ir): Handle generic types in init locals.
20515
20516 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
20517
20518         * mini.c (handle_box): Fix warning.
20519
20520         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
20521
20522         * mini-amd64.h: Enable the emit_state optimization.
20523
20524         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
20525
20526         * mini-amd64.c: Add some new 64 bit peephole opts.
20527
20528         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
20529
20530         * cpu-amd64.md: sreg1 of div instructions must be %rax.
20531
20532         * mini-amd64.c: Register allocator fixes.
20533
20534         * mini.c: Add an optimization to emit_state to avoid allocation of new
20535         registers on some platforms.
20536
20537 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
20538
20539         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
20540
20541         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
20542         allocation. Fixes #63085.
20543
20544         * basic-long.cs: Add new regression test.
20545
20546         * mini-amd64.c: Register allocator improvements.
20547
20548 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
20549
20550         * mini-amd64.c (read_tls_offset_from_method): Add another code
20551         sequence.
20552
20553         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
20554         instruction sequence for nullifying class init trampolines.
20555
20556         * objects.cs: Add new regalloc test.
20557
20558         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
20559
20560 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20561
20562         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
20563         
20564         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
20565         arguments.
20566
20567         * driver.c: Fix profiling after TLS changes.
20568         
20569         * driver.c (mono_main): Set mono_stats.enabled if needed.
20570
20571         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
20572         CEE_BOX.
20573
20574 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
20575
20576         * mini-x86.c: use a 1 op rather than a 2 op tls access
20577         instruction -> faster.
20578
20579 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20580
20581         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
20582         x86 backend.
20583
20584 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
20585
20586         * exceptions-sparc.c (throw_exception): fix typo
20587
20588 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
20589
20590         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
20591         set tree->dreg correctly with tls. Allow any
20592         register to be used.
20593
20594         * mini-x86.c (read_tls_offset_from_method): add new code
20595         generation pattern seen with GCC.
20596
20597
20598 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
20599
20600         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
20601         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20602         exceptions-sparc.c: fix some performance issues in exception
20603         handling and setting of the stack trace for exceptions that were
20604         already thrown.
20605
20606 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20607
20608         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
20609         x86 backend.
20610         
20611         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
20612         registers.
20613
20614 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20615
20616         This patch inlines tls access, when possible.
20617         
20618         * mini.h: new arch functions for TLS intrinsics.
20619         All platforms updated with a stub.
20620
20621         * mini.c: use the new intrinsics
20622
20623         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
20624         arch specific intrinsic for tls variables
20625
20626 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20627
20628         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
20629         under windows.
20630
20631 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20632
20633         * mini.c: thread local allocation
20634
20635 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
20636
20637         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
20638
20639         * Makefile.am: Link against the static version of libmonogc.
20640         
20641         * Makefile.am: Link the static versions of the convenience libraries
20642         into the mono executable.
20643
20644         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
20645
20646 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
20647
20648         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
20649         on integer overflow.
20650
20651         * mini-amd64.c: Reorganize function call code.
20652
20653         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
20654
20655 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20656
20657         * inssel-x86.brg: use xor eax,eax.
20658         
20659         * basic.cs: new tests
20660
20661 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20662
20663         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
20664         in exception throwing code.
20665         
20666 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20667
20668         * inssel-x86.brg: use xor esi,esi.
20669
20670 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20671
20672         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
20673         can trace methods compiled during mini_init () too.
20674
20675         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
20676         CEE_CONV_U4.
20677
20678 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20679
20680         * Makefile.am: static link on x86 (r=zoltan)
20681
20682 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20683
20684         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
20685         code since it causes some programs to fail.
20686
20687 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
20688
20689         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
20690
20691 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
20692
20693         * mini.c: ovfops_op_map - add STACK_OBJ case for
20694         CONV_I 
20695         * basic.cs: add test_0_pin_string as test
20696         case for above.
20697
20698 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
20699
20700         * Makefile.am: build C# if srcdir != builddir
20701
20702 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
20703
20704         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
20705         fall-through blocks.
20706
20707 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20708
20709         * driver.c: enable loop by default again and include abcrem in -O=all.
20710
20711 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
20712
20713         * iltests.il: Add some localloc tests.
20714
20715         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
20716
20717         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
20718         Fixes #62574.
20719
20720         * inssel-amd64.brg: Add some optimizations.
20721
20722         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
20723         for gcc-3.4.
20724
20725         * Makefile.am: Statically link mono against libmono on AMD64.
20726         
20727         * mini-amd64.c inssel-amd64.brg: Optimizations.
20728
20729 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
20730
20731         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
20732
20733         * tramp-amd64.c: Patch calling code in trampolines.
20734
20735 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
20736
20737         * mini-amd64.c: pinvoke struct passing fixes.
20738
20739 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
20740
20741         * mini-sparc.c: redo change, make mono_arch_cpu_init call
20742         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
20743
20744 2004-08-05  Duncan Mak  <duncan@ximian.com>
20745
20746         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
20747         CEE_LDELEM_ANY.
20748
20749 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20750
20751         * mini-amd64.c (emit_move_return_value): Move return value for normal
20752         calls too.
20753
20754 2004-08-05  Martin Baulig  <martin@ximian.com>
20755
20756         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
20757         `type->type'; just modify `type' itself when dealing with enums
20758         and generic instances.
20759         (check_call_signature): Make `simple_type' a `MonoType *'.
20760
20761 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20762
20763         * mini.c: Use OP_PADD to add offsets to addresses.
20764
20765         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
20766
20767 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
20768
20769         * mini-sparc.c (mono_arch_emit_epilog): fix check
20770         for folding last op into restore instruction
20771
20772 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20773
20774         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
20775         helper methods using the code manager.
20776         
20777         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
20778
20779         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
20780
20781 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20782         
20783         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
20784           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
20785
20786         * mini-s390.c: fix tail processing
20787
20788 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
20789
20790         * mini-ppc.c: mul.ovf.un exception name fix.
20791
20792 2004-08-03  Martin Baulig  <martin@ximian.com>
20793
20794         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
20795         instances; before jumping to `handle_enum', also modify `ptype'.
20796
20797 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
20798
20799         * cpu-sparc.md: fcall maximal length too small.
20800
20801 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
20802
20803         * mini-amd64.c mini.h: Add initial support for passing/returning 
20804         structures to/from pinvoked methods.
20805
20806 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
20807
20808         * mini-ppc.c: reg allocator fix.
20809
20810 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
20811
20812         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
20813
20814         * inssel.brg: Optimize memset on 64 bit machines.
20815
20816         * mini-amd64.c: Fix some vararg cases.
20817
20818 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20819
20820         * mini-s390.c: Corrected macro in emit_float_to_int
20821
20822         * s390-abi.cs: Tests to exercise the s390 ABI
20823
20824 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20825
20826         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
20827         caller saved regs.
20828
20829         * basic.cs: Add a test for add.ovf.un.
20830
20831 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
20832
20833         * mini-sparc.c: add case for OP_IDIV_UN
20834
20835 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20836
20837         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
20838         
20839         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
20840
20841 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
20842
20843         * basic.cs: regression tests.
20844
20845         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
20846         regressions.
20847
20848 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20849
20850         * basic.cs: Add a new test.
20851
20852         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
20853         and AOT. Various fixes and optimizations.
20854
20855         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
20856
20857 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20858
20859         * mini-ppc.c: make sure temp regs are not used for global reg
20860         allocation.
20861
20862 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
20863
20864         * cpu-sparc.md: conv_i8 fix for 64bits
20865
20866         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
20867
20868 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
20869         
20870         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
20871         add opcode for cmp BYTE PTR [eax], imm.
20872
20873         * inssel.brg: Make memcpy and memset takes bases.
20874
20875 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
20876
20877         * *-amd64.*: More AMD64 work.
20878         
20879 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
20880
20881         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
20882         add a compare-not-equal opcode.
20883         
20884 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
20885
20886         * mini.c: Use mono_init_from_assembly instead of mono_init.
20887         
20888 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
20889
20890         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
20891
20892         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
20893
20894         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
20895
20896         * inssel.brg: 64 bit fixes.
20897
20898         * mini.h (MonoCallInst): Add some AMD64 specific data.
20899
20900         * mini.h: Add some OP_P opcodes.
20901
20902 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
20903
20904         * basic.cs: tests for 61797 and 61740
20905
20906 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
20907
20908         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
20909         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
20910
20911 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
20912
20913         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
20914
20915         * *-amd64*.*: Ongoing AMD64 work.
20916
20917 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
20918
20919         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
20920
20921         * *-amd64*: Ongoing AMD64 work.
20922
20923         * mini-arch.h: Add AMD64 support.
20924
20925         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
20926
20927         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
20928
20929         * mini-ops.h: Add new opcodes.
20930
20931         * Makefile.am: Add AMD64 support.
20932
20933         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
20934         rules into the inssel-long*.brg files.
20935
20936         * *-amd64.*: Add beginnings of AMD64 backend.
20937
20938 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
20939
20940         * mini.c (print_dfn): commenting out the code that prints
20941         the cil. With -O=deadce, this makes -v -v crash.
20942         
20943         * cpu-pentium.md: make checkthis have a length of 2
20944
20945 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
20946
20947         * mini-sparc.h: fix implementations of __builtin
20948         functions for Sun compiler for V9.
20949
20950 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
20951
20952         * mini.c: use the new stelem.ref wrapper
20953         * exceptions.cs, arrays.cs: new stelem.ref tests
20954
20955 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20956
20957         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
20958         new XSP should work with these changes).
20959
20960 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
20961         
20962         * inssel-{long32,x86,}.brg: trivial optimizations.
20963         
20964 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
20965
20966         * mini.c: load value when emitting box operation in
20967         constrained calls.
20968
20969 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
20970
20971         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
20972         is one byte shorter than cmp DWORD PTR [eax], 0.
20973
20974 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
20975
20976         * inssel-ppc.brg: arguments on the stack are always
20977         relative to the stack pointer (spotted by Neale Ferguson).
20978
20979 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20980
20981         * exceptions-x86.c: delay appending the method name to the trace until
20982         after mono_jit_info_table_find is called, as this gets the real
20983         MonoMethod.
20984
20985 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
20986
20987         * aot.c: register roots
20988
20989 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20990
20991         * aot.c : I could just use PLATFORM_WIN32 flag.
20992
20993 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20994
20995         * aot.c : Reverting the previous fix. This time it broke linux build.
20996
20997 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20998
20999         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
21000
21001 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
21002
21003         * mini.c (handle_stack_args): Remove some more debugging code.
21004         
21005         * mini.c (handle_stack_args): Remove debug output left in by mistake.
21006
21007         * driver.c mini.h aot.c: Allow additional options to be specified with
21008         --aot and pass them to mono_compile_assembly.
21009
21010         * aot.c: Add experimental code to AOT compile all loaded assemblies
21011         on demand and save the code into a cache in the filesystem.
21012
21013         * aot.c: Add support for more wrapper methods.
21014         
21015         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
21016         58863.
21017
21018         * cpu-*.md: Remove removed opcodes.
21019
21020         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
21021         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
21022         related icalls to marshal.c.
21023
21024 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
21025
21026         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
21027
21028         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
21029
21030         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
21031
21032 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
21033         * liveness.c: If liveness is recomputated we need to reset the information
21034         for each variable. This way, if the liveness range has been narrowed
21035         by optimizations that happened after the last computation, we can return
21036         a smaller range.
21037         
21038         For example, if you have
21039         
21040         {
21041                 int i = 0;
21042                 
21043                 // Tons of code that does not affect i
21044                 
21045                 i = foo ();
21046                 ...
21047         }
21048         
21049         i = 0 is dead code and will be removed by SSA. However, when
21050         linear scan gets to the code, i will still appear to be live
21051         throughout the entire block. This prevents good register allocation.
21052
21053 2004-07-06  Martin Baulig  <martin@ximian.com>
21054
21055         * debug-mini.c (mono_debug_init_method): Allow
21056         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
21057         (mono_debug_add_icall_wrapper): New method.
21058
21059         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
21060
21061 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
21062
21063         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
21064         optimization.
21065
21066 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
21067
21068         * aot.c (mono_aot_load_method): Fix loading of debug info.
21069
21070 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
21071
21072         * aot.c: Add logging support.
21073
21074 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
21075
21076         * mini.h: Add prototype for mono_print_method_from_ip.
21077
21078         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
21079
21080         * inssel.brg: 64 bit fixes.
21081
21082         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
21083         inssel-long32.brg.
21084
21085         * Makefile.am: Add SPARC64 support.
21086
21087 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
21088
21089         * aot.c: Fix alignment problems on 32 bit platforms.
21090
21091 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
21092
21093         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
21094         SPARC64.
21095
21096         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
21097         problems.
21098
21099         * mini.h: Bump AOT file version. Some 64 bit fixes.
21100
21101 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
21102
21103         * inssel-sparc.brg: Add new rule to avoid register moves.
21104
21105         * inssel.brg: Add ldind_to_load_membase helper function.
21106
21107 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
21108
21109         * mini.c: OffsetToStringData intrinsic.
21110         
21111 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
21112
21113         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
21114
21115         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
21116         regression tests.
21117
21118         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
21119 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21120
21121         * mini.c: reinstated mono_compile_get_interface_var()
21122         on x86, too, since the change breaks the Gtk# build there as well.
21123
21124 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21125
21126         * driver.c: remove loop from the default optimizations: it seems to
21127         interact badly with some of the other options (see bug #60613).
21128
21129 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
21130
21131         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
21132         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
21133
21134 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
21135
21136         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
21137         vararg-using methods.
21138
21139 2004-06-21  Martin Baulig  <martin@ximian.com>
21140
21141         * mini/mini-exceptions.c
21142         (mono_handle_exception): Added `gpointer original_ip' argument.
21143         After calling mono_unhandled_exception(), call
21144         mono_debugger_unhandled_exception() and if that returns true,
21145         restore the context and return.
21146
21147 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
21148
21149         * mini-ppc.c: prefer the use of relative branches so
21150         they won't need to be patched in aot code (patch from Patrick Beard).
21151
21152 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
21153
21154         * aot.c: patch from Patrick Beard to make the output assembly
21155         more correct for the MacOSX assembler. Small tweak to
21156         generate sane images on Linux/PPC, too.
21157
21158 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21159
21160         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
21161         case until bug #59509 is fixed (shows up in #60332).
21162
21163 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21164
21165         * mini.c: make sure the needed wrappers are compiled, too, with
21166         precomp.
21167
21168 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
21169
21170         * driver.c: remove NPTL reference in --version output.
21171
21172 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21173
21174         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
21175         generate valid assembly for the Mach-O assembler.
21176
21177 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
21178
21179         * driver.c: don't include abcrem in the all optimization specifier
21180         since it slows down jit compilation too much for now.
21181
21182 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
21183
21184         * mini.c: use BIGMUL only if both operands have the same signage.
21185         * iltests.il: Test for bug 60056. (errors related to signage in
21186         BIGMUL).
21187
21188         r=lupus.
21189
21190 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
21191
21192         * mini.c, aot.c: memory leak fixes.
21193
21194 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21195
21196         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
21197
21198 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
21199
21200         * Makefile.am: remove the -static hack completely, it links in
21201         statically glib as well.
21202
21203 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
21204
21205         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
21206         * exceptions.cs: make it compile with new mcs/csc.
21207
21208 2004-06-03 Massimiliano Mantione <massi@ximian.com>
21209         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
21210         and added relevant test case.
21211
21212 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
21213
21214         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
21215         regressions in gtk-sharp.
21216
21217 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
21218
21219         * exceptions.cs: New regression tests.
21220
21221         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
21222
21223 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
21224
21225         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
21226
21227 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
21228
21229         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
21230
21231         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
21232
21233 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
21234
21235         * mini.c (mono_jit_runtime_invoke): Init class in this
21236         method instead of trusting mono_jit_compile_method to
21237         do the work (because wrappers can be in object class)
21238
21239 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
21240
21241         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
21242
21243         * basic-long.cs: New regression test.
21244
21245 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
21246
21247         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
21248         and div/rem checks.
21249
21250 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
21251
21252         * Makefile.am: fix miguel's change to build mono statically against
21253         libmono (track build dependencies).
21254
21255 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21256
21257         * cfold.c: Some glib versions do not have G_MININT32.
21258
21259 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
21260
21261         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
21262         with precision of tan, atan, sin and cos, and implemented related
21263         regressions tests (fixes bug 54467, but one new problem appeared and
21264         is not fixed yet).
21265
21266 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21267
21268         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
21269
21270         * exceptions.cs: Add test for constant folding && division by zero.
21271
21272         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
21273         since driver.c is in libmono too, so the optimization was useless.
21274
21275         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
21276         variable to driver.c so the compiler can emit more efficient code to
21277         access them.
21278
21279 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21280
21281         * Makefile.am: don't distribute generated inssel.[ch] files.
21282
21283 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21284
21285         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
21286         into the default appdomain. Fixes #58707.
21287
21288         * jit-icalls.c: Remove the broken approximation for truncl, doing
21289         no conversion is better.
21290
21291         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
21292         Fixes #58863.
21293
21294 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
21295
21296         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
21297         of the mcrxr instruction which is not available on some processors
21298         even if it's documented to be. Implement add and sub overflow correctly
21299         (still not complete for long unsigned). Speed up icalls a bit.
21300
21301 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
21302
21303         * mini.c (mono_jit_compile_method_with_opt): Make sure that
21304         we run .cctor in the current domain instead of target_domain.
21305         
21306         Fixes bug #58558, .cctor not being called in -O=shared.
21307
21308 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21309
21310         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
21311
21312 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
21313
21314         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
21315         which can be done with an imm8, do it that way.
21316         (mono_arch_output_basic_block): ditto for a jmp
21317         (mono_arch_emit_prolog): Computate maximum offset of a label.
21318
21319 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
21320
21321         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
21322         now tries to allocate prefered physical reg's for virtual
21323         regs. This reduces the number of emited spills/loads with
21324         20-30% on our core assemblies.
21325
21326 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21327
21328         * jit-icalls.c: truncl() is not needed and trunc() is
21329         the correct thing to do anyway (bug #58287).
21330
21331 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
21332
21333         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
21334         if available.
21335
21336 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
21337
21338         * driver.c: enable loop optimizations by default.
21339
21340 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
21341
21342         * mini-x86.c: fix calc of max loop size when aligning loops start.
21343
21344 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
21345
21346         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
21347         the stack.
21348
21349 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
21350
21351         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
21352         should set carry.
21353
21354         * basic-long.cs: Add tests for add/subtract of immediates with carry.
21355
21356         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
21357         
21358         * mini.c (inline_method): Allways inline some wrappers even if the cost
21359         is too large. Fixes #58785.
21360
21361         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
21362         
21363 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
21364
21365         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
21366         (crichton@gimp.org). Beginning of support for sparc/linux.
21367
21368         * mini-sparc.c: Optimize retrieval of LMF address.
21369
21370 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
21371
21372         * exceptions-ppc.c:  handle alloca in methods with clauses.
21373
21374 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
21375
21376         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
21377
21378 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
21379
21380         * mini.c: Delegate most of the abort signal work to 
21381           mono_thread_request_interruption, which also handles Stop and Suspend
21382           states.
21383
21384 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
21385
21386         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
21387         supports the save/restore lmf opcodes.
21388
21389 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
21390
21391         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
21392         by gcc-3.4 as well.
21393
21394         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
21395
21396 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21397
21398         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
21399         methods which contain array accesses.
21400
21401         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
21402         boundaries. Fixes #58537.
21403
21404         * iltests.il: Add regression test for #58537.
21405
21406 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
21407
21408         * mini-x86.c (mono_arch_local_regalloc): Last part of
21409         fix for bug #58633 (releasing register to early).
21410
21411 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
21412
21413         * basic-long.cs: Add new regression test.
21414
21415 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
21416
21417         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
21418         register too early on the chain.
21419
21420 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21421
21422         * mini.c (create_helper_signature): Use a helper function to reduce
21423         the code which needs to be written. Also set the calling convention of
21424         icalls on windows. Fixes #57840.
21425
21426 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
21427
21428         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
21429         exceptions-ppc.c: added helper function to get the instruction address
21430         from a signal handler context.
21431
21432 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21433
21434         * helpers.c: use g_get_tmp_dir. Invokes happyness 
21435         from gonzalo.
21436
21437 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21438
21439         * helpers.c: Add new env variable to pass args to objdump.
21440         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
21441
21442 2004-05-17  Radek Doulik  <rodo@ximian.com>
21443
21444         * Makefile.am (common_sources): added abcremoval.h so it get
21445         disted and daily mono packages on go-mono.com will build again
21446
21447 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
21448
21449         * abcremoval.c: Fixed coding style, added copyright header.
21450
21451         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
21452
21453         * mini.h: Added prototype for abc removal main function.
21454
21455         * build_relations_propagation_table.pl: Added copyright header.
21456
21457 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
21458
21459         * basic-long.cs: reg test for complex ceq_long bug.
21460
21461 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
21462
21463         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
21464         reg in long and clob case (bug #58343). Fixed/added comments.
21465
21466 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
21467
21468         * mini.c (mono_jit_runtime_invoke): Follow new convention
21469         of calling the invoke method with an function pointer.
21470
21471 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
21472
21473         * ChangeLog: Fix author of memory leak patch.
21474
21475 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
21476
21477         * Makefile.am: fix make dist as well...
21478
21479
21480 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
21481
21482         * cfold.c: Made so that conversions from pointer to int4 are no-ops
21483         on archs where pointers are 4 bytes long.
21484
21485         * Makefile.am: Added abcremoval.c source file.
21486
21487         * abcremoval.c: Added abcremoval.c.
21488
21489         * abcremoval.h: Added abcremoval.h.
21490
21491         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
21492
21493         * inssel.brg: Enabled bounds check removal.
21494
21495         * mini.c: Added support for abcrem optimization.
21496
21497         * mini.h: Added abcrem optimization label.
21498
21499         * driver.c: Added support for abcrem optimization.
21500
21501         * propagated_relations_table.def: Added propagated_relations_table.def.
21502
21503 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
21504
21505         * mini.c, cfold.c: fix style.
21506
21507 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21508
21509         * mini.c: handle issue with the low-level implementation of
21510         some long opcodes (bug #54209).
21511
21512 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
21513
21514         * basic.cs: test for my new cmov stuff.
21515
21516 2004-05-13      Patrik Torstensson
21517
21518         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
21519         opt and added peephole documentation.
21520
21521 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
21522
21523         * tramp-ppc.c: rewrote the generic trampoline code.
21524
21525 2004-05-11      Patrik Torstensson
21526
21527         * mini-x86.c: optimize long shl/shr asm code (one less branch)
21528
21529 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
21530
21531         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
21532
21533         * mini.h mini.c dominators.c: Applied patch from Derek Woo
21534         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
21535
21536         * mini.c: Add new icalls for AsAny marshalling.
21537
21538 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
21539
21540         * tramp-ppc.c, mini-ppc.c: more cleanups.
21541
21542 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21543
21544         * mini.c: no warnings.
21545
21546 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21547
21548         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
21549
21550 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
21551
21552         * mini.c: In the thread abort signal handler, if the thread is in the
21553         process of being stoped, don't throw the Abort exception, just stop the
21554         thread.
21555
21556 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
21557
21558         * tramp-ppc.c: removed old code.
21559
21560 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21561
21562         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
21563         do some simple speed optimizations on ppc.
21564
21565 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
21566
21567         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
21568         and large offsets in load/store.
21569
21570 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
21571
21572         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
21573         it causes regressions.
21574
21575 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
21576
21577         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
21578         support.
21579
21580 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21581
21582         * jit-icalls.c: remove warnings.
21583         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
21584         speedups for unsafe code.
21585
21586 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21587
21588         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
21589
21590 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
21591
21592         * basic-calls.cs: Add new regression test.
21593
21594         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
21595         more portable.
21596
21597         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
21598
21599         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
21600         is no longer used.
21601
21602 2004-05-06      Patrik Torstensson
21603
21604         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
21605         long reg allocation in any reg (not only eax:edx) and implemented 
21606         long shl/shr ops in asm instead of helpers.
21607
21608 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
21609
21610         * mini-sparc.h: Fix warnings.
21611
21612         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
21613         stack.
21614
21615         * mini-exceptions.c (mono_handle_exception): Call the filter in a
21616         separate statement for clarity.
21617
21618         * mini-sparc.c: Update status.
21619
21620 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
21621
21622         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
21623         here.
21624
21625 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21626
21627         * inssel-ppc.brg: another small pre-release workaround:
21628         we don't do overflow detection for long_sub_un.
21629
21630 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21631
21632         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
21633         (also works around a weird ppc bug: 57957).
21634
21635 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
21636
21637         * tramp-ppc.c: trampoline fixes.
21638
21639 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
21640
21641         * mini-ppc.c: fixed typos.
21642
21643 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21644
21645         * mini-ppc.c, exceptions-ppc.c: more code saves registers
21646         at the top of the stack. Fixed typos. Use a frame registers
21647         for all the methods with exception clauses.
21648
21649 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21650
21651         * exceptions-ppc.c: restore fp registers.
21652
21653 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
21654
21655         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
21656         order from the stack top (moved the stack room to save the
21657         return value for trace after the param area). Fixed corruption
21658         in restoring registers on unwind.
21659
21660 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21661
21662         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
21663
21664 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21665
21666         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
21667         and prolog/epilog for methods that use it. Allow
21668         enough param area room for varargs methods. Fix miguel's
21669         breakage in exception handling.
21670
21671 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21672
21673         * Makefile.am: run genmdesc only on current arch.
21674
21675 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21676
21677         * exceptions-x86.c:
21678         * mini-x86.h: fix the build on windows.
21679
21680 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
21681
21682         * 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.
21683
21684         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
21685
21686         * mini-exceptions.c: New file.
21687         
21688         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
21689         Move some parts of the x86 exception handling code to an 
21690         arch-independent file so it can be shared with other ports.
21691
21692 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
21693
21694         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
21695
21696 2004-04-26  David Waite  <mass@akuma.org>
21697
21698         * driver.c: remove comma from end of enumeration declaration
21699
21700 2004-04-26  Jackson Harper  <jackson@ximian.com>
21701
21702         * driver.c: parse config file before loading first assembly. This
21703         allows the user gac to be enabled/disabled. 
21704         
21705 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
21706
21707         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
21708         simpler mechanism: we do not care what is encoded initially
21709         (branch absolute or relative), we care about the code and its
21710         target.  I kept the old code for reference for now.
21711
21712         The new code tries first to determine if the jump is anywhere in
21713         the -/+32 absolute meg range, if it succeeds, it encodes using the
21714         absolute branch;  If not, it tried to find something in the
21715         relative range, if not, it uses the handle_thunk code. 
21716
21717 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
21718
21719         * exceptions-ppc.c: use the correct ip register on macosx.
21720
21721 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
21722
21723         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
21724
21725 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
21726
21727         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
21728         Raise exception on integer divide by zero by hand since the hw
21729         doesn't support it. Handle NaNs in FP compares.
21730
21731 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
21732
21733         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
21734         code reducing duplication between the platforms and enabled
21735         signal exception handling (on linux for now).
21736
21737 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
21738
21739         * exceptions-ppc.c: more macosx support.
21740
21741 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21742
21743         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
21744
21745 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
21746
21747         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
21748
21749 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
21750
21751         * iltests.il: more tests.
21752
21753 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21754
21755         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
21756         vars as well.
21757
21758 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21759
21760         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
21761
21762 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21763
21764         * liveness.c: Mark variables as volatile in all basic blocks reachable
21765         from exception clauses.
21766
21767 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
21768
21769         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
21770         inlining.
21771
21772 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
21773
21774         * iltests.il, basic.cs: more tests for regalloc.
21775
21776 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21777
21778         * iltests.il: Some tests for register allocation modifications
21779         I have locally.
21780
21781 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
21782
21783         * exceptions.cs: Add regression test for bug #56782.
21784
21785         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
21786         original stack trace if an exception is rethrown. Fixes #56782. Oh,
21787         the beauty of fixing the same thing in 5 different files...
21788
21789 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
21790
21791         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
21792         methods.
21793
21794 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
21795
21796         * mini.c: Add support for STRWLPARRAY marshalling convention.
21797
21798 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
21799
21800         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
21801         to init the context to setup the regs pointer).
21802
21803 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21804
21805         * exceptions-ppc.c: more exceptions work.
21806
21807 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21808
21809         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
21810         not allowed.
21811
21812 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
21813
21814         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
21815         can use the memory directly.
21816
21817         * cpu-pentium.md: Update documentation from a post from Zoltan. 
21818
21819         add x86_add_membase, x86_sub_membase, x86_mul_membase
21820
21821 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
21822
21823         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
21824         GENERAL_REGS they were also hardcoded for all PPC ports.
21825
21826         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
21827
21828         Remove hard-coded limit for floating point registers, use
21829         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
21830
21831         Notice that in MacOS X calling conventions you can fit a lot more
21832         floating point values in registers, so I should update the PInvoke
21833         test to excercise the passing of floating point values on the
21834         stack (currently broken).
21835         
21836 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
21837
21838         * tramp-ppc.c (create_trampoline_code): Added
21839         JUMP_TRAMPOLINE_SIZE. 
21840         (ppc_magic_trampoline): Follow the pattern from
21841         x86_magic_trampoline: if code is set to zero, return. 
21842         (create_trampoline_code): Always pass MonoMethod to the jump
21843         trampoline, before it was passing a null.
21844         (mono_arch_create_jump_trampoline): Implement the jump stub, could
21845         share the code with mono_arch_create_jit_trampoline. 
21846
21847         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
21848         implemented.
21849         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
21850         implemented.  
21851
21852         * cpu-g4.md: Added length for jmp instruction, the worst case
21853         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
21854         for save_lmf).
21855
21856 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
21857
21858         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
21859
21860 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
21861
21862         * mini.c: Only set bblock->real_offset when adding a new bblock, and
21863         before each IL instruction.
21864
21865         * mini.c (CEE_BOX): Fix warnings.
21866
21867 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21868
21869         * mini.c: removed a few unused vars and extra whitespace.
21870
21871 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
21872
21873         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
21874         checks.
21875         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
21876         index.
21877         (OP_GETCHR): use the above
21878         (CEE_LDELEMA): use the above.
21879
21880         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
21881         version of the generic impl.
21882         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
21883         (CEE_LDELEMA): use the above.
21884
21885 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
21886
21887         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
21888         Fixes #56317.
21889
21890         * iltests.il: Added new regression test for #56317.
21891
21892 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
21893
21894         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
21895         under NetBSD. Fixes #56450.
21896
21897         * liveness.c (update_gen_kill_set): Fix previous patch.
21898
21899 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21900
21901         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
21902
21903 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
21904
21905         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
21906         ldsfld and ldsflda.
21907
21908         * inssel-sparc.brg: Add more optimizations.
21909
21910         * mini-sparc.c: Replace multiply/divide with shifts if possible.
21911
21912 2004-04-01  Martin Baulig  <martin@ximian.com>
21913
21914         * mini.c (handle_box): New static function; moved the
21915         implementation of CEE_BOX here.
21916         (mono_method_to_ir): Added `constrained_call' variable.
21917         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
21918         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
21919         mono_method_get_constrained() to get the method.
21920
21921 2004-04-01  Martin Baulig  <martin@ximian.com>
21922
21923         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
21924         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
21925         (mono_method_to_ir): We don't need these macros anymore since
21926         mono_class_get_full() already takes care of it. 
21927
21928 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21929
21930         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
21931         use @function (as doesn't accept #function here) and check the return
21932         value of system and stop if fails.
21933
21934 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21935
21936         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
21937
21938 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
21939
21940         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
21941
21942         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
21943
21944         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
21945         #56223.
21946
21947         * basic-long.cs: Add test for negation of Int64.MinValue.
21948
21949 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
21950
21951         * mini-sparc.c: Update status.
21952
21953         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
21954
21955         * exceptions-sparc.c: Fix return value in filters.
21956
21957         * inssel-sparc.brg: Fix register allocation in some rules.
21958
21959 2004-03-28  Martin Baulig  <martin@ximian.com>
21960
21961         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
21962         if neccessary.  
21963
21964 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
21965
21966         * mini-x86.c (mono_arch_patch_code): Fix warnings.
21967         
21968         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
21969         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
21970         remove unused conv_u4 opcode.
21971
21972         * mini-x86.c: Remove valgrind workaround since it slows down things
21973         even when mono is not run under valgrind.
21974
21975 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
21976
21977         * mini-sparc.c: Update status.
21978
21979         * inssel-sparc.brg: Add some optimizations.
21980
21981         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
21982         future delay slot filling. Add support for varargs, tail calls and JMP.
21983
21984         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
21985         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
21986
21987         * inssel.brg: Fix register allocation in OP_ARGLIST.
21988
21989         * inssel.brg: Fix warnings.
21990
21991 2004-03-25  Martin Baulig  <martin@ximian.com>
21992
21993         * mini.c (inflate_generic_field): Removed.
21994         (mini_get_method): Removed, use mono_get_method_full(),
21995         (mini_get_class): Removed, use mono_class_get_full().
21996         (mono_method_to_ir): Pass our generic context to
21997         mono_field_from_token().        
21998
21999 2004-03-25  Martin Baulig  <martin@ximian.com>
22000
22001         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
22002         of a `MonoMethod *'.
22003         (mini_get_method): Take a `MonoGenericContext *' instead
22004         of a `MonoMethod *'.
22005         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
22006         a new local variable called `generic_context' which holds the
22007         current `MonoGenericContext *'; use it to lookup things.
22008
22009 2004-03-24  Martin Baulig  <martin@ximian.com>
22010
22011         * mini.c (mini_get_class): New static method; if we're inside a
22012         generic instance, inflate the class if neccessary.
22013         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
22014
22015 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
22016
22017         * iltests.il: New regression test for #55976.
22018
22019         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
22020         #55976.
22021
22022 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
22023
22024         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
22025         output.
22026
22027 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
22028
22029         * liveness.c: Consider SSA stores as well as loads when making vars
22030         volatile.
22031
22032         * exceptions.cs: New regression tests for register allocation.
22033         
22034 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
22035
22036         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
22037         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
22038           domain lock only to protect puntual access to data structures.
22039           Added access lock for sighash, jit_icall_hash_name, 
22040           jit_icall_hash_addr and domain->code_mp.
22041
22042 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
22043
22044         * driver.c: Print SIGSEGV handling method.
22045
22046         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
22047
22048         * mini.c (setup_jit_tls_data): Handle case when this is called
22049         multiple times for a thread.
22050
22051         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
22052         is different from fbxx_un. Fixes #54303. Also use constants instead of
22053         magic numbers in a lot of places.
22054
22055 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
22056
22057         * exceptions.cs: Fix cctor test when --regression is used.
22058
22059 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
22060
22061         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
22062         for Linux/ppc.
22063
22064 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
22065
22066         * inssel-ppc.brg: fixed register assignments for some rules.
22067
22068 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22069
22070         * exceptions.cs: Add test for exceptions in static constructors.
22071
22072         * mini.c (mono_jit_compile_method_with_out): Move the calling of
22073         static constructors outside the domain lock. Fixes #55720.
22074
22075 2004-03-17  Martin Baulig  <martin@ximian.com>
22076
22077         * mini.c (get_generic_field_inst): Removed, this'll never happen.
22078         (inflate_generic_field): Take the `MonoMethod *' instead of the
22079         `MonoClass *' and added support for generic method.
22080         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
22081         have a `field->parent->gen_params', only inflate the field if it's
22082         an open constructed type.
22083
22084 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22085
22086         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
22087         exception object instead of the preconstructed ones.
22088
22089 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22090
22091         * mini.c: reverted changed to sigsegv_signal_handler commited
22092         accidentally in the previous patch.
22093
22094 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22095
22096         * mini.c:
22097         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
22098         running --aot with an old assembly.
22099
22100 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
22101
22102         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
22103         point values.
22104
22105         * mini-sparc.c: Add support for v9 branches with prediction.
22106
22107 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
22108
22109         * mini.c (mini_init): #warning is GNUC only
22110
22111         * mini-sparc.h: implement __builtin_frame_address
22112         and __builtin_return_address for Sun C compiler
22113
22114 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
22115
22116         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
22117
22118 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
22119
22120         * basic-calls.cs: Add test for unaligned byref long argument passing.
22121
22122         * mini-ops.h: Add sparcv9 compare and branch instructions.
22123
22124         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
22125         v9 instructions if we have a v9 cpu.
22126
22127         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
22128         registers for global allocation.
22129
22130         * exceptions-sparc.c: Fixes.
22131         
22132 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
22133
22134         * liveness.c (mono_analyze_liveness): Optimized version.
22135
22136         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
22137
22138         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
22139         sparc work.
22140
22141         * basic-float.cs basic-calls.cs: New regression tests.
22142
22143 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
22144
22145         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
22146         sigaltstack implementation.
22147
22148         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
22149         
22150         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
22151         stuff if SIGSEGV_ON_ALTSTACK is not defined.
22152
22153 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
22154
22155         * mini.c: Fix warnings.
22156         
22157         * mini.c (mono_resolve_patch_target): New function which contains the
22158         arch independent part of the patching process.
22159
22160         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
22161         patching code to a separate function.
22162
22163 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
22164
22165         * mini.c (add_signal_handler): ifdef out on Windows
22166
22167 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
22168
22169         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
22170         cpu-sparc.md: Add exception handling support + other fixes.
22171
22172         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
22173         typed GC detection in --version.
22174
22175         * basic.cs exceptions.cs: New regression tests.
22176
22177         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
22178         the arch specific code can store data during a compilation.
22179
22180         * mini-ops.h: Add OP_SETFRET.
22181
22182         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
22183         function, register a separate icall for each arity, so the icalls can
22184         get a wrapper.
22185         
22186         * mini.c (mono_print_tree): Print negative offsets in a more readable
22187         form.
22188         
22189         * mini.c: Make signal handling work on sparc.
22190         
22191         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
22192
22193         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
22194
22195         * jit-icalls.c: Emulate truncl by aintl on solaris.
22196
22197         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
22198
22199 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
22200
22201         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
22202
22203 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
22204
22205         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
22206         a MarshalByRef type, inline a method that performs the check, taking into
22207         account that the object can be a proxy. Also implemented tow new opcodes:
22208         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
22209         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
22210         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
22211
22212 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
22213
22214         * mini-ppc.c: if a relative branch displacement is too big
22215         but it points to and area reachable with an absolute branch, 
22216         avoid the thunks.
22217
22218 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
22219
22220         * mini.c: optimize small copies in cpblk.
22221
22222 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
22223
22224         * basic-calls.cs basic-float.cs: New regression tests.
22225
22226         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
22227         negative offsets from %fp. Implement localloc. Fix local register 
22228         allocation. Fix the case when the this argument needs to be saved to
22229         the stack. Implement some missing opcodes.
22230
22231 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
22232
22233         * mini.c (mini_method_compile): Reenable global regalloc in methods
22234         with exception handlers.
22235
22236         * linear-scan.c (mono_varlist_sort): Fix warning.
22237
22238         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
22239
22240         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
22241         regalloc costs.
22242
22243         * liveness.c: Make all variables uses in exception clauses volatile, to
22244         prevent them from being allocated to registers. Fixes #42136.
22245
22246 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
22247
22248         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
22249         causes regressions.
22250
22251         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
22252         argument to mono_arch_regalloc_cost.
22253
22254         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
22255         precisely.
22256
22257 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
22258
22259         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
22260         Make the cost of allocating a variable to a register arch dependent.
22261
22262         * basic-calls.cs: Fix compilation of tests.
22263         
22264         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
22265         helper function to cut back on the number of #ifdefs needed.
22266
22267         * mini-ppc.c: Fix compilation.
22268
22269         * basic-calls.cs: New regression tests.
22270
22271         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
22272
22273         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
22274         of l0 since that is callee saved.
22275
22276         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
22277         to virtual calls.
22278
22279         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
22280         of delay instruction.
22281
22282         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
22283
22284         * mini.h (MonoCallInst): Add 'virtual' flag.
22285
22286         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
22287
22288 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
22289
22290         * *.cs: New regression tests.
22291
22292         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
22293         work.
22294
22295         * mini.c (mono_runtime_install_handlers): Fix build.
22296
22297         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
22298         'signal_stack_size' members.
22299
22300         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
22301         alternate signal stack.
22302
22303         * exceptions-x86.c: Add stack overflow handling.
22304
22305         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
22306         functions to arch independent code.
22307
22308         * mini.c (mono_print_tree): Print more detailed info for load_membase
22309         opcodes.
22310         
22311 2004-02-23  Martin Baulig  <martin@ximian.com>
22312
22313         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
22314
22315 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
22316
22317         * mini-x86.c: fixed reg allocation for div/rem.
22318
22319 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
22320
22321         * driver.c (mono_main): Report some configuratio options on --version.
22322
22323 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
22324
22325         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
22326         low in the address space. Correctly flush memory in thunks where we
22327         output native code.
22328
22329 2004-02-20  Martin Baulig  <martin@ximian.com>
22330
22331         * mini.c (mini_get_method): New static method; inflate all generic
22332         methods and methods in open generic instances.
22333         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
22334         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
22335
22336 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
22337
22338         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
22339
22340         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
22341
22342 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
22343
22344         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
22345
22346         * mini-sparc.c (flushi mono_arch_output_basic_block): make
22347         it compile using Sun's compiler.
22348
22349 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
22350
22351         * 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.
22352
22353         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
22354
22355 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
22356
22357         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
22358         code.
22359         * mini-ppc.c: handle calls outside of the allowed range with thunks
22360         allocated using the code manager.
22361         * tramp-ppc.c: use the code manager to hold generated native code.
22362         Fixed the magic trampoline to just patch vtable entries.
22363
22364 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
22365
22366         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
22367         independent file.
22368
22369 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
22370
22371         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
22372         PPC.
22373
22374         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
22375         if we have a working __thread implementation.
22376
22377         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
22378         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
22379
22380 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
22381
22382         * mini-x86.c: Fix compilation under gcc 2.
22383         
22384 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
22385
22386         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
22387         contains a call to the wrapped function.
22388
22389         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
22390         OP_<CALL>_IMM opcodes, and use them under X86.
22391         
22392         * mini.c (mono_jit_find_compiled_method): Fix warning.
22393
22394         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
22395
22396         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
22397
22398         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
22399         functionality to mini.c.
22400
22401         * mini.c (mono_create_jump_trampoline): New function to create a jump
22402         trampoline. Return a compiled method instead of a trampoline if it
22403         exists. Add a cache for jump trampolines.
22404
22405         * mini.c (mono_jit_find_compiled_method): New function to return a
22406         compiled method if it exists.
22407
22408         * mini-x86.c: Call mono_create_jump_trampoline instead of 
22409         mono_arch_create_jit_trampoline.
22410
22411         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
22412         a jump trampoline. Fixes #52092.
22413         
22414 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
22415
22416         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
22417         which is not up-to-date. Add check_corlib_version () instead.
22418
22419         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
22420         have to call it.
22421         
22422         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
22423         since newer valgrind versions do not need it.
22424
22425         * mini.c (mono_jit_compile_method_with_opt): New helper function to
22426         compile a method with a given set of optimizations.
22427
22428         * mini.c: Compile icall wrappers on-demand instead of at startup.
22429
22430         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
22431         wrapper for an icall.
22432
22433 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
22434
22435         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
22436         #54063.
22437
22438         * iltests.il: Add test for non-empty stack before switch instruction.
22439
22440 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
22441
22442         * mini.c: Add support for new stringbuilder marshalling conventions.
22443
22444         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
22445
22446 2004-02-01  Martin Baulig  <martin@ximian.com>
22447
22448         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
22449         in `ginst->mtype_argv'.
22450
22451 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
22452
22453         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
22454         facilitate grepping.
22455
22456 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
22457
22458         * mini.c: fixed buglet in initobj generic implementation for references.
22459
22460 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
22461
22462         * Makefile.am: make the version script conditional.
22463         * jit-icalls.c: handle missing truncl().
22464
22465 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
22466
22467         * exceptions.cs: Add more tests for double->int conversion.
22468
22469         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
22470         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
22471
22472 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
22473
22474         * driver.c: make --verbose --version emit an error
22475         if the loaded corlib doesn't match the runtime version.
22476
22477 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
22478
22479         * mini-ppc.h: export ppc_patch().
22480         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
22481         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
22482         on par or better than on MacOSX.
22483
22484 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
22485
22486         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
22487         mono_lookup_pinvoke_call.
22488
22489         * mini-x86.c: Under windows, the default pinvoke calling convention is
22490         stdcall. Fixes #52834.
22491
22492         * mini.c (optimize_branches): Add an upper bound to the number of
22493         iterations to prevent infinite loops on strange loops. Fixes #53003.
22494
22495 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
22496
22497         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
22498         and ISINST. Fixes #52093.
22499
22500         * objects.cs (test_0_vector_array_cast): New tests.
22501         
22502 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
22503
22504         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
22505         checking in Array.Set ().
22506
22507         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
22508         #52590.
22509
22510         * object.cs (test_0_multi_array_cast): New regression test.
22511
22512 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
22513
22514         * exceptions-ppc.c: fix build on Linux/PPC.
22515
22516 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
22517
22518         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
22519         running under valgrind.
22520         (x86_magic_trampoline): Fix build bustage.
22521
22522         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
22523         negative values as well. This is needed for the encoding of the line number
22524         info, since sometimes the line numbers are not in increasing order.
22525
22526 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
22527
22528         * cpu-pentium.md (localloc): Increase the size of the localloc 
22529         instruction since it is a loop under Win32.
22530
22531         * debug-mini.c (record_line_number): Get rid of unneccesary memory
22532         allocation.
22533
22534 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
22535
22536         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
22537         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
22538         Max Horn (max@quendi.de). Fix file names in comments.
22539
22540 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
22541
22542         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
22543         avoid stack overflow.
22544         (replace_usage): Avoid uninitialized variable warnings.
22545
22546         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
22547         and taking the address of valuetype variables.
22548
22549 2004-01-03  Patrik Torstensson
22550
22551         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
22552         for other purposes than FP later on.
22553
22554 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
22555
22556         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
22557         of tail calls.
22558
22559 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
22560
22561         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
22562
22563 2003-12-30  Patrik Torstensson <p@rxc.se>
22564
22565         * mini-x86.h: Decreased number of availiable fp regs.
22566         Solves corner cases with FP spilling.
22567
22568 2003-12-23  Patrik Torstensson <p@rxc.se>
22569
22570         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
22571         for floating point stack tracking / spilling on x86. 
22572         Fixes bug #49012.
22573         
22574         * basic-float.cs: added float mul overflow test.
22575
22576 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
22577
22578         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
22579
22580 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
22581
22582         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
22583         supports for cond branches that overflow the immediate
22584         overflow offset. mcs can compile simple programs.
22585
22586 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
22587
22588         * exceptions-ppc.c: exception handling support wip:
22589         finally handlers get run on exception.
22590
22591 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
22592
22593         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
22594         profiling.
22595
22596 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
22597
22598         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
22599         initial support for stack walking and unwinding.
22600
22601 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
22602
22603         * driver.c (mono_main): Make corlib-out-of-sync message more 
22604         descriptive. Also remove verify_corlib call.
22605
22606 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
22607
22608         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
22609         not overlap with other call's arguments, too.
22610
22611 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
22612
22613         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
22614         move to arch-specific code the choice of arch-specific
22615         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
22616         * mini.c: ensure emulation calls will not interleave
22617         with other calls.
22618
22619 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
22620
22621         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
22622         the magic trampoline stack frame is dropped before executing
22623         the new method.
22624
22625 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
22626
22627         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
22628         and integer to fp conversions. Added support for overflowing
22629         arguments on the stack. Reserve a couple more registers as temps.
22630         Added support for aot compilation (as output still needs to be
22631         tweaked, though).
22632
22633 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22634
22635         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
22636         Don't overwrite return register in some corner cases.
22637
22638 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
22639
22640         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
22641         static constructors when AOT compiling.
22642
22643         * driver.c (mono_main): Call mono_check_corlib_version.
22644
22645 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
22646
22647         * cpu-g4.md, basic.cs: fixed div target register.
22648
22649 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
22650
22651         * mini-ppc.c, basic.cs: shl_imm fix with test.
22652
22653 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
22654
22655         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
22656         structures by value. Misc fixes.
22657         * objects.cs: more tests.
22658
22659 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
22660
22661         * mini-ppc.c: lconv.ovf.i implemented.
22662
22663 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22664
22665         * mini.c:
22666         (mini_init): don't error out if someone already called g_thread_init.
22667
22668 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
22669
22670         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
22671         to be any type per the spec. Fix abnormal memory usage when
22672         the same object is repeatedly thrown.
22673
22674 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
22675
22676         * mini.c: check for overruns in IL code.
22677
22678 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
22679
22680         * TODO: Add/remove some todo entries.
22681
22682 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
22683
22684         * driver.c (mono_main): Call mono_verify_corlib.
22685
22686 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
22687
22688         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
22689         This has been moved to mini.c
22690         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
22691         type being casted is marshalbyref it could be a proxy, so instead of
22692         emitting the type check code, emit a call to a runtime method that will
22693         perform the check by calling CanCastTo if needed.
22694
22695 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
22696
22697         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
22698         methods with large stack frames under Win32.
22699
22700 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
22701
22702         * Makefile.am: Distribute regression tests.
22703
22704         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
22705         at the end instead of inserting each variable into the sorted list.
22706
22707         * linear-scan.c (mono_varlist_sort): New helper function.
22708         
22709 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
22710
22711         * mini.c: ensure arguments and locals are within bounds.
22712
22713 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22714
22715         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
22716         related fixes.
22717
22718 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
22719
22720         * mini.c (mono_cprop_copy_values): Fix crash.
22721
22722         * aot.c: Set verbosity back to 0.
22723         
22724 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22725
22726         * regalloc.c: complete memory leak fix by Laurent Morichetti
22727         (l_m@pacbell.net).
22728
22729 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
22730
22731         * driver.c (main_thread_handler): Revert the previous patch.
22732
22733         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
22734         under valgrind.
22735
22736         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
22737         memory from the memory pool.
22738
22739         * driver.c (main_thread_handler): Turn on all optimizations when
22740         --aot is used.
22741
22742         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
22743         an array for better performance.
22744
22745         * regalloc.c (mono_regstate_assign): Fix memory leak.
22746
22747         * debug-mini.c (mono_debug_serialize_debug_info): New function to
22748         serialize the debug info.
22749
22750         * debug-mini.c (mono_debug_add_aot_method): New function to load the
22751         debug info from the serialized representation.
22752
22753         * aot.c: Save debug info into the generated file and load it when 
22754         loading a method.
22755
22756         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
22757
22758 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
22759
22760         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
22761         More FP-related fixes.
22762
22763 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
22764
22765         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
22766         and register allocation buglet. Hello world now runs.
22767
22768 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
22769
22770         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
22771         * tramp-ppc.c: fixed class init trampoline.
22772         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
22773
22774 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
22775
22776         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
22777         mini.c: more ppc changes/fixes.
22778
22779 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
22780
22781         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
22782         Also optimize the case when the arguments are the same in the caller 
22783         and in the callee.
22784
22785         * iltests.il: Add tests for tail calls with valuetype arguments.
22786
22787 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
22788
22789         * mini-ppc.c: fixes for struct return type.
22790
22791 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
22792
22793         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
22794         mono_spillvar_offset() to arch-specific code.
22795
22796 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
22797
22798         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
22799
22800 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
22801
22802         * exceptions-x86.c: Fix stack space leaks.
22803         
22804         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
22805         registers from the lmf if the method has save_lmf set.
22806
22807 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
22808
22809         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
22810         of icall wrappers into InvokeInDomain, since these are now per-domain.
22811
22812 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
22813
22814         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
22815         make some opcode emulation and intrinsic ops enabled/disabled 
22816         according to the architecture. More fixes.
22817
22818 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
22819
22820         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
22821
22822 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
22823
22824         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
22825         arch-specific handling for 'this' and struct return type to
22826         arch-specific code.
22827
22828 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22829
22830         * aot.c: prevent divide by zero error when reporting (it happened with
22831         Accessibility.dll).
22832
22833 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
22834
22835         * mini.h (inst_switch): Remove unused macro.
22836
22837 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22838
22839         * aot.c:
22840         (load_aot_module): free 'info->methods' and 'info' properly. No more
22841         "free(): invalid pointer blah" messages when you have an old aot
22842         compiled assembly.
22843
22844 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
22845
22846         * jit-icalls.c, mini.c: Added support for context static fields.
22847
22848 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
22849
22850         * mini.c (mono_method_blittable): Methods which set LastError are not 
22851         blittable either. Fixes #51108.
22852         
22853 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
22854
22855         * mini.c: flush icache.
22856         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
22857
22858 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
22859
22860         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
22861
22862 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
22863
22864         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
22865         safe on IA32.
22866
22867         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
22868         vararg calls.
22869
22870         * inssel.brg (CEE_MKREFANY): Fix AOT case.
22871
22872 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
22873
22874         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
22875         instruction when the result is discarded.
22876
22877         * iltests.il (test_0_div_regalloc): New regression test.
22878
22879         * arrays.cs: Fix compilation error.
22880
22881 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
22882
22883         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
22884         float rules to inssel-x86.brg: sane architectures with FP registers
22885         don't need to implement these rules.
22886
22887 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
22888
22889         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
22890
22891 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22892
22893         * mini.h, inssel-long32.brg: fixed endianess issues in int64
22894         implementation of 32 bit systems.
22895
22896 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
22897
22898         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
22899         (Jeroen Zwartepoorte).
22900
22901 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
22902
22903         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
22904         the caller and the callee matches.
22905         
22906         * mini.c (mono_method_to_ir): Add comment.
22907
22908         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
22909         signbit is missing on some platforms.
22910
22911 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
22912
22913         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
22914
22915         * mini.c (setup_jit_tls_data): Call the new function.
22916         
22917         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
22918
22919         * mini-x86.c: Add experimental support for fast access to the lmf
22920         structure under NPTL/Linux 2.6.x.
22921
22922 2003-11-06  Martin Baulig  <martin@ximian.com>
22923
22924         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
22925         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
22926         the debugger.
22927
22928 2003-11-02  Martin Baulig  <martin@ximian.com>
22929
22930         * mini.c (inflate_generic_field): New static method.
22931         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
22932         generic instance and the field is declared in a generic type, call
22933         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
22934
22935 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
22936
22937         * mini.h mini.c (mono_method_same_domain): New function to return
22938         whenever the caller and the callee are in the same domain.
22939
22940         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
22941
22942 2003-10-30  Martin Baulig  <martin@ximian.com>
22943
22944         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
22945         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
22946         method parameters.
22947         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
22948         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
22949
22950 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
22951
22952         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
22953         propagation.
22954
22955         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
22956         object here, so it is in the correct appdomain etc.
22957
22958 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
22959
22960         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
22961         already done.
22962         (mono_method_to_ir): Avoid freeing the type created returned from
22963         mono_type_create_from_typespec, since it is put into an internal cache
22964         by the function. Fixes pointer.exe.
22965
22966         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
22967         trampolines for icalls and pinvokes as well. Fixes #33569.
22968
22969 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
22970
22971         * mini.c: Update after appdomain changes.
22972
22973         * mini.c (mono_jit_compile_method_inner): Allways compile native
22974         method wrappers in the root domain, since there can only be one
22975         instance of them, whose address is stored in method->info.
22976
22977 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
22978
22979         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
22980         environment variable. Instead detect automatically whenever running
22981         under valgrind using the magic macro RUNNING_ON_VALGRIND from
22982         valgrind.h.
22983
22984 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
22985
22986         * trace.c, trace.h: New files that implement the new trace option
22987         parsing. 
22988
22989         * driver.c: Document new --trace options.
22990
22991         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
22992         mini-x86.c: Apply:
22993
22994         -       if (mono_jit_trace_calls)
22995         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
22996
22997         * mini.h: prototypes.
22998         
22999 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
23000
23001         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
23002
23003         * mini.c inssel.brg: Implement typedefbyref opcodes.
23004
23005         * mini.c (mono_jit_compile_method): Remove unused local variable.
23006
23007         * mini.c (mono_jit_compile_method_inner): Ditto.
23008         
23009 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
23010
23011         * tramp-x86.c (x86_class_init_trampoline): Fix build.
23012         
23013         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
23014
23015 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
23016
23017         * mini.c (mono_no_aot): Remove unused global variable.
23018
23019         * mini.c: Thread safety fixes.
23020
23021 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
23022
23023         * mini.c (mono_create_class_init_trampoline): Add a lock around
23024         class_init_hash_addr.
23025
23026         * arrays.cs (test_0_newarr_emulation): Add new regression test for
23027         #30073.
23028
23029         * mini.c: Decompose the NEWARR instruction before decomposing its
23030         arguments. Fixes #30073.
23031
23032 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
23033
23034         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
23035         convention.
23036
23037 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
23038
23039         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
23040
23041         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
23042
23043         * driver.c: Add support for compiling icall wrappers to --compile.
23044
23045 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
23046
23047         * inssel.brg: The empty value in class->interface_offsets is -1, not
23048         0. Fixes #49287.
23049
23050 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
23051
23052         * objects.cs: New test for 'is' operator on an array of interfaces.
23053
23054 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23055
23056         * tramp-ppc.c: update trampoline code to support jumps
23057         and class initialization.
23058
23059 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
23060
23061         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
23062
23063         * inssel.brg (OP_UNBOXCAST): Fix #46027.
23064
23065         * inssel.brg (OP_UNBOX): Remove unused rule.
23066
23067         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
23068         region instead of one for each method. Fixes #47813.
23069
23070 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
23071
23072         * exceptions.cs (test_0_nested_finally): New regression test for
23073         nested exception handlers.
23074
23075         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
23076
23077         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
23078
23079         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
23080         inlining.
23081
23082         * mini.c (mono_method_check_inlining): Make the inlining limit 
23083         configurable by an environment variable.
23084         
23085         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
23086
23087         * mini.h: Bump AOT file version.
23088
23089         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
23090         token, store the image along with the token, since the token might not 
23091         refer to the same image as the method containing the relocation, 
23092         because of inlining.
23093
23094 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
23095
23096         * mini.c (mono_precompile_assemblies): New function to compile
23097         all methods in all loaded assemblies.
23098
23099         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
23100
23101         * regalloc.h regalloc.c (MonoRegState): Change the type of 
23102         iassign and fassign to int*, since they can contain large negative
23103         values if the register is spilled. Also added some comments. Fixes
23104         #45817.
23105
23106         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
23107         under Win32. Fixes #42964.
23108
23109 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
23110
23111         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
23112
23113         * aot.c: Added support for AOT compiling methods which contain calls
23114         to wrappers. Currently, only remoting-invoke-with-check wrappers are
23115         handled.
23116         
23117         * driver.c (compile_all_methods): Run the compilation in a thread
23118         managed by mono. Fixes #44023.
23119
23120         * mini.c (mono_codegen): Print full method name in verbose output.
23121
23122         * mini-x86.c (mono_arch_patch_code): Fix warning.
23123         
23124         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
23125         jumps, since the method we are jumping to might be domain-specific.
23126
23127         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
23128
23129 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23130
23131         * inssel.brg: string chars are unsigned.
23132
23133 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
23134
23135         * TODO: New todo item.
23136
23137         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
23138         which calls mono_runtime_class_init and patches the call site to
23139         avoid further calls.
23140         (mono_arch_create_class_init_trampoline): New arch specific function 
23141         to create a class init trampoline.
23142         (create_trampoline_code): Generalized so it can create
23143         class init trampolines as well.
23144
23145         * mini.c (helper_sig_class_init_trampoline): New helper variable.
23146         (mono_create_class_init_trampoline): New function to create and cache
23147         class init trampolines.
23148         (mono_find_class_init_trampoline_by_addr): New function to lookup the
23149         vtable given the address of a class init trampoline. Used by the
23150         patching process.
23151         (mono_codegen): Generate a call to a trampoline instead of
23152         mono_runtime_class_init in LDSFLD[A].
23153         (mono_codegen): Add relocations for the new trampoline.
23154         
23155         * mini.h mini-x86.c aot.c: Added a new relocation type: 
23156         MONO_PATCH_INFO_CLASS_INIT.
23157
23158         * mini.h: Bump AOT version number.
23159
23160         * aot.c: Create a copy of the loaded code instead of using the original
23161         so methods which call each other will be close in memory, improving
23162         cache behaviour.
23163         
23164         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
23165         patch since it breaks the regression tests.
23166         
23167         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
23168         for the register saving instruction sequence since the 
23169         frame_state_for function in glibc 2.3.2 don't seem to detect it.
23170
23171 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
23172
23173         * TODO: Fix todo item && remove another.
23174
23175 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
23176
23177         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
23178         previous checkin.
23179
23180         * aot.c: Moved the check for MONO_LASTAOT into the initialization
23181         function of the module.
23182
23183         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
23184         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
23185         --no-aot command line option.
23186
23187 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
23188
23189         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
23190         by Bernie Solomon (bernard@ugsolutions.com).
23191
23192         * inssel.brg: Refactor the interface offset table related code into
23193         its separate functions and add support for the AOT case.
23194
23195 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
23196
23197         * aot.c (mono_aot_get_method_inner): Fix memory leak.
23198         
23199         * aot.c: Added mono_aot_verbose variable and made all debugging
23200         output depend on the value of this variable.
23201
23202         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
23203         method_label and info_label.
23204
23205         * mini.h mini-x86.c aot.c: Added a new relocation type 
23206         MONO_PATCH_INFO_IID for klass->interface_id.
23207
23208         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
23209         the MonoJitInfo structure.
23210
23211         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
23212         a non-root appdomain in shared mode.
23213
23214 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
23215
23216         * aot.c: make aot loader less verbose. Remove free of unused variable.
23217
23218 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
23219
23220         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
23221
23222         * .cvsignore: Added *.dll.
23223
23224         * mini.c (mono_print_tree_nl): New function callable while debugging.
23225
23226         * mini.c (mono_print_code): Export this.
23227
23228         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
23229         patched code.
23230
23231 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
23232
23233         * mini.h (MonoCompile): Added 'jit_info' field.
23234
23235         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
23236         the cfg structure, since it is needed by the AOT compiler.
23237
23238         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
23239
23240         * aot.c: A major rewrite. Changes include:
23241         - save exception tables for methods which have them.
23242         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
23243         to g_module_symbol.
23244         - reworked the file format so it is now much smaller and needs
23245         fewer relocation entries.
23246         
23247 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
23248
23249         * aot.c (load_aot_module): Fix build bustage on platforms without
23250         Boehm GC.
23251
23252 2003-09-04  Martin Baulig  <martin@ximian.com>
23253
23254         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
23255
23256 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
23257
23258         * TODO: Some new optimization ideas.
23259
23260         * aot.c: Move AOT module loading logic here from mono_assembly_open.
23261
23262         * aot.c: Save the optimization flags used to compile the code into
23263         the AOT module.
23264
23265         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
23266         support emitting domain specific code.
23267         
23268         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
23269         no longer domain neutral. It can be made domain neutral by compiling 
23270         with --optimize=shared.
23271
23272         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
23273         between appdomains.
23274
23275         * driver.c mini.h mini.c: New --no-aot debugging option which disables
23276         loading of AOT code.
23277
23278         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
23279         
23280         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
23281         if there is no domain neutrality information.
23282
23283 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
23284
23285         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
23286         format version into the generated library.
23287
23288         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
23289         callee method into the caller since one of them could be shared.
23290
23291         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
23292         system exceptions from AOT code now works.
23293
23294         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
23295         method if it is domain neutral and the callee is not.
23296
23297         * graph.c (cfg_emit_one_loop_level): Fix warning.
23298
23299 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
23300
23301         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
23302         last checkin.
23303
23304 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
23305
23306         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
23307         is needed  by code which is executed before mono_runtime_init ().
23308         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
23309         
23310         * mini.c (mono_thread_abort): Fix warning.
23311         (mono_jit_compile_method): Call static constructor in the AOT case too.
23312
23313         * aot.c (mono_compile_assembly): Fix warning.
23314
23315 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23316
23317         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
23318
23319 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
23320
23321         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
23322
23323         * cpu-pentium.md: Fix the length of call opcodes so they include the
23324         ESP restoring instruction. Fixes #47968.
23325
23326 2003-08-28  Martin Baulig  <martin@ximian.com>
23327
23328         * mini-x86.c (mono_arch_call_opcode): Added support for
23329         MONO_TYPE_GENERICINST.
23330
23331         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
23332
23333 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
23334
23335         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
23336         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
23337
23338         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
23339         metadata_section.
23340
23341 2003-08-26  Martin Baulig  <martin@ximian.com>
23342
23343         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
23344         when reporting an error, set this to the actual error location.
23345         (mono_method_to_ir): Report the correct error location if
23346         get_basic_blocks() returned an error.
23347
23348 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
23349
23350         * mini.c (mono_type_blittable): OBJECT is not blittable.
23351         (mono_method_blittable): Methods which have marshalling descriptors
23352         are not blittable either. Fixes #47842.
23353
23354 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
23355
23356         * driver.c mini.c: Use an environment variable instead of a global 
23357         variable. Also fix the build.
23358
23359         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
23360         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
23361         reporting this. 
23362
23363         * driver.c mini.c: Added --with-valgrind option to turn off some
23364         code which prevents mono from running under valgrind.
23365
23366         * mini.c (mono_emit_call_args): Fixed warning.
23367
23368         * mini.c (mono_emulate_opcode): Fixed warning.
23369
23370 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23371
23372         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
23373         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
23374         regalloc.c, regalloc.h: specify available registers in arch-specific
23375         code and support floats in the regallocator (patch by Laurent Morichetti 
23376         <l_m@pacbell.net>)
23377
23378 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
23379
23380         * mini.c: mono_thread_current() can be called only after
23381         mono_runtime_init(): rearrange code to not call it early on.
23382
23383 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23384
23385         * mini.c: allocate jump tables in the code mempools.
23386
23387 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23388
23389         * mini.c, mini.h: make sure per-thread data allocated by the jit is
23390         freed.
23391
23392 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
23393
23394         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
23395         12 to 16.  This fixes bug #47453.
23396
23397
23398 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
23399
23400         * mini-ppc.c: fixed indexed load and unsigned compares.
23401
23402 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
23403
23404         * mini.c: reenabled installation of handler for
23405           thread abort signal.
23406
23407 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23408
23409         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
23410         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
23411         until it's fixed and actually useful.
23412
23413 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23414
23415         * inssel-long32.brg: couple more opcodes implemented.
23416
23417 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
23418         
23419         * mini-sparc.c: Even more opcodes implemeted.
23420
23421 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
23422
23423         * mini-sparc.c: More opcodes implemented.
23424
23425 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
23426
23427         * mini-sparc.c: More opcodes implemented.
23428
23429 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
23430
23431         * inssel-sparc.brg: Add some needed rules.  Direct
23432         copy from PPC.
23433         * Makefile.am: Use inssel-sparc.brg
23434         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
23435         an assert happy for now.
23436
23437 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
23438
23439         * mini-sparc.c: Fixed compile errors.
23440         * exceptions-sparc.c: Same.  We now produce a mono binary 
23441         on sparc-linux.  Yea.
23442
23443 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
23444
23445         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
23446         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
23447         They compile, but do not work.
23448
23449 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23450
23451         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
23452         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
23453         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
23454         (ct@gentoo.org).
23455
23456 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23457
23458         * mini.c: more opcodes implemented and better support for generics.
23459
23460 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
23461
23462         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
23463         * mini.c, mini.h: first cut at generics support: some new instructions 
23464         added and changed the behaviour of some of the existing ones.
23465
23466 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
23467
23468         * mini.c: Removed definition of metadata_shared mutex here.
23469
23470 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
23471
23472         * mini-x86.c: make vararg calls work for instance methods.
23473
23474 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
23475
23476         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
23477         returns the arguments in a separte list, now.
23478
23479 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23480
23481         * aot.c, mini.c: updates for array type representation changes.
23482
23483 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
23484
23485         * mini.c: register function to perform jit shutdown.
23486
23487 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23488
23489         * mini.c: use a faster allocator if possible.
23490
23491 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
23492
23493         * aot.c: some cleanups and portability changes.
23494
23495 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23496
23497         * mini.c: use faster allocation for CEE_BOX if possible.
23498
23499 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
23500
23501         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
23502         Moved inlined mempcy code to its own function so that is can be
23503         reused. Added an inline memset function as well (optimized initobj).
23504         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
23505
23506 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23507
23508         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
23509
23510 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
23511
23512         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
23513         arch code can setup the cpu for CLR execution, if needed.
23514         We use it on x86 to set the precision of FP operations.
23515
23516 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
23517
23518         * mini.c: disable some optimizations if we can guess they'll cost too
23519         much for a given method.
23520
23521 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
23522
23523         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
23524         
23525 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
23526         * mini.h mini.c mini-x86.c: Added instruction level coverage 
23527         info collection support.
23528
23529 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23530
23531         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
23532         is now implemented in the profiling API. Get rid of a couple of
23533         unnecessary global variables.
23534
23535 2003-06-15  Nick Drochak <ndrochak@gol.com>
23536
23537         * basic-long.cs: tests for negative values for bigmul, and unsigned.
23538         * cpu-g4.md: add op_bigmul and op_bigmul_un
23539         * cpu_pentium.md: add op_bigmul_un
23540         * inssel-long32.brg: add rule for unsigned bigmul
23541         * mini-ops.h: define OP_BIGMUL_UN
23542         * mini-x86.c: THE BUG: handle (un)signed properly
23543         * mini.c: choose unsigned opcode if needed.
23544         This set of patches fixes bug #44291
23545
23546 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
23547
23548         * mini.c (optimize_branches): improved to handle all kinds of
23549         conditional branches.
23550
23551 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
23552
23553         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
23554         don't raise exceptions.
23555
23556 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23557
23558         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
23559         to arch-specific files.
23560
23561 2003-06-09  Martin Baulig  <martin@ximian.com>
23562
23563         * Makefile.am (libs): Added $(LIBGC_LIBS).
23564
23565 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
23566
23567         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
23568         and OP_ATAN (fixes bug#44293).
23569
23570 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
23571
23572         * Makefile.am, mini-x86.c: rename cpu description array to
23573         pentium_desc, since some compilers define the 'pentium' preprocessor
23574         symbol.
23575
23576 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
23577
23578         * mini.c (mini_select_instructions): add explicit branch if the
23579         following block is not the false target of a conditional branch -
23580         we need this with any optimization that reorder or remove bblocks
23581
23582         * mini.c (optimize_branches): bug fixes
23583
23584 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
23585
23586         * mini.c (mono_method_to_ir): inline static readonly fields
23587
23588         * ssa.c (fold_tree): start cfold support for long (very simple
23589         cases only)
23590
23591         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
23592
23593 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23594
23595         * inssel.brg: fixed memcpy (bug #44219).
23596
23597 2003-06-05  Dick Porter  <dick@ximian.com>
23598
23599         * driver.c: Set the glib log levels to not abort if g_message
23600         recurses.
23601
23602         g_set_prgname() has to happen before mini_init() so that the
23603         process handle gets the info.
23604         
23605 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23606
23607         * driver.c: add intrins to the default optimizations to get wider
23608         exposure.
23609
23610 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
23611
23612         * mini.h: some large basic blocks will overflow a 16-bit
23613         integers for symbolic registers.
23614
23615 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
23616
23617         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
23618         (mono_arch_output_basic_block): fix bug 43499 
23619
23620 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
23621
23622         * mini.c: kill duplicated definition of mono_debug_format.
23623
23624 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
23625
23626         * mini-x86.c, arrays.cs: fixed register allocation bug.
23627
23628 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
23629
23630         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
23631
23632         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
23633
23634 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23635
23636         * mini.c:
23637         (print_method_from_ip): also print source location information if
23638         available.
23639
23640 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
23641
23642         * mini.c (mono_find_block_region): bug fix in region code
23643         (mini_method_compile): enable removing unreachable code again, but
23644         only in methods without exception clauses.
23645
23646 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
23647
23648         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
23649         Implemented arglist opcode and handling of TypedReference type.
23650         Fixed x86 call convention when a structure is returned.
23651         Minimal support for calling static vararg methods.
23652
23653 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
23654
23655         * mini.c (mini_method_compile):  always remove unreachable code,
23656         because the code in them may be inconsistent  (access to dead
23657         variables for example).
23658
23659 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
23660
23661         * driver.c, debug-mini.c: warning fixes.
23662
23663 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
23664
23665         * Makefile.am, jit.h, mini.h: install header for embedding mono.
23666
23667 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
23668
23669         * mini.c: thread-static fields are registered in mono_class_vtable(),
23670         so ensure the function is called before checking for them.
23671
23672 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
23673
23674         * mini.c (optimize_branches): fix for bug 43586
23675
23676         * jit-icalls.c (mono_llmult_ovf): added an additional check for
23677         overflow (fixes Bug #43639)
23678
23679 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23680
23681         * mini.c, objects.cs: allow the use of stobj for primitive types.
23682
23683 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23684
23685         * mini.c: be less strict about argument checking until we support
23686         running the verifier.
23687
23688 2003-05-27  Nick Drochak <ndrochak@gol.com>
23689
23690         * basic-long.cs: tests for (ulong)int * (ulong)int also
23691         * mini.c: use the same trick for (ulong)int * (ulong)int
23692
23693 2003-05-27  Nick Drochak <ndrochak@gol.com>
23694
23695         * basic-long.cs: add regression test for (long)int * (long)int
23696         * cpu-pentium.md: add op_bigmul specification
23697         * inssel-long32.brg: add OP_BIGMUL rule
23698         * mini-ops.h: add OP_BIGMUL
23699         * mini-x86.c: register allocator: handle case where src1 needs to be
23700         in EAX.
23701         * mini.c: substitute special BIGMUL opcode in the tree for 
23702         (long)int * (long)int
23703
23704 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
23705
23706         * jit-icalls.c: call the type ctor on field access if needed.
23707
23708 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
23709
23710         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
23711         to a method (including results of ldelema, bug#43207).
23712
23713 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
23714
23715         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
23716         colors to show exception handler blocks.
23717
23718         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
23719         (fix for pinvoke7.cs).
23720
23721 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23722
23723         * mini.h, mini.c: ensure correct initialization order for types that
23724         require it. Prepare for lazy compilation of jit icall wrappers.
23725         Provide a name for opcode emulation to reduce unneeded mallocing.
23726
23727 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
23728
23729         * mini-x86.c: better register restoring code and profiling
23730         support for tail calls.
23731
23732 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23733
23734         * mini.h, driver.c: prepare for leaf methods optimization.
23735
23736 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
23737
23738         * mini.c: get targets of branches before converting a method.
23739
23740 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
23741
23742         * mini.c (optimize_branches): added some experimental code (disbaled) 
23743
23744 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
23745
23746         * mini.c (optimize_branches): fix branch to branch optimization 
23747
23748         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
23749
23750         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
23751
23752         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
23753
23754         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
23755         if needed.
23756
23757 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
23758
23759         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
23760         enable use of interface variables again.
23761
23762         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
23763         I1 to registers because there is no simply way to sign extend 8bit
23764         quantities in caller saved registers on x86.
23765
23766         * inssel-float.brg: set costs of some rules to 2 so
23767         that monobure always select the arch. specific ones if supplied,
23768         regardless of the order we pass the files to monoburg.
23769
23770 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
23771
23772         * mini.c, mini-x86.c: since the magic trampoline for jumps
23773         can't patch the code directly, we do it as soon as the
23774         method gets compiled.
23775
23776 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
23777
23778         * mini-x86.c, mini.h: introduce a new patching method
23779         to support CEE_JMP and tail calls.
23780         * mini.c: obey tail.call. Don't precompile methods target
23781         of CEE_JMP.
23782         * tramp-x86.c: new trampoline code to handle methods
23783         reached through a jump.
23784
23785 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
23786
23787         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
23788         bit values to registers
23789
23790 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
23791
23792         * mini.c (mono_compile_get_interface_var): share interface
23793         variables if possible.
23794
23795 2003-05-16  Martin Baulig  <martin@ximian.com>
23796
23797         * debug-mini.c (mono_init_debugger): New function to initialize
23798         the debugger.  This is not in the debugger since it needs to
23799         access some of mini's internals.
23800
23801 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
23802
23803         * mini.c (mono_method_to_ir): inlining fixes/cleanups
23804
23805 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
23806
23807         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
23808         for value type handling.
23809
23810 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
23811
23812         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
23813         (mono_method_check_inlining): enable inlining of all kinds of wrappers
23814
23815 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
23816
23817         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
23818           the constructor through a proxy.
23819
23820 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23821
23822         * jit-icalls.c, inssel.brg: fixes to array element address
23823         calculations.
23824
23825 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
23826
23827         * mini-x86.c (is_regsize_var): allocate pointer to registers
23828
23829 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23830
23831         * driver.c: fixed typo, added intrins to the set of optimizations
23832         tested with regressions.
23833
23834 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
23835
23836         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
23837         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
23838         test case.
23839
23840 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
23841
23842         * inssel.brg: remove some common pop instructions without side effects
23843
23844 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23845
23846         * inssel-x86.brg: fixed thinko in int to double conversions.
23847
23848 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
23849
23850         * mini.c, jit-icalls.c: added runtime thread-static variable support.
23851
23852 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
23853
23854         * inssel-long32.brg: two more missing instructions.
23855
23856 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
23857
23858         * mini.c (mono_emit_call_args): set the cil_code for all arguments
23859         if not already set.
23860
23861 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
23862
23863         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
23864         correctly.
23865
23866         * basic-float.cs: Added tests for negative zero.
23867
23868 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23869
23870         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
23871         a couple of missing operations for long casts, with test cases.
23872
23873 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23874
23875         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
23876
23877 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
23878
23879         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
23880         code size estimation.
23881
23882 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
23883
23884         * mini.c (mono_jit_create_remoting_trampoline): make it work with
23885         abstract methods (fix bug 42542)
23886
23887         * aot.c: add ability to handle array types
23888         
23889 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
23890
23891         * mini.c: Call the _specific versions of the object allocation
23892         functions if possible.
23893
23894 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
23895
23896         * driver.c: call setlocale ().
23897
23898 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
23899
23900         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
23901         windows build.
23902
23903 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
23904
23905         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
23906
23907         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
23908         wrappers (fix bug 42122)
23909
23910 2003-05-04  Martin Baulig  <martin@ximian.com>
23911
23912         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
23913
23914         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
23915         s/mini_set_defaults/mono_set_defaults/g.
23916
23917 2003-05-04  Martin Baulig  <martin@ximian.com>
23918
23919         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
23920
23921 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23922
23923         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
23924         (reported by Don Roberts).
23925
23926 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
23927
23928         * mini.c: temporarily work around two bugs for this release.
23929
23930 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23931
23932         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
23933         that contains -export-dynamic and it makes using the ld script
23934         useless.
23935         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
23936
23937 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
23938
23939         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
23940         specific cpu.
23941
23942 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
23943
23944         * mini.c: make sure leave calls all the needed finally blocks,
23945         even when the target jumps out of multiple exception clauses.
23946
23947 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23948
23949         * ldscript, Makefile.am: add linker script to reduce the number of
23950         exported symbols (should also fix the issues with libwine defining
23951         some of the same symbols in io-layer).
23952
23953 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
23954
23955         * driver.c (mini_main): Avoid assertion when no file name is given on 
23956         the command line.
23957
23958 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
23959
23960         * driver.c: added --version/-V command line option.
23961         Added the inline optimization in the regression tests.
23962
23963 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23964
23965         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
23966         to the type in the method signature (fixes bug#42134).
23967
23968 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
23969
23970         * mini.c: when inlining, check this is not null only when needed (bug #42135).
23971
23972 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
23973
23974         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
23975
23976 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23977
23978         * driver.c: fixed bug #42100.
23979
23980 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
23981
23982         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
23983
23984 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
23985
23986         * mini.c: moved most of the code required to do inlining to its own
23987         function so it can be reused. Inline also ctors if appropriate.
23988
23989 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
23990
23991         * Makefile.am: Link with -export-dynamic so shared libs loaded by
23992         the runtime can call mono API functions.
23993
23994 2003-04-27  Martin Baulig  <martin@ximian.com>
23995
23996         * debug-mini.c (mono_debug_init_method): Added
23997         `guint32 breakpoint_id' argument; if the method has a breakpoint,
23998         send a notification to the debugger.
23999
24000         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
24001         running in the Mono Debugger, just pass the breakpoint number to
24002         mono_debug_init_method().
24003
24004         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
24005
24006 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
24007
24008         * mini.c: allow some more unsafe compares.
24009
24010 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24011
24012         * mini-x86.c, Makefile.am: make distcheck works (partially from
24013         a patch by Richard Lee <r.h.lee@attbi.com>).
24014         * regset.c, regset.h: removed, they are unused.
24015
24016 2003-04-25  Dick Porter  <dick@ximian.com>
24017
24018         * driver.c: Usage reports the name as 'mono' not 'mini'
24019         * exceptions-x86.c: Build and run on freebsd
24020
24021 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
24022
24023         * Makefile.am: install the program with the 'mono' name and
24024         the library as libmono instead of mini and libmini.
24025
24026 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24027
24028         * driver.c: provide the APIs for the embedding interface of the old jit.
24029
24030 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
24031
24032         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
24033
24034 2003-04-23  Martin Baulig  <martin@ximian.com>
24035
24036         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
24037
24038         * driver.c: Added `--debug' command line argument to enable
24039         debugging support.
24040
24041 2003-04-23  Martin Baulig  <martin@ximian.com>
24042
24043         * debug.[ch]: Removed.  The code is now in
24044         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
24045
24046         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
24047         last six months.
24048
24049 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
24050
24051         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
24052
24053 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24054
24055         * mini.c:
24056         (mini_cleanup): moved mono_runtime_cleanup call after the call to
24057         mono_domain_finalize.
24058         (mini_method_compile): use mono_method_profile* if the the option is
24059         enabled.
24060
24061 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
24062
24063         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
24064         methods with their wrapper.
24065
24066         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
24067         methods with their wrapper.
24068
24069         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
24070         their wrapper.
24071
24072         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
24073         wrapper.
24074
24075         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
24076         methods.
24077
24078 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
24079
24080         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
24081
24082 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
24083
24084         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
24085         of the mempool. This is slightly faster and uses less memory
24086
24087 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24088
24089         * mini.c: avoid O(n) allocation for variables.
24090
24091 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24092
24093         * mini.c: handle items on the stack after inlining methods.
24094
24095 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
24096
24097         * mini.c: make the method->opcode optimization dependent
24098         on MONO_OPT_INSTRINS and do it lazily.
24099
24100 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
24101
24102         * driver.c: print overall results at the end of regression run.
24103
24104 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
24105
24106         * inssel.brg: don't overwrite symbolic registers.
24107
24108 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
24109
24110         * inssel-x86.brg: fix conversion from long to float.
24111
24112 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
24113
24114         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
24115
24116 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
24117
24118         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
24119
24120         * driver.c: Added --print-vtable option as in the old JIT.
24121
24122 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
24123
24124         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
24125
24126 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
24127
24128         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
24129
24130 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
24131
24132         * mini.c regalloc.c regalloc.h: Fix memory leak.
24133
24134 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
24135
24136         * aot.c (mono_aot_get_method): register all used strings
24137
24138 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24139
24140         * mini.c: always intern strings references with ldstr at compile time.
24141
24142 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24143
24144         * Makefile.am: add BUILT_SOURCES.
24145
24146 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
24147
24148         * driver.c: give a better error message when the assembly to execute
24149         doesn't have an entry point.
24150
24151 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
24152
24153         * Makefile.am: added hack for automake
24154
24155         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
24156         correct sematics.
24157
24158         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
24159
24160 22003-04-07  Martin Baulig  <martin@ximian.com>
24161
24162         * Makefile.am: Added Makefile.am.
24163
24164         * debugger-main.c: Removed, this is now in the debugger where it
24165         belongs.
24166
24167         * mini.pc.in: Call this package `mini' for the moment.
24168
24169
24170
24171
24172
24173
24174
24175
24176
24177
24178
24179
24180
24181
24182