2010-02-26 Robert Jordan <robertj@gmx.net>
[mono.git] / mono / mini / ChangeLog
1 2010-02-26  Robert Jordan  <robertj@gmx.net>
2
3         * tasklets.c (continuation_store): Return from an error condition
4         immediately.
5
6 2010-02-26  Martin Baulig  <martin@ximian.com>
7
8         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
9
10         * debug-mini.c
11         (MonoDebuggerThreadInfo): Added `internal_flags'.
12         (MonoDebuggerInternalThreadFlags): New enum.
13         (_mono_debugger_throw_exception): Don't signal the debugger if a
14         type abort was requested.
15         (_mono_debugger_unhandled_exception): Likewise.
16         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
17         (mono_debugger_runtime_invoke): If the debugger requested a thread
18         abort during the invocation, reset it here.
19
20 2010-02-26  Martin Baulig  <martin@ximian.com>
21
22         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
23         instead of `MonoThread *'.
24
25 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
26
27         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
28         code offsets table, as it is mostly sorted.
29
30 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
31
32         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
33         Fixes #582991.
34
35 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
36
37         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
38
39 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
40
41         * Makefile.am: build the new ABI version of the libmono library.
42         * debugger-agent.c, mini.c: fix warnings with the new API.
43         * jit.h: don't depend on glib.h being included.
44
45 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
46
47         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
48
49 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
50
51         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
52         ThreadStatic variables.
53
54 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
55
56         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
57         data is not freed yet. Fixes #582460.
58
59 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
60
61         * debugger-agent.c: Add support for the caught/uncaught flags on exception
62         event requests. Bump protocol minor version.
63
64 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
65
66         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
67
68 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
69
70         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
71         #581950.
72
73         * iltests.il.in: Add a test.
74
75 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
76
77         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
78         instead of mono_method_get_header as it doesn't decode locals
79         so the called method can have unresolved dependencies that will only
80         be satisfied after the current method is JIT'd.
81
82         Fixes #550968.
83
84 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
85
86         * basic.cs (test_0_div_opt): Speed this up a bit.
87
88 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
89
90         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
91
92         * mini.c (mono_jit_create_remoting_trampoline): Call
93         mono_create_specific_trampoline () instead of
94         mono_arch_create_specific_trampoline ().
95
96         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
97
98 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
99
100         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
101         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
102
103         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
104
105         * mini-amd64.c: Fix DISABLE_JIT support.
106
107 2010-02-20  Geoff Norton  <gnorton@novell.com>
108
109         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
110
111 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
112
113         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
114         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
115         CATCH_TXT. Send normal exception events for unhandled exceptions too.
116         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
117         handle_exception.
118
119 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
120
121         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
122         edx/ecx too. This is needed to support OP_SEQ_POINT.
123
124 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
125
126         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
127
128         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
129
130 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
131
132         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
133         LLVM+AOT+exceptions, not enabled yet.
134
135 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
136
137         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
138
139 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
140
141         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
142         xdebug info for these.
143
144         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
145         in a few places.
146
147         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
148         not used yet.
149
150 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
151
152         * aot-compiler.c (load_profile_files): Update after the profiler changes.
153
154 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
155
156         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
157         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
158
159         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
160         for mtouch.
161
162 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
163
164         * debugger-agent.c: handle incomplete reads and EINTR in
165         recv()/send(). This could have been causing random
166         disconnections.
167
168 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
169
170         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
171         points.
172
173         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
174         so they have small offsets. Fixes #566311.
175
176 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
177
178         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
179
180 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
181
182         * mini-amd64.c: Remove the special casing of byref in a few places now that
183         mini_type_get_underlying_type () handles it.
184
185         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
186         by returning native int. Fixes #577984.
187
188 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
189
190         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
191         a macro.
192
193         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
194         of putting the clause itself.
195
196         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
197
198 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
199
200         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
201         might be unaligned.
202
203 2010-02-10  Geoff Norton  <gnorton@novell.com>
204
205         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
206
207 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
208
209         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
210         llvm methods too.
211
212         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
213         it is not an LLVM generated symbol.
214
215         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
216
217         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
218         implementation in gshared mode because it causes regressions.
219
220         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
221
222         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
223         should be done by the caller.
224
225         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
226
227         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
228
229         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
230         since mono_jit_info_table_find () doesn't do it anymore.
231
232         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
233         instead of mono_jit_info_table_find ().
234
235 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
236
237         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
238
239         * aot-compiler.c (encode_method_ref): Update after the removal of
240         mono_gc_get_managed_allocator_type ().
241
242         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
243         Fixes #564538.
244
245 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
246
247         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
248         generic params as well.
249         (handle_isinst): Ditto.
250
251         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
252         instead of always calling an icall.
253
254         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
255         computing the size of the got.
256
257         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
258         when using LLVM. Instead of emitting it as an LLVM method, emit it using
259         the assembly directive '.set' so it points to the first LLVM emitted method.
260
261 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
262
263         * mini.c (mini_method_verify): Report the method which failed to verify.
264
265 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
266
267         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
268         to avoid JIT'ng dead basic blocks. This is the same behavior as the
269         runtime MS verifier.
270
271 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
272
273         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
274         #561962.
275
276 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
277
278         * mini-llvm.c: Init the jit module only when first JITting.
279
280         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
281
282         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
283
284         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
285         replaced with the real got.
286
287         * debugger-agent.c (type_commands): Return the enumness if the type as well.
288
289         * image-writer.c: Reduce the amount of #ifdefs a bit.
290
291         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
292         llvm on darwin/arm.
293
294         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
295
296         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
297         global.
298
299 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
300
301         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
302         (mono_llvm_emit_method): Fix unaligned stores too.
303
304         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
305         so async stack walks don't crash.
306
307 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
308
309         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
310         was not patched if the callee needed an rgctx trampoline.
311
312 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
313
314         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
315         vtable address in AOT code.
316
317 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
318
319         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
320         MonoInst's.
321
322 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
323
324         * genmdesc.pl: remove dependency on external cpp.
325
326 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
327
328         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
329         using LLVM, its not needed, and abcrem can't handle it.
330
331 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
332
333         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
334         it easier to group instructions and reduce duplication.
335
336 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
337
338         * decompose.c: Move the array/soft float decompose routines here from
339         method-to-ir.c.
340
341         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
342
343 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
344
345         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
346         to tell LLVM that the got is constant, not used yet.
347
348         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
349
350 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
351
352         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
353         managed wrappers.
354
355 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
356
357         * aot-compiler.c (add_wrappers): Commit the hack which generates
358         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
359         custom attribute.
360
361 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
362
363         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
364         a fault, only used by the LLVM backend.
365
366         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
367         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
368
369         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
370         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
371
372         * mini-llvm.c: Only generate volatile loads from load instructions which have
373         the MONO_INST_FAULT flag set.
374
375 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
376
377         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
378         64 bit platforms.
379
380 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
381
382         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
383         sequence points. Fixes #571236.
384
385 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
386
387         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
388         end of the appdomain unload process, after assemblies have been unloaded.
389         Fixes #574842.
390
391 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
392
393         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
394         works.
395
396         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
397         Fixes #573988.
398
399 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
400
401         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
402
403 2010-01-26  Geoff Norton  <gnorton@novell.com>
404
405         * aot-compiler.c: Fix a logic error introduced when guarding against enums
406         with struct marshalability.
407
408 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
409
410         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
411         it supports class names as well.
412
413         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
414         needed by the GC map code.
415
416         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
417         flags if needed.
418
419         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
420         if cfg->init_ref_vars is set.
421
422         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
423         cfg->disable_initlocals_op_refs is set.
424
425         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
426         using liveness info if cfg->compute_precise_live_ranges is set.
427
428         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
429         volatile variables correctly. Add comments about the live ranges. Not enabled
430         yet.
431
432 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
433
434         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
435         0x2a into them in method prologs.
436
437         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
438
439 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
440
441         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
442         classes, since llvm is compiled with -fno-rtti.
443
444         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
445
446         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
447         llvm does not require it.
448
449         * aot-runtime.c (load_method): Print the full name of the last aot method.
450
451 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
452
453         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
454         thread has not fully started yet.
455
456 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
457
458         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
459
460 2010-01-21  Miguel de Icaza  <miguel@novell.com>
461
462         * driver.c: Do not abort if LLVM is not supported, print a
463         warning and add the information to the Mono JIT information.
464
465 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
466
467         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
468         using explicit null checks.
469
470 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
471
472         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
473         related code.
474
475         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
476         () in one place.
477         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
478         its no longer needed.
479
480         * method-to-ir.c (mono_method_to_ir): Fix a warning.
481
482         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
483         define for platforms still using it (s390). Get rid of the
484         mono_arch_get_throw_exception_by_name () routines on all other platforms.
485
486         * exceptions-x86.c: Rework the throw trampolines so there is only one function
487         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
488
489         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
490         the caller pushed the arguments.
491
492         * mini-llvm.c: Enable throwing exceptions on x86.
493
494         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
495         "Thread (nil) may have been prematurely finalized" messages if this is called
496         on a thread not registered with the runtime.
497
498         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
499
500 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
501
502         * jit-icalls.c (mono_array_new_3): New jit icall.
503
504         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
505
506         * arrays.cs: Add a test for 3 dimensional arrays.
507
508 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
509
510         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
511         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
512         used.
513
514         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
515         thrown on x86.
516
517         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
518
519         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
520
521         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
522
523 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
524
525         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
526           HOST_WIN32.  Also including winsock2. to define struct in_addr.
527
528         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
529
530         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
531
532         Code is contributed under MIT/X11 license.
533
534 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
535
536         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
537
538         * branch-opts.c (mono_optimize_branches): Honor the new flag.
539
540         * mini.c (mini_method_compile): Set the new flag when running under the
541         debugger.
542
543 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
544
545         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
546         a ref/noref value + a global pin flag, so parts of stack frames can still be
547         precisely marked even if they include stuff which needs pinning. Improve logging.
548         Fix many bugs. Not enabled yet.
549
550         * gc-test.cs: Add a few tests.
551
552         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
553         the normal -v options. Avoid propagating liveness information through bblocks
554         which end with a NOT_REACHED opcode.
555
556         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
557         after cfg has been freed.
558
559 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
560
561         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
562         if a clause is skipped because it uses the exception object, since it could
563         have caught the exception.
564
565         * exceptions.cs: Add a test.
566
567 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
568
569        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
570
571         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
572         ICollection<T> wrappers.
573
574 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
575
576         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
577
578 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
579
580         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
581         NOMAP32BIT or optimize_for_xen is set.
582
583 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
584
585         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
586         mono_metadata_str_hash () instead.
587
588 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
589
590         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
591         sizeof (void*).
592
593         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
594
595 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
596
597         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
598         flag is set.
599
600         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
601         throwing code correctly.
602
603         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
604
605 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
606
607         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
608         ftnptrs created by us, handle RGCTX_FETCH correctly.
609         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
610
611         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
612         ftnptr added by mono_aot_get_named_code ().
613
614 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
615
616         * mini-arm.c: Fix a few LLVM problems.
617
618         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
619
620 2010-01-13  Mark Probst  <mark.probst@gmail.com>
621
622         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
623         AOT compiling.
624
625 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
626
627         * jit.h, method-to-ir.c: added ability to set the policy for
628         inserting breakpoints from the break IL instruction or the
629         Debugger.Break () API call.
630
631 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
632
633         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
634         assemblies need to be eagerly loaded.
635
636 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
637
638         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
639
640 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
641
642         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
643         an argument which matches any exception.
644
645 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
646
647         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
648         optimization if the called method is gshared and marshalbyref, since gshared
649         methods can' have wrappers. Fixes #569390.
650
651         * generics.cs: Add a test.
652
653 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
654
655         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
656         callable from gdb.
657
658 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
659
660         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
661
662 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
663
664         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
665         since it is not supported in win2000.
666
667 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
668
669         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
670         error if loading an assembly fails.
671         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
672
673         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
674         if exists.
675
676         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
677         compiled methods.
678
679         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
680
681         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
682         is not supported yet.
683
684         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
685
686 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
687
688         * method-to-ir.c: All types with variant arguments must fallback to the
689         slow path. This makes cast of variant delegates work.
690
691         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
692         argument that is set to TRUE is the returned vtable slot is for a variant
693         interface. Changed a g_print + g_assert_not_reached to a g_error.
694
695         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
696         a similar fashion of generic virtual methods.
697
698 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
699
700         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
701         when cfg is null.
702
703         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
704         method using a variance aware function.
705
706         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
707
708 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
709
710         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
711         do an icall for now.
712
713 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
714
715         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
716         If LLVM decides to set the code model to Large, reset it to Default.
717
718 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
719
720         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
721         stripped binaries as well.
722
723 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
724
725         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
726         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
727
728         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
729         reg.
730
731 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
732
733         * mini.c (mini_method_compile): Extract the JIT info creation code into a
734         separate function.
735
736         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
737         as the type info to llvm.eh.selector.
738         (exception_cb): Use the type info for filling out some fields of
739         MonoJitExceptionInfo like the flags and the exception class. This is needed
740         because the LLVM produced exception handling clauses might not match the original
741         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
742
743         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
744         separate function. Add an extra argument which returns the type infos
745         corresponding to the exception clauses.
746
747         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
748         exception handling clauses.
749
750 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
751
752         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
753         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
754         to fix an AOT case.
755
756 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
757
758         * mini.c (mono_compile_is_broken): Skip methods from serialization's
759         internal assembly.
760
761 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
762
763         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
764         llvm code.
765
766 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
767
768         * mini.c (mini_method_compile): Verify the method before calling
769         mono_compile_create_vars as this might crash since it uses method
770         information.
771
772         Fixes #560196.
773
774 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
775
776         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
777         one case if AOTing, since the class might not be a concrete class.
778
779 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
780
781         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
782         functions which are now defined in mempool-internals.h.
783
784         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
785
786         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
787
788 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
789
790         * mini.c:
791         * method-to.ir.c:
792         * mini-*.c: Properly handle generic enums.
793
794         Fixes #566294
795
796 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
797
798         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
799         in a few more places.
800
801 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
802
803         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
804         nullable parameters. Fixes #567351.
805
806 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
807
808         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
809
810 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
811
812         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
813         mono_get_generic_context_from_code () call.
814
815         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
816
817 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
818
819         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
820         needed.
821
822 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
823
824         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
825         mono_method_get_signature returns NULL. Fix #567084
826
827 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
828
829         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
830         instead of once for each module.
831
832 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
833
834         * debugger-agent.c (ss_start): Implement step over for the last sequence
835         point in methods.
836
837         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
838         have the STEP_LOC flag set.
839
840         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
841         fails. Fixes #566689.
842
843 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
844
845         * mini.c (mono_add_seq_point): New helper function.
846         (mono_save_seq_point_info): New function to save sequence point info, extracted
847         from mini_method_compile ().
848
849         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
850
851         * mini.h (MonoSeqPointInfo): New structure containing information about
852         the sequence points of a JITted method.
853         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
854         'bucket' field.
855
856         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
857         point information is stored, use a MonoSeqPointInfo structure instead of a
858         GPtrArray. For each seq point, compute a list of successor seq points.
859
860         * debugger-agent.c: Use the successor list to implement step-over more
861         efficiently: instead of single stepping until a different line/IL offset is
862         reached, place breakpoints into all successor seq points.
863
864         * mini.h: Bump AOT file format version.
865
866 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
867
868         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
869
870         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
871
872 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
873
874         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
875         build.
876
877 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
878
879         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
880         alloca as g_malloc is not signal safe.
881
882 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
883
884         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
885         VALGRIND_DISCARD_TRANSLATIONS.
886
887         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
888         checks, they are no longer needed.
889
890         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
891         a function into a sigctx which can handle function pointers.
892
893         * mini-ppc.c: Implement soft debugger support on ppc64.
894
895         * mini-ppc.c: Implement soft debugger support.
896
897 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
898
899         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
900
901 2009-12-17  Marek Habersack  <mhabersack@novell.com>
902
903         * mini.c (mono_get_runtime_build_info): include Mono version in
904         the returned value.
905
906         * driver.c (mono_main): VERSION is now included in the string
907         returned from mono_get_runtime_build_info()
908
909 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
910
911         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
912         signatures. Fixes #565143.
913
914         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
915
916 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
917
918         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
919
920 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
921
922         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
923         making max stack 10x smaller.
924
925 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
926
927         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
928
929 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
930
931         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
932
933 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
934
935         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
936         bigger than MONO_ARCH_MAX_FRAME_SIZE.
937
938         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
939
940         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
941
942         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
943
944         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
945         the compilation.
946
947 2009-12-14  Miguel de Icaza  <miguel@novell.com>
948
949         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
950         raise an invalid program exception.   
951
952         For other opcodes that we might not handle use a g_warning and
953         raise the exception.   Beats termination.
954
955         Fixes #561724
956
957 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
958
959         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
960
961         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
962         by merging the LLVM and !MAP_32BIT cases.
963
964 2009-12-13 Jonathan Chambers <joncham@gmail.com>
965
966         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
967         sigctx being passed in, as we have no CONTEXT available in the APC.
968
969         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
970         for now.
971
972         Code contributed under MIT/X11 license.
973
974 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
975
976         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
977         in the LLVM backend on AMD64.
978
979         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
980         FDE.
981
982         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
983
984         * mini-llvm.c: Export mono_personality for AOT.
985
986         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
987
988         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
989         implicit exception can occur.
990
991         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
992         OP_IMPLICIT_EXCEPTION instruction.
993
994         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
995
996         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
997
998         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
999         inside a protected block.
1000
1001         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
1002         trampolines doesn't include the argument.
1003
1004         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
1005         trampolines on amd64.
1006
1007         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
1008         of RDI.
1009
1010         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
1011         disabled for methods with clauses.
1012
1013         * mini-llvm.c: Enable support for catch clauses.
1014
1015         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
1016         end of an LLVM compiled finally clause.
1017         (mono_handle_exception_internal): Save the exception handling state in TLS
1018         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
1019         resume unwinding from that point.
1020
1021         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
1022         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
1023         to obtain the addresses of the exception handling regions.
1024
1025         * mini-llvm.c: Add beginnings of support for exception handling, currently only
1026         finally clauses are supported.
1027
1028         * mini.c (mini_method_compile): Add support for LLVM code with exception
1029         handlers.
1030
1031 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
1032
1033         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
1034         proper size.
1035
1036 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
1037
1038         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
1039         as a primitive type.
1040
1041 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
1042
1043         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
1044         for 2 parameter sched_setaffinity in older glibc versions. Fixes
1045         #564000.
1046
1047 2009-12-11  Marek Habersack  <mhabersack@novell.com>
1048
1049         * method-to-ir.c (mini_redirect_call): do not redirect the
1050         InternalAllocateStr internal call if string profiling is enabled.
1051
1052 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
1053
1054         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
1055         generic methods.
1056
1057         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
1058         unwind.h header file.
1059
1060         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
1061         newer valgrind versions seems to handle this fine.
1062
1063 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
1064
1065         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
1066         on the debugger thread.
1067
1068 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
1069
1070         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
1071
1072         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
1073
1074         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
1075
1076         * cpu-<ARCH>.md: Make call_handler clob:c.
1077
1078         * mini.c: Reenable SSA for methods with clauses.
1079
1080         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
1081         as it causes failures on x86.
1082
1083 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
1084
1085         * driver.c: Fail gracefully with --compile-all if mono_method_signature
1086         returns NULL (e.g. a bad assembly).
1087
1088 2009-12-08  Geoff Norton  <gnorton@novell.com>
1089
1090         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
1091         stepping out into native code.  There were issues with nested invokes
1092         like .cctors.
1093
1094 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
1095
1096         * mini.c (mini_method_compile): Do the disable_llvm checks early
1097         and avoid the LLVM compile pass if the checks fail.
1098
1099         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
1100
1101         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
1102         LLVM optimizations don't try to remove them.
1103
1104         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
1105         different file so the original remains.
1106
1107 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
1108
1109         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
1110
1111         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
1112
1113         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
1114         support for non-inline unwind descriptors.
1115
1116 2009-12-07  Geoff Norton  <gnorton@novell.com>
1117
1118         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
1119         the interrupt_count slightly differently.  Native threads were never
1120         marked as resumed.
1121
1122 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
1123
1124         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
1125         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
1126         yet generate this info.
1127
1128         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
1129
1130         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
1131         client can distinguish between intptrs and longs.
1132
1133 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
1134
1135         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
1136         blob.
1137
1138         * aot-runtime.c (load_function): Update after the change above.
1139
1140         * mini.h: Bump AOT file format version.
1141
1142         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
1143         if the delegate class is dynamic.
1144
1145         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
1146         in gshared code too using the new rgctx info type
1147         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
1148
1149 2009-12-04  Geoff Norton  <gnorton@novell.com>
1150
1151         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
1152         we need to track the original suspend count so the thread properly
1153         wakes up in resume_thread.
1154
1155 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
1156
1157         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
1158         code.
1159
1160         * generics.cs: Add a test.
1161
1162         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
1163         is 0. Simplify a lot of code using this.
1164
1165         * mini-trampolines.c (mono_delegate_trampoline): Call
1166         mono_create_static_rgctx_trampoline () before saving the final address in
1167         delegate->method_code, to avoid calling it each time a delegate is first called.
1168
1169         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
1170         which need static rgctx trampolines.
1171
1172         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
1173         keyed on the method+addr pair, since addr could be either the method addr or
1174         an unbox trampoline in the AOT case. Fixes #560246.
1175
1176 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1177
1178         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
1179         place it was called before too.
1180
1181 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1182
1183         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
1184         if no security manager is present, to speed up the AOT case. Call
1185         mono_class_vtable () full with raise_on_error == TRUE instead.
1186
1187 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1188
1189         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
1190         the local optimization passes can take its result into account. Fixes
1191         #559876.
1192
1193         * exceptions.cs: Add a test.
1194
1195 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
1196
1197         This patch is contributed under the terms of the MIT/X11 license
1198
1199         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
1200
1201 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1202
1203         * mini.h (MonoInst): Remove unused 'ssa_op' field.
1204
1205         * debugger-agent.c: Rework the handling of stack traces of running threads to
1206         avoid crashes if compute_frames () tries to walk the stack of running thread.
1207
1208         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
1209
1210         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
1211
1212         * mini.h (StackFrameInfo): Add an 'lmf' field.
1213
1214 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
1215
1216         * debugger-agent.c (suspend_current): Always set really_suspended.
1217
1218         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
1219
1220         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
1221
1222 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
1223
1224         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
1225         really suspended.
1226
1227 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
1228
1229         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
1230
1231 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
1232
1233         * mini-trampolines.c: Fix MSVC build.
1234
1235 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
1236
1237         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
1238
1239 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
1240
1241         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
1242         the instruction following an OP_FCOMPARE is optimized away.
1243
1244 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
1245
1246         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
1247         emit_autoreg () into this arch-specific function.
1248
1249         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
1250         code, it is no longer needed.
1251
1252         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
1253
1254         * mini.h: Bump AOT file format version.
1255
1256         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
1257         using the sorted_code_offsets array, instead of reading it from the
1258         exception debug info.
1259         (load_method): Call mono_aot_find_jit_info instead of
1260         decode_exception_debug_info ().
1261
1262         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
1263         LLVM compiled as a flag.
1264
1265 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
1266
1267         * debugger-agent.c (resume_thread): Fix a warning.
1268
1269         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
1270         generated.
1271
1272 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
1273
1274         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
1275         contents to MonoAotFileInfo.
1276
1277 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
1278
1279         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
1280         Put all binary data into a giant blob, similarly to the way .net assemblies
1281         store binary data. Emit offset tables in a compact form to reduce their size.
1282
1283         * mini.h: Bump AOT file format version.
1284
1285         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
1286         places.
1287
1288         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
1289         avoid linear searches at runtime.
1290
1291         * aot-runtime.c (find_symbol): Update this to use the hash.
1292
1293         * mini.h: Bump AOT file format version.
1294
1295 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
1296
1297         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
1298         container.
1299
1300         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
1301         too.
1302
1303         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
1304         the distribution of got slot types.
1305
1306         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
1307
1308         * method-to-ir.c: Add support for generating explicit null checks.
1309
1310 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
1311
1312         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
1313         on a random thread if possible.
1314
1315         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
1316         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
1317         correctly.
1318
1319         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
1320         regs. Pass the real size of the regs array to mono_unwind_frame ().
1321
1322         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
1323         ones instead.
1324
1325 2009-11-24  Geoff Norton  <gnorton@novell.com>
1326
1327         * mini-darwin.c: Work around apple bug rdar://7209349  See
1328         http://openradar.appspot.com/7209349 for details.  Synopsis,
1329         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
1330         never been initialized before.
1331
1332 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1333
1334         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
1335
1336         * mini-arm.c (mono_arm_thumb_supported): New helper function.
1337
1338 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1339
1340         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
1341         OP_SHL_IMM is not 32 bit.
1342
1343 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1344
1345         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
1346
1347 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1348
1349         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
1350         encountered.
1351
1352         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
1353         > 0 since some threads can resume if their resume_count is > 0.
1354         (invoke_method): Avoid reading freed memory.
1355
1356         * debugger-agent.c (process_suspend): Extract the suspend code from
1357         process_single_step_inner () to a separate function. Rework the code to prevent
1358         races between this function and thread interrupts.
1359
1360         * debugger-agent.c (suspend_current): Check the resume_count field instead
1361         of resume_one so suspends+resumes during single threaded invokes work
1362         correctly.
1363
1364 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
1365
1366         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
1367         to make the generated code smaller.
1368
1369         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
1370         sequence generated by recent LLVM versions.
1371
1372         * mini-llvm.c: Add support for a few simple cases which weren't supported
1373         before.
1374
1375         * mini-trampolines.c (mono_magic_trampoline): Don't call
1376         mono_arch_get_vcall_slot () when llvm is enabled.
1377
1378         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
1379
1380         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
1381         into a new function called common_call_trampoline () which is used by the
1382         llvm vcall trampoline as well.
1383
1384         * debugger-agent.c: Implement single threaded invokes.
1385
1386         * debugger-agent.c: Revert change which broke the agent on linux.
1387
1388         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
1389         #557606.
1390
1391         * generics.cs: Add a test.
1392
1393 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
1394
1395         * debugger-agent.c: Fix the cygwin build.
1396
1397 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1398
1399         * cprop.c: Remove this unused file.
1400
1401 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1402
1403         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
1404         #557262.
1405
1406         * basic.cs: Add a test.
1407
1408 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1409
1410         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
1411         in one more place.
1412
1413 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
1414
1415         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
1416         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
1417         it. Use this flag to control llvm related code paths instead of #ifdef
1418         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
1419         AOT code.
1420
1421         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
1422
1423         * mini.h: Bump AOT file format version.
1424
1425         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
1426         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
1427
1428         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
1429         was used as an assembly filter.
1430
1431 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1432
1433         * unwind.c: Fix support for ppc.
1434
1435         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
1436         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
1437
1438 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1439
1440         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
1441         port.
1442         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
1443         added by the ps3 changes.
1444
1445 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1446
1447         * mini-gc.c: Resurrect this, so at least it compiles.
1448
1449         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
1450
1451 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
1452
1453         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
1454         create_event_list () so assembly filters can be used.
1455
1456         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
1457         from the LMF.
1458
1459 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
1460
1461         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
1462         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
1463         is disabled.
1464
1465         * aot-compiler.c (add_generic_instances): Emit instances of common generic
1466         classes for char/bool too.
1467
1468         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
1469
1470         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
1471         used.
1472
1473         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
1474         Fix warnings.
1475
1476 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
1477
1478         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
1479         
1480         Code contributed under MIT/X11 license.
1481
1482 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
1483
1484         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
1485         threads in native code work.
1486
1487         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
1488         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
1489         version.
1490
1491 2009-11-13 Jonathan Chambers <joncham@gmail.com>
1492
1493         * debugger-agent.c: Implementation for Windows platform.
1494
1495         * mini-x86.c: Add support for Windows. Use mono-* synchronization
1496         primitives. Use SEH to implement breakpoints and single stepping.
1497
1498         * mini-x86.h: Enable soft debugger on Windows.
1499
1500         Code contributed under MIT/X11 license.
1501
1502 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
1503
1504         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
1505         under XEN. Fixes #522894.
1506
1507         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
1508
1509         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
1510         interface calls in LLVM AOT code.
1511
1512         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
1513         is found.
1514
1515         * mini-llvm.c: Add support for OP_VPHI.
1516
1517         * objects.cs: Add a test.
1518
1519 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
1520
1521         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
1522         this is called on the debugger thread.
1523
1524 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
1525
1526         * mini-llvm.c: Add soft-float support.
1527
1528         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
1529         FCALL which returns an R4.
1530
1531         * driver.c (mono_main): Add a missing '\n'.
1532
1533         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
1534         platforms which doesn't support the LLVM IMT trampoline.
1535
1536 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
1537
1538         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
1539
1540         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
1541
1542         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
1543         virtual calls.
1544
1545         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
1546
1547 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
1548
1549         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
1550         Instead of emitting a method_order table, sort the contents of the code_offsets
1551         table and do a binary search in the sorted table. The previous approach doesn't
1552         work with LLVM which emits methods in a arbitrary order.
1553
1554         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
1555         in the .eh_frame section in ELF files.
1556
1557         * mini.h: Bump corlib file format version.
1558
1559         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
1560
1561         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
1562         LDMIA->LDM macro name change.
1563
1564 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
1565
1566         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
1567         x86.
1568
1569         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
1570         SVN.
1571
1572         * aot-compiler.c: Ditto.
1573
1574         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
1575         &align to mini_type_stack_size_full ().
1576
1577         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
1578
1579         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
1580
1581 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
1582
1583         * mini-arm.c: Compute the stack space used by arguments using
1584         mini_type_stack_size_full ().
1585
1586 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
1587
1588         * optflags-def.h: Remove dead TREEPROP optimization.
1589
1590 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
1591
1592         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
1593
1594         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
1595
1596 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
1597
1598         * driver.c (mono_jit_parse_options): New public API function to parse options
1599         as done by the runtime executable.
1600
1601         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
1602         when handling named arguments.
1603
1604 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
1605
1606         * mini-arm.c: Implement support for returning vtypes in registers, fix support
1607         for passing small vtypes in registers, make the CallInfo structures more
1608         similar to the code on the other platforms.
1609
1610         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
1611         the code in the prolog requires it.
1612
1613 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
1614
1615         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
1616         (koush@koushikdutta.com).
1617
1618         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
1619         where the thunk memory should be allocated from. Fixes appdomain unloading
1620         on arm.
1621
1622 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
1623
1624         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
1625         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
1626
1627 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1628
1629         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
1630         AOT, as it is not implemented yet.
1631
1632         * mini-x86.c (mono_arch_output_basic_block): Ditto.
1633
1634 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1635
1636         * debugger-agent.c: Fix windows build.
1637
1638 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1639
1640         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
1641         after the client connects/disconnects.
1642
1643         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
1644         when an exception of a given type is thrown.
1645
1646         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
1647         only on an uncaught exception.
1648
1649         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
1650
1651         * debugger-agent.c: Add a 'launch' option.
1652
1653 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1654
1655         * debugger-agent.c: Add a 'timeout' option.
1656
1657 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1658
1659         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
1660         the JDWP agent.
1661
1662 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1663
1664         * debugger-agent.c (set_breakpoint): Emit a log message.
1665
1666 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
1667
1668         * mini-arm.c: Fix the arm build.
1669
1670 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
1671
1672         * aot-compiler.c: don't leak the value returned from
1673         mono_type_full_name().
1674
1675 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
1676
1677         * debugger-agent.c: defer including mono-mutex.h until we know the
1678         agent is supported.
1679
1680 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1681
1682         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
1683         of pthreads directly.
1684
1685         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
1686         exception handlers. Pass info argument.
1687
1688         * mini.h: Adjust signatures of soft debugger functions to pass void*
1689         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
1690
1691         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
1692         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1693         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
1694         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1695
1696         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
1697
1698         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
1699         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1700         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
1701         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1702
1703         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
1704
1705         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
1706
1707         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
1708
1709         * mono-semaphore.h: Skeleton implementation for Windows.
1710
1711         Code contributed under MIT/X11 license.
1712
1713 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1714
1715         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
1716
1717         Code contributed under MIT/X11 license.
1718
1719 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1720
1721         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
1722
1723         Code contributed under MIT/X11 license.
1724
1725 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
1726
1727         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
1728         debug info to 100 because 10 still slows down gdb too much.
1729
1730         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
1731         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
1732         them in the wrappers.
1733
1734 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
1735
1736         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
1737
1738         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
1739
1740         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
1741         function mono_aot_get_array_helper_from_wrapper ().
1742
1743         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
1744         array helper methods.
1745
1746 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1747
1748         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
1749         the value was loaded from memory.
1750
1751         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
1752         the value was loader from there.
1753
1754         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
1755         without constant swizzle.
1756
1757 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1758
1759         * mini-amd64.c: Put soft debugger functions behind a
1760         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
1761
1762         * mini-amd64.h: disable the soft debugger in windows.
1763
1764         Code contributed under MIT/X11 license.
1765
1766 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1767
1768         * mini-x86.c: Put soft debugger functions behind a
1769         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
1770
1771         Code contributed under MIT/X11 license.
1772
1773 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1774
1775         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
1776         to mono_arch_find_jit_info_ext.
1777
1778         Code contributed under MIT/X11 license.
1779
1780 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
1781
1782         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
1783
1784         * debugger-agent.c: Add support for filtering events by assemblies.
1785
1786         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
1787         the agent is not enabled.
1788
1789 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1790
1791         * exceptions-x86.c: hopefully last change to fix the windows build.
1792         This one courtesy of Jonathan Chambers.
1793
1794 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1795
1796         * debugger-agent.c: remove unused function.
1797
1798 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1799
1800         * debugger-agent.c: add #ifdefs for a few header files.
1801         * mini-x86.h: disable the soft debugger in windows.
1802         Step 1 of 2 to make this compile on windows with gcc.
1803
1804 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
1805
1806         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
1807         as it breaks the build.
1808
1809 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
1810
1811         Merge the soft debugger branch.
1812
1813         * debugger-agent.h debugger-agent.c: New files containing the soft
1814         mode debugger module.
1815
1816         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
1817         at the appropriate locations.
1818
1819         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
1820         opcode.
1821
1822         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
1823         enable/disable single stepping.
1824
1825         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
1826         which returns all information in a StackFrameInfo structure, and can handle the
1827         LMF frames added by the debugger.
1828
1829         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
1830         about an LMF frame.
1831
1832         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
1833         walker function which works on a specific thread and passes a StackFrameInfo
1834         structure to its callback.
1835
1836         * mini.c (mini_init): Initialize the debugger agent.
1837
1838         * aot-compiler.c aot-runtime.c: Add soft-debug support.
1839
1840         * mini-ops.h: Add OP_SEQ_POINT opcode.
1841
1842         * driver.c (mono_main): Add new '--debugger-agent' option for passing
1843         arguments to the debugger agent.
1844
1845 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
1846
1847         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
1848         speed things up.
1849
1850         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
1851
1852         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
1853
1854         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
1855
1856         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
1857         if needed.
1858         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
1859         sets the IMT argument and makes a virtual call.
1860
1861         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
1862
1863 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
1864
1865         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
1866         the windows build.
1867
1868 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
1869
1870         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
1871         runtime. Fixes #551228.
1872
1873 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
1874
1875         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
1876
1877         * basic.cs: Add a test.
1878
1879         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
1880         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
1881         CONSTRAINED. Fixes #550964.
1882
1883         * generics.cs: Add a test.
1884
1885 2009-10-28  Mark Probst  <mark.probst@gmail.com>
1886
1887         * mini-posix.c (add_signal_handler): Use
1888         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
1889
1890 2009-10-28 Jerry Maine <crashfourit@gmail.com>
1891
1892         Contributed under the terms of the MIT/X11 license by
1893         Jerry Maine <crashfourit@gail.com>.
1894
1895         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
1896         sse4a for simd intrinsics.
1897
1898         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
1899         sse4a for simd intrinsics.
1900
1901 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
1902
1903         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
1904         instead of inst_p1 which is not the same on ILP32 platforms.
1905
1906 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
1907
1908         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
1909         not the mscorlib one before calling mono_get_lmf_addr.
1910
1911         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
1912         of the ip to the LMF.
1913
1914         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
1915         immediate in the op->op_imm optimization.
1916
1917         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
1918         understand. VTypes now work, but are not abi compliant, as they are
1919         split into 4 byte parts instead of 8.
1920         (emit_memcpy): Fix the unrolled case to work on the PS3.
1921
1922         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
1923
1924         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
1925         the default when static linking.
1926
1927         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
1928
1929         * aot-compiler.c: Add an autoreg option to automatically register
1930         statically linked aot modules using ELF .ctors.
1931
1932         * genmdesc.pl: Add __ppc64__ to allowed defines.
1933
1934 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
1935
1936         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
1937         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
1938
1939 2009-10-24  Mark Probst  <mark.probst@gmail.com>
1940
1941         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
1942
1943 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
1944
1945         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
1946         which will contain the domain where the method was found.
1947
1948         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
1949         mini_jit_info_table_find ().
1950
1951         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
1952
1953         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
1954
1955 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
1956
1957         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
1958         set, its not supported yet.
1959
1960 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
1961
1962         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
1963         iface wrapper is not found.
1964         (mono_aot_get_method): Ditto for GetGenericValueImpl.
1965
1966 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
1967
1968         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
1969         which have a different name.
1970
1971         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
1972         wrappers and Array.GetGenericValueImpl ().
1973
1974         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
1975         because of the change above.
1976
1977         * generics.cs: Add a test for full aot + generic array ifaces.
1978
1979 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
1980
1981         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
1982         that hides the previous one.
1983
1984 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
1985
1986         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
1987         marshalled. Fixes #541623.
1988
1989 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
1990
1991         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
1992
1993 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
1994
1995         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
1996
1997 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1998
1999         * mini-posix.c (sigprof_signal_handler):
2000         Implemented support for building stat call chans in different ways.
2001
2002 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2003
2004         * mini-exceptions.c (mono_find_jit_info):
2005         Also check that a jit info has been found (fixes a profiler crash).
2006
2007 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2008
2009         * mini.c (mono_codegen):
2010         Call mono_profiler_code_buffer_new with correct code address.
2011
2012 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
2013
2014         * driver.c (mono_main): Change the date in the copyright.
2015
2016 2009-10-14  Mark Probst  <mark.probst@gmail.com>
2017
2018         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
2019         allocator in shared generic code for open classes, because we
2020         can't get those classes' vtables.  We need to make managed
2021         allocators not depend on the vtable at compile-time to solve this.
2022
2023 2009-10-13  Martin Baulig  <martin@ximian.com>
2024
2025         * debug-mini.c (mono_debugger_trampoline_compiled): Add
2026         `const guint8 *trampoline' argument; send both the old and the new
2027         notification.
2028
2029 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
2030
2031         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
2032         mono_runtime_capture_context () without calling mono_runtime_invoke ().
2033         (can_marshal_struct): Skip structures with auto layout.
2034
2035         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
2036
2037 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
2038
2039         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
2040         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
2041         a variable to hold the stack slot used by the int<->float conversion opcodes.
2042
2043         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
2044
2045 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
2046
2047         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
2048         when using full-aot.
2049
2050 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
2051
2052         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
2053         each instance of Comparer<T>.
2054
2055         * generics.cs: Add a new test.
2056
2057 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
2058
2059         * driver.c (parse_debug_options): Add a 'gdb' option.
2060
2061         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
2062
2063         * image-writer.c: Add support for emitting the image into a memory buffer.
2064
2065         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
2066
2067         * aot-compiler.c: Add support for registering debug info with GDB using the
2068         new JIT debugging interface in GDB 7.0. It can be turned on by setting
2069         MONO_XDEBUG to 'gdb'.
2070
2071 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
2072
2073         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
2074         gdb mode.
2075
2076 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
2077
2078         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
2079         can be used to set breakpoints in gdb.
2080
2081         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
2082         segment to an absolute address.
2083
2084 2009-10-13  Mark Probst  <mark.probst@gmail.com>
2085
2086         * method-to-ir.c: Use the managed array allocator method if
2087         available.
2088
2089 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
2090
2091         * aot-compiler.c : Fix the MSVC builds
2092
2093         Code is contributed under MIT/X11 license.
2094
2095 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
2096
2097         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
2098         avoid registering 1 symbol file per method with gdb.
2099
2100 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
2101
2102         * mini-sparc.c: Fix the handling of enums with base type long.
2103
2104         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
2105
2106         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
2107         instead of using type->data.klass as the later doesn't work with generics.
2108
2109 2009-09-25  Mark Probst  <mark.probst@gmail.com>
2110
2111         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
2112         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
2113         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
2114         works differently now and we don't handle it in the JIT anymore.
2115
2116         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
2117         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
2118         the Thread class split.
2119
2120 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
2121
2122         * driver.c: Don't run tests with the obsolete treeprop optimization.
2123
2124         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
2125         variable volatile. Fixes #541577.
2126
2127         * basic-calls.cs: Add a new test.
2128
2129         * basic-long.cs: Remove tests which are now in basic-calls.cs.
2130
2131 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
2132
2133         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
2134         work/required with recent iphone sdk versions.
2135
2136         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
2137         structures.
2138
2139         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
2140         in the VCALL decomposition code.
2141
2142 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
2143
2144         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
2145
2146         * basic.cs: Add a test.
2147
2148         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
2149         generic invokes.
2150
2151         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
2152         searches all the domains of the current thread.
2153
2154         * exceptions-<ARCH>.c: Use it. Fixes #539394.
2155
2156 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
2157
2158         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
2159         so catching exceptions thrown in the same method works. Fixes exception17.exe.
2160
2161         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
2162         for non-jit trampolines.
2163
2164         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
2165
2166         * aot-compiler.c (add_wrappers): Ditto.
2167
2168         * mini-arm.c: Implement support for passing vtypes and floats, and increase
2169         the size of the param area used by dyn_call to 6 which covers the majority of
2170         methods.
2171
2172         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
2173
2174         * mini-arm.c: Implement support for passing/receiving
2175         longs and receiving floats in the dyn_call code.
2176
2177         * mini-amd64.c: Implement support for receiving vtypes in registers in
2178         the dyn_call code.
2179
2180         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
2181         the dyn_call code.
2182
2183 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
2184
2185         * mini-arm.c (get_call_info): Return more precise information in
2186         ArgInfo->regtype.
2187         (dyn_call_supported): Use the information in CallInfo.
2188
2189         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
2190
2191         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
2192         code.
2193
2194         * mini-arm.c: Update after the dyn_call api changes.
2195
2196         * mini.c (mini_create_jit_domain_info): Register a destructor function
2197         for the runtime_invoke_hash.
2198
2199         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
2200         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
2201         this function.
2202         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
2203         (dyn_call_supported): Simplify this by using get_call_info ().
2204         (mono_arch_dyn_call_free): New destructor function.
2205
2206         * generics.cs: Remove a printf.
2207
2208         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
2209
2210         * mini-arm.c: Add support for enum return values and passing a few arguments
2211         on the stack.
2212         
2213         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
2214         dyn invoke.
2215
2216         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
2217
2218         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
2219         the dynamic invoke wrappers.
2220
2221         * mini-arm.c: Implement OP_DYN_CALL for arm.
2222
2223         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
2224         supported by the dynamic runtime invoke wrapper.
2225
2226         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
2227         runtime invoke wrapper.
2228
2229         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
2230         if possible when running with full-aot.
2231
2232         * mini-ops.h: Add OP_DYN_CALL opcode.
2233
2234         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
2235         with dynamic arguments lists similar to libffi.
2236
2237 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
2238
2239         * method-to-ir.c: Fix the previous change on 64 bit platforms.
2240         
2241         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
2242         to NEWARR.
2243
2244         * iltests.il.in: Add a new test.
2245         
2246 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
2247
2248         * aot-compiler.c (add_generic_instances): Add more instances of
2249         GenericEqualityComparer.
2250
2251 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
2252
2253         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
2254
2255 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
2256
2257         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
2258         comments on some functions that now can fail.
2259
2260 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
2261
2262         * Makefile.am: Add Info.plist to EXTRA_DIST
2263
2264 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
2265
2266         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
2267         static synchronized wrappers. Fixes #539500.
2268
2269 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
2270
2271         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
2272         properly.
2273
2274 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
2275
2276         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
2277         lmf before calling filter clauses as well. Fixes #539550.
2278
2279         * exceptions.cs: Add a test.
2280         
2281 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
2282
2283         * aot-compiler.c (add_generic_class): Add instances of
2284         Array.GetGenericValueImpl as well.
2285
2286         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
2287         can be tested too.
2288
2289         * generics.cs: Add a fullaot linq test.
2290
2291 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
2292
2293         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
2294         reg r1 on arm.
2295
2296 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
2297
2298         * mini-trampolines.c (mono_delegate_trampoline) : Call
2299           mono_cominterop_get_invoke if the delegate target object
2300           is a COM object.
2301
2302         Code is contributed under MIT/X11 license.
2303
2304 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
2305
2306         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
2307         internal call is defined outside platform code. Reduce code 
2308         duplication with existing [Method|Field]AccessException
2309
2310 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
2311
2312         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
2313         if the return value is a small struct passed on regs.
2314
2315 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
2316
2317         * cpu-arm.md mini-arm.c: Remove unused opcodes.
2318
2319         * mini-codegen.c: Enable the cpu description validation for arm.
2320
2321 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
2322
2323         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
2324         test which depends on structs to objects.cs.
2325         
2326         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
2327         require object model related stuff working.
2328
2329         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
2330
2331         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
2332
2333         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
2334         against the instruction metadata in mini-ops.h. amd64 only for now.
2335
2336         * mini-ops.h: Fix some instruction descriptions.
2337
2338         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
2339         unused instructions.
2340
2341 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
2342
2343         * exceptions.cs: Add a new test.
2344
2345 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
2346
2347         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
2348
2349 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
2350
2351         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
2352         skip empty phi opcodes.
2353         
2354         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
2355         correctly by zero extending after loads. Skip methods containing calls
2356         to the monitor enter/exit trampolines.
2357
2358         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
2359         when calling mono_thread_force_interruption_checkpoint ().
2360
2361         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
2362
2363         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
2364         64 bit thunks.
2365         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
2366
2367         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
2368         bootstrap could run.
2369
2370 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
2371
2372         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
2373
2374 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
2375
2376         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
2377         of the method to
2378         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
2379         LLVM might be very short.
2380
2381         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
2382         in OP_THROW/RETHROW.
2383
2384         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
2385         alignment on osx.
2386
2387 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
2388
2389         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
2390         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
2391         LLVM might be very short.
2392
2393 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
2394
2395         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
2396         the alignment for the value of sp.
2397
2398 2009-09-01  Geoff Norton  <gnorton@novell.com>
2399
2400         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
2401         managed wrappers in full aot.
2402
2403 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
2404
2405         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
2406
2407 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
2408
2409         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
2410
2411 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
2412
2413         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
2414
2415         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
2416         saved info.
2417
2418         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2419
2420         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
2421         depend on the info MonoMethodHeader which could be missing in IL stripped
2422         assemblies.
2423
2424 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
2425
2426         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
2427         they are only 4 byte aligned.
2428
2429 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
2430
2431         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
2432         was done previously, since using SP causes too many problems.
2433
2434         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
2435         frames without a frame pointer works.
2436
2437         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
2438         global register in methods with calls, since the calls can go through
2439         a static rgctx trampoline which doesn't save it.
2440
2441 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
2442
2443         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
2444
2445 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
2446
2447         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
2448
2449 2009-08-18  Christian Hergert  <chris@dronelabs.com>
2450
2451         * method-to-ir.c: Fix warnings for uninitialized variables.
2452
2453 2009-08-18  Christian Hergert  <chris@dronelabs.com>
2454
2455         * mini-exceptions.c:
2456         * aot-compiler.c: Fix printf warnings.
2457
2458 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
2459
2460         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
2461         Add GetGenericValueImpl<string>.
2462         
2463         * aot-compiler.c (add_generic_instances): Add instances of
2464         GenericEqualityComparer<T> for primitive types. Only emit the array
2465         wrappers into the mscorlib image.
2466
2467 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
2468
2469         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
2470         the methods_loaded array using amodule->info->nmethods.
2471
2472         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
2473         (MONO_AOT_FILE_VERSION): Bump this.
2474
2475         * aot-compiler.c: Emit more generic instances allowing some parts of linq
2476         to work.
2477
2478         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
2479         MonoJitInfo doesn't belong to its methods aot image.
2480
2481 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
2482
2483         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
2484
2485         * mini-arm.c: Fix warnings.
2486         
2487         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
2488
2489         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
2490         supports it.
2491
2492 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
2493
2494         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
2495         avoid clobbering IP.
2496
2497         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
2498         hold the trampoline argument, so its initial value is available during
2499         debugging.
2500
2501 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
2502
2503         * exceptions-arm.c:
2504         * exceptions-hppa.c:
2505         * mini.c:
2506         * exceptions-s390x.c:
2507         * exceptions-mips.c:
2508         * exceptions-ppc.c:
2509         * exceptions-sparc.c:
2510         * exceptions-alpha.c:
2511         * aot-runtime.c:
2512         * mini-trampolines.c:
2513         * exceptions-x86.c:
2514         * exceptions-s390.c: add and use #define's instead of sizeof()
2515         for MonoJitInfo and MonoJitInfoTable.
2516
2517 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
2518
2519         * tramp-arm.c:
2520         * tramp-amd64.c:
2521         * tramp-ppc.c:
2522         * tramp-x86.c: use a #define instead of sizeof() for a few
2523         structures that use a zero-length array.
2524
2525 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
2526
2527         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
2528         case when the method is dynamic. Fixes #529238.
2529
2530 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
2531
2532         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
2533         of asserting when a method is JIT compiled in full-aot mode.
2534
2535 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
2536         
2537         Contributed under the terms of the MIT/X11 license by
2538         Jerry Maine <crashfourit@gail.com>.
2539         
2540         * fixed wrong dates in changelog.
2541
2542 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
2543         
2544         Contributed under the terms of the MIT/X11 license by
2545         Jerry Maine <crashfourit@gail.com>.
2546
2547         * basic-simd.cs: added test for packed double square root.
2548         * cpu-amd64.md: added opcode info for packed double square root.
2549         * cpu-x86.md: added opcode info for packed double square root.
2550         * mini-ops.h: added IR opcode for packed double square root.
2551         * mini-x86.c: added IR to native translation code for packed double square root.
2552         * mini-amd64.c: removed todo for packed double square root.
2553         * simd-intrinsics.c: added method to IR opcode converstion for
2554         packed double square root.
2555
2556 2009-08-03 Jerry Maine <crashfourit@gmail.com>
2557
2558         Contributed under the terms of the MIT/X11 license by
2559         Jerry Maine <crashfourit@gail.com>.
2560
2561         * mini-amd64.c: Added a change to help tell the difference as 
2562         to what perpose the xmm register is being used--mainly to help
2563         with debuging.
2564         * mini-amd64.h: Changed callee regs to use 15 out of 16 
2565         (one used for special cases) xmm registers for both fp
2566         and simd ops. Added define to turn on new feature in the regalloc
2567         that allows fp and simd ops to share the xmm regs happily.
2568         * codegen.c: Added code to detect for which perpose an xmm reg is
2569         being used (fp or simd) and to translate back and forth to the
2570         correct logical reg bank (fp or simd) for 'spill load's.
2571
2572 2009-08-03 Jerry Maine <crashfourit@gmail.com>
2573
2574         Contributed under the terms of the MIT/X11 license by
2575         Jerry Maine <crashfourit@gail.com>.
2576
2577         * basic-simd.cs: Added tests for stressing the regalloc when running with
2578         16 simd regs and when simd and fp ops share the same reg bank.
2579
2580 2009-08-01  Mark Probst  <mark.probst@gmail.com>
2581
2582         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
2583         in shared generic code, we might have to look up the class in the
2584         RGCTX.  If we use the class directly, compute its GC descriptor.
2585
2586 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
2587
2588         * mini.c (mono_jit_runtime_invoke): Fix a warning.
2589
2590 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
2591
2592         * mini.c (mono_jit_runtime_invoke): Initialize the class and
2593         check for errors. Fixed the case when the class with the Main
2594         method is broken.
2595
2596 2009-07-31 Jerry Maine <crashfourit@gmail.com>
2597
2598         Contributed under the terms of the MIT/X11 license by
2599         Jerry Maine <crashfourit@gail.com>.
2600
2601         * cpu-amd64.md: Fixed simple bug in machine discrition file.
2602
2603 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
2604
2605         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
2606
2607 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
2608
2609         * method-to-ir.c: Fix naming of stelem and ldelem.
2610
2611 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
2612
2613         * driver.c (main_thread_handler): Check that the assembly loaded
2614         matches the filename when doing AOT.
2615
2616 2009-07-30  Mark Probst  <mark.probst@gmail.com>
2617
2618         * mini.c: get_ip_from_sigctx installer has been removed, so don't
2619         call it anymore.
2620
2621         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
2622         utils/mono-sigcontext.h).
2623
2624         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
2625         #ifdef.
2626
2627 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
2628
2629         * mini.c (mono_codegen):
2630         Call profiler hook to keep track of method code buffers.
2631
2632 2009-07-27  Mark Probst  <mark.probst@gmail.com>
2633
2634         * method-to-ir.c: Invoke write barriers for the
2635         Interlocked.(Compare)Exchange JIT intrinsics.
2636
2637 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
2638
2639         * Makefile.am (version.h): Fix issues when built out of tree.
2640         Remove some redundant 'grep's piped through 'sed's.
2641
2642 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
2643
2644         This patch is contributed under the terms of the MIT/X11 license
2645
2646         * mini-ppc.c (mono_arch_output_basic_block):
2647         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
2648         for bits 32-47 with signed load/store diplacements for bits
2649         48-63.  Use prefered base/offset order for indexed form.
2650         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
2651         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
2652         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
2653         OP_LOADI2_MEMBASE): Same.
2654         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
2655         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
2656         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
2657         indexed form.
2658         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
2659         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
2660         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
2661         OP_LOADI1_MEMINDEX): Same
2662         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
2663         OP_STORER8_MEMINDEX): Same
2664         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
2665         computations.
2666         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
2667         for bits 32-47 with signed load/store diplacements for bits
2668         48-63.  Use prefered base/offset order for indexed form.
2669
2670 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
2671
2672 This patch is contributed under the terms of the MIT/X11 license
2673
2674         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
2675         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
2676         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
2677         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
2678         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
2679         cfg->stack_usage to avoid size warnings.
2680         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
2681         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
2682         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
2683         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
2684         to convert.
2685         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
2686         after code varible is initialized.
2687         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
2688         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
2689         (mono_arch_emit_epilog): 
2690         Move Use ppc_load32 for cfg->stack_usage to avoid size
2691         warnings.
2692
2693 2009-07-24  Mark Probst  <mark.probst@gmail.com>
2694
2695         * method-to-ir.c: The write barrier doesn't do the store anymore,
2696         so we have always to emit it.  Also, emit the wbarrier after the
2697         store.
2698
2699 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
2700
2701         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
2702         for argument count 3 too.
2703
2704 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
2705
2706         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
2707         the caller handle the exceptions.
2708         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
2709         method. Fixes #524498.
2710
2711 2009-07-22  Geoff Norton  <gnorton@novell.com>
2712
2713         * mini-exceptions.c: Fix build on ia64.
2714
2715 2009-07-22  Mark Probst  <mark.probst@gmail.com>
2716
2717         * mini-exceptions.c (ves_icall_get_frame_info): Use write
2718         barriers.
2719
2720 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
2721
2722         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
2723         code.
2724
2725 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
2726
2727         * basic-simd.cs (Main): Pass args to the test driver.
2728
2729 2009-07-20  Geoff Norton  <gnorton@novell.com>
2730
2731         * mini-x86.h: Fix the x86 version guards to use Apple's
2732         properly defined macros.
2733
2734 2009-07-20  Geoff Norton  <gnorton@novell.com>
2735
2736         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
2737         aligned access.
2738
2739 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
2740
2741         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
2742         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
2743         the information which is needed for invokes, so only one locking+hash table
2744         lookup is needed.
2745
2746         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
2747         
2748         * aot-compiler.c (add_generic_instances): Emit instances of 
2749         GenericComparer<T> for primitive types.
2750
2751 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
2752
2753         * mini-posix.c: Fix linux build.
2754
2755 2009-07-19  Geoff Norton  <gnorton@novell.com>
2756
2757         * mini.h: Add prototypes for mono_runtime_syscall_fork and
2758         mono_gdb_render_native_backtraces
2759         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
2760         so we implement the sane semantics to the runtime here
2761         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
2762         so we need to call it differently (mono_gdb_render_native_backtraces)
2763         * mini-posix.c: Move the old semantics from mini.c to the prototypes
2764         here for default implementations.
2765         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
2766         support Apple's weird syscall (SYS_fork) implementation and not busy
2767         loop in abort() on native crashes on OSX anymore.
2768
2769 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
2770
2771         * aot-runtime.c (load_method): Change the handling of the
2772         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
2773         are used.
2774
2775         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
2776
2777 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
2778
2779         * mini.c (mono_patch_info_equal): Revert the last change for now as it
2780         seems to break the aot tests.
2781         
2782         * mini.c (mono_patch_info_equal): Fix the handling of 
2783         MONO_PATCH_INFO_RGCTX_FETCH.
2784
2785 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
2786
2787         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
2788
2789         * mini.c (mono_patch_info_hash): Fix the handling of 
2790         MONO_PATCH_INFO_INTERNAL_METHOD.
2791         (mono_patch_info_equal): Ditto.
2792
2793 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
2794
2795         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
2796         in a few places.
2797         
2798         * mini-llvm.c: Add some infrastructure for AOT support.
2799
2800 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
2801
2802         * mini-llvm-cpp.c: Update to the latest llvm api.
2803         
2804         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
2805         option to false to prevent llvm from installing signal handlers which
2806         trip up the gc.
2807         
2808 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
2809
2810         * cpu-x86.md:
2811         * cpu-amd64.md: Revert previous change as those instructions
2812         take 2 separate arguments. Remember to read the arch docs more
2813         carefully next time.
2814
2815 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
2816
2817         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
2818
2819 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
2820
2821         * mini-ppc.c: exploit multiple load/store units if available (rest of
2822         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
2823         http://bugzilla.novell.com/show_bug.cgi?id=487846).
2824
2825 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
2826
2827         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
2828         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
2829
2830 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
2831
2832         * cpu-x86.md: Fix missing clobbering from trancendental simd
2833         ops.
2834
2835         * cpu-amd64.md: Same.
2836
2837 2009-07-14 Jerry Maine <crashfourit@gmail.com>
2838
2839         Contributed under the terms of the MIT/X11 license by
2840         Jerry Maine <crashfourit@gail.com>.
2841
2842         * basic-simd.cs: Added tests for single and doulble indexers.
2843
2844         * cpu-amd64.md: Added simd opcode information.
2845
2846         * mini-amd64.c: Added IR to native simd generation code.
2847         Added simd register names and function that returns them.
2848
2849         * mini-amd64.h: Added marcos to turn on simd code compilation in
2850         amd64. Added max simd register count marco. Added caller/callee
2851         register mask marcos. Added marcos to use simd register bank.
2852
2853         * mini.h: Added helper marco for shufling dwords and simple
2854         floats.
2855
2856 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
2857
2858         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
2859
2860         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
2861
2862         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
2863         the length of the native code as well.
2864
2865         * basic-simd.cs: Add a test for #521662.
2866
2867 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
2868
2869         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
2870
2871 2009-07-13  Mark Probst  <mark.probst@gmail.com>
2872
2873         * mini.c: Register function for getting the IP from a signal
2874         context with metadata.
2875
2876 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
2877
2878         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
2879         call a generic class init trampoline if needed. Fixes #519336.
2880
2881         * generics.cs: Add a test.
2882         
2883 2009-07-09  Mark Probst  <mark.probst@gmail.com>
2884
2885         * method-to-ir.c: When doing a call which might be remote from
2886         shared generic code to other shared code with open type arguments,
2887         get the remoting invoke wrapper from the RGCTX and do an indirect
2888         call to it.
2889
2890 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
2891
2892         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
2893         after the unbox trampoline in the full-aot case.
2894
2895 2009-07-02  jonas echterhoff <jonas@unity3d.com>
2896         
2897         * mini.c: Move initialization of jit_mutex before debugger initialization
2898         
2899         to avoid crashes.
2900         
2901         
2902         * Info.plist: added Info.plist and link flag to enable the mono executable
2903         to access other processes. Requires codesigning of the executable to work.
2904         
2905         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
2906         
2907         compile on OS X.
2908         
2909
2910 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
2911
2912         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
2913
2914 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
2915
2916         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
2917         when the generic instance is an instantiation of a subclass of the
2918         methods class. Fixes #517166.
2919
2920 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
2921
2922         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
2923         code.
2924
2925         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
2926         AOTed code.
2927
2928         * CMakeLists.txt: Add minimal support for installation.
2929
2930 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
2931
2932         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
2933         determine whenever a method is directly callable to a separate function.
2934
2935         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
2936         needed ones as a result of the previous change.
2937
2938         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
2939         type of register arrays.
2940
2941         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
2942         type of register arrays.
2943
2944 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
2945         
2946         Contributed under the terms of the MIT/X11 license by
2947         Jerry Maine <crashfourit@gail.com>.
2948
2949         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
2950
2951 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
2952
2953         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
2954
2955 2009-06-24  Neale Ferguson <neale@sinenomine.net>
2956
2957         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
2958         dump of structure return value. Fix some formatting.
2959         * cpu-s390x.md: Fix lengths of instruction sequences.
2960         * mini-s390.c: Minor formatting changes.
2961
2962 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
2963
2964         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
2965         Use sigaction on freebsd as well.
2966
2967 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
2968
2969         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
2970         uses #ifdef on it.
2971         
2972         * mini.c (mini_init): Revert a change which breaks cross-compilation.
2973
2974 2009-06-22  Mark Probst  <mark.probst@gmail.com>
2975
2976         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
2977
2978 2009-06-22  Mark Probst  <mark.probst@gmail.com>
2979
2980         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
2981
2982 2009-06-20  Martin Baulig  <martin@ximian.com>
2983
2984         * debug-mini.c
2985         (MonoDebuggerThreadFlags): New enum typedef.
2986         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
2987         (mono_debugger_thread_created): Added `gpointer func' argument;
2988         initialize the new `thread_flags' field.
2989
2990 2009-06-18  Martin Baulig  <martin@ximian.com>
2991
2992         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
2993         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
2994
2995         * debug-debugger.c
2996         (mini_debugger_set_attach_ok): New function; sets the attach-ok
2997         flag in `MONO_DEBUGGER__info.runtime_info'.
2998
2999         * driver.c
3000         (mono_main): Call mini_debugger_set_attach_ok() if generics
3001         sharing is disabled.
3002
3003 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
3004
3005         * aot-compiler.c (add_wrappers): Fix a warning.
3006
3007         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
3008         the ppc load/store macro changes.
3009
3010 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
3011
3012         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
3013
3014         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
3015         not just the got symbol.
3016
3017         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
3018         on ppc.
3019
3020         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
3021         ppc.
3022         
3023         * aot-compiler.c: Remove some fixmes.
3024
3025         * driver.c (mono_main): Print a helpful message when cross-compiling.
3026
3027         * mini.c (mini_init): Disable signal handlers when cross-compiling.
3028
3029         * method-to-ir.c (initialize_array_data): Do the optimization if the
3030         target byte order is little endian, instead of the host byte order.
3031
3032         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
3033         wrappers into the mscorlib image, Emit a unique plt symbol for each
3034         image, emit symbols for plt entries.
3035
3036         * image-writer.c (img_writer_emit_symbol_size): New function to emit
3037         a .size directive.
3038         
3039 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
3040
3041         * aot-compiler.c (add_wrappers): Avoid calling 
3042         mono_marshal_get_type_info () since it can assert for some types.
3043
3044         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
3045         ldtoken are used inside wrappers.
3046
3047         * helpers.c: Add support for prefixing tools with the arch name.
3048
3049         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
3050         quantities when using ilp32.
3051
3052         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
3053         spill slots. Use sizeof(mgreg_t) for the spill slot size.
3054
3055         * image-writer.c: Use .long on ilp32.
3056
3057         * aot-compiler.c: Use 32 bit loads on ilp32.
3058         
3059 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
3060
3061         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
3062
3063         * mini-ops.h: Use TARGET_POWERPC define for consistency.
3064
3065         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
3066
3067         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
3068         second got slot of every aot image.
3069         
3070         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
3071         aot on platforms with function pointers.
3072
3073         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
3074         support for aot/full aot on ppc/ppc64.
3075         
3076         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
3077         arguments which are needed on ppc.
3078
3079         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
3080         argument.
3081
3082         * mini-trampolines.c aot-runtime.c: Update after the above changes.
3083         
3084         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
3085
3086         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
3087
3088         * aot-compiler.c (emit_got_info): Fix reading unused memory.
3089
3090         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
3091
3092 2009-06-17  Geoff Norton  <gnorton@novell.com>
3093
3094         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
3095
3096 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
3097
3098         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
3099         to control whenever the dwarf writer is in xdebug or aot mode.
3100         (emit_class_dwarf_info): Use a separate abbrev for structures without
3101         children.
3102
3103         * aot-compiler.c: Pass the appending parameter to 
3104         mono_dwarf_writer_create ().
3105
3106         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
3107         falls through to its next bblock. Fixes #513931.
3108
3109         * iltests.il: Add a test.
3110
3111         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
3112         infor even if emit_line is FALSE, as the apple linker seems to require it.
3113
3114         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
3115
3116         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
3117         gcc does.
3118         (emit_fde): Ditto.
3119
3120 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
3121
3122         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
3123         mips build.
3124
3125 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
3126
3127         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
3128         'has_call_handler' fields.
3129
3130         * method-to-ir.c (mono_method_to_ir): Set them if needed.
3131
3132         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
3133         first bblock if not needed. Fixes #512790.
3134         
3135 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
3136
3137         * aot-compiler.c (mono_compile_assembly): Fix a warning.
3138         
3139         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
3140         wrappers.
3141
3142         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
3143         remoting-invoke-with-check wrappers, which are not needed when running with
3144         full-aot, since it doesn't support remoting.
3145         
3146 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
3147
3148         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
3149
3150         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
3151         method info, it is not used anymore.
3152
3153         * mini.h: Bump AOT file format version.
3154         
3155         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
3156         word smaller.
3157
3158         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
3159         change above.
3160         
3161         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
3162
3163         * mini.h: Bump AOT file format version.
3164         
3165 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
3166
3167         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
3168         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
3169         iphone.
3170
3171         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
3172         of CKFINITE and FBGE for VFP.
3173
3174 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
3175
3176         * aot-compiler.c: Don't align code to 16 bytes on arm.
3177         
3178         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
3179         before the methods they belong to.
3180
3181         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
3182         the full-aot case if possible, since the trampoline will be called right 
3183         away.
3184
3185         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
3186         trampolines to 1024 after the change above.
3187
3188         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
3189         trampoline to save 8 bytes per trampoline.
3190
3191         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
3192         change above.
3193
3194 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
3195
3196         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
3197
3198 2009-06-08  Martin Baulig  <martin@ximian.com>
3199
3200         * debug-mini.c
3201         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
3202         (_mono_debugger_throw_exception): Don't make this static.
3203         (_mono_debugger_unhandled_exception): Likewise.
3204         (mono_debugger_handle_exception): Moved to mini-exceptions.c
3205
3206         * debug-mini.c
3207         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
3208         (_mono_debugger_throw_exception): Add function prototype.
3209         (_mono_debugger_unhandled_exception): Likewise.
3210
3211         * mini-exceptions.c
3212         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
3213         arg; return the first exception handler if the exception is caught
3214         and we're running inside the debugger.
3215         (mono_debugger_handle_exception): Moved here from debug-mini.c;
3216         improve exception handle inside runtime-invoke, check whether the
3217         exception is actually caught in the method being invoked and not
3218         by the runtime-invoke-wrapper.
3219
3220 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
3221
3222         * image-writer.c: Improve support for the osx assembler.
3223
3224         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
3225         support them.
3226
3227 2009-06-08  Martin Baulig  <martin@ximian.com>
3228
3229         * debug-mini.c
3230         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
3231         (_mono_debugger_throw_exception): Don't make this static.
3232         (_mono_debugger_unhandled_exception): Likewise.
3233         (mono_debugger_handle_exception): Moved to mini-exceptions.c
3234
3235         * debug-mini.c
3236         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
3237         (_mono_debugger_throw_exception): Add function prototype.
3238         (_mono_debugger_unhandled_exception): Likewise.
3239
3240         * mini-exceptions.c
3241         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
3242         arg; return the first exception handler if the exception is caught
3243         and we're running inside the debugger.
3244         (mono_debugger_handle_exception): Moved here from debug-mini.c;
3245         improve exception handle inside runtime-invoke, check whether the
3246         exception is actually caught in the method being invoked and not
3247         by the runtime-invoke-wrapper.
3248
3249 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
3250
3251         * image-writer.c (append_subsection): Don't align subsections of the
3252         debug_line section as a workaround.
3253
3254         * dwarfwriter.c: Emit line number info in the AOT case as well.
3255
3256 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
3257
3258         This patch is contributed under the terms of the MIT/X11 license
3259
3260        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
3261        code_len <= code_size
3262
3263 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
3264
3265         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
3266
3267 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
3268
3269         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
3270         invoke wrappers, we now use trampolines instead.
3271
3272 2009-06-04  Mark Probst  <mark.probst@gmail.com>
3273
3274         * mini-darwin.c: The exception thread must not be registered with
3275         the GC.
3276
3277 2009-06-04  Mark Probst  <mark.probst@gmail.com>
3278
3279         * mini-gc.c: Disable the code because it makes SGen crash.
3280
3281 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
3282
3283         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
3284         instead of asserting.
3285
3286 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
3287
3288         * aot-compiler.c (mono_compile_assembly): Move the creation of the
3289         output file after the code has been compiled.
3290
3291 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
3292
3293         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
3294
3295 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
3296
3297         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
3298         entries distinction to simplify the code.
3299
3300         * mini.h: Bump AOT file format version.
3301         
3302 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
3303
3304         * objects.cs: Fix the signature of one of the tests.
3305
3306         * mini.c (mini_create_ftnptr): New helper function, moved here from
3307         object.c.
3308         (mini_get_addr_from_ftnptr): Ditto.
3309         (mini_init): Install the new helpers.
3310
3311 2009-05-28  Martin Baulig  <martin@ximian.com>
3312
3313         Correctly initialize the debugger when embedding Mono.
3314
3315         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
3316         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
3317         see documentation in mini_debug_running_inside_mdb().
3318
3319         * debug-debugger.c
3320         (mini_debug_running_inside_mdb): New function to check whether
3321         we're running inside mdb.
3322
3323         * mini.c (mini_init): Call mini_debugger_init() if we're running
3324         inside the debugger.
3325
3326         * driver.c (mono_main): Moved the call to mini_debugger_init()
3327         into mini_init() to make this work when embedding Mono.
3328
3329         * debug-debugger.c (mini_debugger_init): Warn about duplicate
3330         calls to mini_debugger_init().
3331
3332         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
3333         mono_debugger_main() -> mini_debugger_main() and put them inside a
3334         `MONO_DEBUGGER_SUPPORTED' conditional.
3335
3336 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
3337
3338         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
3339         this is no longer in use.
3340         * mini.h: Same.
3341
3342 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
3343
3344         * mini-sparc.c (add_outarg_load): Fix the sparc build.
3345
3346         * aot-compiler.c (emit_method_code): Always write out C style symbols for
3347         methods.
3348
3349 2009-05-27  Martin Baulig  <martin@ximian.com>
3350
3351 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3352
3353         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
3354         long_conv_to_r_un to 64 bits.
3355
3356         * cpu-x86.md: Increase the instruction size due to the changes.
3357
3358         * iltests.il.in: Add regression test.
3359
3360         Fixes #467201.
3361
3362 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3363
3364         * objects.cs: Move the previous test from basic.cs to here.
3365
3366 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3367
3368         * basic.cs: Add regression test for #506915.
3369
3370 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3371
3372         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
3373         optimization we must check the bb of the first byte of stobj as
3374         it's the only one set in cil_offset_to_bb.
3375
3376         Fixes #506915.  
3377
3378 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
3379
3380         * image-writer.c: Fix pointer directive on ppc64.
3381
3382 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
3383
3384         * image-writer.c (asm_writer_emit_section_change): Avoid using
3385         .bss subsections on ppc too.
3386
3387 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
3388
3389         * image-writer.c: Fix the definition of TARGET_ASM_....
3390         
3391         * image-writer.c: Fix the emission of assembler directives in the last
3392         change.
3393
3394         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
3395         exception throwing code to accomodate ppc64.
3396
3397         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
3398         size to work on ppc64 too.
3399
3400         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
3401         too.
3402
3403         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
3404         the assembler dialect instead of using platform specific defines.
3405
3406 2009-05-22  Geoff Norton  <gnorton@novell.com>
3407
3408         * mini-arm.c (get_call_info): If a structure is split between the stack
3409         and argument registers, we should not advance the stack pointer by the entire
3410         native size, but just by the amount that spilled.
3411
3412 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
3413
3414         * mini-arm.c (get_call_info): Handle structures with alignment requirements
3415         correctly.
3416
3417 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
3418
3419         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
3420         wrappers normally.
3421         
3422         * aot-compiler.c (add_extra_method): Fix up the collection of extra
3423         methods so wrapper don't get added twice.
3424         (add_generic_instances): Don't add methods of arrays.
3425
3426         * generics.cs: Mark one test as !FULLAOT.
3427
3428 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
3429
3430         * mini-x86.c (emit_move_return_value): Remove unused vars.
3431
3432 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
3433
3434         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
3435         decomposing 8 bytes structs into a LCALL.
3436
3437         * mini-x86.c (emit_move_return_value): We no longer push the vtype
3438         pointer for where to store the returned regs.
3439
3440         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
3441         state the concern.
3442
3443         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
3444
3445 2009-05-20  Miguel de Icaza  <miguel@novell.com>
3446
3447         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
3448         without getenv.
3449
3450 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
3451
3452         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
3453
3454         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
3455         generics.
3456
3457 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
3458
3459         * local-propagation.c (mono_local_cprop): Avoid local propagation
3460         across paired add/sub if the first instruction dest reg is it's
3461         source reg. For example:
3462
3463         int_add_imm R12 <- R12 [1] clobbers: 1
3464         int_sub_imm R42 <- R12 [1] clobbers: 1
3465
3466         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
3467         maintain the math identify.
3468
3469         Fixes #505375.
3470
3471 2009-05-20  Andreia Gaita  <avidigal@novell.com>
3472
3473         * Makefile.am: avoid going on the network just to get the revision,
3474         use git log instead
3475
3476 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
3477
3478         Fixed estimate for short branches on amd64 (they were off mark, and
3479         enabling call prolog-epilog instrumentations caused assertions).
3480         * mini.h (struct MonoBasicBlock): added max_length field to hold the
3481         estimate for the maximum length of this basic block.
3482         * mini-amd64.c:
3483         - mono_arch_emit_prolog: compute max_length for each basic block
3484           (instead of max_offset), and inflate size estimate also for entry bb
3485           in case of code instrumentation.
3486         - mono_arch_output_basic_block: get rid of "cpos" (the current
3487           estimated "position" in the code), and always use "offset" instead,
3488           which is accurate; at the beginning of the function quickly recompute
3489           max_offset for all the remaining blocks, starting from the current
3490           cfg->code_len (which is correct, and not estimated) and using the
3491           estimated block lengths computed previously.
3492
3493 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
3494
3495         * exceptions-ppc.c: Remove the caching from the trampoline creation 
3496         functions, it is already done in the caller.
3497
3498         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
3499
3500         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
3501         MONO_ARCH_GSHARED_SUPPORTED define.
3502
3503         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
3504
3505         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
3506         function.
3507
3508 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
3509
3510         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
3511         call to mono_marshal_get_rgctx_invoke ().
3512
3513         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
3514         mono_marshal_get_static_rgctx_invoke (), all platforms which support
3515         gshared use the static rgctx trampolines now.
3516         
3517         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
3518         platform supports it.
3519
3520 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3521
3522         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
3523
3524         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
3525
3526 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3527
3528         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
3529
3530         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
3531         for ppc.
3532
3533 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
3534
3535         Made it possible for mono_arch_instrument_epilog to preserve
3536         argument registers, otherwise instrumenting the "epilogue" before
3537         a tail call would clobber them.
3538         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
3539         if like mono_arch_instrument_epilog but with an additional parameter
3540         that states if argument registers must be preserved.
3541         * mini.c: implemented mono_arch_instrument_epilog as a call to
3542         mono_arch_instrument_epilog_full without asking to preserve argument
3543         registers (this makes the existing code work as usual).
3544         * mini-amd64.c:
3545         - mono_arch_instrument_epilog: add parameter to transform it into
3546         mono_arch_instrument_epilog_full, and preserve argument registers
3547         when required.
3548         - mono_arch_output_basic_block, OP_TAILCALL case: call
3549         mono_arch_instrument_epilog_full.
3550         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
3551         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
3552         only transformed mono_arch_instrument_epilog into
3553         mono_arch_instrument_epilog_full.
3554
3555 2009-05-15  Geoff Norton  <gnorton@novell.com>
3556
3557         * mini-darwin.c: This works on arm now.
3558
3559 2009-05-14  Geoff Norton  <gnorton@novell.com>
3560
3561         * jit.h, driver.c: Allow full-aot to be decided programatically by the
3562         embedding api.
3563
3564 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3565
3566         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
3567         label names.
3568
3569         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
3570         wrappers during full aot mode correctly.
3571
3572         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
3573         methods correctly.
3574
3575         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
3576         mono_metadata_type_hash ().
3577
3578 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
3579
3580         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
3581         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
3582         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
3583         Removed MONO_INST_BRLABEL from the instruction flags, and the
3584         remaining code that used it, because we do not support branches inside
3585         basic blocks (and branch target labels) anymore.
3586         * Makefile.am: As part of the above cleanup, remove reference to
3587         BURG files which don't exist anymore.
3588
3589 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
3590
3591         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
3592         osx.
3593
3594         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
3595         to use mono_arch_throw_corlib_exception.
3596
3597         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
3598         mono_arch_throw_corlib_exception for throwing corlib exceptions.
3599
3600         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
3601         domain mempool.
3602
3603         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
3604
3605         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
3606         for the got to make debugging easier and to avoid confusing it with the
3607         system got.
3608         
3609         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
3610         method so a breakpoint can be set when using gdb.
3611
3612 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
3613
3614         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
3615         on mono_method_get_imt_slot ().
3616
3617         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
3618         num_decodes variables.
3619
3620         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
3621         change as it doesn't seem to work.
3622         
3623         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
3624         wrappers.
3625
3626 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
3627
3628         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
3629         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
3630
3631         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
3632         builder when using full aot.
3633
3634         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
3635         here, it is already handled.
3636         
3637         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
3638         correctly for IMT.
3639
3640         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
3641
3642         * mini-arm.h: Enable IMT for full aot.
3643         
3644         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
3645         arch doesn't support it.
3646
3647         * mini.c (mini_init): Don't disable IMT for full aot if the
3648         architecture supports it.
3649
3650         * mini.h (MonoAotTrampoline): New enum containing the different types
3651         of 'numerous' trampolines.
3652         (MONO_AOT_FILE_VERSION): Bump this.
3653
3654         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
3655         static rgctx trampolines. Add support for full-aot IMT thunks.
3656
3657         * mini-amd64.h: Enable IMT for full aot.
3658
3659         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
3660         to exclude tests belonging to a category.
3661
3662         * generics.cs: Mark some tests with a !FULLAOT category.
3663
3664         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
3665         generics tests.
3666
3667 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
3668
3669         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
3670         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
3671         (emit_plt): Fix a warning.
3672
3673 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
3674
3675         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
3676         back into aot-compiler.c to a place where the other functions shared by
3677         the runtime and aot compiler are.
3678         
3679         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
3680         as done previously, instead of in MonoAotFileInfo, since pointers might have
3681         alignment requirements.
3682
3683         * mini.h: Bump AOT file format version.
3684
3685 2009-05-10  Miguel de Icaza  <miguel@novell.com>
3686
3687         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
3688         that is used at runtime from the aot-compiler.c, this makes it
3689         work on setups that remove the AOT compiler from the output
3690         image. 
3691
3692 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
3693
3694         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
3695         PPC.
3696
3697         * mini-ppc.h: Enable static rgctx trampolines for ppc.
3698
3699         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
3700
3701         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
3702         stuff to mono_arch_decompose_long_opts ().
3703         (mono_decompose_opcode): Remove some dead code.
3704
3705 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
3706
3707         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
3708         cmethod can be null for quite a some reasons.
3709
3710 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
3711
3712         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
3713
3714 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
3715
3716         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
3717
3718 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
3719
3720         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
3721         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
3722         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
3723         calls returning structures by addr on amd64.
3724
3725         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
3726
3727         * iltests.il.in: Restructure the tail call tests a bit.
3728         
3729 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
3730
3731         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
3732         for virtual methods too.
3733
3734 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
3735
3736         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
3737         due to regression in verifying System.dll.
3738
3739 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
3740
3741         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
3742         in dynamic methods.
3743
3744         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
3745         instances.
3746
3747         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
3748         g_str_hash () which can change.
3749
3750         * driver.c (mini_regression): Disable optimizations not supported by
3751         the cpu. Fixes #500019.
3752
3753         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
3754         build.
3755
3756 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
3757
3758         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
3759         to the latest LLVM code.
3760
3761 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
3762
3763         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
3764
3765 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
3766
3767         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
3768         x86/amd64.
3769
3770         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
3771         no longer saving offsets, so just save the patch types along with the other
3772         info.
3773         * aot-runtime.c (load_patch_info): Update after the changes to 
3774         encode_patch_list ().
3775         (decode_got_entry): Removed, merged into load_patch_info ().
3776         (is_shared_got_patch): Removed, call the same function from
3777         aot-compiler.c.
3778
3779         * mini.h: Bump aot file format version.
3780         
3781         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
3782         half-finished no-dlsym code.
3783
3784         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
3785         option.
3786
3787         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
3788         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
3789
3790 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
3791
3792         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
3793         buffer length to work with AOT code.
3794
3795         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
3796         ldfld/stfld opcodes.
3797
3798         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
3799         as it is not used.
3800
3801         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
3802
3803         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
3804
3805         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
3806         LLVM API.
3807
3808         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
3809         if needed. Don't decompose long operations when using llvm.
3810
3811 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
3812
3813         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
3814         PAGESIZE constant.
3815
3816         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
3817
3818 2009-05-03  Martin Baulig  <martin@ximian.com>
3819
3820         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
3821         mono_debugger_insert_method_breakpoint() since the class init
3822         handler we're inserting at the top of the method already gives us
3823         a notification.
3824
3825 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
3826
3827         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
3828         to mono_arch_decompose_long_opts () for x86 and arm.
3829
3830 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
3831
3832         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
3833         TARGET_AMD64 here.
3834
3835 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
3836
3837         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
3838         JIT code.
3839
3840 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
3841
3842         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
3843         number of trampolines used in full-aot mode.
3844
3845         * aot-compiler.c: Add an ntrampolines option to set the number of 
3846         trampolines emitted in full-aot mode.
3847
3848 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
3849
3850         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
3851         a volatile load. Get rid of get_tempname (), llvm assigns names
3852         automatically.
3853
3854         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
3855         builder function.
3856
3857         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
3858         a value.
3859
3860         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
3861         level 1.
3862
3863         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
3864         to the same register as a fixed sreg2. Fixes #497271.
3865
3866         * iltests.il.in: Add a new test.
3867
3868 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
3869
3870         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
3871         stack, since pushes complicate exception handling.
3872
3873         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
3874         the stack if they are passed using moves.
3875
3876         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3877
3878         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
3879         when using llvm.
3880
3881         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
3882         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
3883         of FMOVE if it is an R4.
3884
3885 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
3886
3887         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
3888
3889         * mini.h (LLVMCallInfo): New structure to store calling convention 
3890         information for the LLVM back end similar to the CallInfo structures in 
3891         the back-ends.
3892
3893         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
3894         call information in a format usable by LLVM.
3895         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
3896
3897         * method-to-ir.c (mono_emit_call_args): Emit calls using 
3898         mono_llvm_emit_call () when compiling using LLVM.
3899
3900         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
3901         comments to all functions. Fix memory leaks. Add a public init/cleanup
3902         function.
3903
3904         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
3905
3906         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
3907         mono_array_new_va () jit icall.
3908         
3909 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
3910
3911         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
3912         multiple machine description files to be specified.
3913         * mini-ops.h: fixes for cross-compilation.
3914
3915 2009-04-22  Miguel de Icaza  <miguel@novell.com>
3916
3917         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
3918         some porting work.
3919
3920 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
3921
3922         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
3923         to prevent asserts in various passes. Fixes #497220.
3924
3925 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
3926
3927         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
3928         a racy assert.
3929
3930         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
3931         table to avoid duplicates.
3932
3933         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3934         
3935         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
3936         option is used.
3937
3938 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
3939
3940         * mini.c (mini_method_verify): Fail fulltrust code if the exception
3941         is for method or field access.
3942
3943 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
3944
3945         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
3946         a Value to stdout.
3947
3948         * mini-llvm.c (mono_llvm_emit_method): Use it.
3949         
3950         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
3951         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
3952         on volatile values.
3953
3954         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
3955         synchronized methods.
3956
3957         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
3958
3959         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
3960
3961         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
3962         OP_LOADI8_MEM.
3963
3964         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
3965         allowing some options to be set dynamically.
3966
3967 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
3968
3969         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
3970         unconditional branch.
3971
3972         * mini.h (MonoTrampolineType): Add new trampoline type 
3973         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
3974         compiled code.
3975
3976         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
3977         function.
3978
3979         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
3980         creation function.
3981
3982         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
3983         is enabled. Instead, use the llvm vcall trampoline.
3984         
3985         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
3986
3987         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
3988         
3989         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
3990         functions.
3991
3992         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
3993         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
3994
3995         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
3996         OP_IA64_CSET opcode.
3997
3998         * mini.c: Fix a warning.
3999
4000         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
4001         THROW to the appropriate llvm type.
4002
4003 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
4004
4005         * mini.c (mini_method_compile): Add statistics for methods JITted
4006         with/without LLVM.
4007
4008 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4009
4010         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
4011         OP_IA64_CMP_<cond>_IMM opcodes.
4012
4013 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4014
4015         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
4016         corlib exceptions.
4017
4018         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
4019         correctly.
4020
4021         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
4022         GENERICINST.
4023
4024 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
4025
4026         * mini-exceptions.c : add thread id to EXCEPTION trace message.
4027
4028 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4029
4030         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
4031         support.
4032
4033         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
4034         rgctx invoke trampolines for x86.
4035
4036         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
4037         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
4038         (mono_arch_get_vcall_slot): Simplify this.
4039
4040 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
4041
4042         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
4043         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
4044
4045 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
4046
4047         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
4048         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
4049
4050         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
4051
4052         * liveness.c (visit_bb): Remove a needless assert.
4053
4054 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
4055
4056         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
4057         full aot support to the arch specific code.
4058
4059         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
4060
4061         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
4062
4063         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
4064         
4065         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
4066         collect information about the delegate invoke impl trampolines.
4067
4068         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
4069         to save trampolines during full-aot mode.
4070
4071         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
4072         creation function which returns a trampoline which sets the rgctx
4073         argument.
4074         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
4075         wrapper if possible.
4076         (mono_delegate_trampoline): Ditto.
4077
4078         * mini.c (mono_jit_runtime_invoke): Ditto.
4079
4080         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
4081         
4082         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
4083
4084         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4085         
4086 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
4087
4088         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
4089         just setting the opcode to OP_NOP.
4090
4091 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
4092
4093         * mini.c (mini_method_compile): Put the last change inside an 
4094         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
4095         
4096         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
4097         and extend live ranges to cover the whole method when using xdb.
4098
4099         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
4100         do it in the trampolines.
4101
4102         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
4103         needed.
4104
4105         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
4106         
4107         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
4108         call code in full-aot mode since IMT is disabled there.
4109         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
4110         new JIT no longer has that restriction.
4111
4112         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4113
4114         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
4115         a more compact format.
4116         (mono_aot_wrapper_name): New function to return a unique name for a
4117         wrapper method, also used by the AOT runtime.
4118
4119         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
4120         aot-compiler.c.
4121
4122         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
4123         when a ICollection<T> etc is encountered.
4124         (add_generic_instances): Process method arguments/locals too.
4125         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
4126         trampoline names.
4127
4128         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
4129         
4130 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
4131
4132         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
4133
4134         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
4135
4136         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
4137         representing the result of the decomposition. Nullify instructions
4138         instead of setting them to OP_NOP since nops can't have registers
4139         set.
4140
4141 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
4142
4143         * aot-compiler.c (mono_compile_assembly): Split this huge function into
4144         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
4145         info. Strip 'mapping symbols' on ARM.
4146
4147         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
4148         
4149         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
4150         this with the native genmdesc.
4151
4152 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
4153
4154         * aot-runtime.c:  Fixing the MSVC build.
4155
4156         Code is contributed under MIT/X11 license.
4157
4158 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
4159
4160         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
4161         JITted code depends on it.
4162
4163 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
4164
4165         * aot-compiler.c: Use new MonoGenericParam accessors.
4166
4167 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
4168
4169         Reduce memory usage and improve correctness wrt MonoGenericParam
4170         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
4171         handing.  Avoid allocating MonoGenericParams, but use the ones in
4172         the container itself.
4173
4174 2009-04-07  Miguel de Icaza  <miguel@novell.com>
4175
4176         * tasklets.c: Return exceptions in the out argument.
4177
4178 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
4179
4180         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
4181         opcode. Use pointer types in more places instead of casting them to 
4182         integers.
4183
4184         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
4185         optimizations.
4186         (mono_llvm_optimize_method): New helper function to optimize a method.
4187
4188         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
4189         widening code so it could be called from more places.
4190         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
4191         code paths in the call opcodes.
4192
4193 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
4194
4195         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
4196
4197 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
4198
4199         * dwarfwriter.c: Use _ to separate class name 
4200         components as gdb can't handle '.'. Represent reference variables
4201         as 'class <NAME>&'.
4202         
4203         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
4204
4205         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
4206         
4207         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
4208
4209         * gc-test.cs: New file with GC stack marking tests.
4210         
4211         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
4212         negative numbers for vfp.
4213
4214         * basic-float.cs: Add a test.
4215         
4216 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
4217
4218         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
4219
4220 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
4221
4222         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
4223         part of tasklet/continuation support.
4224
4225 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
4226
4227         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
4228         amd64 opcodes inside an ifdef.
4229
4230         * dwarfwriter.c: Emit inheritance information for classes, emit fields
4231         of complex types.
4232         
4233         * dwarfwriter.c (emit_type): Emit the class info for classes.
4234
4235 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
4236
4237         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
4238
4239         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
4240
4241         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
4242
4243         * ssa.c (mono_ssa_compute): Fix some memory leaks.
4244
4245 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
4246
4247         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
4248
4249         * mini-llvm.c: Update comments.
4250
4251         * mini.h (COMPILE_LLVM): New macro.
4252
4253         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
4254
4255         * ssa.c (mono_ssa_compute): Ditto.
4256         
4257         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
4258         the unwind ops from a DWARF FDE.
4259
4260         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
4261         methods by extracting the dwarf unwind ops from the unwind info generated
4262         by LLVM.
4263         
4264         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
4265         calls.
4266
4267         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
4268         addressing modes.
4269
4270 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
4271
4272         * Makefile.am (llvm_sources): Enable this.
4273
4274         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
4275         failing back to the JIT if something cannot be handled.
4276
4277         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
4278         compiling with LLVM.
4279
4280         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
4281         compiling with LLVM.
4282
4283         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
4284         compiling with LLVM.
4285
4286         * mini-ops.h: Add a few opcodes needed by LLVM.
4287
4288         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
4289         has no unwind info.
4290
4291         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
4292         backend.
4293
4294         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
4295
4296         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
4297
4298 2009-04-01  Mark Probst  <mark.probst@gmail.com>
4299
4300         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
4301         ridiculously large methods.
4302
4303 2009-03-31  Martin Baulig  <martin@ximian.com>
4304
4305         * debug-debugger.c (debugger_remove_breakpoint): Call
4306         mono_debugger_remove_class_init_callback ().
4307
4308 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
4309
4310         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
4311         right before emitting code, not at the start.
4312
4313         * mini.c (mono_postprocess_patches): Extract this into a separate function
4314         from mono_codegen ().
4315
4316         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
4317         byref types correctly.
4318
4319 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
4320
4321         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
4322         by the last change.
4323
4324 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
4325
4326         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
4327         indirect calls, this avoids problems where get_vcall_slot () would get
4328         confused by the native code for the instruction preceeding the call.
4329         (mono_arch_get_vcall_slot): Simplify this.
4330         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
4331
4332         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
4333         register allocator now seems to depend on them instead of the data in
4334         cpu-<ARCH>.md.
4335
4336         * mini.c (mini_method_compile): Throw the correct type of exception if
4337         mono_method_get_header () fails because of a loading error.
4338
4339 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
4340
4341         * mini.c (mini_method_compile): Clear the loader error if the method
4342         header cannot be decoded.
4343
4344         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
4345         interface methods on proxies correctly.
4346
4347         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
4348         this argument for vtype methods. Add precise liveness info for arguments.
4349
4350         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
4351         LIVERANGE_START/END opcodes.
4352
4353         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
4354         for arguments and values in registers.
4355
4356 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
4357
4358         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
4359         return a valuetype. Fixes #487518.
4360
4361         * iltests.il: Add a test.
4362         
4363         * aot-compiler.c: Use mono_thread_create () to create helper threads.
4364
4365         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
4366         closed over a null reference correctly.
4367
4368 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
4369
4370         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
4371
4372 2009-03-25  Mark Probst  <mark.probst@gmail.com>
4373
4374         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
4375         allocated to the same registers as fixed sregs.
4376
4377 2009-03-24  Mark Probst  <mark.probst@gmail.com>
4378
4379         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
4380         ATOMIC_CAS_IMM ops.
4381
4382         * method-to-ir.c: Handle more cases for
4383         Interlocked.CompareExchange.
4384
4385         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
4386         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
4387         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
4388
4389 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
4390
4391         * aot-runtime.c (decode_method_ref): Fix a warning.
4392
4393         * unwind.c (mono_unwind_frame): Ditto.  
4394
4395 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4396
4397         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
4398         (mono_compile_assembly): Enable the binary writer for full-aot as well.
4399
4400         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
4401         fix the handling of large values in the ALU_PC_G0_NC relocation.
4402
4403 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4404
4405         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
4406
4407 2009-03-22  Mark Probst  <mark.probst@gmail.com>
4408
4409         * method-to-ir.c (mono_spill_global_vars): Support for ternary
4410         ops.
4411
4412 2009-03-22  Mark Probst  <mark.probst@gmail.com>
4413
4414         * method-to-ir.c: MINI_OP3 needs a comma.
4415
4416         * method-to-ir.c, mini.h, mini.c: Remove
4417         mono_init_op_sreg_counts ().
4418
4419 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4420
4421         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
4422         OP_JMP.
4423         
4424         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
4425         assertion.
4426
4427         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
4428
4429         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
4430         code somewhat.
4431
4432 2009-03-21  Mark Probst  <mark.probst@gmail.com>
4433
4434         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
4435         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
4436         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
4437         operations.
4438
4439 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
4440
4441         * driver.c: Change location of gc_wrapper.h.
4442
4443         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
4444         inside finally clauses correctly. Fixes #485721.
4445
4446         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
4447         after the change above.
4448
4449         * exceptions.cs: Add a test.
4450         
4451 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
4452
4453         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
4454
4455         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
4456         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
4457         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
4458
4459         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
4460         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
4461
4462 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
4463
4464         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
4465         Simplify logic for ensure_method_is_allowed_to_call_method. 
4466         Handle wrappers on callers.
4467
4468 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
4469
4470         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
4471         them don't run yet.
4472
4473         * basic-simd.cs: Fix the names of some test methods.
4474
4475 2009-03-18  Geoff Norton  <gnorton@novell.com>
4476
4477         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
4478
4479 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
4480
4481         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
4482
4483 2009-03-17  Jb Evain  <jbevain@novell.com>
4484
4485         * driver.c: remove now uneeded call to mono_gc_base_init before
4486         mono_profiler_load.
4487
4488 2009-03-17  Jb Evain  <jbevain@novell.com>
4489
4490         * dwarfwriter.c (token_handler): handle more cases.
4491
4492 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
4493
4494         * method-to-ir.c: Remove more dead code (that was required only
4495         because of method_is_safe). Fix compiler warnings.
4496
4497 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
4498
4499         * method-to-ir.c: Remove unneeded/useless method_is_safe
4500         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
4501
4502 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
4503
4504         * mini.c (mini_method_compile): Print the method been compiled with
4505         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
4506         for people not familiar with the runtime.
4507
4508 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
4509
4510         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
4511         a managed object which is later put into a GList. Return its class instead.
4512
4513         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
4514         stack slots when using sgen.
4515
4516 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
4517
4518         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
4519
4520 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
4521
4522         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
4523         > so it works on the first vreg as well.
4524
4525 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
4526
4527         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
4528         trigger randomly.
4529
4530         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
4531         
4532         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
4533         implement GArray.
4534
4535 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
4536
4537         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
4538         native->IL offset mapping.
4539
4540 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
4541
4542         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
4543
4544         * basic.cs: Add a test.
4545
4546 2009-03-11  Mark Probst  <mark.probst@gmail.com>
4547
4548         * mini-x86.c (mono_arch_output_basic_block): Use different
4549         registers in case the ones we want to overwrite are used by the
4550         other operand.  Fixes regression in #480807.
4551
4552 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
4553
4554         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
4555
4556         * dwarfwriter.c (emit_line_number_info): The line number info for
4557         IL code was off by one. Fix that.
4558
4559         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
4560         stack.
4561
4562 2009-03-09  Mark Probst  <mark.probst@gmail.com>
4563
4564         Contributed under the terms of the MIT/X11 license by Steven
4565         Munroe <munroesj@us.ibm.com>.
4566
4567         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
4568         Fixes #483462.
4569
4570 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
4571
4572         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
4573         as well.
4574
4575 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
4576
4577         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
4578         the delegate ctor handling code. Fixes #482638.
4579         
4580         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
4581         #481458.
4582
4583         * iltests.il.in: Add a test.
4584         
4585         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
4586         mini-posix.c.
4587
4588 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4589
4590         * mini-trampolines.c (mono_create_jump_trampoline): If the method
4591         is shared generic code, return the trampoline, even if the method
4592         has already been compiled.  Fixes #479763.
4593
4594         * mini.c, mini.h: New function
4595         mono_jit_find_compiled_method_with_jit_info() which is the same as
4596         mono_jit_find_compiled_method() but also returns the jit info.
4597
4598 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4599
4600         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
4601         for methods which actually have one.  For all other methods, make
4602         sure the this argument var is live the whole method.
4603
4604         * mini.c (mini_method_compile): Every shared method has a
4605         this/vtable/mrgctx info.  Fixes #480807.
4606
4607 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4608
4609         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
4610         generic/imt thunks where some entries branch through the vtable,
4611         while other entries branch directly.
4612
4613 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
4614
4615         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
4616
4617         * mini-windows.c: Ditto.
4618         
4619         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
4620         ctors.
4621
4622 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
4623
4624         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
4625         down an assert.
4626
4627 2009-03-04  Mark Probst  <mark.probst@gmail.com>
4628
4629         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
4630         #481403.
4631
4632 2009-03-04  Mark Probst  <mark.probst@gmail.com>
4633
4634         * exceptions-x86.c: Include debug-mini.h - fixes build.
4635
4636 2009-03-04  Martin Baulig  <martin@ximian.com>
4637
4638         * debug-mini.c: Clean up the exception API and add documentation.
4639         (mono_debugger_handle_exception): New public method; this is
4640         called when throwing an exception or encountering an unhandled one.
4641         (mono_debugger_call_exception_handler): Formerly known as
4642         mono_debugger_handle_exception(); this is used to tell the
4643         debugger that we're about to invoke an exception handler.
4644
4645 2009-03-04  Martin Baulig  <martin@ximian.com>
4646
4647         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
4648         ../metadata/mono-debug-debugger.c; save and reset exception state.
4649
4650 2009-03-02  Martin Baulig  <martin@ximian.com>
4651
4652         * debug-mini.c: Moved the debugger exception handling here from
4653         ../metadata/mono-debug-debugger.c.
4654
4655         * debug-mini.h
4656         (MonoDebuggerExceptionAction): New exception typedef.
4657
4658         * debug-mini.c
4659         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
4660
4661         * exceptions-amd64.c
4662         (mono_amd64_throw_exception): Use the new debugger exception
4663         handling code.
4664
4665         * mini-exceptions.c
4666         (mono_handle_exception_internal): Don't call
4667         mono_debugger_unhandled_exception() here.
4668
4669 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
4670
4671         * mini.c aot-compiler.c: Update after the changes to 
4672         mono_marshal_get_runtime_invoke ().
4673
4674         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
4675         Virtual generic methods might not have method->slot set, work around
4676         that.
4677
4678         * generics.cs: Add a test.
4679
4680 2009-03-02  Geoff Norton  <gnorton@novell.com>
4681
4682         * mini.c:
4683         * driver.c: Allow signal chaining of SIGFPE as well.
4684
4685 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
4686
4687         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
4688         this since it now receives the method not its generic context in the
4689         IMT reg.
4690
4691         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
4692         generic/imt thunks where some entries branch through the vtable, while
4693         other entries branch directly.
4694
4695         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
4696
4697         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
4698         support for interface methods as well.
4699
4700         * mini-trampolines.c: Add support for virtual generic methods in interfaces
4701         using the normal IMT thunks.
4702
4703         generics.cs: Add new tests.
4704         
4705         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
4706         the generic inst to the generic imt thunks. This fixes AOT support, 
4707         improves consistency with the normal IMT thunks, and makes it easier to
4708         add support for interface generic virtual methods later.
4709
4710         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
4711         
4712 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
4713
4714         * driver.c (mono_set_signal_chaining): New public API function to enable
4715         signal chaining on POSIX platforms.
4716
4717         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
4718         (si@lindenlab.com) to implement signal chaining. The original patch was
4719         contributed under the MIT X/11 license:
4720         https://bugzilla.novell.com/show_bug.cgi?id=318894
4721
4722 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
4723
4724         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
4725         too until it can be made to run on amd64.
4726
4727 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
4728
4729         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
4730         to  get_generic_context_from_code () + get_call_info () if possible.
4731
4732 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
4733
4734         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
4735         suspend-on-sigsegv functionality.
4736
4737         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
4738         to suspend when a native SIGSEGV is received. This is useful for debugging
4739         crashes which don't happen under gdb, since a live process contains more
4740         information than a core file.
4741
4742         * mini-exceptions.c (mono_print_thread_dump): Use 
4743         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
4744
4745         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
4746
4747         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
4748         
4749         * basic-float.cs: Disable the tests which currently fail on amd64.
4750
4751         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
4752         value to mono_arch_patch_callsite () to fix crashes.
4753         
4754         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
4755
4756 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
4757
4758         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
4759         nop code by patching the call address to point to the nullified class init
4760         trampoline, as the former does not seem to be safe on SMP machines.
4761
4762 2009-02-23  Mark Probst  <mark.probst@gmail.com>
4763
4764         * mini-ops.h: Fix the argument types for a few x86 opcodes where
4765         they were wrong.
4766
4767 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
4768
4769         * basic-float.cs basic-calls.cs: Fix warnings.
4770
4771 2009-02-22  Mark Probst  <mark.probst@gmail.com>
4772
4773         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
4774         correct frame pointer in the LMF.  Should fix #478394.
4775
4776 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
4777
4778         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
4779
4780         * image-writer.c: Make the binary writer less verbose.
4781
4782 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
4783
4784         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
4785         are called from runtime invoke wrappers.
4786
4787 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
4788
4789         * cpu-ppc.md (store_memindex): Increase the size of this.
4790
4791 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4792
4793         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4794
4795         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
4796
4797         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
4798         OP_LCONV_TO_R_UN.
4799
4800         Last fix for of #467201.
4801
4802
4803 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4804
4805         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4806
4807         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
4808         and long_conv_to_r8_2:
4809
4810         Fixed part of #467201.
4811
4812 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4813
4814         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4815
4816         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
4817         conversion to 32 bits.
4818
4819         * cpu-x86.md: Increase the size of int_conv_to_r4.
4820
4821         * basic-float.cs: Add a test for this.
4822
4823         Fixed part of #467201.
4824
4825 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4826
4827         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4828
4829         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
4830         conversion to 64 bits.
4831
4832         * basic-float.cs: Add a test for this.
4833
4834         Fixed part of #467201.
4835
4836 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4837
4838         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4839
4840         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
4841         This behavior is compatible with MS.
4842
4843         * iltest.il.in: Add a test for this.
4844
4845         Fixed part of #467201.
4846
4847 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4848
4849         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4850
4851         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
4852         change the precision of the value.
4853
4854         * cpu-x86.md: Define len for float_conv_to_r4.
4855
4856         * basic-float.cs: Add a test for this.
4857
4858         Fixed part of #467201.
4859
4860 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
4861
4862         * mini.c: Adjust locking order to the new semantics where the loader lock
4863         comes first.
4864
4865 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
4866
4867         * aot-runtime.c:
4868         * mini-amd64.c:
4869         * mini-arm.c:
4870         * mini-ia64.c:
4871         * mini-mips.c:
4872         * mini-ppc.c:
4873         * mini-sparc.c:
4874         * mini-trampolines.c:
4875         * mini-x86.c:
4876         * mini.c:
4877         * tramp-alpha.c:
4878         * tramp-amd64.c:
4879         * tramp-arm.c:
4880         * tramp-hppa.c:
4881         * tramp-ia64.c:
4882         * tramp-mips.c:
4883         * tramp-ppc.c:
4884         * tramp-s390.c:
4885         * tramp-s390x.c:
4886         * tramp-sparc.c:
4887         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
4888
4889 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
4890
4891         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
4892         as it is incorrect.
4893
4894 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
4895
4896         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
4897         for cctors if needed.
4898
4899 2009-02-17  Mark Probst  <mark.probst@gmail.com>
4900
4901         * mini-ppc.c: Fix build on Darwin.
4902
4903 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
4904
4905         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
4906         version instead of 3 as valgrind doesn't like version 3.
4907
4908         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4909
4910         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
4911         usable for hashing methods.
4912         (emit_extra_methods): Use the new hash to avoid putting every method in the
4913         same hash bucket.
4914
4915         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
4916
4917         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
4918         whenever a method ref could match a method.
4919         
4920         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
4921         test to fail.
4922         
4923         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
4924         methods refs.
4925
4926         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
4927
4928         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
4929         the encoding buffer.
4930
4931         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
4932         mono_method_get_header () on inflated methods as an optimization.
4933
4934 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
4935
4936         * ssa.c (fold_ins): Fix another crash if the instruction following the
4937         switch was optimized away.
4938
4939 2009-02-16  Mark Probst  <mark.probst@gmail.com>
4940
4941         Contributed under the terms of the MIT/X11 license by Steven
4942         Munroe <munroesj@us.ibm.com>.
4943
4944         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
4945
4946 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
4947
4948         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
4949         around the mono_domain_alloc calls, it is now done by the functions
4950         themselves.
4951
4952         * aot-compiler.c (compile_method): Only add wrappers referenced by
4953         the method if compiling with full AOT.
4954         (mono_compile_assembly): Error out if --aot=full is specified on
4955         a platform where it is not supported.
4956
4957         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
4958         on ARM too.
4959
4960         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
4961         AOT support.
4962
4963         * aot-runtime.c (load_named_code): Handle 
4964         mono_arm_throw_exception_by_token.
4965
4966         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
4967
4968         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
4969         unaligned.
4970
4971         * Makefile.am (fullaotcheck): Exit if a test fails.
4972
4973         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
4974         on ARM.
4975         (mono_compile_assembly): Handle the assembler failing.
4976
4977         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
4978         accepting subsections of .bss.
4979
4980         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
4981         was optimized away.
4982
4983         * aot-compiler.c: Remove some unused includes.
4984         
4985         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
4986         now in MonoImageWriter.
4987
4988         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
4989         code sequence which matches a non-virtual call. Fixes #472654.
4990
4991 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
4992
4993         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
4994         xdebug code.
4995         
4996         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
4997         use the image/dwarf writers directly.
4998
4999         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
5000         field.
5001
5002         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
5003         MonoDwarfWriter.
5004
5005         * image-writer.h: Fix some typos.
5006
5007         * dwarfwriter.h dwarfwriter.c: New files.
5008         
5009         * aot-compiler.c: Extract the DWARF info writing functionality into a 
5010         separate module.
5011
5012         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
5013         argument to return unwind info.
5014
5015         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
5016
5017         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
5018         
5019         * aot-runtime.c (decode_method_ref): Add a case for 
5020         MONO_AOT_METHODREF_WRAPPER_NAME.
5021
5022         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
5023         for AOT.
5024
5025         * aot-compiler.c (encode_method_ref): Use the new constants.
5026
5027         * aot-runtime.c (decode_method_ref): Ditto.
5028
5029         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
5030         be compiled, not the icall itself.
5031
5032 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
5033
5034         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
5035         using decode_method_ref ().
5036
5037         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
5038         convert it to an in32. Fixes #475859.
5039
5040         * arrays.cs: Add a test.
5041
5042 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5043
5044         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
5045         OP_LCONV_TO_U2.
5046
5047         * basic-long.cs: Add a test.
5048
5049 2009-02-12  Mark Probst  <mark.probst@gmail.com>
5050
5051         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
5052         remove the frame pointer in leaf methods which don't receive any
5053         arguments, don't throw exceptions and don't do dynamic stack
5054         allocations.
5055
5056 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5057
5058         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
5059         the fail_tramp changes. Hopefully fixes #475132.
5060
5061 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
5062
5063         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
5064         instead of mono_metadata_signature_dup_full.
5065
5066 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5067
5068         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
5069         for processing jump tables. Fixes #473787.
5070
5071 2009-02-11  Mark Probst  <mark.probst@gmail.com>
5072
5073         * mini-generic-sharing.c: mini_method_get_context() just calls
5074         mono_method_get_context_general() now.
5075
5076         * mini.c, mini.h: Moved get_object_generic_inst(),
5077         construct_object_context_for_method() and
5078         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
5079
5080 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
5081
5082         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
5083         basic block fell through to its successor bblock without a branch. Fixes
5084         #474718.
5085
5086         * iltests.il.in: Add a test.
5087         
5088         * aot-compiler.c (encode_method_ref): Encode methods of array types.
5089         (can_encode_patch): We can now handle arrays of generic parameters and
5090         array methods.
5091
5092         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
5093
5094         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
5095         the AOT file to avoid some #ifdefs in aot-runtime.c
5096
5097         * mini.h: Bump AOT file format version.
5098
5099 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
5100
5101         * Makefile.am (fullaotcheck): Make this run the tests.
5102
5103         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
5104
5105 2009-02-10  Mark Probst  <mark.probst@gmail.com>
5106
5107         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
5108         individually.  Fixes #473482.
5109
5110 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
5111
5112         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
5113
5114 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
5115
5116         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
5117         (mono_compile_assembly): Hush compile warnings about
5118         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
5119         code path.
5120
5121 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
5122
5123         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
5124
5125         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
5126
5127         * aot-compiler.c: Fix arm support.
5128
5129         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
5130         img_writer_emit_unset_mode () function.
5131
5132         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
5133         (mono_unwind_get_dwarf_pc_reg): Ditto.
5134
5135         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
5136         Move almost all platform specific code to a set of arch_ functions, 
5137         and document them to ease porting.
5138         
5139         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
5140
5141         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
5142
5143         * aot-compiler.c: Extract the image writing functionality into a separate
5144         module to reduce the size of this file.
5145
5146 2009-02-09  Geoff Norton  <gnorton@novell.com>
5147
5148         * mini-s390.c: Fix the signature of emit_sig_cookie.
5149
5150 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
5151
5152         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
5153
5154         * aot-runtime.c (is_shared_got_patch): Ditto.
5155
5156         * aot-runtime.c (load_named_code): Cope with the fact that 
5157         decode_got_entry () won't decode the patch fully if its corresponding got
5158         entry is already filled.
5159         
5160         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
5161         Initialize *ji.
5162         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
5163
5164         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
5165         as the moving pointer instead of 'buf' for consistency with the rest of the
5166         codebase.
5167         (mono_arch_create_monitor_exit_trampoline): Ditto.
5168
5169         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
5170         generic_class_init trampolines.
5171         (add_generic_class): Extract some code from add_generic_instances () into a
5172         separate function so it can be called from other places too.
5173         (compile_method): Call add_generic_class () for the classes of inflated methods
5174         referenced by the method.
5175         (can_encode_patch): Allow references to generic parameters.
5176
5177         * aot-runtime.c: Add support the patches required by the new trampolines.
5178         
5179         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
5180         support.
5181
5182         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
5183         full-aot support.
5184
5185         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
5186         this from get_throw_pending_exception, make the signature full aot compatible.
5187
5188         * Makefile.am (fullaotcheck): New target to run full-aot tests.
5189
5190         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
5191
5192         * exceptions.cs: Add a test.
5193
5194 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
5195
5196         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
5197         use the DWARF_DATA_ALIGN constant instead.
5198
5199         * exception-<ARCH>.c: Update after the above change.
5200
5201         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
5202         dwarf unwinder.
5203
5204         * mini-arm.c: Enable the dwarf unwinder.
5205
5206         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
5207         instead of mono_class_setup_vtable ().
5208
5209 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
5210
5211         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
5212         dwarf unwinder.
5213
5214         * mini-x86.h: Enable the dwarf unwinder.
5215
5216 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
5217
5218         Fix mcs/tests/test-7.cs
5219         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
5220         2009-02-03.
5221
5222 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
5223
5224         * mini.c (print_jit_stats): Remove some unused statistics.
5225
5226 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
5227
5228         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
5229
5230 2009-02-05  Mark Probst  <mark.probst@gmail.com>
5231
5232         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
5233         the method we get from mono_object_get_virtual_method() because
5234         that function does it properly, now.
5235
5236 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
5237
5238         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
5239         opcodes. Fixes #472775.
5240
5241 2009-02-05  Mark Probst  <mark.probst@gmail.com>
5242
5243         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
5244         fact that mono_find_jit_info() sometimes returns the context
5245         corresponding to the jit info in new_ctx.  Fixes #472600.
5246
5247 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
5248
5249         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
5250         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
5251         klass->enum_basetype directly.
5252
5253         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
5254         enum subtypes.
5255
5256         * unwind.c: Avoid 0 sized arrays.
5257
5258 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
5259
5260         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
5261         size on systems with 64k pages. Fixes #471389.
5262
5263 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5264
5265         Contributed under the terms of the MIT/X11 license by Steven
5266         Munroe <munroesj@us.ibm.com>.
5267
5268         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
5269         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
5270         necessary.
5271
5272 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5273
5274         Contributed under the terms of the MIT/X11 license by Steven
5275         Munroe <munroesj@us.ibm.com>.
5276
5277         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
5278         comparison fix.
5279
5280         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
5281         The trampoline can be longer on PPC64.
5282
5283 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5284
5285         Contributed under the terms of the MIT/X11 license by Steven
5286         Munroe <munroesj@us.ibm.com>.
5287
5288         * mini-ppc.c: Compiler warning fixes and trivial code
5289         simplifications.
5290
5291 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
5292
5293         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
5294         ins->dreg which could be a hardware register, not a vreg.
5295
5296         * aot-compiler.c (emit_method_dwarf_info): Ditto.
5297         
5298         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
5299         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
5300
5301         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
5302         
5303         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
5304         ->dreg, that is not the vreg we are looking for.
5305
5306         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
5307
5308         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
5309         LIVERANGE_END.
5310
5311         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
5312         strange crashes.
5313
5314 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
5315
5316         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
5317
5318         * aot-compiler.c (emit_line_number_info): Fix line number emission when
5319         the line diff is 0.
5320
5321         * aot-compiler.c: Add xdebug support on x86.
5322
5323         * unwind.c: Add x86 support.
5324         
5325         * aot-compiler.c (emit_exception_debug_info): Control the emission of
5326         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
5327
5328         * mini.c (mini_method_compile): Ditto.
5329         
5330         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
5331         the variable index.
5332
5333         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
5334         which mimic .push_section/.pop_section in GAS.
5335         
5336         * aot-compiler.c: Emit precise live range information for variables.
5337
5338         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
5339
5340         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
5341         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
5342         them.
5343
5344         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
5345         the live ranges of variables.
5346
5347         * mini.h (struct MonoMethodVar): Add two fields containing the live range
5348         of the variable in terms of native offsets.
5349
5350 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
5351
5352         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
5353         
5354 2009-02-02  Mark Probst  <mark.probst@gmail.com>
5355
5356         Contributed under the terms of the MIT/X11 license by Steven
5357         Munroe <munroesj@us.ibm.com>.
5358
5359         * exceptions-ppc.c (restore_regs_from_context): Correct operand
5360         order (offset then base reg) for ppc_load_multiple_regs.
5361         (emit_save_saved_regs) Correct operand order for
5362         ppc_store_multiple_regs.
5363         (mono_arch_get_call_filter): Correct operand order for
5364         ppc_load_multiple_regs.
5365
5366         * mini-ppc.c (emit_memcpy): Fix operand order for
5367         ppc_load_reg_update and ppc_store_reg_update.
5368         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
5369         (mono_arch_emit_epilog): Correct operand order for
5370         ppc_load_multiple_regs.
5371
5372         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
5373         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
5374
5375 2009-02-02  Mark Probst  <mark.probst@gmail.com>
5376
5377         * cpu-ppc64.md: Fixed storer4_memindex length.
5378
5379 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
5380
5381         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
5382         line number info.
5383         
5384         * aot-compiler.c (emit_line_number_info): Optimize this.
5385
5386 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
5387
5388         * aot-compiler.c: Disassemble tokens in the IL disassembly.
5389         
5390         * aot-compiler.c: Add debug info for methods without debug info by
5391         emitting an IL file and having the line number info referencing that file.
5392
5393         * aot-compiler.c: Optimize the size of the generated line number info.
5394
5395         * aot-compiler.c: Emit line number info in xdebug mode.
5396
5397         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
5398         million arguments.
5399
5400 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
5401
5402         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
5403
5404         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
5405         is used.
5406
5407 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
5408
5409         * basic-calls.cs: Test for the weird crash found on arm.
5410         
5411 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
5412
5413         * cpu-arm.md: Increase the size of storer8_membase_reg and
5414         loadr8_membase_reg to 24 bytes to accomodate the extra add.
5415
5416         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
5417         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
5418         reg to LR otherwise we'll be loading/storing from just the offset.
5419
5420 2009-01-30  Miguel de Icaza  <miguel@novell.com>
5421
5422         Question: if we are storing gint32's inside the "*native_offset",
5423         should we change the signature to "gint32 *native_offset" to
5424         ensure that we do not have type definition problems?
5425         
5426         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
5427         an int * as this is what the other function expects, causes
5428         problems with Freescale's compiler that defined int32_t to be a
5429         long and makes int incompatible 
5430
5431 2009-01-30  Miguel de Icaza  <miguel@novell.com>
5432
5433         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
5434         filename conflict with bjam.
5435
5436 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5437
5438         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
5439         as it might use decomposed ops.
5440
5441 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5442
5443         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
5444
5445         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
5446         is defined.
5447
5448         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
5449
5450         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
5451         offsets.
5452
5453         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
5454         way registers are stored in MonoContext on arm.
5455
5456         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
5457         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
5458
5459         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
5460
5461         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
5462
5463         * mini.c (mini_init): Register mono_isfinite.
5464
5465         * jit-icalls.c (mono_isfinite): New jit icall.
5466
5467         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
5468         
5469         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
5470         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
5471         the parent frame.
5472
5473 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5474
5475         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
5476         separate frame and stack pointers, so we must use FP to find the register
5477         spill area.
5478         The FP reg is retrieved from the MonoContext::regs array.
5479
5480 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5481
5482         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
5483         as FPA requires it.
5484
5485 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5486
5487         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
5488         return R4 and R8 when not running under softfloat.
5489
5490         Fixes basic-calls.exe
5491
5492 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5493
5494         * mini-arm.c: Implement some overflow opcodes.
5495
5496 2009-01-29  Miguel de Icaza  <miguel@novell.com>
5497
5498         * ssa.c: handle another alloca.h
5499
5500         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
5501         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
5502         MONO_ARCH_USE_SIGACTION. 
5503
5504         * aot-runtime.c, mini-exceptions.c: Replace platform define with
5505         capability defines.
5506
5507         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
5508
5509         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
5510         PPC targets as sigaction does not exist on all platforms, define
5511         this on a per-platform basis.
5512
5513         Instead of erroring out if the platform is not defined, include
5514         mini-ppc-os.h, and expect that the OS specific setting provides
5515         the required information.   
5516
5517 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5518
5519         * aot-compiler.c: Fix --enable-minimal=aot.
5520
5521 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5522
5523         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
5524         previous change.
5525
5526 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
5527
5528         * exceptions-arm.c: Fix warnings.
5529
5530         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
5531         ARM.
5532
5533         * mini-x86.c: Fix --enable-minimal=jit build.
5534
5535         * mini.c: Really fix --enable-minimal=jit build.
5536         
5537         * mini.c (construct_object_context_for_method): Move this outside
5538         the DISABLE_JIT block to fix the --enable-minimal=jit build.
5539
5540         "Backported" of r124984 from 2.0 branch.
5541         
5542         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
5543
5544         "Backport" of r124977 + r124978 from 2.0 branch.
5545         
5546         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
5547         to avoid calling mono_exception_from_token () from the throw trampoline.
5548         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
5549         for throwing corlib exceptions, this fixes full-aot support for corlib
5550         exceptions.
5551
5552         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
5553
5554 2009-01-29  Miguel de Icaza  <miguel@novell.com>
5555
5556         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
5557         part of the changes to split the code in mini into operating
5558         system specific files.
5559
5560         This patch was done by copying mini.c to the respective files to
5561         preserve SVN history.
5562
5563 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
5564
5565         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
5566
5567 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
5568
5569         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
5570         remoting-invoke-with-check wrappers of shared methods.
5571
5572         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
5573
5574 2009-01-27  Mark Probst  <mark.probst@gmail.com>
5575
5576         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
5577         optimization if the top of stack is the last instruction in the
5578         bblock.  Otherwise it might have been used after its definition.
5579         Fixes #469742.
5580
5581 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
5582
5583         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
5584         method as well when get_vcall_slot () fails to match a code sequence.
5585
5586         * mini-arm.c: Fix the android build, which doesn't have
5587         __aeabi_read_tp.
5588
5589 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
5590
5591         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
5592         the s390x build.
5593
5594 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
5595
5596         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
5597
5598 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
5599
5600         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
5601         and put its id into jinfo->used_regs. This is only used on amd64,
5602         which is currently the only platform generating unwind info.
5603
5604         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
5605         the dwarf unwinder. This is required to correctly handle async exceptions
5606         like thread abort and stack overflows, which can happen while a method
5607         is in the middle of its prolog or epilog.
5608         
5609         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
5610         the unwind info belonging to an AOTed method.
5611
5612         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
5613         into cfg->unwind_ops.
5614         
5615         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
5616
5617         * mini.c (mini_init): Call mono_unwind_init ().
5618         (mini_cleanup): Call mono_unwind_cleanup ().
5619
5620         * unwind.c: Add functions for managing a set of unwind info entries, allowing
5621         unwind info to be shared between methods.
5622
5623         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
5624         saved in the LMF.
5625
5626         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
5627         get_throw_pending_exception () to avoid initialization races.
5628
5629         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
5630         mono_arch_exceptions_init () function.
5631
5632         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
5633
5634 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
5635
5636         * mini.c (mono_get_domain_intrinsic): New helper function.
5637         (mono_get_thread_intrinsic): Ditto.
5638
5639         * mini-arm.c mini-ia64.c: Use the new helper functions.
5640         
5641         * method-to-ir.c (mono_method_to_ir): Fix the comment for
5642         the last constrained_call change, since it is needed in the non-AOT
5643         case as well.
5644
5645         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
5646         
5647         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
5648         mono_get_lmf_addr () on arm eabi linux.
5649
5650 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
5651
5652         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
5653         code sequence which matches a non-virtual call.
5654
5655 2009-01-23  Mark Probst  <mark.probst@gmail.com>
5656
5657         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
5658         stack pointer (r1).
5659
5660 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
5661
5662         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
5663         runtime-invoke wrappers, since they are also shared based on signature.
5664
5665 2009-01-22  Mark Probst  <mark.probst@gmail.com>
5666
5667         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
5668         info from the (correct) context.
5669
5670 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
5671
5672         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
5673         
5674         * unwind.c (mono_unwind_frame): New function to unwind through a frame
5675         using dwarf unwinding info. Not yet used.
5676
5677         * mini.c (mini_init): When using xdebug, disable freeing of domains.
5678
5679 2009-01-21  Mark Probst  <mark.probst@gmail.com>
5680
5681         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
5682         descriptors.
5683
5684         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
5685         special case and handle mono_arch_delegate_invoke_impl() returning
5686         function descriptors.
5687
5688         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
5689         trampolines return function descriptors, too.
5690
5691 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
5692
5693         * method-to-ir.c (handle_alloc): Avoid generic instances in the
5694         out_of_line optimization.
5695
5696 2009-01-21  Martin Baulig  <martin@ximian.com>
5697
5698         * mini.h
5699         (MonoCompile): Added `disable_deadce_vars' to disable removing
5700         unused variables.
5701
5702         * mini.c
5703         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
5704         inside the debugger.
5705
5706         * liveness.c (mono_analyze_liveness): Don't remove any unused
5707         variables if `cfg->disable_deadce_vars' is set.
5708
5709 2009-01-21  Mark Probst  <mark.probst@gmail.com>
5710
5711         * method-to-ir.c: Only apply exception constructor optimization if
5712         the the method actually belongs to an exception class.  Fixes
5713         #467456.
5714
5715 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
5716
5717         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
5718         change inside a #ifdef __mono_ppc64__.
5719
5720         * aot-compiler.c (compile_method): Remove the previous limitation.
5721
5722         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
5723         on type variables in AOTed code.
5724         
5725         * aot-compiler.c (compile_method): Skip generic methods having type 
5726         constraints on their generic parameters.
5727
5728         * aot-compiler.c (compile_method): Check for methods which cannot be
5729         encoded inside RGCTX_FETCH patches as well.
5730
5731         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
5732         build.
5733
5734 2009-01-20  Mark Probst  <mark.probst@gmail.com>
5735
5736         * method-to-ir.c: Force the vtable variable in shared generic code
5737         for the case that they might show up on a stack trace where they
5738         are needed.
5739
5740         * mini-exceptions.c: Save and use generic sharing info as well as
5741         IP in stack traces to resolve shared generic instantiations.
5742
5743 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
5744
5745         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
5746         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
5747
5748 2009-01-20  Mark Probst  <mark.probst@gmail.com>
5749
5750         * method-to-ir.c: Do generic sharing for array constructors.
5751
5752 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
5753
5754         * mini-exceptions.c (mono_print_thread_dump): Add information
5755         about the thread state using wapi_current_thread_desc.
5756
5757 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
5758
5759         * basic-simd.cs: Tests for the new constructors. 
5760
5761 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
5762
5763         * mini-ops.h: Added OP_EXPAND_*
5764
5765         * cpu-x86.md: Same.
5766
5767         * mini-x86.c (mono_arch_output_basic_block): Same.
5768         
5769         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
5770
5771 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
5772
5773         * iltests.il.in: Add a test for #467385.
5774
5775 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
5776
5777         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
5778         thread been cleaned up is not the same currently in execution.
5779
5780         Fixes appdomain-unload crashes on windows, osx and linux variants
5781         without the __thread keyword.
5782
5783 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
5784
5785         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
5786         (koush@koushikdutta.com). Implement this for android.
5787
5788         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
5789         begins with a digit.
5790
5791         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
5792         mono_marshal_get_write_barrier ().
5793
5794 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
5795
5796         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
5797         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
5798         that pass them on a register pair.
5799
5800         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
5801         test was crashing due to that.
5802
5803 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
5804
5805         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
5806         trampoline code. Include ucontext.h only if available.
5807
5808 2009-01-15  Mark Probst  <mark.probst@gmail.com>
5809
5810         * mini.c: mono_domain_lookup_shared_generic() takes an open method
5811         and doesn't check whether it's sharable, like it was before
5812         removing the shared generics hash.  This brings IronPython
5813         performance back to what it was before that change.
5814
5815 2009-01-14  Mark Probst  <mark.probst@gmail.com>
5816
5817         * method-to-ir.c: Handle delegate invocation optimization earlier,
5818         otherwise it would be handled (much more slowly) by the
5819         final/sealed optimization.
5820
5821 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
5822
5823         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
5824         domain is not set. Fixes #465864.
5825
5826 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5827
5828         * method-to-ir.c: Don't stop sharing of generic methods with catch
5829         clauses - we already handle those.
5830
5831 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5832
5833         * mini.c, mini.h: lookup_generic_method() is now
5834         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
5835         making the shared_generics_hash obsolete.
5836
5837 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5838
5839         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
5840         use the red zone.  Make room on the stack first and then use it,
5841         not the other way around.
5842
5843 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
5844
5845         * mini.c (mini_init): Call mono_xdebug_init ().
5846
5847         * aot-compiler.c (mono_xdebug_init): Make this non-static.
5848
5849 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
5850
5851         * TestDriver.cs: Add an --iter argument to run tests multiple times.
5852
5853         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
5854         trampolines.
5855
5856         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
5857         debug+unwind info for trampolines.
5858
5859         * mini.c (mono_create_unwind_op): New helper function.
5860
5861         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
5862
5863 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
5864
5865         * aot-compiler.c: Fix the build.
5866
5867 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
5868
5869         * Makefile.am: Update dtrace-prelink.sh location.
5870
5871 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
5872
5873         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
5874         optimization. Fixes #464520.
5875
5876 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
5877
5878         * mini-amd64.c : Adding code to save/restore non-volatile registers
5879            on Winx64.
5880
5881         * exceptions-amd64.c : Adding code to save/restore non-volatile 
5882           registers on Winx64.
5883
5884         Contributed under MIT/X11 license.
5885
5886 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
5887
5888         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
5889         __GNUC_MINOR__ which can break when the major version changes.
5890
5891 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
5892
5893         * basic-simd.cs: Add tests for usage of the sizeof opcode.
5894
5895 2009-01-07  Geoff Norton  <gnorton@novell.com>
5896
5897         * helpers.c:  Allow mono -v -v -v to work on darwin.
5898
5899 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
5900
5901         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
5902           pattern. 
5903
5904         Contributed under MIT/X11 license.
5905
5906 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
5907
5908         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
5909         instead of directly accessing type->data.klass. Fixes #462016.
5910         (mono_allocate_stack_slots_full): Ditto.
5911
5912         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
5913         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
5914
5915         * aot-compiler.c (emit_plt): Fix ARM build.
5916
5917 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
5918
5919         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
5920         
5921         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
5922         change.
5923
5924         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
5925         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
5926         #463357.
5927
5928         * iltests.il.in: Add a regression test.
5929
5930 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5931
5932         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
5933
5934 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5935
5936         * basic-simd.cs: Add a regression test for #462457.
5937
5938 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5939
5940         * mini-ops.h: Add a definition of XPHI.
5941
5942         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
5943
5944         * ssa.c (op_phi_to_move): Handle XPHI.
5945
5946         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
5947
5948         Fixes #462457
5949
5950 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5951
5952         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
5953
5954 2008-12-31  Geoff Norton  <gnorton@novell.com>
5955
5956         * mini-ppc.c: The prolog size allocated can be too small for darwin
5957         ppc32 under certain circumstances.  Also fix a small logic bug.
5958
5959 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
5960
5961         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
5962         while loading AOT methods.
5963
5964         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
5965         since only the former is nulled out after a successful cast. This prevents
5966         crashes with rethrown exceptions when using --debug=casts.
5967
5968 2008-12-24  Mark Probst  <mark.probst@gmail.com>
5969
5970         * mini.h: New macro for checking whether a method is final,
5971         i.e. whether the method or its class is marked final.
5972
5973         * method-to-ir.c: Use the new macro for all final-checks
5974         consistently.  Fixes the crash in the System.ServiceModel tests.
5975
5976 2008-12-23  Mark Probst  <mark.probst@gmail.com>
5977
5978         * mini-exceptions.c (get_exception_catch_class): Corrected another
5979         overly strict assertion.
5980
5981 2008-12-23  Mark Probst  <mark.probst@gmail.com>
5982
5983         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
5984         Clobbering it is not allowed because the caller might use it as
5985         the vtable register in the interface call.
5986
5987 2008-12-19  Mark Probst  <mark.probst@gmail.com>
5988
5989         * mini-exceptions.c (get_exception_catch_class): Corrected an
5990         overly strict assertion.
5991
5992 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
5993         
5994         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
5995
5996         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
5997
5998         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
5999
6000         * cpu-mips.md: correct lengths for certain long_ opcodes.
6001
6002         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
6003
6004         * 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().
6005         
6006 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
6007
6008         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
6009         
6010 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
6011         
6012         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
6013         
6014 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
6015
6016         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
6017         next basic block.
6018         
6019 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
6020
6021         * 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
6022
6023         * 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)
6024         
6025 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
6026         
6027         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
6028         
6029 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
6030
6031         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
6032         gshared code. Fixes #458947.
6033
6034         * generics.cs: Add a test.
6035
6036 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
6037         
6038         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6039         
6040         * mini-mips.c: first pass n32 code generation.
6041
6042         * mini-mips.h: datatypes and defines for n32 support.
6043
6044         * exceptions-mips.c: first pass n32 code generation.
6045         
6046         * tramp-mips.c: first pass n32 code generation.
6047         
6048         * cpu-mips.md: add long_ opcodes.
6049         
6050 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
6051
6052         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6053
6054         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6055         
6056         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6057         
6058         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6059
6060         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6061
6062         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6063
6064         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6065
6066         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6067
6068         * helpers.c: for mips/n32, don't pass -mips32 to objdump
6069
6070 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
6071
6072         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
6073
6074 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
6075
6076         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
6077
6078 2008-12-12  Mark Probst  <mark.probst@gmail.com>
6079
6080         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
6081         descriptors for helper functions directly in front of the code.
6082
6083 2008-12-11  Mark Probst  <mark.probst@gmail.com>
6084
6085         * method-to-ir.c: Removed an unnecessary assertion.
6086
6087 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
6088
6089         * method-to-ir.c: Merge SGEN changes from the old JIT.
6090
6091 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
6092
6093         * driver.c (compile_all_methods_thread_main): Handle failure of
6094         mono_get_method ().
6095
6096 2008-12-10  Mark Probst  <mark.probst@gmail.com>
6097
6098         * mini-ppc.c: Merged with mini-ppc64.c.
6099
6100         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
6101
6102         * Makefile.am: Use the same sources for PPC and PPC64.
6103
6104         * mini-ppc64.c: Removed.
6105
6106 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
6107
6108         * branch-opts.c (remove_block_if_useless): Extract fall through detection
6109         code to mono_bb_is_fall_through.
6110         
6111         * branch-opts.c (mono_remove_critical_edges): Same.
6112
6113 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
6114
6115         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
6116         expect that an OP_BR_REG will be there.
6117
6118 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
6119
6120         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
6121         for the many branch ops. The original check miss OP_BR_REG.
6122
6123         Fixes #457574.
6124         
6125 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
6126
6127         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
6128
6129 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
6130
6131         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
6132         while holding the aot lock.
6133
6134 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
6135
6136         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
6137         
6138 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
6139
6140         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
6141           to release all runtime callable wrappers held by the runtime.
6142
6143         Contributed under MIT/X11 license.
6144
6145 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
6146
6147         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
6148           for Winx64.
6149
6150         Contributed under MIT/X11 license.
6151
6152 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
6153
6154         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
6155         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
6156
6157 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
6158
6159         * cpu-mips.md: fix ckfinite length
6160
6161         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
6162         (mono_arch_lowering_pass): cleanup, rearrange for clarity
6163         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
6164         
6165 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
6166
6167         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
6168         
6169 2008-12-08  Geoff Norton  <gnorton@novell.com>
6170
6171         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
6172         size by 8 bytes as well.
6173
6174 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6175
6176         * basic-simd.cs: Fix method names for Vector16b.
6177         
6178 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6179
6180         * basic-simd.cs: Fix method names for Vector16sb.
6181
6182 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6183
6184         * basic-simd.cs: Fix method names for Vector8us.
6185         
6186 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6187
6188         * basic-simd.cs: Fix method names for Vector8s.
6189         
6190 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6191
6192         * basic-simd.cs: Fix method names for Vector4ui.
6193
6194 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6195
6196         * basic-simd.cs: Fix method names for Vector2l.
6197
6198 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6199
6200         * basic-simd.cs: Fix method names for Vector2d.
6201
6202 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6203
6204         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
6205         that are extension methods.
6206
6207 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6208
6209         * basic-simd.cs: Fix method names for Vector4f.
6210
6211 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
6212
6213         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
6214         as such. Fixes #456669.
6215
6216 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
6217
6218         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
6219         
6220 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
6221
6222         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
6223         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
6224         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
6225         (mips_adjust_stackframe): handle FP spills
6226                 
6227         * mini-ops.h: add mips_mtc1_s2
6228         
6229         * cpu-mips.md: add mips_mtc1_s2
6230         
6231 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
6232
6233         * unwind.c: New file, move the unwind info encoding functions here from
6234         aot-compiler.c, so they could be used at runtime too.
6235
6236 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
6237
6238         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
6239         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
6240         
6241 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
6242
6243         * mini-mips.c: cleanup warnings
6244         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
6245         (mips_adjust_stackframe): handle case of taking the address of stack locals
6246         
6247 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6248
6249         * aot-compiler.c: Implement a few functions missing from the asm writer.
6250         (emit_method_code): Only write symbols for methods when using the bin
6251         writer, since the assembler can't deal with the characters in our method
6252         names.
6253
6254         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
6255
6256         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
6257         call.
6258
6259         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
6260         a bit to also restore %rax.
6261
6262 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6263
6264         * mini-ppc.c: Some simple merges from mini-ppc64.c.
6265
6266 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6267
6268         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
6269         arguments.
6270
6271 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6272
6273         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
6274
6275         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
6276         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
6277
6278         * exceptions-ppc64.c: Removed.
6279
6280         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
6281
6282 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6283
6284         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
6285         tramp-ppc64.c.
6286
6287         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
6288
6289         * tramp-ppc64.c: Removed.
6290
6291 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6292
6293         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
6294         the TYPESPEC table.
6295
6296 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6297
6298         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
6299
6300         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
6301         mini-ppc.h instead of mini-ppc64.h.
6302
6303         * mini-ppc64.h: Removed.
6304
6305 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6306
6307         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
6308         
6309         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
6310         
6311 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6312
6313         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
6314         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
6315         code easier.
6316
6317 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6318
6319         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
6320
6321 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6322
6323         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
6324
6325 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6326
6327         * basic-simd.cs: Tests for operator == and != on Vector4f.
6328
6329 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6330
6331         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
6332
6333         * simd-intrinsics.c: Kill useless enum.
6334
6335 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6336
6337         * cpu-mips.md: add long_conv_to_ovf_i4_2
6338         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
6339
6340 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6341
6342         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
6343         
6344         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
6345
6346 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6347
6348         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
6349         
6350 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6351
6352         * basic-simd.cs: Add tests for new methods.
6353
6354 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6355
6356         * simd-intrinsics.c: Add support for operator == and !=
6357         on Vector4(u)i.
6358
6359         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
6360
6361 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6362
6363         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
6364
6365 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
6366
6367         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
6368
6369         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
6370         MONO_PATCH_INFO_ICALL_ADDR.
6371
6372         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
6373
6374         * aot-compiler.c: Resurrect full-aot support.
6375
6376 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6377
6378         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
6379         
6380 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6381
6382         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
6383         
6384 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
6385
6386         * basic-simd.cs: Fix tests to work under ppc.
6387         Remove tests for methods that will be removed.
6388
6389 2008-12-03  Mark Probst  <mark.probst@gmail.com>
6390
6391         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
6392         generic type (via a typedef or typeref) correctly.
6393
6394 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
6395
6396         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
6397         diagnose an assertion failure.
6398
6399 2008-12-02  Mark Probst  <mark.probst@gmail.com>
6400
6401         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
6402         Fix trampoline size.
6403
6404         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
6405         conversion opcodes are implemented natively instead via emulation.
6406
6407 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6408
6409         * cpu-mips.md: remove mips_xori
6410
6411         * mini-ops.h:  remove mips_xori
6412
6413         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
6414
6415         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
6416         
6417         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
6418         
6419 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6420
6421         * cpu-mips.md: fix instruction lengths.
6422
6423         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
6424
6425         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
6426
6427         * mini-ops.h: fix slti / sltiu op profiles.
6428         
6429 2008-12-02  Martin Baulig  <martin@ximian.com>
6430
6431         * method-to-ir.c (mono_method_to_ir): Disable debugging
6432         information for the init locals block to make the debugger stop
6433         after all locals have been initalized.
6434
6435 2008-12-02  Martin Baulig  <martin@ximian.com>
6436
6437         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
6438         running inside the debugger.
6439
6440 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
6441
6442         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
6443         is enabled.
6444
6445         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
6446         alu->alu imm optimization which only shows if deadce is disabled.
6447
6448         * aot-compiler.c: Rename the function names for the binary and asm writers
6449         so they can coexist in the same process. Rework the xdebug code to use the
6450         asm writer. This avoids the need to call into the runtime to dump the
6451         debugging info. Add more debugging info for types.
6452
6453         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
6454
6455         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
6456         cpu description tables, they can't occur in cpu-<ARCH>.md.
6457
6458         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
6459         the stack in CEE_LDFLDA. Fixes #450542.
6460
6461         * generics.cs: Add a new test.
6462
6463 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6464
6465         * mini-ops.h: updated MIPS opcodes
6466         * mini-mips.c: decompose long opts
6467         * mini-mips.h: decompose long opts
6468         
6469 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
6470
6471         * cpu-mips.md: fix length on int_rem_un
6472         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
6473         
6474 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
6475
6476         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
6477
6478         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
6479
6480 2008-11-29  Martin Baulig  <martin@ximian.com>
6481
6482         * mini-exceptions.c (mono_handle_native_sigsegv): Check
6483         mono_debug_using_mono_debugger() in addition to the
6484         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
6485
6486 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6487
6488         * mini-ops.h: updated more MIPS opcodes
6489         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
6490         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
6491         
6492 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6493
6494         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
6495
6496 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6497
6498         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
6499         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
6500         * mini-ops.h: correct selected mips opcode entries
6501         
6502 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6503
6504         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
6505         make them work.
6506
6507 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6508
6509         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
6510
6511 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6512
6513         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
6514         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
6515         * mini-mips.h: disable IMT
6516         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
6517         
6518 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6519
6520         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
6521
6522 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6523
6524         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
6525
6526 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
6527
6528         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
6529         consistency.
6530
6531 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6532
6533         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
6534         for Set/GetVector aligned versions.
6535
6536 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6537
6538         * basic-simd.cs: Add tests for Get/SetVector.
6539
6540 2008-11-27  Mark Probst  <mark.probst@gmail.com>
6541
6542         * mini.c: Removed g_slist_append_mempool().  Now in
6543         metadata/mempool.c.
6544
6545 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6546
6547         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
6548         size properly and make the bounds check optional.
6549
6550         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
6551         for SetVector and IsAligned.
6552
6553 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
6554
6555         * mini.c: Remove unused mono_normalize_opcodes () function.
6556
6557 2008-11-26  Mark Probst  <mark.probst@gmail.com>
6558
6559         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
6560         using the new atomic add ops now.
6561
6562         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
6563         add.
6564
6565 2008-11-26  Mark Probst  <mark.probst@gmail.com>
6566
6567         * mini-ppc64.c: Several fixes.
6568
6569 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6570
6571         * cpu-mips.md: added jump_table
6572         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
6573
6574 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6575
6576         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
6577
6578 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6579
6580         * mini-ops.h: corrected a handful of MIPS opcodes.
6581
6582 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6583
6584         * aot-compiler.c: MIPS to use ELF writer
6585
6586 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6587
6588         * mini-codegen.c: remove MIPS specific assert.
6589
6590 2008-11-25  Mark Probst  <mark.probst@gmail.com>
6591
6592         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
6593         fixes.  PPC64 now passes most of the runtime regressions.
6594
6595 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
6596
6597         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
6598         volatile intervals a bit.
6599
6600 2008-11-24  Mark Probst  <mark.probst@gmail.com>
6601
6602         * basic-long.cs: New test case.
6603
6604 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
6605
6606         * mini.c (mini_method_compile): Disable globalra for large methods for 
6607         now.
6608
6609         * regalloc2.c (order_moves): Add fp support.
6610
6611         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
6612         source bblock ends with an OP_BR_REG.
6613
6614         * ratests.cs: Add a new test.
6615
6616 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6617
6618         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
6619         sharing.  PPC64 now passes generics.exe.
6620
6621 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6622
6623         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
6624
6625 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
6626
6627         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
6628         memory when mono_jit_info_table_find () can't find the method in the
6629         LMF case.
6630
6631         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
6632         AOTed code too.
6633         
6634         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
6635         writer too.
6636
6637 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6638
6639         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
6640         Several fixes.  PPC64 now runs exceptions.exe and
6641         devirtualization.exe.
6642
6643 2008-11-22  Mark Probst  <mark.probst@gmail.com>
6644
6645         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
6646         arrays.exe and basic-math.exe.
6647
6648 2008-11-22  Mark Probst  <mark.probst@gmail.com>
6649
6650         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
6651         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
6652
6653 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6654
6655         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
6656
6657 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6658
6659         * method-to-ir.c: Move bounds checking macros to ir-emit.h
6660
6661         * ir-emit.h: Move macros from method-to-ir.c to here.
6662
6663 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6664
6665         * mini-ops.h: Correct the long simd ops to use LREG.
6666
6667 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
6668
6669         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
6670         
6671         * mini-ops.h: Correct the dreg type of a few long opcodes.
6672
6673         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
6674         Add netbsd support.
6675
6676 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
6677
6678         * mini-ppc.c: remove negative stack references in epilog
6679         for platforms that don't support the red zone.
6680
6681 2008-11-21  Mark Probst  <mark.probst@gmail.com>
6682
6683         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
6684         point regs.  Now PPC64 passes basic-calls.exe.
6685
6686 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6687
6688         * basic-simd.cs: Add tests for accessors of Vector2l.
6689
6690 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6691
6692         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
6693
6694         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
6695         
6696         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
6697
6698 2008-11-21  Mark Probst  <mark.probst@gmail.com>
6699
6700         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
6701         PPC64 passes basic-long.exe.
6702
6703 2008-11-20  Mark Probst  <mark.probst@gmail.com>
6704
6705         * decompose.c: Decompose carry and overflow add on PPC64 like on
6706         other 64 bit archs.  Don't decompose sub at all on PPC64.
6707
6708         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
6709         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
6710         basic-long.exe.
6711
6712 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6713
6714         * basic-simd.cs: Add tests for accessors of Vector2d.
6715
6716 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6717
6718         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
6719
6720         * cpu-x86.md: Same.
6721
6722         * mini-x86.c (mono_arch_output_basic_block): Same.
6723         
6724         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
6725
6726 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6727
6728         * basic-simd.cs: Add tests for accessors of Vector4f.
6729
6730 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6731
6732         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
6733
6734         * cpu-x86.md: Same.
6735
6736         * mini-x86.c (mono_arch_output_basic_block): Same.
6737         
6738         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
6739
6740 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6741
6742         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
6743
6744 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6745
6746         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
6747
6748         * cpu-x86.md: Same.
6749
6750         * mini-x86.c (mono_arch_output_basic_block): Same.
6751         
6752         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
6753
6754 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6755
6756         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
6757
6758 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6759
6760         * simd-intrinsics.c: Enable setters for Vector16sb.
6761
6762 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6763
6764         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
6765
6766         * cpu-x86.md: Same.
6767
6768         * mini-x86.c (mono_arch_output_basic_block): Same.
6769         
6770         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
6771
6772 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
6773
6774         * simd-intrinsics.c: Implement setter for Vector8us.
6775
6776 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
6777
6778         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
6779         for dead variables.
6780
6781 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
6782
6783         * mini-ppc.c: remove references to the red zone in the prolog
6784         (for systems that don't support it).
6785
6786 2008-11-19  Mark Probst  <mark.probst@gmail.com>
6787
6788         * cpu-ppc64.md: Fixed a few instruction lengths.
6789
6790         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
6791         now.
6792
6793 2008-11-19  Mark Probst  <mark.probst@gmail.com>
6794
6795         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
6796         basic.exe now.
6797
6798 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
6799
6800         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
6801
6802 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
6803
6804         * mini-ops.h: Added OP_INSERT_I2.
6805
6806         * cpu-x86.md: Same.
6807
6808         * mini-x86.c (mono_arch_output_basic_block): Same.
6809         
6810         * simd-intrinsics.c: Implement setter for Vector8s.
6811
6812         * simd-methods.h: Add the names of get setters of Vector8s.
6813
6814 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
6815
6816         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
6817         
6818         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
6819         parameters.
6820
6821         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
6822
6823 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6824
6825         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
6826         for PPC64.  An empty program runs now.
6827
6828 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
6829
6830         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
6831
6832         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
6833         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
6834         info for JITted code is emitted into a shared library, loadable into gdb.
6835
6836 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6837
6838         * Makefile.am: Changes to build PPC64.
6839
6840         * mini-arch.h: Include mini-ppc64.h on PPC64.
6841
6842 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6843
6844         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
6845         in PPC code up to r119147.
6846
6847 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6848
6849         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
6850         cpu-ppc64.md: Changes for PPC64.
6851
6852         Based on code submitted by andreas.faerber@web.de at
6853         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
6854         X11/MIT license.
6855
6856 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6857
6858         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
6859         cpu-ppc64.md: Copied from the corresponding PPC files from
6860         r118846.
6861
6862 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
6863
6864         * mini-ops.h: Added OP_ROUND.
6865
6866         * cpu-x86.md: Added round.
6867
6868         * mini-x86.c: Added support for intrinsicing Math.Round (double).
6869
6870         * basic-math.cs: Added test_0_round to test rounding.
6871
6872         Contributed under MIT/X11 license.
6873
6874 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
6875
6876         * aot-compiler.c : Fix the Winx64 build.
6877
6878         Contributed under MIT/X11 license.
6879
6880 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6881
6882         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
6883         in OP_EXTRACT_R8 to avoid possible stack corruption.
6884
6885 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6886
6887         * mini-ops.h: Added OP_EXTRACT_R8/I8.
6888
6889         * cpu-x86.md: Added extract_r8.
6890
6891         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
6892         
6893         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
6894         a couple of OP_EXTRACT_I4.
6895
6896         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
6897
6898         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
6899
6900 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6901
6902         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
6903         and not 4.1. 
6904
6905 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
6906
6907         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
6908         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
6909
6910         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
6911         are not needed any more.
6912
6913         * mini.h: Remove the unused INS_LIST macros.
6914
6915         * mini.c (mini_method_compile): Remove a disable globalra case which is no
6916         longer needed.
6917
6918         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
6919         ir-emit.h.
6920
6921         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
6922         mono_alloc_ireg () instead.
6923
6924         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
6925         macros.
6926
6927         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
6928         on amd64.
6929
6930         * aot-runtime.c (load_aot_module): Disable AOT when running under
6931         CAS.
6932
6933         * mini-amd64.h: Change the monitor fastpath defines to check for
6934         !PLATFORM_WIN32 so they work on *bsd too.
6935
6936         * mini.h mini.c mini-hhpa.c: Remove more unused code.
6937
6938         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
6939
6940         * mini.h (MonoCompile): Remove new_ir flag.
6941
6942         * regalloc.h regalloc.c: Remove unused code.
6943
6944         * cpu-*.md: Remove more unused opcodes.
6945
6946         * simple-cee-ops.h simple-mini-ops.h: Removed.
6947
6948         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
6949         
6950 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
6951
6952         * aliasing.h: Removed.
6953
6954         * *.c: Remove references to aliasing.h and inssel.h.
6955
6956         * mini.c: Remove additional unused functions.
6957
6958         * mini-ops.h cpu-*.md: Remove unused opcodes.
6959
6960 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
6961
6962         Remove the old JIT code.
6963
6964         * inssel*.brg: Removed.
6965
6966         * ssa.c abcremoval.c aliasing.c: Removed.
6967
6968         * ssa2.c: Renamed to ssa.c.
6969
6970         * abcremoval2.c: Renamed to abcremoval.c.
6971
6972         * *.c: Removed all !cfg->new_ir code.
6973
6974         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
6975         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
6976
6977         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
6978         
6979 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
6980
6981         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
6982         to simplify the code and cut back on the number of global symbols in the AOT
6983         file.
6984         
6985         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
6986
6987 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
6988
6989         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
6990         with the got/got_info tables.
6991
6992         * mini.h: Bump AOT file format version.
6993         
6994         * unwind.h: New file, contains definitions for stack unwinding.
6995
6996         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
6997         to cfg->unwind_ops.
6998         
6999         * aot-compiler.c: Generalize the emitting of unwind information to use the
7000         information in cfg->unwind_ops.
7001
7002         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
7003
7004         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
7005         AOT method frames. Enable writing symbols for methods by default.
7006
7007 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
7008
7009         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
7010         and make it work with vectors of element sizes 1, 2 and 4.
7011
7012         * simd-intrinsics.c: Enable getter for all vectors with element size
7013         1, 2 or 4.
7014
7015         * simd-methods.h: Add the names of other getters.
7016
7017         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
7018
7019         * cpu-x86.md: Same.
7020
7021         * mini-x86.c: Same.
7022
7023 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
7024
7025         * mini-ppc.h: portability fix.
7026
7027 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
7028
7029         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
7030         buggy and will overwrite it.
7031
7032 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
7033
7034         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
7035         Use it to emit local symbols for all methods so AOTed methods show up with
7036         their full name in gdb/valgrind output.
7037
7038 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
7039
7040         * mini-ppc.c: portability fixes.
7041
7042 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
7043
7044         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
7045         entries out of the if (!generic_shared...) code so it is always done.
7046         (mono_class_init_trampoline): Do the patching when running under valgrind
7047         too, newer versions of valgrind have no problems with it.
7048
7049 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
7050
7051         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
7052         further sections.
7053
7054 2008-11-13  Mark Probst  <mark.probst@gmail.com>
7055
7056         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
7057         filters.
7058
7059 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7060
7061         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
7062
7063 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7064
7065         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
7066
7067         * cpu-x86.md: Same.
7068
7069         * mini-x86.c: Same.
7070
7071         * simd-intrinsics.c: Same.
7072
7073 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7074
7075         * simd-intrinsics.c: Enable constructor intrinsics for all types.
7076
7077 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7078
7079         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
7080         to work with more Vector types.
7081
7082 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7083
7084         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
7085         store the elemens directly instead of using and intermediate.
7086
7087 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
7088
7089         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
7090
7091         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
7092         to preserve %eax for aot plt trampolines.
7093
7094         * aot-compiler.c (compile_method): Don't skip synchronized methods.
7095         (encode_method_ref): Flag synchronized methods so they won't go through
7096         the AOT trampoline.
7097
7098         * aot-compiler.c: Additional work to support AOTing synchronized methods/
7099         wrappers.
7100
7101         * cpu-ia64.md (jmp): Increase max length.
7102
7103 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
7104
7105         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
7106         open generic classes.
7107
7108         * aot-compiler.c: Enable the ELF writer on ELF platforms.
7109
7110         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
7111         box+brtrue optimization since it causes test failures on x86.
7112
7113 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
7114
7115         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
7116
7117         * cpu-x86.md: Same.
7118
7119         * mini-x86.c: Same.
7120
7121         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
7122         for simd ctor values. 
7123
7124         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
7125         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
7126
7127 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
7128
7129         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
7130         LogicalRightShift.
7131
7132         * simd-instrincs.c: Same.
7133
7134         * basic-simd.cs: Same.
7135
7136 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
7137
7138         * ratests.cs: Add more tests.
7139
7140         * regalloc2.c (add_spill_code): Handle more corner cases.
7141
7142 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
7143
7144         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
7145         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
7146         both the source an destination of an instruction.
7147
7148 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
7149
7150         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
7151         wapihandles.c: more portability changes.
7152
7153 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
7154
7155         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
7156         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
7157         safe to execute in a signal handler and the kernel provides better
7158         the info in /proc/self/smaps. Avoid the assert on sigaction during
7159         cleanup.
7160
7161 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
7162
7163         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
7164         do the bblock linking hack if it is actually needed.
7165
7166         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
7167         up linking.
7168
7169         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
7170         crash problem is fixed.
7171
7172         * branch-opts.c (mono_remove_critical_edges): Link up newly added
7173         bblocks.
7174
7175         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
7176         for catch clauses.
7177         (mini_method_compile): Set the starting value of next_vreg to 
7178         MAX_IREGS + MAX_FREGS when using globalra.
7179
7180         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
7181         filter clauses with BB_EXCEPTION_HANDLER.
7182
7183         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
7184
7185 2008-11-10  Mark Probst  <mark.probst@gmail.com>
7186
7187         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
7188         space for stdcall.  Fixes regressions on Win32.
7189
7190 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
7191
7192         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
7193         bblocks.
7194         (linear_scan): Remove an assert which doesn't seem to be needed.
7195
7196         * local-propagation.c (mono_local_deadce): Avoid a call to
7197         MONO_DELETE_INS which would screw up the instruction linking.
7198
7199         * mini.c (mono_decompose_op_imm): Make this work with globalra.
7200
7201         * regalloc2.c: Upgrade to work the current JIT code.
7202
7203 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
7204
7205         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
7206         case.
7207
7208         * aot-runtime.c: Remove some dead code.
7209
7210         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
7211         consistency.
7212         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
7213
7214         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
7215         trampolines using sscanf since atoi doesn't work on large unsigned values.
7216
7217         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
7218         Initialize code_size.
7219
7220 2008-11-08  Mark Probst  <mark.probst@gmail.com>
7221
7222         * method-to-ir.c (mini_emit_inst_for_method): Make
7223         Interlocked.CompareExchange work for Int arguments on 32 bit
7224         archs, as well.
7225
7226 2008-11-07  Mark Probst  <mark.probst@gmail.com>
7227
7228         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
7229
7230 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
7231
7232         * main.c Fix MSVC build.
7233
7234         Contributed under MIT/X11 license.
7235
7236 2008-11-06  Mark Probst  <mark.probst@gmail.com>
7237
7238         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
7239         alignment larger than 8 bytes are aligned correctly, too.
7240
7241         * mini.c: Honor the min_align field of MonoClass when laying out
7242         the stack.
7243
7244 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
7245
7246         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
7247
7248         * aot-compiler.c (emit_plt): Fix a warning.
7249         
7250         * aot-compiler.c: Implement ARM support in the binary writer.
7251
7252 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7253
7254         * basic-simd.cs: Add test for getter with byref arg.
7255         Fix the naming of a few tests.
7256         Add missing checks to a test.
7257
7258 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
7259
7260         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
7261
7262         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
7263         most of the full-aot support for monitor enter/exit trampolines.
7264
7265         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
7266         enter/exit trampoline creation functions.
7267
7268         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
7269         make dist.
7270
7271 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
7272
7273         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
7274         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
7275         implement the needed functionality without adding crap to the runtime.
7276
7277 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
7278
7279         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
7280         non-x86 builds.
7281
7282         * mini.c (mono_build_date): New global version holding the build date in
7283         string format.
7284         
7285         * Makefile.am (buildver.c): Generate a file containing the build date.
7286
7287         * main.c: Set the build date from the generated file.
7288
7289         * mini.c (mono_get_runtime_build_info): New helper function returning build
7290         information in a string format.
7291         
7292         * driver.c (mono_main): Print the build date in --version.
7293
7294         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
7295         file when the bind-to-runtime-version option is used.
7296
7297 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7298
7299         * simd-intrinsics.c: Fix bug when using getters and byref args. 
7300
7301 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7302
7303         * simd-methods.h: Rename prefetch methods.
7304
7305         * simd-intrinsics.c: Same.      
7306
7307 2008-11-05  Mark Probst  <mark.probst@gmail.com>
7308
7309         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
7310         sizes.
7311
7312 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7313
7314         * aot-compiler.c: Use the bundled elf header files instead of depending on
7315         the system one.
7316         
7317         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
7318         mempool.
7319
7320         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
7321         on every call.
7322
7323 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
7324
7325         * cpu-x86.md: Add store nta ops.
7326
7327         * mini-ops.h: Same.
7328
7329         * mini-x86.c: Same.
7330
7331         * mini.h: Add an enum for simd prefetch modes.
7332
7333         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
7334         of store. Use the changed code to support store nta.
7335
7336         * simd-intrinsics.c: Add prefetch ops for all vector types.
7337
7338 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7339
7340         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
7341         threads.
7342         
7343         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
7344         names.
7345
7346         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
7347         trampolines.
7348
7349 2008-11-04  Mark Probst  <mark.probst@gmail.com>
7350
7351         * mini-x86.c: Fixed commit.
7352
7353 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7354
7355         * aot-compiler.c (emit_plt): Align the plt section only on x86.
7356
7357 2008-11-04  Mark Probst  <mark.probst@gmail.com>
7358
7359         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
7360         and MONITOR_EXIT, for the ASM fastpaths.
7361
7362         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
7363         available.
7364
7365         * mini.c, patch-info.h: Signature and patch infos for
7366         Monitor.Enter/Exit trampolines.
7367
7368         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
7369
7370         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
7371         Monitor.Enter/Exit ASM fastpath for Linux.
7372
7373 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7374
7375         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
7376
7377         * objects.cs: Add a new test.
7378         
7379         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
7380
7381         * aot-runtime.c (load_method): Run class initialization in the PLT case even
7382         if MONO_LOG_LEVEL is set.
7383
7384         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
7385
7386         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
7387
7388         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
7389         
7390         * aot-compiler.c: Change the relocation code to use virtual addresses instead
7391         of file offsets. Align the sections belonging to the data segment to 
7392         PAGESIZE.
7393
7394 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
7395
7396         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
7397         elf.h. Port it to amd64.
7398
7399 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
7400
7401         * driver.c: Enable SIMD by default.
7402
7403 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
7404
7405         * cpu-x86.md: Add prefetch op.
7406
7407         * mini-ops.h: Same.
7408
7409         * mini-x86.c: Same.
7410
7411         * mini.h: Add an enum for simd prefetch modes.
7412
7413         * simd-methods.h: Add prefetch function names.
7414
7415         * simd-intrinsics.c: Add prefetch ops for all vector types.
7416
7417 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
7418
7419         * aot-compiler.c (emit_bytes): Speed this up a little.
7420
7421 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
7422
7423         * aot-compiler.c: Add JIT time etc. statistics.
7424         
7425         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
7426
7427         * mini.h (MonoCompile): Add 'got_offset' field.
7428
7429         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
7430         method_got_offsets array.
7431
7432         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
7433         wrappers.
7434
7435         * aot-compiler.c (compile_method): Add generic method instances referenced
7436         by the method to the list of methods to be compiled, this is required so if
7437         A<T> references B<T>, and another assembly references A<int>, then it will
7438         also get a copy of B<int>.
7439
7440         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
7441         when checking for monitor enter/exit.
7442
7443 2008-10-30  Mark Probst  <mark.probst@gmail.com>
7444
7445         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
7446         for Monitor.Enter and Monitor.Exit if enabled.
7447
7448         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
7449         Solaris.
7450
7451 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
7452
7453         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
7454         of an OP_MOVE. Fixes #440046.
7455
7456         * basic-long.cs: Add a new test.
7457
7458 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
7459
7460         * mini.h: Add synchronization note for the managed counter-part.
7461
7462         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
7463         returns the simd caps of the current cpu.
7464
7465 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
7466
7467         * basic-simd.cs: Remove Console.WriteLine.
7468
7469 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7470
7471         * basic-simd.cs: New tests for Vector2ul.
7472
7473 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7474
7475         * simd-intrinsics.c: Add new vector type Vector2ul.
7476
7477 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7478
7479         * basic-simd.cs: New tests for Vector2l.
7480
7481 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7482
7483         * cpu-x86.md: Add long version of most packed int ops.
7484
7485         * mini-ops.h: Same.
7486
7487         * mini-x86.h: Same.
7488
7489         * simd-intrinsics.c: Add new vector type Vector2l.
7490
7491 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7492
7493         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
7494
7495         * simd-methods.h: Remove SN_op_BitwiseXor.
7496
7497 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
7498
7499         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
7500         alignment.
7501
7502 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7503
7504         * basic-simd.cs: Test for Vector2d.
7505
7506         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
7507         value.
7508
7509 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7510
7511         * cpu-x86.md: Add double version of all packed float ops.
7512
7513         * mini-ops.h: Same.
7514
7515         * mini-x86.h: Same.
7516
7517         * simd-intrinsics.c: Add new vector type Vector2d.
7518
7519         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
7520
7521         * simd-methods.h: Add Duplicate.
7522
7523 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7524
7525         * basic-simd.cs: Test for packing with signed saturation.
7526
7527 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
7528
7529         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
7530         found in the TYPESPEC table.
7531
7532 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
7533
7534         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
7535         too.
7536
7537         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
7538
7539         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
7540         instead of the RVA, since the RVA can be changed by tools like the cil 
7541         stripper.
7542
7543         * method-to-ir.c (mono_method_to_ir2): Ditto.
7544
7545         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
7546         (deserialize_variable): Ditto.
7547
7548 2008-10-25  Martin Baulig  <martin@ximian.com>
7549
7550         * debug-mini.c (write_variable): Use
7551         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
7552
7553 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7554
7555         * cpu-x86.md: Add unsigned variants of packd and packw.
7556
7557         * mini-ops.h: Same.
7558
7559         * mini-x86.h: Emit the right instruction for packd and packw.
7560         Add unsigned variants of packd and packw.
7561
7562         * simd-intrinsics.c: Packd and packw were used in place of their
7563         unsigned variants. Change that.
7564         Add intrinsics for (Signed)PackWithSignedSaturation.
7565
7566         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
7567
7568 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7569
7570         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
7571
7572 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7573
7574         * mini-ops.h: Remove dword packed add/sub with saturation ops.
7575
7576         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
7577
7578         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
7579         sse instructions.
7580
7581         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
7582
7583 2008-10-24  Mark Probst  <mark.probst@gmail.com>
7584
7585         * method-to-ir.c, mini.c: Special casing for the synchronized
7586         wrapper for the ldtoken+GetTypeFromHandle case.
7587
7588 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
7589
7590         * mini.c (mono_replace_ins): Move this to branch-opts.c.
7591
7592         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
7593         created/split bblocks.
7594
7595 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7596
7597         * mini-ops.h: Add packed signed mul high.
7598         
7599         * cpu-x86.md: Same.
7600
7601         * mini-x86.c (mono_arch_output_basic_block): Same.
7602
7603         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
7604
7605         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
7606
7607 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7608
7609         * basic-simd.cs: Tests for Vector16sb.
7610
7611 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
7612
7613         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
7614
7615 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
7616
7617         * mini-ops.h: Add packed signed min, max and compare greater.
7618         
7619         * cpu-x86.md: Same.
7620
7621         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
7622         saturation.
7623
7624         * simd-methods.h: Add CompareGreaterThan.
7625
7626         * simd-methods.h: Remove CompareEquals.
7627
7628         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
7629
7630         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
7631
7632         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
7633         CompareEqual.
7634
7635 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
7636
7637         * basic-simd.cs: Fix tests due to change in the API.
7638
7639 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7640
7641         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
7642
7643 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7644
7645         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
7646
7647         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
7648         inst_offset as this has invalid values for LDADDR.
7649
7650 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7651
7652         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
7653
7654         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
7655
7656 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7657
7658         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
7659         for accessing field->data.
7660
7661 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7662
7663         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
7664
7665 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7666
7667         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
7668
7669         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
7670
7671 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7672
7673         * dominators.c (mono_compute_natural_loops): Allocate GList enties
7674         from the cfg mempool.
7675
7676 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
7677
7678         * basic-simd.cs: Tests for new methods in Vector8us.
7679
7680 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
7681
7682         * mini-ops.h: Add multiply and store high.
7683         
7684         * cpu-x86.md: Same.
7685
7686         * mini-x86.c (mono_arch_output_basic_block): Same.
7687
7688         * simd-methods.h: Same.
7689
7690         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
7691         and CompareEqual.
7692
7693 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
7694
7695         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
7696         mono_class_setup_vtable ().
7697
7698         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
7699         mono_class_get_vtable_entry () for accessing klass->vtable.
7700
7701         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
7702
7703         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
7704         found.
7705
7706         * method-to-ir.c (mono_save_token_info): Don't save references made from
7707         wrappers.
7708
7709         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
7710         of generic instances.
7711
7712         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
7713
7714 2008-10-19  Mark Probst  <mark.probst@gmail.com>
7715
7716         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
7717         OP_JMP depends on the method signature.  Calculate it properly.
7718
7719 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
7720         
7721         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
7722         called directly.
7723
7724         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
7725         instances.
7726         (emit_extra_methods): Add another table mapping method indexes to 
7727         offsets in the extra_method_info table.
7728
7729         * mini.h: Bump AOT file format version.
7730         
7731         * aot-runtime.c: Merge most of the code from mono_aot_get_method
7732         and mono_aot_get_method_from_token () into one function.
7733
7734 2008-10-19  Mark Probst  <mark.probst@gmail.com>
7735
7736         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
7737         separate counter.
7738
7739 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
7740
7741         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
7742         methods.
7743
7744         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
7745         disable_aot.
7746
7747         * mini.c (mono_patch_info_equal): Compare the generic context as well.
7748
7749         * mini.h: Bump aot file format version.
7750
7751         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
7752         AOT file can contain native code for methods which are not in the METHOD
7753         table. Generate code for non-sharable generic instances of generic methods
7754         found in the METHODSPEC table.
7755         
7756         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
7757         encoding generic type handles.
7758
7759         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
7760         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
7761
7762         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
7763         macros + MONO_ADD_INS.
7764
7765         * mini.c (mono_jump_info_token_new2): New function which takes a generic
7766         context as well.
7767
7768         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
7769
7770         * mini.h: Bump aot file format version.
7771
7772         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
7773
7774 2008-10-17  Mark Probst  <mark.probst@gmail.com>
7775
7776         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
7777         platforms, with definable stack alignment value.  Set to 16 now
7778         for all platforms.
7779
7780         * mini.c, mini.h, driver.c: Command line option for disabling
7781         stack alignment.
7782
7783 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7784
7785         * basic-simd.cs: Tests for new methods in Vector4ui.
7786
7787 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7788
7789         * mini-ops.h: Add packed int shuffle.
7790         
7791         * cpu-x86.md: Same.
7792
7793         * mini-x86.c (mono_arch_output_basic_block): Same.
7794
7795         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
7796         extract mask, max, min, shuffle.
7797
7798         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
7799
7800 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7801
7802         * basic-simd.cs: Tests for new methods in Vector8us.
7803
7804 2008-10-17  Mark Probst  <mark.probst@gmail.com>
7805
7806         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
7807         RuntimeTypeHandle, not a TypedReference.
7808
7809 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
7810
7811         * simd-intrinsics.c: remove relocations.
7812
7813 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
7814
7815         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
7816         optimizations from the x86 backend.
7817
7818 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
7819
7820         * simd-methods.h, simd-intrinsics.c: debloat method names and
7821         prepare for no relocations.
7822
7823 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7824
7825         * mini-ops.h: Add packed min/equal and sum of absolute differences.
7826         
7827         * cpu-x86.md: Same.
7828
7829         * mini-x86.c (mono_arch_output_basic_block): Same.
7830
7831         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
7832         extract mask, max, min and sum of absolute differences.
7833
7834         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
7835         method name.
7836
7837 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7838
7839         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
7840         Renamed one test for consistency.
7841
7842 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7843
7844         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
7845         fix to the code that deal with other blocks.
7846
7847 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7848
7849         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
7850
7851 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7852
7853         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
7854         that deals with vreg interference. Explicitly check for OP_LDADDR to be
7855         able to process the source reg.
7856
7857 2008-10-16  Martin Baulig  <martin@ximian.com>
7858
7859         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
7860
7861         * inssel.brg: Add `OP_HARD_NOP'.
7862
7863         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
7864
7865         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
7866         `OP_HARD_NOP' instruction when running inside the debugger.
7867
7868         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
7869         `OP_HARD_NOP' instruction when running inside the debugger.
7870
7871 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7872
7873         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
7874         now works. The issue with the regalloc tripping up no longer
7875         happens.
7876
7877         * simd-intrinsics.c (load_simd_vreg): Same.
7878
7879 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7880         
7881         * basic-simd.cs: Tests for new Vector8ui methods.
7882
7883 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7884
7885         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
7886         only for type. This fixes crashes where MonoInst::klass is checked
7887         for ops of type != VTYPE or OBJ.
7888
7889         * simd-intrinsics.c (load_simd_vreg): Same.
7890
7891 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7892
7893         * mini-ops.h: Add ops for packed shuffle/max/avg and
7894         extract mask.
7895         
7896         * cpu-x86.md: Same.
7897
7898         * mini-x86.c (mono_arch_output_basic_block): Same.
7899
7900         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
7901         extract mask.
7902
7903         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
7904         to emit extract mask op.
7905
7906         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
7907         to emit word shuffles.
7908
7909 2008-10-15  Mark Probst  <mark.probst@gmail.com>
7910
7911         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
7912         the largest alignment needed by a variable, but at least
7913         sizeof(gpointer).
7914
7915 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7916
7917         * basic-simd.cs: Tests for the fixes in the last commit.
7918
7919 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7920
7921         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
7922         no longer handles STACK_PTR input.
7923
7924         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
7925
7926         * simd-intrinsics.c (load_simd_vreg): New function that works like 
7927         get_simd_vreg   but handles STACK_PTR input.
7928
7929         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
7930         as the input can be an arbitrary pointer.
7931
7932         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
7933         LDADDR local optimization directly otherwise use a store op.
7934
7935 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7936
7937         * basic-simd.cs: Tests for dup low and dup high.
7938
7939 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7940
7941         * mini-ops.h: Add dup low and dup high ops.
7942         
7943         * cpu-x86.md: Same.
7944
7945         * mini-x86.c (mono_arch_output_basic_block): Same.
7946
7947         * simd-intrinsics.c (vector4f_intrinsics): Same.
7948
7949 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7950
7951         * basic-simd.cs: Tests for recently added functionality.
7952
7953 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7954
7955         * mini-ops.h: Add remaining sse1 fp ops.
7956         
7957         * cpu-x86.md: Add remaining sse1 fp ops.
7958
7959         * mini-x86.c (mono_arch_output_basic_block): Same.
7960
7961         * mini.h: Add enum for simd FP compare conditions.
7962
7963         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
7964
7965         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
7966         so the backed can generate the appropriate op.
7967
7968 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7969         This patch squeese one more byte from the SimdIntrinsc struct.
7970
7971         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
7972         a a shift amount intead of simply or'ing it.
7973
7974         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
7975
7976         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
7977         byte so we can have an aditional flags field without increasing struct size.
7978
7979         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
7980         against the simd_supported_versions bitmask.
7981
7982         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
7983
7984 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
7985
7986         * mini.c: remove rawbuffer code (the only use here is unsafe because
7987         it takes locks during signal handling and the kernel now provides much
7988         better info in proc/pid/smaps these days).
7989
7990 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
7991
7992         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
7993         OP_X86_PUSH_OBJ. Fixes #434620.
7994
7995         * objects.cs: Add a test.
7996         
7997 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
7998
7999         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
8000         that the packuswb/packusdw don't work with unsigned numbers for what
8001         would be negative numbers in signed format.
8002
8003         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
8004         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
8005
8006         * mini-ops.h: Add doubleword forms of many ops and packing ones.
8007
8008         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
8009
8010         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
8011
8012         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
8013
8014         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
8015         add more ops.
8016
8017         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
8018         version as the enum in mini.h.
8019
8020         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
8021         for sse3 ops, check the simd_version field if present. This way the code
8022         works with all versions of sse.
8023
8024 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8025
8026         * simd-intrinsics.c: Fixed intrinsic name typo.
8027
8028         * mini.h: Added missing simd exported function.
8029
8030         * basic-simd.cs: Added tests for Vector4ui.
8031         Fixed broken test for Vector16b.
8032
8033 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
8034
8035         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
8036         the max length to 64.
8037
8038 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8039
8040         * method-to-ir.c: Only do the fast virtual generic method call for
8041         non-wrapper methods.
8042
8043         * mini.h, mini-trampolines.c: The new generic virtual remoting
8044         trampoline handles virtual method calls via the vtable (as done by
8045         the fast virtual generic method calls) to remoting proxies.
8046
8047         * mini.c (mono_jit_create_remoting_trampoline): For generic
8048         methods reate a generic virtual remoting trampoline.
8049
8050         * mini-amd64.h: Enable fast virtual generic method calls again.
8051
8052 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8053
8054         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
8055         restore registers when doing tail calls.
8056
8057 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8058
8059         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
8060         Vector4ui.
8061
8062 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8063
8064         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
8065
8066 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8067
8068         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
8069
8070 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8071
8072         * basic-simd.cs: Retrofit for API changes.
8073
8074 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8075
8076         * mini-ppc.c: Handle integer stack arguments for tail calls.
8077
8078 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8079
8080         * optflags-def.h: Removed sse3 optimization.
8081
8082         * driver.c: Same.
8083
8084         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
8085         sse3.
8086
8087         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
8088
8089         * mini.h: Added enumeration with simd versions.
8090
8091         * simd-intrinsics.c (emit_intrinsics): Use the new static var
8092         for detecting SSE3.
8093
8094         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
8095
8096         * mini.c (mini_init): Call mono_simd_intrinsics_init.
8097
8098 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8099
8100         * basic-simd.cs: Added tests for Vector8u and Vector16u.
8101
8102         * basic-simd.cs: Fixed test naming.
8103
8104 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8105
8106         * mini-ops.h: Added ops for packed and saturated math, shifts
8107         and packing/unpacking.
8108
8109         * cpu-x86.md: Added descriptors for the above ops.
8110
8111         * mini-x86.c: Added code to emmit the above ops.
8112
8113         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
8114
8115 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
8116
8117         * aot-compiler.c (compile_method): Enable AOT for generic code.
8118
8119         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
8120
8121 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
8122
8123         * mini.c: add a workaround for a common screwup that ends up blamed
8124         to mono (other processes blocking signal delivery).
8125
8126 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8127
8128         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
8129         in the LDFLD/STFLD opcodes. Fixes #432673.
8130
8131         * iltests.il.in: Add a new test.
8132
8133 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
8134
8135         * mini-arm.c: attach the thread in unmanaged->managed transitions
8136         using delegates (bug #433148).
8137
8138 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
8139
8140        * basic-simd.cs: Use new ShuffleSel constants.
8141
8142 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
8143
8144         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
8145
8146         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
8147         only disable simd intrinsics if no sse2 is detected.
8148
8149         * optflags-def.h: Added sse3.
8150
8151         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
8152         is disabled.
8153
8154 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8155
8156         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
8157         when adding delegate-invoke wrappers.
8158
8159 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8160
8161         * Makefile.am: Reenable the simd tests.
8162
8163 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
8164
8165         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
8166           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
8167           other vreg is allocated to that hreg.
8168
8169         Contributed under MIT/X11 license.
8170
8171 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8172
8173         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
8174         yet checked in.
8175
8176 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
8177
8178         * basic-simd.cs: New test suite for SIMD intrinsics.
8179
8180         * Makefile.am: Added new tests.
8181
8182 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
8183
8184         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
8185
8186         * mini-ops.h: Same.
8187
8188         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
8189
8190         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
8191         using SSE2 aware opcodes.
8192
8193         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
8194         is enabled, this code path is only reachable if conversion ops are emmited after
8195         mono_method_to_ir.
8196
8197         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
8198
8199         This optimization saves 6 bytes per conversion against the old version.
8200
8201 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8202
8203         * aot-compiler.c (compile_method): Don't skip methods referencing 
8204         generic methods without a corresponding entry in token_info_hash, since
8205         encode_method_ref () can handle all generic methods now.
8206
8207         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
8208         generic context is set.
8209         
8210         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
8211         generic sharing of LDTOKEN.
8212
8213 2008-10-06  Mark Probst  <mark.probst@gmail.com>
8214
8215         * mini-amd64.h: Temporarily disabled fast virtual generic method
8216         calls because it breaks the System.Runtime.Remoting tests.
8217
8218 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8219
8220         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
8221
8222         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
8223         so inlining actually works.
8224         (check_inline_caller_method_name_limit): Ditto.
8225
8226 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
8227
8228         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
8229         64 bit safety (from Olaf Hering and Andreas Farber).
8230
8231 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8232         
8233         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
8234         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
8235         unused virtual call support code.
8236
8237         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
8238         
8239         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
8240         which can't use aot trampolines.
8241         (decode_patch): Don't create aot trampolines for methods which can't use
8242         them.
8243
8244         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
8245         use aot trampolines.
8246
8247         * mini.h: Bump AOT image format version.
8248         
8249 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
8250
8251         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
8252         to save_token_info () since cmethod is inflated for constrained calls.
8253
8254         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
8255
8256 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
8257
8258         * Makefile.am: Add build rules for ppc64.
8259         This avoids the build failing at pedump with unresolved symbols
8260         due to lack of arch_sources. Instead it will now fail earlier
8261         due to lack of cpu-ppc64.md.
8262
8263         Contributed under MIT/X11 license.
8264
8265 2008-10-04  Mark Probst  <mark.probst@gmail.com>
8266
8267         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
8268         tail calls.
8269
8270         * iltests.il.in: Add test case for tail call with many arguments.
8271
8272 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
8273
8274         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
8275         to the fast virtual generic method code until the aot case is fixed.
8276
8277 2008-10-03  Mark Probst  <mark.probst@gmail.com>
8278
8279         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
8280
8281 2008-10-03  Mark Probst  <mark.probst@gmail.com>
8282
8283         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
8284         thunks.
8285
8286 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
8287         
8288         * simd-intrinsics.c: Forgot to add this one.
8289
8290         * mini-codegen.c: Fix macro in case SIMD is not supported.
8291
8292 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
8293         
8294         This patch land initial JIT support for simd intrinsics.
8295
8296         * mini-x86.h: Added new define to make --enable_minimal work on x86.
8297
8298         * Makefile.am: Added simd-intrinsics.c
8299
8300         * simd-intrinsics.c: New file with simd instrinsic related
8301         code.
8302
8303         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
8304
8305         * cpu-x86.md: Add simd related instructions.
8306
8307         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
8308
8309         * driver.c: Added two new --regression variants.
8310
8311         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
8312
8313         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
8314
8315         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
8316         extract some complicated logic to helper functions.
8317
8318         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
8319
8320         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
8321
8322         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
8323         the specialized simplification pass.
8324
8325         * method-to-ir.c (mono_spill_global_vars): Use new macro.
8326
8327         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
8328
8329         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
8330         table.
8331
8332         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
8333         if MONO_ARCH_NEED_SIMD_BANK is defined.
8334
8335         * mini-ops.h: Added the new simd ops.
8336
8337         * mini-x86.c: Added mono_arch_xregname.
8338
8339         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
8340
8341         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
8342
8343         * mini-x86.h: Define simd related MONO_ARCH macros.
8344
8345         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
8346
8347         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
8348
8349         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
8350         MONO_CLASS_IS_SIMD to deal with simd related IR.
8351
8352         * mini.h (MonoInst): Added spill_var to the backend union.
8353
8354         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
8355
8356         * mini.h: Added forward declarations of the new simd fuctions.
8357
8358         * optflags-def.h: Added new optimization names SIMD.
8359
8360         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
8361
8362         * regalloc.h: Added support for working with 3 register banks.
8363
8364         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
8365
8366         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
8367
8368 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
8369
8370         * mini-exceptions.c: remove 64 bit related ifdef clutter.
8371
8372 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
8373
8374         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
8375         instead of one on 64 bit systems.
8376
8377         * method-to-ir.c: Remove unused includes.
8378
8379 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
8380
8381         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
8382         cfg->used_int_regs, since the two are different on arm.
8383
8384 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8385
8386         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
8387         mono_method_get_vtable_index() to get the vtable index.
8388
8389 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8390
8391         * method-to-ir.c (mono_method_to_ir2): Don't create native
8392         wrappers for array methods, because they're never called (and if
8393         they were called they wouldn't work).
8394
8395 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8396
8397         * method-to-ir.c (mono_method_to_ir2): Array methods are
8398         special-cased and must not be invoked indirectly via the (M)RGCTX
8399         when generic sharing is turned on.  Fixes #431413.
8400
8401 2008-10-01  Mark Probst  <mark.probst@gmail.com>
8402
8403         * method-to-ir.c: When generic sharing is active, call
8404         non-interface virtual generic methods via the standard trampoline.
8405
8406         * mini-trampolines.c: Handle virtual generic shared methods.
8407
8408         * mini.h, mini-x86.c, mini-x86.h: New argument for
8409         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
8410         method thunks and which is the trampoline to call if the lookup
8411         fails.  Enable the virtual generic method thunk for x86.
8412
8413         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
8414         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
8415         argument but assert that it's NULL, because these archs don't yet
8416         implement the virtual generic method thunk.  Changes in the IMT
8417         thunk data structures.
8418
8419 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
8420
8421         * aot-compiler.c (emit_globals): Avoid invalid characters in
8422         the static linking symbol.
8423
8424         * objects.cs: Add a test for the range check optimization. Fix warnings.
8425
8426         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
8427         optimization from the current JIT.
8428
8429         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
8430         later in decompose_array_access_opts () to allow more optimizations.
8431
8432         * method-to-ir.c (mono_handle_soft_float): Rename this to 
8433         mono_decompose_soft_float () for consistency.
8434
8435         * mini-ops.h: Fix arguments of OP_STRLEN.
8436
8437         * method-to-ir.c (save_cast_details): Extract the cast details saving code
8438         into a separate function.
8439         (reset_cast_details): Ditto.
8440         (handle_unbox): Save cast details. Fixes #431254.
8441
8442         * method-to-ir.c: Remove some obsolete FIXMEs.
8443
8444 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8445
8446         * ir-emit.h (alloc_dreg): Write a warning before crashing.
8447
8448 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8449
8450         * mini-codegen.c: More work on macros to make them
8451         ready for multiple regbanks.
8452
8453 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8454
8455         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
8456
8457         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
8458
8459 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8460
8461         * mini-codegen.c (mono_spillvar_offset): Proper support for
8462         multiple regbanks.
8463
8464 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
8465
8466         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
8467         the stack overflow changes.
8468
8469 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8470
8471         * mini-codegen.c: Make all bank macros depend on reg_bank.
8472
8473         * mini-codegen.c (mono_local_regalloc): Make free mask
8474         initialization regbank aware.
8475
8476 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8477
8478         * mini-codegen.c (mono_local_regalloc): Extract callee
8479         mask selection to a function and make it regbank aware.
8480
8481 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8482
8483         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
8484         code to deal with many regbanks.
8485
8486 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
8487
8488         * mini-codegen.c: More fp->regbank changes.
8489
8490 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
8491
8492         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
8493         of a hardcoded constant.
8494
8495 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
8496
8497         * method-to-ir.c (type_from_stack_type): Fix typo.
8498
8499 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
8500
8501         * mini-ia64.c (emit_move_return_value): Convert float return values to
8502         double.
8503
8504         * objects.cs: Add a new test.
8505         
8506         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
8507         VARARG methods to fix an assert later.
8508
8509         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
8510         end so it at least compiles.
8511
8512 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
8513
8514         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
8515
8516 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
8517
8518         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
8519         optimization to a new function (emit_optimized_ldloca_ir) and enable
8520         it for both ldloca and ldloca_s.
8521
8522 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
8523
8524         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
8525         gshared CASTCLASS code.
8526
8527         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
8528         amd64, where the libc stack unwinder encounters stack frames referring to
8529         native code in unmapped memory.
8530
8531         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
8532         sharing.
8533
8534         * generics.cs: Add new test.
8535
8536 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
8537
8538         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
8539         add a check that one of the ARM_FPU_ constants is defined.
8540
8541         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
8542         
8543         * mini-exceptions.c: Fix build on non-altstack platforms.
8544
8545         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
8546         sharing of vtypes.
8547
8548         * ir-emit.h: Add a comment to NEW_PCONST.
8549
8550         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
8551
8552         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
8553
8554         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
8555         after the changes to MonoJitDomainInfo.
8556
8557 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8558
8559         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
8560
8561 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8562
8563         * mini-ppc.c: Compiler warning fixes.
8564
8565 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8566
8567         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
8568         for pinvokes.
8569
8570 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8571
8572         * exceptions-ppc.c, mini-ppc.h: Compile
8573         mono_arch_handle_altstack_exception() on Darwin, too.
8574
8575 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8576
8577         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
8578         work on archs which don't have generic sharing implemented, only
8579         without the vtable_arg.
8580
8581 2008-09-26  Mark Probst  <mark.probst@gmail.com>
8582
8583         * mini.c: Added comment explaining why delegate ctor icall
8584         wrappers are compiled.
8585
8586 2008-09-26  Mark Probst  <mark.probst@gmail.com>
8587
8588         * mini.c: Don't produce trampolines to delegate ctor icall
8589         wrappers but compile them upfront.
8590
8591 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
8592
8593         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
8594         runtime-set function when going back to managed code. Currently this
8595         is used to set back the protection on the soft ovf pages and/or to
8596         throw the stack overflow exception that happened in unmanaged code.
8597
8598 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
8599
8600         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
8601         runtime-set function when going back to managed code. Currently this
8602         is used to set back the protection on the soft ovf pages and/or to
8603         throw the stack overflow exception that happened in unmanaged code.
8604
8605 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
8606
8607         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
8608         the support code for restoring stack protection after stack overflows
8609         that happen in unmanaged code. Don't set the exec permission on the
8610         soft overflow area.
8611
8612 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
8613
8614         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
8615         delegate->method_ptr is set. Fixes #428054.
8616
8617 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
8618
8619         * tests.cs: Rename to ratests.cs.
8620
8621         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
8622         emit_get_rgctx_... functions.
8623
8624 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8625
8626         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
8627
8628 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8629
8630         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
8631         before asserting that method is sharable.
8632
8633 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8634
8635         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
8636         whether method needs a static RGCTX wrapper used instead of
8637         complex conditions.
8638
8639         * generic-sharing.c, mini.h: A few functions moved to
8640         metadata/generic-sharing.c.
8641
8642 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8643
8644         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
8645         Generic code sharing for value types, which essentially means
8646         treating value type methods like static methods.  The RGCTX is
8647         passed in the same way.
8648
8649 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
8650
8651         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
8652         opcode when creating multi-dimensional arrays of open types.
8653
8654         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
8655         open generic types.
8656
8657         * generics.cs: Add a test.
8658
8659         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
8660
8661 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
8662
8663         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
8664
8665         * mini.c (mini_method_compile): Set it when running under the debugger. 
8666
8667         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
8668         vreg optimization if the flag is set.
8669
8670         * driver.c (mono_main): Add --attach= option to pass options to
8671         the attach agent.
8672
8673         * mini.c (sigquit_signal_handler): Start the attach agent.
8674
8675         * ssapre.c: Disable this to save space since it is not yet ported to
8676         linear IR.
8677
8678         * regalloc2.c: Disable this to save space.
8679
8680         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
8681
8682 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
8683
8684         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
8685         the -v option useful again.
8686
8687 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
8688
8689         * mini-amd64.c (mono_arch_output_basic_block): Add support for
8690         --break-at-bb.
8691
8692         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
8693         arrays of arrays. Fixes #428406.
8694
8695         * method-to-ir.c (mini_emit_castclass): Ditto.
8696
8697         * objects.cs: Add new test.
8698         
8699 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
8700
8701         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
8702         was wrong at it choked against target_type_is_incompatible for byref types.
8703
8704 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
8705
8706         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
8707         places.
8708
8709 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
8710
8711         * mini-exceptions.c: update a few more exceptions-related counters.
8712
8713 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
8714
8715         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
8716         new functions to allocate from persistent mempools.
8717
8718 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
8719
8720         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
8721         multiple register banks in the future.
8722
8723         * mini-codegen.c (mono_local_regalloc): Fix a warning.
8724
8725 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
8726
8727         * mini.c (type_to_eval_stack_type): Remove duplicated function.
8728
8729         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
8730
8731         * mini.h: Export type_to_eval_stack_type.
8732
8733         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
8734         is only ins->klass of byref types.
8735
8736 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
8737
8738         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
8739         (mini_emit_memcpy2): Ditto.
8740
8741         * mini-amd64.c: Fix a warning.
8742
8743 2008-09-21  Mark Probst  <mark.probst@gmail.com>
8744
8745         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
8746         linking.
8747
8748 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
8749
8750         * method-to-ir.c: Extract stloc micro-optimization to a
8751         function and apply it to all cases.
8752
8753 2008-09-19  Mark Probst  <mark.probst@gmail.com>
8754
8755         * method-to-ir.c: Don't fail generic code sharing in cases we
8756         already support.
8757
8758 2008-09-18  Mark Probst  <mark.probst@gmail.com>
8759
8760         * mini-ppc.c: Handle structs in tailcalls on Darwin.
8761
8762 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
8763
8764         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
8765         implementation.
8766
8767 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
8768
8769         * trace.c: make tracing more useful and correct, with per-thread
8770         id and indent info.
8771
8772 2008-09-15  Mark Probst  <mark.probst@gmail.com>
8773
8774         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
8775         doing a method call and the argument is an R4.
8776
8777 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
8778
8779         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
8780         generic methods.
8781
8782 2008-09-13  Mark Probst  <mark.probst@gmail.com>
8783
8784         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
8785
8786 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
8787
8788         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
8789         (MONO_JUMP_TABLE_FROM_INS): Ditto.
8790
8791 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
8792
8793         * driver.c: Add a --agent argument (not supported yet) to load managed
8794         agent assemblies before loading the main assembly, similarly to how the
8795         Java VM handles agents.
8796
8797 2008-09-11  Mark Probst  <mark.probst@gmail.com>
8798
8799         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
8800         function to do stack layout of local variables.
8801
8802 2008-09-11  Mark Probst  <mark.probst@gmail.com>
8803
8804         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
8805         calculation.
8806
8807 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
8808
8809         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
8810         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
8811         JIT if DISABLE_JIT is defined.
8812
8813         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
8814         defined.
8815
8816 2008-09-10  Mark Probst  <mark.probst@gmail.com>
8817
8818         * iltests.il.in: Disable the fconv test on PPC (the result is
8819         undefined according to ECMA).
8820
8821 2008-09-10  Mark Probst  <mark.probst@gmail.com>
8822
8823         * iltests.il.in: Enable tail call tests for PPC.
8824
8825         * mini.h: Add variable for storing incoming valuetype argument
8826         addresses for tail calls.
8827
8828         * mini-ppc.c: Implement valuetype arguments and return values for
8829         tailcalls on Linux.
8830
8831 2008-09-09  Mark Probst  <mark.probst@gmail.com>
8832
8833         * mini-ppc.c: Partially implement tail calls (struct arguments and
8834         return values not supported).
8835
8836         * method-to-ir.c: Enable tail calls on PPC.
8837
8838 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
8839
8840         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
8841         runtime-invoke wrappers to work around the problem of them getting
8842         assigned to a random class.
8843
8844         * aot-runtime.c (mono_aot_get_method): Ditto.
8845         
8846 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
8847
8848         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
8849         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
8850
8851 2008-09-07  Mark Probst  <mark.probst@gmail.com>
8852
8853         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
8854         until they're implemented properly.
8855
8856         * exceptions-ppc.c: Use arch-independent exception-handling code
8857         instead of custom one.
8858
8859         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
8860         for Linear IR.
8861
8862         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
8863
8864         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
8865         applies when __powerpc__ is defined.
8866
8867 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
8868
8869         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
8870         methods to their code to avoid computing the full name of wrappers and
8871         doing a lookup in a string hash table.
8872
8873 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
8874
8875         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
8876         we identify bblocks before method_to_ir () is ran.
8877
8878         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
8879         Also avoid optimizing branches pointing to themselves.
8880
8881         * mini.c (mini_method_compile): Ditto. Fixes #422947.
8882
8883 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
8884
8885         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
8886
8887 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
8888
8889         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
8890         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
8891         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
8892         'buf'.
8893
8894         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
8895         jumped to the same entry in plt_jump_table.
8896
8897 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
8898
8899         * method-to-ir.c (initialize_array_data): Handle field with RVA from
8900         dynamic images.
8901
8902 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
8903
8904         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
8905         other assignment can be if converted. Saves 1.5% on corlib size and fixes
8906         #421807.
8907
8908 2008-08-29  Geoff Norton  <gnorton@novell.com>
8909
8910         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
8911         segment, and doesn't properly handle .space as .text.  Fixes
8912         AOT Mach/ARM
8913
8914 2008-08-29  Geoff Norton  <gnorton@novell.com>
8915
8916         * mini.c: Disable the mach exception handler when running on 
8917         ARM
8918
8919 2008-08-29  Geoff Norton  <gnorton@novell.com>
8920
8921         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
8922         globals on Darwin/ARM
8923
8924 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
8925
8926         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
8927         since too many things depend on it. Instead, call 
8928         mono_runtime_set_no_exec ().
8929         
8930         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
8931         the new JIT.
8932
8933         * aot-compiler.c: Add an 'asm-only' AOT option.
8934
8935         * mini.c: Avoid initializing the runtime when doing AOT compilation.
8936                 
8937         * aot-compiler.c (compile_method): Disable gshared support for now as it
8938         doesn't yet work.
8939
8940 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
8941
8942         * mini-amd64.h : Fix a compiler warning.
8943
8944         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
8945           Changed to use a callback function to retrieve the unwind info.
8946           This avoids problems observed when code blocks were removed by
8947           unloading an app domain.
8948
8949         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
8950           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
8951           to work properly.
8952
8953         Contributed under MIT/X11 license.
8954
8955 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
8956
8957         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
8958           case to keep the stack aligned to 8.
8959
8960         Contributed under MIT/X11 license.
8961
8962 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
8963
8964         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
8965         avoid repeated linear searches.
8966
8967 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
8968
8969         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
8970         methods it can't handle.
8971         
8972         * aot-compiler.c (add_method): Avoid adding a method twice.
8973         (add_wrappers): Add runtime invoke wrappers for all methods.
8974
8975         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
8976         function to create an aot-compatible version of this trampoline.
8977
8978         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
8979
8980 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
8981
8982         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
8983
8984         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
8985         with a generic sharing failure.
8986
8987         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
8988
8989         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
8990         CEE_RETHROW. Fixes #419634.
8991
8992         * mini.c (mono_method_to_ir): Ditto.
8993
8994         * exceptions.cs: Add a new test.
8995         
8996         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
8997         to mono_type_stack_size_internal () since some callers might not pass in
8998         an rgctx.
8999
9000         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
9001         instrument_prolog. Fixes #419878.
9002
9003         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
9004         doubles in soft float mode volatile.
9005
9006 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
9007
9008         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
9009
9010         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
9011         to handle soft float correctly.
9012
9013         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
9014         the fast path.
9015
9016         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
9017
9018         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
9019         to sp, since the generics catch code requires it.
9020
9021         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
9022         copying.
9023
9024         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
9025         mono_arch_emit_imt_argument ().
9026
9027         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
9028
9029         * mini-arm.c tramp-arm.c: Generic sharing updates.
9030
9031 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
9032
9033         * mini-arm.c: Fix the arm build.
9034
9035         * generic-sharing.c (mini_type_get_underlying_type): New helper function
9036         handling enums, generic instances and generic sharing.
9037         (mini_type_stack_size_full): Ditto.
9038
9039         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
9040         
9041         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
9042
9043         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
9044
9045         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
9046         trampolines.
9047
9048         * mini-arm.c: Various small generic sharing changes.
9049
9050         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
9051         this for x86.
9052         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
9053         custom code.
9054
9055         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
9056         helper function to return a generic class init trampoline.
9057
9058         * method-to-ir.c mini.c: Use it.
9059         
9060         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
9061         arch-specfic function to return a generic class init trampoline.
9062
9063         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
9064         the GENERIC_CLASS_INIT custom code.
9065
9066         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
9067         a fatal error, not a sharing failure.
9068
9069         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
9070         needed.
9071
9072         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
9073         trampoline argument from MONO_ARCH_VTABLE_REG.
9074
9075         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
9076         order of the arguments to the C trampoline: pass 'slot' as the trampoline
9077         argument, and pass the vtable in VTABLE_REG.
9078
9079         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
9080         order of the arguments to the C trampoline: pass 'slot' as the trampoline
9081         argument, and pass the vtable in VTABLE_REG.
9082         (mono_arch_create_trampoline_code_full): Remove some special casing for
9083         the rgctx fetch trampoline.
9084
9085         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
9086         Fixes #419273.
9087
9088         * iltests.il: Add a test for it.
9089
9090 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
9091
9092         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
9093
9094         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
9095         no longer needed.
9096
9097         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
9098         use mono_jit_info_table_find () to avoid recursion.
9099         (mono_delegate_trampoline): Add a sync wrapper here.
9100
9101         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
9102         here.
9103
9104         * mini.c (mono_method_to_ir): Ditto.
9105         
9106         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
9107         add_sync_wrapper argument. Don't add a sync wrapper here.
9108         (mono_create_jump_trampoline): Don't add a sync wrapper here.
9109
9110         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
9111         
9112 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
9113
9114         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
9115           of nonvolatile registers back from MonoContext to CONTEXT.
9116
9117         Contributed under MIT/X11 license.
9118
9119 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
9120
9121         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
9122           arguments on Winx64 there are only 4 argument registers.  For this
9123           logic to work the last argument must be pulled from the stack.  
9124
9125         Contributed under MIT/X11 license.
9126
9127 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
9128
9129         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
9130
9131         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
9132         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
9133         encode/decode_method_ref ().
9134
9135         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
9136
9137         * aot-runtime.c (decode_patch): Ditto.  
9138
9139         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
9140         MONO_PATCH_INFO_METHOD.
9141
9142         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
9143         MonoGenericJitInfo.
9144
9145         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
9146         MonoGenericJitInfo.
9147
9148         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
9149
9150         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
9151         one from the caller.
9152
9153         * aot-runtime.c (decode_generic_inst): New function to decode and
9154         return a interned generic inst.
9155         (decode_klass_ref): Use it.
9156         (decode_method_ref): Ditto.
9157
9158         * aot-compiler.c (emit_exception_debug_info): Save 
9159         jinfo->has_generic_jit_info too.
9160
9161 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
9162
9163         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
9164
9165         * iltests.il.in: Add a test for fconv_to_i.
9166
9167         * liveness.c: Disable the liveness2 pass for now to save space.
9168
9169         * regalloc2.c: Include mempool-internals.h to fix warnings.
9170
9171         * aot-compiler.c (encode_method_ref): Encode the context of generic
9172         instance methods.
9173
9174         * aot-runtime.c (decode_method_ref): Inflate generic methods using
9175         the context saved in the aot file.
9176
9177         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
9178
9179         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
9180
9181         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
9182         volatile so they won't be optimized away.
9183
9184 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
9185
9186         * ssa.c:
9187         * ssa2.c:
9188         * mini.c:
9189         * regalloc2.c:
9190         * dominators.c: Remove duplicated functions that now are in
9191         mempool-internals.h.
9192
9193 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
9194
9195         * aot-compiler.c: Fix warnings.
9196
9197         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
9198
9199         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
9200
9201         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
9202         as the patch type.
9203
9204         * mini.c (mono_resolve_patch_target): Ditto.
9205         
9206         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
9207         (encode_klass_ref): Add support for encoding VARs/MVARs.
9208
9209         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
9210
9211         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
9212         the handling of the got entries into a separate 'decode_got_entry' function.
9213         Add support for RGCTX_FETCH.
9214
9215         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
9216         clobbered by the trampoline code.
9217
9218         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
9219         not clobbered by the indirect calling code.
9220
9221 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
9222
9223         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
9224         to fix the build.
9225
9226 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
9227
9228         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
9229         signature using the compilation mempool otherwise we would leak it.
9230
9231 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
9232
9233         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
9234         mono_emit_abs_call ().
9235
9236         * patch-info.h: Add GENERIC_CLASS_INIT.
9237
9238         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
9239
9240         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
9241         as their target as a near call.
9242
9243         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
9244         ABS handling code.
9245         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
9246
9247         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
9248         call to a runtime function described by a patch.
9249
9250         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
9251         mono_emit_abs_call, this has the advantage that the ABS handling code in
9252         mono_codegen () can handle them both, and can handle other stuff in the
9253         future without additional code.
9254
9255         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
9256         entry.
9257         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
9258         abs addresses.
9259
9260         * mini.h: Add missing bblock related prototypes.
9261
9262         * mini.h (MonoCompile): Remove unused reverse_inst_list and
9263         reverse_inst_list_len fields.
9264
9265         * mini.c: Refactor this file a bit by moving branch optimizations to 
9266         branch-opts.c.
9267
9268         * method-to-ir.c: Merge generic sharing changes missed earlier.
9269
9270         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
9271
9272         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
9273         shared patches. Process METHODCONST as a shared patch.
9274
9275         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
9276         as it crashes on the 2.0 mscorlib.
9277
9278         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
9279         to cause crashes.
9280         
9281         * aot-compiler.c: Use is_plt_patch () in a few additional places.
9282         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
9283         by IMT.
9284
9285         * aot-compiler.c: Reorganize the got handling code to be a bit more
9286         understandable.
9287
9288 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
9289
9290         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
9291         mono_patch_info_equals/hash, and use it to massively simplify
9292         get_plt_index ().
9293
9294         * mini.c (mono_patch_info_hash): Simplify this and add support for
9295         more patch types.
9296
9297         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
9298
9299         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
9300         handling code, since an offset is not enough to identify a trampoline.
9301
9302         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
9303
9304 2008-08-17  Mark Probst  <mark.probst@gmail.com>
9305
9306         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
9307
9308         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
9309
9310         * mini-ops.h: Argument and result types for OVF_CARRY ops.
9311
9312         * decompose.c: PPC decompositions for various ops.
9313
9314         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
9315
9316 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
9317
9318         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
9319         call the generic trampoline code using a call, instead of a jump, to
9320         remove some special casing from the generic trampoline code.
9321
9322         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
9323         (mono_codegen): Ditto.
9324
9325         * aot-compiler.c aot-runtime.c: Ditto.
9326
9327         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
9328
9329         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
9330         helper function to find the offset corresponding to a lazy fetch trampoline.
9331
9332         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
9333         when doing generic sharing.
9334
9335         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
9336         places.
9337         
9338         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
9339         mini-trampolines.c to be with the other trampoline creation functions.
9340
9341         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
9342         as it is equal to method->signature in most cases, add a 
9343         mono_emit_method_call_full variant which takes a signature and an imt
9344         argument as well.
9345
9346 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
9347
9348         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
9349         to this function, since it could be computed easily from the method 
9350         argument.
9351         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
9352         more.
9353
9354         * method-to-ir.c mini.c: Remove references to 
9355         compile_generic_method_wo_context.
9356
9357         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
9358         generic method calls.
9359         
9360         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
9361         dimensional non-szarrays.
9362
9363         * mini.c (mini_init): Register mono_array_new_1.
9364
9365         * jit-icalls.c (mono_array_new_1): New jit icall.
9366
9367         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
9368         pointing to the method.
9369
9370         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
9371         method addresses belonging to METHOD_JUMP patches in the 
9372         jump_target_got_slot_hash.
9373         (mono_aot_load_method): Ditto.
9374
9375         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
9376         METHOD_JUMP patches.
9377
9378         * mini.c (mini_create_jit_domain_info): New helper function which 
9379         initializes/frees domain->runtime_info.
9380         (mini_free_jit_domain_info): Ditto.
9381         (mini_init): Install the domain hook functions with the runtime.
9382
9383         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
9384         information maintained by the JIT.
9385
9386         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
9387         insertion into jump_table_hash into mono_codegen (), also implement proper
9388         locking.
9389
9390         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
9391         tail calls, it is already done by the aot code.
9392         
9393         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
9394         mechanism on amd64.
9395
9396         * iltests.il.in: Make the jmp test a bit more complex.
9397
9398         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
9399         generic instances which doesn't have a token.
9400
9401         * aot-runtime.c (decode_method_ref): Ditto.
9402         
9403         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
9404         can handle this case now.
9405         (handle_box): Ditto.
9406
9407 2008-08-15  Geoff Norton  <gnorton@novell.com>
9408
9409         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
9410         debugging check.
9411
9412 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
9413
9414         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
9415         calling generic methods.
9416
9417         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
9418
9419         * aot-runtime.c (decode_patch_info): Ditto.
9420
9421         * mini.c (mono_resolve_patch_target): Ditto.
9422         
9423         * patch-info.h: Add METHOD_RGCTX.
9424
9425         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
9426
9427 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
9428
9429         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
9430         arguments in registers.
9431
9432         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
9433         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
9434
9435         * mini.c (mini_method_compile): Abort aot compilation for generic
9436         methods if generic sharing is disabled.
9437         
9438         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
9439         an mrgctx.
9440
9441         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
9442         requiring an mrgctx.
9443
9444         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
9445         store instructions when converting a vcall to a normal call.
9446
9447         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
9448         mono_arch_find_jit_info.
9449
9450 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
9451
9452         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
9453         avoid calling mono_method_full_name () for every method even if the
9454         env var is not set.
9455         (check_inline_caller_method_name_limit): Ditto.
9456
9457 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
9458
9459         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
9460         assemblies in one run.
9461
9462         * aot-compiler.c (mono_compile_assembly): Only print out a count of
9463         skipped methods if it is not 0.
9464
9465         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
9466
9467 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
9468
9469         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
9470           MONO_ARCH_HAVE_UNWIND_TABLE.
9471
9472         Contributed under MIT/X11 license.
9473
9474 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
9475
9476         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
9477           from default optimizaton list on Winx64.
9478
9479         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
9480
9481         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
9482           the LMF from the MonoJitTlsData structure.
9483
9484         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
9485
9486         Contributed under MIT/X11 license.
9487
9488 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
9489
9490         * mini.c (sigsegv_signal_handler): Fix the build.
9491
9492         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
9493         assembly->aot_module.
9494
9495         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
9496         hash table. This simplifies and speeds up a lot of code, and fixes support
9497         for .netmodules.
9498
9499         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
9500         with the runtime.
9501
9502         * mini-exceptions.c: Ditto.
9503         
9504         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
9505         'native_offset' argument, since these are computed in the 
9506         mono_find_jit_info () function.
9507
9508         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
9509         is used by exceptions-ppc.c.
9510
9511         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
9512         mono_arch_find_jit_info ().
9513         
9514         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
9515         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
9516         generic code in mini-exceptions.c.
9517
9518 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
9519
9520         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
9521
9522         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
9523         
9524         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
9525         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
9526         called while holding the loader lock. Fixes #415608.
9527         (mono_aot_get_method_from_token_inner): Ditto.
9528
9529 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
9530
9531         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
9532         to reduce differences between this and the generic implementation in
9533         mini-exceptions.c.
9534         (ves_icall_get_frame_info): Ditto.
9535
9536         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
9537
9538         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
9539         longer neccesarry.
9540
9541         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
9542         mono_arch_get_call_filter () and make it non-static, for consistency with the
9543         other architectures.
9544
9545 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
9546
9547         * mini.c:
9548         * local-propagation.c:
9549         * mini-x86.c: Correct the name of arch defines.
9550
9551 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
9552
9553         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
9554         NO_EMULATE_LONG_SHIFT_OPS define.
9555
9556 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
9557
9558         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
9559         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
9560
9561         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
9562         MACH fixes. Merged from the 2.0 branch.
9563
9564         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
9565
9566         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
9567         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
9568
9569         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
9570
9571         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
9572         mono_marshal_get_native_wrapper () signature changes.
9573
9574 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
9575
9576         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
9577         conversion bug under arm.
9578
9579 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
9580
9581         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
9582
9583         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
9584         with overflow checking.
9585
9586 2008-08-05  Marek Habersack  <mhabersack@novell.com>
9587
9588         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
9589         to the genmdesc.pl file
9590
9591 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
9592
9593         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
9594         arg_array in the soft-float versions of the LOAD/STORE macros.
9595
9596         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
9597         implementation.
9598
9599         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
9600
9601 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
9602
9603         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
9604         a float HFA. Fixes #413621.
9605
9606 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
9607
9608         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
9609         frame_size to args_size. Fixes build.
9610
9611 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
9612
9613         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
9614         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
9615
9616         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
9617         the stack are not unaligned. Fixes #413247.
9618         
9619 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
9620
9621         * mini.c: update jitted methods performance counters.
9622
9623 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
9624
9625         * mini-exceptions.c: increase the exceptions thrown performance
9626         counter in mono_handle_exception ().
9627
9628 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
9629
9630         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
9631         can work with netmodules.
9632
9633 2008-07-28  Geoff Norton  <gnorton@novell.com>
9634
9635         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
9636         regression tests.
9637
9638 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
9639
9640         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
9641         correct place.
9642
9643 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
9644
9645         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
9646           The float param registers and other param registers must be the 
9647           same index on Windows x64.
9648
9649         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
9650           ArgValuetypeAddrInIReg argument case.  Setting the argument
9651           op to OP_VTARG_ADDR (OP_REGOFFSET)).
9652
9653         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
9654           variable computed above as the copy length for arguments of storage
9655           type ArgValuetypeAddrInIReg.
9656
9657         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
9658           ArgValuetypeAddrInIReg argument case.  This case will rely on
9659           mono_arch_emit_outarg_vt to emit the correct code later in the process.
9660
9661         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
9662           a 32 byte stack allocation for all calls.  We will omit the adjustment for
9663           jump and tail call instructoins as they do not follow the typical call behavior.
9664
9665         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
9666           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
9667           local variable and pass the local variable by reference to the called method.
9668
9669         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
9670           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
9671           of a struct is passed in a register it must be saved with the other
9672           volatile argument on the stack.
9673
9674         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
9675           frame pointer the stack adjustment value must be saved to the unwind 
9676           info structure.
9677
9678         Contributed under MIT/X11 license.
9679
9680 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
9681
9682         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
9683         which got lost in the merge.
9684
9685 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
9686
9687         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
9688         build.
9689
9690         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
9691         
9692         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
9693         icalls, since they won't be patched.
9694
9695         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
9696         different code sequence when running under valgrind to prevent some valgrind
9697         errors.
9698
9699         * iltests.il.in: Add new regression test.
9700
9701         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
9702         end with a throw.
9703
9704         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
9705         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
9706
9707         * iltests.il.in: Add new test.
9708
9709         * aot-compiler.c: Fix some warnings.
9710
9711         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
9712         Fixes #412494.
9713
9714 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
9715
9716         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
9717         (mini_usage_jitdeveloper): Add a missing --wapi option.
9718
9719 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9720
9721         * mini-codegen.c: Simplify the is_fp macros.
9722         (free_up_ireg): Remove, use free_up_reg instead.
9723         (free_up_reg): Fix the fp case.
9724
9725 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
9726
9727         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
9728         lowered earlier.
9729
9730         * exceptions-x86.c: Merge some changes which seemed to have got lost
9731         in the linear-ir merge.
9732
9733         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
9734
9735         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
9736         long vreg volatile even if the variable was already created.
9737
9738         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
9739         volatile variables.
9740
9741 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
9742
9743         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
9744
9745         * mini.c (mono_jit_compile_method_inner): Add support for 
9746         MONO_EXCEPTION_BAD_IMAGE.
9747
9748         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
9749         mini_method_get_context () returns NULL. Fixes #356531.
9750
9751         * mini.c (mono_method_to_ir): Ditto.
9752         
9753         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
9754         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
9755
9756 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9757
9758         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
9759         in the LDFTN implementation.
9760
9761 2008-07-25  Mark Probst  <mark.probst@gmail.com>
9762
9763         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
9764         code, patch calls to icalls, too, even if they're not in the
9765         shared generic code hash.  Fixes #411962.
9766
9767 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9768
9769         * cpu-x86.md: Increase the length of the fcall opcodes.
9770
9771         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
9772         calls returning floats.
9773
9774         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
9775         on NEWARR.
9776         
9777         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
9778         missed earlier.
9779
9780         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
9781         into the domain->method_code_hash.
9782
9783         * aot-compiler.c: Fix win32 build.
9784
9785         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
9786         
9787         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
9788         gshared NEWARR implementation.
9789
9790         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
9791
9792         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
9793         can be used outside of method_to_ir.
9794
9795         * mini.h (MonoCompile): Add arg_types field.
9796
9797         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
9798         
9799         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
9800         the values of the local arg_array and param_types array.
9801
9802 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
9803
9804         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
9805         got accesses might only get generated later when NEWOBJ is decomposed.
9806         
9807         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
9808         looking up the native code of the target method when a delegate is called
9809         for the first time.
9810
9811         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
9812         optimization.
9813
9814         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
9815
9816         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
9817         AOT work on platforms without a working dlsym implementation.
9818
9819         * mini.h: Bump AOT image format version.
9820         
9821 2008-07-24  Mark Probst  <mark.probst@gmail.com>
9822
9823         * mini-exceptions.c: Free a MonoType with
9824         mono_metadata_free_type() instead of g_free().
9825
9826         * aot-runtime.c: Free a MonoType.
9827
9828 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
9829
9830         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
9831         optimization.
9832
9833         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
9834         fp stack on x86.
9835
9836 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
9837         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
9838         profiler hook.
9839
9840 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
9841
9842         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
9843         NEWOBJ calls on valuetypes.
9844
9845         * iltests.il.in: Add new test.
9846
9847         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
9848
9849 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
9850
9851         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
9852         is no longer needed.
9853
9854         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
9855         non register sized integer arguments.
9856         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
9857         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
9858         emit_memcpy2 ().
9859
9860         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
9861         CEE_MONO_RETOBJ.
9862         
9863         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
9864         two a binop with different sized arguments is emitted.
9865
9866         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
9867         instruction in the ins==NULL case.
9868
9869 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
9870
9871         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
9872
9873         * mini-x86.c: Fix osx build.
9874
9875         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
9876         opcodes as well.
9877
9878         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
9879         instruction for non int sized variables.
9880
9881         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
9882         implementation.
9883
9884 2008-07-23  Robert Jordan  <robertj@gmx.net>
9885
9886         * method-to-ir.c: Fix MSVC build.
9887
9888 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
9889
9890         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
9891         a non int sized type, widen it to an int since newer versions of gcc seem to
9892         generate code which needs this.
9893
9894         * ssa2.c abcremoval2.c: Fix warnings.
9895
9896         * *: Merge the Linear IR branch.
9897
9898         The original branch is at trunk/branches/vargaz/mini-linear-il, and
9899         the ChangeLog file there describes all the changes done over the years. 
9900         Further documentation can be found at www.mono-project.com/Linear_IL.
9901
9902 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
9903
9904         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
9905           The float param registers and other param registers must be the 
9906           same index on Windows x64.
9907
9908         Contributed under MIT/X11 license.
9909
9910 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
9911
9912         * mini.c: Make the previous fix GC safe.
9913
9914 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
9915
9916         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
9917
9918 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
9919
9920         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
9921           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
9922           ArgValuetypeAddrInIReg instead.
9923
9924         Contributed under MIT/X11 license.
9925
9926 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
9927
9928         * mini-codegen.c (get_register_spilling): Fix a warning.
9929
9930 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
9931
9932         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
9933         for types which the initialization fails. Raises the provided exception
9934         at the right stop after cleanup.
9935
9936 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
9937
9938         * aot-compiler.c: Free most of the memory allocated during compilation.
9939
9940         * mini.c (mini_parse_debug_options): Fix a leak.
9941         
9942         * mini.c (mini_method_compile): Don't add the method to the jit info tables
9943         during aot compilation.
9944
9945 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
9946
9947         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
9948         it has too much register pressure.
9949
9950 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
9951
9952         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
9953
9954 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
9955
9956         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
9957         on x86.
9958
9959         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
9960         on amd64 similar to the way it is done on arm.
9961
9962         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9963
9964         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
9965         consistency, normalize error messages, avoid loading aot-only modules in
9966         normal mode.
9967
9968         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
9969         for consistency.
9970
9971         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
9972
9973 2008-07-11  Martin Baulig  <martin@ximian.com>
9974
9975         * debug-debugger.h
9976         (MonoDebuggerInfo): Add `interruption_request'.
9977
9978 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
9979
9980         * aot-compiler.c (emit_plt): Remove some dead code.
9981
9982         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
9983
9984         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
9985         return the plt info offset belonging to a given plt entry.
9986
9987         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
9988         mono_aot_get_plt_info_offset.
9989         
9990         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
9991         similar to the amd64 code by makeing jumps through a separate jump table 
9992         instead of embedding the jump addresses into the code.
9993
9994 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
9995
9996         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
9997         method.
9998
9999 2008-07-10  Martin Baulig  <martin@ximian.com>
10000
10001         * mini.c (mini_method_compile): Disable generics sharing when
10002         running in the debugger.
10003
10004 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
10005
10006         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
10007
10008         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
10009         the local register allocator from running out of registers on x86 when 
10010         using aot.
10011
10012 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
10013
10014         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
10015         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
10016         C4146.
10017
10018         Contributed under MIT/X11 license.
10019
10020 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
10021
10022         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
10023         speed up the assembler.
10024
10025 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
10026
10027         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
10028         support.
10029
10030         * mini.c: Move the soft float handling macros a bit earlier, add 
10031         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
10032         place.
10033
10034         * mini.h: Add prototype for mono_arch_fixup_jinfo.
10035
10036         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
10037         read-only to help catch code allocation requests.
10038         
10039         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
10040         and turn it off when using --aot-only or when compiling with --aot=full.
10041
10042         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
10043         jump table for switches from the normal domain mempool, not the code
10044         manager.
10045
10046         * mini-trampolines.c (get_unbox_trampoline): New function to return an
10047         unbox trampoline which handles aot-only mode too.
10048
10049         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
10050         an AOTed unbox trampoline.
10051
10052         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
10053
10054 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
10055
10056         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
10057         ""
10058
10059         Contributed under MIT/X11 license.
10060
10061 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
10062
10063         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
10064           the unwind information for the method at the end of the allocated block.
10065           
10066         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
10067           MonoCompileArch to hold the unwind info for SEH on Winx64
10068         
10069         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
10070           frame pointer info for the method being compiled.
10071           
10072         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
10073           the call to mono_exception_from_token.
10074           
10075         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
10076           storing the method prolog information in a format that the Winx64 SEH can understand.  This
10077           information is stored a the end of the method block because it is all 32-bit offset based.
10078
10079         Contributed under MIT/X11 license.
10080
10081 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
10082
10083         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
10084
10085         * wapihandles.c: Fix warnings.
10086
10087         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
10088         mode.
10089
10090         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
10091         mono_jit_compile_method in aot-only mode since that calls the type 
10092         initializer.
10093         
10094         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
10095         get_delegate_invoke_impl in aot-only mode.
10096
10097         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
10098
10099 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
10100
10101         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
10102
10103         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
10104         is on by default.
10105
10106         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
10107
10108         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
10109         init trampoline from the AOT file as well.
10110
10111         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
10112         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
10113         code.
10114
10115         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
10116         mono_init.
10117
10118         * exceptions-amd64.c: Add _full variants for the remaining exception code
10119         creation functions as well, allow emission of relocatable code, remove
10120         caching since that is now done by the caller.
10121
10122         * mini-exceptions.c: Add _full variants for the remaining exception code
10123         creation functions as well, add aot-only support.
10124
10125         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
10126         if we can determine a proper token for them.
10127         (add_wrappers): Add a few more wrappers.
10128         (emit_method_code): Remove some dead code.
10129         (emit_trampolines): Emit exception code too.
10130
10131         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
10132
10133         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
10134         mono_array_new_va which avoids varargs.
10135
10136         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
10137
10138         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
10139         mono_arch_create_specific_trampoline () in all places.
10140
10141         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
10142         a bit so it can be used for other things as well.
10143         
10144         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
10145         on demand as well.
10146
10147         * exceptions-amd64.c: Rename the caching from the exception code creation
10148         functions, it is done by the caller instead.
10149         
10150         * exceptions-amd64.c: Change the signature of the exception code creation 
10151         functions to allow the creation of relocatable code later.
10152
10153         * mini-exceptions.c: Add a set of functions to query the various 
10154         runtime-generated exception functions.
10155
10156         * mini.c mini-exceptions.c: Use the newly added functions instead of the
10157         mono_arch_.. () functions.
10158         
10159 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
10160
10161         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
10162
10163         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
10164
10165         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
10166         (mini_get_vtable_trampoline): Ditto.
10167
10168         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
10169         code in the AOT case by returning the code size and a list of relocations to
10170         the caller.
10171
10172         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
10173
10174 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
10175
10176         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
10177           clean the stack.
10178
10179         Contributed under MIT/X11 license.
10180
10181 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
10182
10183         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
10184         so the buffer size can be computed correctly. Fixes #404735.
10185
10186         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
10187         normally as cfg->debug_info is already freed.
10188
10189 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
10190
10191         * mini-amd64.c: For calls returning vtypes in registers, don't store
10192         the return address on the stack, instead allocate a separate local for
10193         it. Fixes #404729.
10194
10195 2008-07-05  Mark Probst  <mark.probst@gmail.com>
10196
10197         * mini-trampolines.c, mini.h: Add an argument to
10198         mono_create_jit_trampoline_in_domain() for turning off the adding
10199         of the sync wrapper.
10200
10201         * mini.c: Use the JIT trampoline without sync instead of
10202         ldftn_nosync in static RGCTX invoke wrappers so that the call can
10203         be patched.
10204
10205 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10206
10207         * driver.c: Turn on GSHARED optimization by default.
10208
10209 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
10210
10211         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
10212         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
10213
10214         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
10215         create a variant of the generic trampoline code callable from AOTed trampolines.
10216
10217         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
10218         trampoline code callable from AOTed trampolines.
10219
10220         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
10221
10222 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10223
10224         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
10225         pass-through manner.
10226
10227         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
10228         and don't fail sharing for them anymore.
10229
10230         * mini-exceptions.c: Handle exceptions in shared generic methods.
10231
10232         * generic-sharing.c: When checking the context of a generic
10233         method, also check its class's context.  Don't treat wrappers as
10234         sharable.
10235
10236         * mini-trampolines.c: Some code factored out to
10237         metadata/generic-sharing.c.  Handle the MRGCTX case.
10238
10239         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
10240         we must deal with the method being of another instantiation of the
10241         class.  Add static rgctx invoke wrappers to generic methods.
10242
10243 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10244
10245         * mini.c: Provide all jit infos of generic shared methods with a
10246         generic jit info.
10247
10248         * mini-exceptions.c: Handle the new situation that a generic info
10249         might be available, but not info about the this/vtable/mrgctx
10250         variable.
10251
10252 2008-07-03  Mark Probst  <mark.probst@gmail.com>
10253
10254         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
10255         generic methods.
10256
10257 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
10258
10259         * dominators.c (check_dominance_frontier): Fix a warning.
10260
10261         * mini.h: Add some missing prototypes.
10262
10263         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
10264
10265         * driver.c (mono_jit_init_version): Correct the comments since the first
10266         argument should be the name of the root domain, not a filename.
10267
10268         * aot-runtime.c (make_writable): Error out if this is called while running
10269         with --aot-only.
10270         (load_aot_module): Ditto.
10271
10272         * aot-compiler.c: Really fix the computation of method indexes.
10273
10274         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
10275         optimizations as this is no longer called frequently.
10276
10277         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
10278         method and the invoke impl code and pass it to the delegate trampoline instead of
10279         just the delegate class.
10280
10281 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
10282
10283         * aot-compiler.c: Fixup the computation of method indexes.
10284         (add_wrappers): Create the base methods of the runtime invoke wrappers using
10285         the method builder infrastructure.
10286
10287         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
10288         has no header.
10289
10290         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
10291         mode, load the method right away instead of creating a trampoline.
10292
10293         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
10294
10295         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
10296         some checks a bit.
10297
10298 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
10299
10300         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
10301         (mono_aot_load_method): Use method_index instead of method->token.
10302
10303         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
10304         can handle icalls etc. properly.
10305
10306         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
10307
10308         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
10309
10310         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
10311         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
10312         JIT_ICALL_ADDR patch type.
10313
10314         * patch-info.h: Add JIT_ICALL_ADDR patch type.
10315
10316         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
10317         request flag.
10318         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
10319
10320         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
10321
10322 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
10323
10324         * mini.c: Use domain->jit_code_hash_lock for controlling access to
10325         domain->jit_code_hash.
10326
10327 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
10328
10329         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
10330
10331 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
10332
10333         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
10334         get_this_arg_from_call, let it compute it when needed.
10335
10336         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
10337         gsctx from code only when needed.
10338
10339         * mini-trampolines.c (get_generic_context): Rename this to 
10340         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
10341         it can be called by the arch backends.
10342
10343         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
10344
10345 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
10346
10347         * driver.c (mono_main): Add experimental --aot-only command line option.
10348
10349         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
10350         set.
10351
10352 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
10353
10354         * driver.c (DllMain): Remove mono_module_handle.
10355
10356         Contributed under MIT/X11 license.
10357
10358 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
10359
10360         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
10361         for emitting methods which are not in the source assembly. Detect and report
10362         failure of assembling+linking.
10363         
10364         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
10365
10366         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
10367
10368 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
10369
10370         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
10371
10372 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
10373
10374         * mini.h: Remove some obsolete prototypes.
10375
10376         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
10377
10378 2008-06-24  Mark Probst  <mark.probst@gmail.com>
10379
10380         * mini.c (get_object_generic_inst): Variable-sized arrays are not
10381         supported by Visual Studio, so use alloca().
10382
10383 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
10384
10385         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
10386         Fixes #402585.
10387
10388 2008-06-23  Mark Probst  <mark.probst@gmail.com>
10389
10390         * mini.c: Fail sharing of a generic method if it contains an open
10391         catch clause (because we don't pass MRGCTXs yet).
10392
10393 2008-06-23  Mark Probst  <mark.probst@gmail.com>
10394
10395         * mini.c: When compiling a method with generic sharing, insert the
10396         method instantiated with an all-Object generic context into the
10397         jit info table, instead of the context of the first instantiation
10398         of the method we happen to compile.
10399
10400 2008-06-18  Martin Baulig  <martin@ximian.com>
10401
10402         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
10403         `major_version' and `minor_version'.
10404
10405 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10406
10407         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
10408         mono_method_is_generic_sharable_impl() takes an additional
10409         argument specifying whether to treat type variables as reference
10410         types.
10411
10412 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10413
10414         * mini.h: Removed obsolete prototypes.
10415
10416 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10417
10418         * mini.c: Don't fail generic sharing for initobj and sizeof - we
10419         already handle them.
10420
10421 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10422
10423         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
10424         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
10425         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
10426         tramp-x86.c: Added a MonoGenericContext* argument to
10427         mono_arch_get_unbox_trampoline() so that it can call other
10428         functions which require it.
10429
10430 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10431
10432         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
10433         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
10434         mono_arch_get_this_arg_from_call() takes a
10435         MonoGenericSharingContext* as well.
10436
10437 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10438
10439         * mini.c: Factor out code for emitting unbox into emit_unbox() and
10440         implement generic sharing of unbox.
10441
10442 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10443
10444         * mini.c: Don't compute the vtable to determine whether a field is
10445         special static, because it might not work for open types.
10446
10447 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10448
10449         * mini.c: Removed the unused token_type and token_source arguments
10450         from get_runtime_generic_context_ptr().
10451
10452 2008-06-17  Marek Habersack  <mhabersack@novell.com>
10453
10454         * mini.c (ADD_BINOP): fix the build
10455
10456 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
10457
10458         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
10459         a widening op.
10460
10461 2008-06-16  Mark Probst  <mark.probst@gmail.com>
10462
10463         * mini.h: Removed class relations enum that's not used anymore.
10464
10465 2008-06-16  Mark Probst  <mark.probst@gmail.com>
10466
10467         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
10468
10469         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
10470         the lazy fetch trampoline access code.
10471
10472 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
10473
10474         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
10475
10476 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
10477
10478         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
10479
10480         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
10481
10482         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
10483
10484 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10485
10486         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
10487         intrinsics.
10488
10489         * mini-ops.h: Add MIN/MAX_UN opcodes.
10490
10491         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
10492         intrinsics.
10493
10494         * basic-math.cs: Add more min/max tests.
10495
10496         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
10497
10498 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10499
10500         * mini.c: Small fix in the prologue of emit_castclass.
10501
10502 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10503
10504         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
10505
10506         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
10507         do not work even for unsigned types. Fixes #400014.
10508
10509         * basic-math.cs: Add regression tests for unsigned Min/Max.
10510
10511 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10512
10513         * mini.c: Added additional context_used argument to several
10514         functions, which will be needed for sharing generic methods.  Use
10515         GET_RGCTX macro wherever appropriate.  Declare only one
10516         context_used in mono_method_to_ir().
10517
10518 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10519
10520         * mini.c, generic-sharing.c: Removed generic class relations.
10521
10522         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
10523         functions due to MRGCTX changes.
10524
10525 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10526
10527         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
10528         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
10529         with calculated IMT.
10530
10531         * mini.c: Generic sharing of calls via generic interfaces.
10532
10533         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
10534         generic method with non-constant MonoGenericContext*.  Instead,
10535         the context is taken out of the method itself.
10536
10537 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10538
10539         * mini.c: Generic sharing of ldvirtftn.
10540
10541 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10542
10543         * mini.c: Generic sharing of ldftn.
10544
10545 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10546
10547         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
10548
10549 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10550
10551         * mini.c: Generic sharing of the special case of ldtoken followed
10552         by a call to GetTypeFromHandle.
10553
10554 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10555
10556         * mini.c: Generic sharing of box for nullable types.
10557
10558 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10559
10560         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
10561         are passed on the stack. Fixes #324807.
10562
10563 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
10564
10565         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
10566         for the ArgValuetypeAddrInIReg case.
10567
10568         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
10569         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
10570
10571         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
10572         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
10573         local variable and pass the local variable by reference to the called method.
10574           
10575         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
10576         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
10577
10578         Contributed under MIT/X11 license.
10579
10580 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
10581
10582         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
10583
10584         * debug-mini.c (mono_debug_print_vars): Release memory after printing
10585         everything.
10586
10587 2008-06-10  Martin Baulig  <martin@ximian.com>
10588
10589         * debug-mini.c
10590         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
10591
10592 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
10593
10594         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
10595         possible error when no arguments are passed.
10596
10597         Contributed under MIT/X11 license.
10598
10599 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
10600
10601         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
10602         where the file name is NULL.
10603
10604 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
10605
10606         * mini.c: Fix s390 build.
10607
10608 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
10609
10610         * trace.c (mono_trace_parse_options): Fix warnings.
10611
10612         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
10613
10614 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
10615
10616         * mini.c (remove_block_if_useless): Avoid printing the method name.
10617         
10618         * mini.c: Remove needless setting of ins->cil_code which is now done by 
10619         MONO_INST_NEW.
10620
10621         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
10622         LMF. Not yet used.
10623
10624         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
10625         translated code after it has been patched.
10626
10627 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
10628
10629         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
10630         avoid problems during code patching on SMP systems.
10631         (emit_call): Avoid adding a patch info which is already added by 
10632         emit_call_body.
10633         (mono_arch_emit_exceptions): Ditto.
10634
10635 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
10636
10637         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
10638         MONO_TYPE_ISSTRUCT already checks for it.
10639
10640 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
10641
10642         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
10643           structs with floats on Winx64 the float registers are not used.  
10644           The integer registers are always used..
10645         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
10646           only one register will be used and only if the size of the struct 
10647           is 1,2,4, or 8 bytes.
10648
10649         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
10650           to work for Winx64.
10651
10652         Contributed under MIT/X11 license.
10653
10654 2008-06-05  Martin Baulig  <martin@ximian.com>
10655
10656         * debug-debugger.c (debugger_lookup_class): Also call
10657         mono_class_setup_methods() here; we're only called from RTI.
10658
10659 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
10660
10661         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
10662         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
10663         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
10664         Post-process object files and add dtrace-generated object, if necessary.
10665
10666         Contributed under MIT/X11 license.
10667
10668 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10669
10670         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
10671         element class.
10672
10673         * mini.c: Generic sharing for unbox.any and castclass.
10674
10675 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10676
10677         * mini.c: Ignore tailcall prefix in shared generic code and when
10678         doing calls which require a vtable/rgctx argument.
10679
10680 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10681
10682         * mini.c: Don't free the JIT info.
10683
10684         * driver.c: Changes in the JIT info table testing code.
10685
10686 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
10687
10688         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
10689         interruption. Fix some warnings.
10690
10691         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
10692         interruption_checkpoint.
10693
10694 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
10695
10696         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
10697         from embedding applications.
10698
10699 2008-06-02  William Holmes  <billholmes54@gmail.com>
10700
10701         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
10702           reserving 32 bytes on the stack when making calls. 
10703
10704         Contributed under MIT/X11 license.
10705
10706 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
10707
10708         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
10709         the linear IL branch.
10710
10711         * driver.c: Print out more information for --version on arm.
10712
10713 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
10714
10715         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
10716         bb_exit instead, since out of line bblocks might not actually be emitted
10717         out-of-line.
10718         
10719         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
10720         maximum epilog size for out of line bblocks if tracing is enabled.
10721
10722         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
10723
10724 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
10725
10726         * arrays.cs: Regression tests for allocating arrays with negative sizes.
10727
10728 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
10729
10730         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
10731         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
10732         opcodes.
10733
10734 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
10735
10736         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
10737         the 'value' to store is a constant.
10738
10739         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
10740
10741         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
10742         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
10743
10744 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
10745
10746         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
10747         for accessing method->generic_container.
10748
10749 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
10750
10751         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
10752         
10753         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
10754
10755         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
10756
10757         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
10758         fails.
10759
10760 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
10761
10762         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
10763
10764         * mini.c: Handle the case when mono_class_vtable () fails.
10765
10766 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
10767         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
10768         the stat profiler.
10769
10770 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10771
10772         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
10773         together with domain sharing.
10774
10775 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10776
10777         * mini.c: Treat callvirts to final methods like non-virtual calls
10778         when doing generic sharing, i.e. look them up in the runtime
10779         generic context.
10780
10781 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10782
10783         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
10784         with computed types (for generic sharing).
10785
10786         * mini.c: Generic sharing for mkrefany and refanyval.
10787
10788 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
10789
10790         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
10791         possible.
10792
10793         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
10794         the generic sharing code.
10795         
10796         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
10797         when needed.
10798
10799 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
10800
10801         * mini.h: Remove the declaration of mono_aot_init_vtable ().
10802
10803 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
10804
10805         * driver.c: updated copyright date
10806
10807 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
10808
10809         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
10810         needed.
10811
10812 2008-05-19  Martin Baulig  <martin@ximian.com>
10813
10814         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
10815         pointing to the new `_mono_debug_using_mono_debugger' variable.
10816
10817         * driver.c
10818         (mono_main): Check mono_debug_using_mono_debugger() rather than
10819         the `MONO_INSIDE_MDB' environment variable to check whether we're
10820         inside the debugger.
10821
10822 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
10823
10824         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
10825         argument.
10826
10827 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
10828
10829         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
10830
10831         * mini.c: Added mini_assembly_can_skip_verification. This
10832         function checks if the assembly requested to skip verification. 
10833         Fixes part of #387274.
10834
10835 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
10836
10837         * mini.c (mini_get_method): Disable the check for open generic classes when
10838         using generic sharing.
10839
10840         * generics.cs: Add a test for #387034.
10841
10842         * mini.c (mini_get_method): Check whenever the method class is an open generic
10843         type, and return NULL in that case, causing a verification error. Fixes
10844         #384123.
10845
10846 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10847
10848         * driver.c (mono_main): Revert r102623. The right
10849         thing to do is to enable the verifier under verifiable
10850         unless a --security flag was passed.
10851
10852         We need this non-trivial behavior for --verify-all otherwise
10853         mcs-compileall won't be able to use it. As it needs everything to
10854         be verified under validil.
10855
10856 2008-05-06  Martin Baulig  <martin@ximian.com>
10857
10858         Fix #383749.
10859
10860         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
10861         (mono_debugger_thread_cleanup): Likewise.
10862         (mono_debugger_extended_notification): Likewise.
10863
10864 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10865
10866         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
10867         against both inflated and non-inflated methods. We need to check against the
10868         generic definition for cases where the instantiated method is not visible.
10869         We need to check against the inflated types for cases where the instantiation
10870         changes any super type. This fixes #382986.
10871
10872         Note that this doesn't need to be applied to other parts of mono_method_to_ir
10873         that check for visibiliy as generic params only appears as the type subject
10874         of tokens on call opcodes. Field manipulation and ldftn must always
10875         target an exact type.
10876
10877 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10878
10879         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
10880         if no related --security flag is passed.
10881
10882 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10883
10884         * mini-arch.h: Prepare support for ppc64.
10885
10886         Contributed under MIT/X11 license.
10887
10888 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10889
10890         * aot-runtime.c: Prepare support for ppc64.
10891
10892         Contributed under MIT/X11 license.
10893
10894 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10895
10896         * mini-ops.h: Prepare support for ppc64.
10897
10898         Contributed under MIT/X11 license.
10899
10900 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
10901
10902         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
10903
10904         Contributed under MIT/X11 license.
10905
10906 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
10907
10908         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
10909         assemblies, since aot_name is not a full path, causing us to load MS.NET 
10910         assemblies on windows.
10911
10912 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
10913
10914         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
10915         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
10916         * main.c: Use UTF-8 encoded command line instead of Windows default code
10917         page on Windows to support Unicode.
10918         * driver.c (DllMain): New function for mixed-mode assembly support.
10919         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
10920         export __stdcall functions without decoration.
10921
10922         Contributed under MIT/X11 license.
10923
10924 2008-04-28  Mark Probst  <mark.probst@gmail.com>
10925
10926         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
10927         saving it very early.
10928
10929 2008-04-28  Mark Probst  <mark.probst@gmail.com>
10930
10931         * mini.h, mini.c: Lots of code for accessing the old RGCTX
10932         deleted.  The only way to access the new RGCTX is via the
10933         trampline.
10934
10935         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
10936         vtable instead of the RGCTX to static methods.
10937
10938         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
10939         accessing the new RGCTX.
10940
10941         * generic-sharing.c: There is no separation between self, type
10942         arguments and other types in the RGCTX anymore.
10943
10944 2008-04-25  Jonathan Chambers <joncham@gmail.com>
10945
10946         * mini-amd64.c (add_general): Remove previous stack adjustment.
10947         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
10948         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
10949         for 32 bytes of stack space reserved for all calls.
10950         
10951         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
10952         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
10953         adjustment.
10954         
10955         Code contributed under MIT/X11 license.
10956
10957 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
10958
10959         * mini.c (mini_method_verify): Only verify non-inflated methods, check
10960         against the root definition, peeling out method and type instantiations.
10961         Cache verify success results, code that fails verification is still
10962         checked multiple times.
10963
10964 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
10965
10966         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
10967
10968 2008-04-23  Jonathan Chambers <joncham@gmail.com>
10969
10970         * mini-amd64.c (add_general): Always increment stack on Win64.
10971         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
10972         on Win64.
10973         
10974         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
10975         stack based argument handling on Win64.
10976         
10977         Code contributed under MIT/X11 license.
10978
10979 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
10980
10981         * Makefile.am (version.h): Add support for git-svn.
10982
10983 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
10984
10985         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
10986         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
10987         avoiding allocations and libc functions which might deadlock.
10988         
10989         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
10990         'no-gdb-backtrace' option is set.
10991
10992         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
10993
10994         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
10995
10996 2008-04-21  Martin Baulig  <martin@ximian.com>
10997
10998         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
10999         and `get_lmf_addr'; `notification_address' is no longer a pointer.
11000
11001 2008-04-21  Martin Baulig  <martin@ximian.com>
11002
11003         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
11004         `thread_vtable', `event_handler_ptr' and `event_handler'.
11005
11006 2008-04-21  Martin Baulig  <martin@ximian.com>
11007
11008         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
11009         allows delayed initialization of the `executable_code_buffer' when
11010         attaching.
11011
11012 2008-04-21  Martin Baulig  <martin@ximian.com>
11013
11014         * mini.h (mono_debugger_create_notification_function): Removed.
11015         * tramp-*.c (mono_debugger_create_notification_function): Removed.
11016
11017         * mdb-debug-info64.s
11018         (MONO_DEBUGGER__notification_function): Added this in the .text section.
11019
11020         * mdb-debug-info32.s
11021         (MONO_DEBUGGER__notification_function): Added this in the .text section.
11022
11023         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
11024         currently only works on x86 and x86_64, so don't create it on ppc.
11025
11026 2008-04-21  Martin Baulig  <martin@ximian.com>
11027
11028         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
11029
11030         * mini.c
11031         (mini_method_compile): In the fp elimination check, check
11032         `debug_options.mdb_optimizations' in addition to
11033         mono_debug_using_mono_debugger().       
11034
11035         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
11036         disable some JIT optimizations which are only disabled when
11037         running inside the debugger.
11038         Added `--help-debug' option to describe the debugging options.
11039         (parse_debug_options): New static function to parse the `--debug'
11040         options, so we can easily add more stuff in future.
11041
11042 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
11043
11044         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
11045         the method has no body.
11046
11047 2008-04-19  Jonathan Chambers <joncham@gmail.com>
11048
11049         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
11050         assembly is not allowed in MSVC 64-bit compiler. 
11051         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
11052         as we get floating point exceptions everywhere.
11053         
11054         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
11055         correctly align arguments for call to throw_exception.
11056         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
11057         
11058         Code contributed under MIT/X11 license.
11059
11060 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
11061
11062         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
11063
11064 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
11065
11066         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
11067
11068         * mini-amd64.c (NEW_INS): Set cil_code.
11069
11070         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
11071         from mini-amd64.c so all debugger related logic is in one place.
11072
11073         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
11074         later won't have a random ip assigned to them.
11075
11076 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
11077
11078         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
11079         the arch specific function initializes code_size.
11080         (mono_create_delegate_trampoline): Ditto.
11081
11082         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
11083         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
11084         platforms.
11085
11086         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
11087         running under the debugger.
11088
11089         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
11090         debugger.
11091
11092         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
11093         debugger. Also move the disabling of optimizations here from driver.c.
11094         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
11095         debugger.
11096
11097         * mini.h (MonoCompile): Add a few new flags.
11098
11099 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
11100
11101         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
11102         so the cil_code field of created MonoInst's is properly set.
11103         (mini_select_instructions): Ditto.
11104
11105         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
11106         (MONO_INST_NEW_CALL): Ditto.
11107
11108         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
11109         in many places so the ins->cil_code field is properly initialized.
11110
11111         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
11112         place.
11113
11114 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
11115
11116         * mini.c (mini_method_compile): Print a different message when compiling a 
11117         shared method.
11118         
11119         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
11120         > 1.
11121
11122 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
11123
11124         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
11125         SSE2 instructions.
11126
11127         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
11128         
11129 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
11130
11131         * mini.c (handle_stack_args): Make this return void since its return value was
11132         never used. Also set cfg->unverifiable for invalid IL instead of calling
11133         G_BREAKPOINT ().
11134
11135 2008-04-10  Mark Probst  <mark.probst@gmail.com>
11136
11137         * mini.c: Make sure "this" is live in catch clauses with type
11138         variables in shared generic code.
11139
11140 2008-04-08  Mark Probst  <mark.probst@gmail.com>
11141
11142         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
11143         generic_class_is_reference_type() to ensure the proper behaviour
11144         when sharing generic code and the type in question is a type
11145         argument.
11146
11147 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
11148
11149         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
11150         race conditions when printing thread dumps. Fixes #377738.
11151
11152 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
11153         
11154         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
11155         shows up when both MonoInst arguments can cause aliasig.
11156         There is likely no way in the current JIT to trigger this problem, but
11157         it showed up in the development of generics sharing, when in a new
11158         opcode both args of an OP_GROUP can be aliases (addresses of a local).
11159         When the generics sharing code will be committed, its tests will be
11160         valid also for this bug.
11161
11162 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
11163
11164         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
11165         PATCH_INFO_METHOD.
11166
11167         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
11168         NULL.
11169
11170 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
11171
11172         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
11173         use a more detailed exception message for InvalidCastException.
11174
11175         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
11176
11177         * driver.c (mono_main): Add --debug=casts option to turn on better 
11178         InvalidCastException message details.
11179
11180         * mini.c (mini_get_debug_options): New helper function to return the address of
11181         the debug_options variable.
11182
11183         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
11184         the jit_tls TLS variable.
11185
11186         * mini.c (mono_jit_tls): New TLS variable.
11187
11188         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
11189         option is used.
11190
11191 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
11192
11193         * mini.h: Removed verifer related stuff. This code was moved to verify.c
11194
11195         * mini.c: Removed verifer related stuff, code moved to verify.c.
11196
11197         * driver.c: Using code from verify.c instead of mini.c.
11198
11199 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
11200
11201         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
11202         longer valid.
11203
11204 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
11205
11206         * mini.c (check_for_method_verify): Enabling verification of
11207         corlib if mono_verify_all is set. Bugs in the verifier preventing that
11208         have been fixed.
11209
11210 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
11211
11212         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
11213         caller saved registers as well.
11214         
11215         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
11216         saved registers as well.
11217
11218 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
11219
11220         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
11221
11222         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
11223         code.
11224
11225 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
11226
11227         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
11228         to get_call_info.
11229         (get_call_info): Take a gsctx argument instead of 'cfg'.
11230
11231 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
11232
11233         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
11234         mono_verify_all is set.
11235
11236         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
11237
11238         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
11239
11240 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
11241
11242         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
11243         an exception.
11244
11245         * driver.c mini.c mini.h: Add a --verify-all development option to test the
11246         verifier and the code generated by the compiler.
11247
11248 2008-03-25  Mark Probst  <mark.probst@gmail.com>
11249
11250         * mini.c: Generic sharing of the non-nullable case of the box
11251         instruction.
11252
11253 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
11254
11255         * inssel.brg: Fix the build.
11256
11257         * iltests.il.in: Add a test for lconv.ovf.u8.un.
11258
11259 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
11260
11261         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
11262         Array:Address. Fixes #372410.
11263
11264         * iltests.il.in: New tests for readonly prefix.
11265
11266 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
11267
11268         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
11269         mini-trampolines.c.
11270
11271         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
11272         mini-exceptions.c.
11273
11274         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
11275         
11276         * mini.c (mono_decompose_op_imm): New helper function.
11277
11278         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
11279         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
11280         return value.
11281
11282         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
11283         mono_arch_output_basic_block. Fix warnings.
11284
11285         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
11286         for now.
11287
11288 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
11289
11290         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
11291         since the extra frame is now detected automatically inside the loop.
11292
11293         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
11294         opts which are now in mono_peephole_ins ().
11295         
11296         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
11297
11298         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
11299         frames and skip duplicate managed-to-native frames. Fixes #367665.
11300
11301         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
11302         opts which are now in mono_peephole_ins ().
11303         (mono_arch_peephole_pass_2): Ditto.
11304
11305         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
11306
11307         * mini-codegen.c (mono_peephole_ins): New helper function containing the
11308         arch independent peephole optimizations.
11309
11310         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
11311         opts which are now in mono_peephole_ins ().
11312
11313         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
11314         
11315         * mini-s390.c (mono_arch_output_basic_block): Fix build.
11316
11317         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
11318         pattern.
11319
11320         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
11321         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
11322         opcode. 
11323
11324 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
11325
11326         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
11327         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
11328         return value.
11329
11330         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
11331         mono_arch_output_basic_block. Fix warnings.
11332
11333 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11334
11335         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
11336         conv.ovf.u.un.
11337
11338 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11339
11340         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
11341         conv.ovf.u.un.
11342
11343         * iltests.il: Add new tests.
11344
11345 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
11346
11347         * mini.c: Removed Windows version macros.
11348
11349 2008-03-20  Mark Probst  <mark.probst@gmail.com>
11350
11351         * generic-sharing.c: Put reflection types in the extensible part
11352         of the runtime generic context.
11353
11354         * mini.c: Generic sharing of the GetTypeHandle special case of the
11355         ldtoken instruction.
11356
11357 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11358
11359         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
11360
11361         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
11362         
11363         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
11364         consistency with the other version on the linear IR branch.
11365
11366         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
11367
11368         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
11369
11370         * iltests.il.in: Add new tests.
11371
11372 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
11373
11374         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
11375
11376         * iltests.il.in: Add new tests.
11377
11378 2008-03-19  Mark Probst  <mark.probst@gmail.com>
11379
11380         * mini.c: Two variables with the same name were declared in
11381         nesting contexts and one wasn't initialized.  Fixed.
11382
11383 2008-03-19  Mark Probst  <mark.probst@gmail.com>
11384
11385         * mini.c: Generic sharing of the initobj instruction.
11386
11387 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
11388
11389         * mini.c: make the test to optimize ldtoken from typeof() more
11390         precise.
11391
11392 2008-03-18  Mark Probst  <mark.probst@gmail.com>
11393
11394         * mini.c: Generic sharing of the initobj instruction for reference
11395         types.
11396
11397 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
11398
11399         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
11400         the mono_breakpoint_clean_code() code to perform bound checks.
11401
11402 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
11403
11404         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
11405         mono_arch_patch_callsite() to include the start of the managed method
11406         to be able to perform bound checks.
11407
11408 2008-03-17  Mark Probst  <mark.probst@gmail.com>
11409
11410         * mini.c: Generic sharing for the isinst instruction.
11411
11412 2008-03-17  Mark Probst  <mark.probst@gmail.com>
11413
11414         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
11415         inssel-long32-mips.brg: Added opcodes for doing indirect calls
11416         with the runtime generic context argument.
11417
11418         * mini.c: Share calls to several types of unsharable methods by
11419         putting the address of the method code in the runtime generic
11420         context and doing an indirect call.
11421
11422         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
11423         to switches.
11424
11425 2008-03-16  Mark Probst  <mark.probst@gmail.com>
11426
11427         * generic-sharing.c: Change due to a change in the runtime genric
11428         context API.
11429
11430 2008-03-15  Martin Baulig  <martin@ximian.com>
11431
11432         * tramp-x86.c
11433         (mono_arch_nullify_class_init_trampoline): Add call to
11434         mono_breakpoint_clean_code() to make things work when running
11435         inside the debugger.
11436
11437         * tramp-amd64.c
11438         (mono_arch_nullify_class_init_trampoline): Add call to
11439         mono_breakpoint_clean_code() to make things work when running
11440         inside the debugger.
11441
11442 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
11443
11444         * inssel-long.brg (reg): Fix 64 bit build.
11445
11446 2008-03-14  Mark Probst  <mark.probst@gmail.com>
11447
11448         * mini.c, mini.h: Share static generic code by passing it an
11449         implicit argument pointing to the runtime generic context.
11450
11451         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
11452         inssel-long32-mips.brg: New opcodes for calling shared static,
11453         which need to be passed the runtime generic context.
11454
11455         * mini-amd64.c, mini-x86.c: Save the runtime generic context
11456         argument on the stack in the prologue if needed.  New function for
11457         finding the runtime generic context argument from the registers
11458         saved by the trampoline.
11459
11460         * mini-amd64.h, mini-x86.h: Specify which register to use for the
11461         runtime generic context argument.
11462
11463         * tramp-amd64.c: Also restore the register used for the runtime
11464         generic context argument.
11465
11466         * mini-trampoline.c: Resolve shared static calls by consulting the
11467         runtime generic context via the new argument.
11468
11469         * generic-sharing.c: Add an argument to sharability-checking
11470         functions that specifies whether type variables should be treated
11471         as sharable type arguments.
11472
11473         * inssel-x86.brg: Removed a superfluous, buggy rule.
11474
11475         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
11476         to switches.
11477
11478 2008-03-14  Martin Baulig  <martin@ximian.com>
11479
11480         * debug-debugger.c (main_thread_handler): Call
11481         mono_runtime_run_main() without sending any notifications.
11482
11483         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
11484
11485 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
11486
11487         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
11488
11489 2008-03-14  Mark Probst  <mark.probst@gmail.com>
11490
11491         * tramp-x86.c: Fixed register restore offsets in the trampoline
11492         code for ECX and EDX.
11493
11494 2008-03-12  Geoff Norton  <gnorton@novell.com>
11495
11496         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
11497         different ucontext_t implementations.
11498         * exceptions-arm.c: Use the above defines to get exceptions working on 
11499         iPhone (based on a patch by Luke Howard lukeh@padl.com)
11500         * mini-arm.c: Implement iPhone icache support (based on a patch by
11501         Luke Howard lukeh@padl.com)
11502
11503 2008-03-12  Mark Probst  <mark.probst@gmail.com>
11504
11505         * mini.c: Enable generic sharing of calls to non-static
11506         non-interface non-generic non-value-type methods.
11507
11508         * mini-trampolines.c: Resolve calls from shared generic code.
11509
11510 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
11511
11512         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
11513
11514         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
11515
11516 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
11517
11518         * mini.c: some fixes for the AOT compiler.
11519
11520 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
11521
11522         * cpu-amd64.md: Add clob:1 to some float opcodes.
11523
11524 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
11525
11526         * mini.h: Added MiniVerifierMode enumeration.
11527
11528         * mini.c: Added mini_verifier_set_mode to control
11529         the usage of the new verifier.
11530
11531         * mini.c (mono_method): Integrated the new verifier.
11532
11533         * driver.c: Extended --security option with validil and
11534         verifiable options to activate the new verifier.
11535
11536 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
11537
11538         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
11539         optimization to ctors taking 0 or 2 arguments too.
11540
11541         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
11542         a bit.
11543
11544         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
11545
11546         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
11547
11548 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
11549
11550         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
11551         non-aot case as well.
11552
11553         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
11554
11555         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
11556         changes.
11557
11558         * aot-compiler.c (encode_patch): Ditto.
11559
11560         * mini.h (G_MININT32): Fix the definition of this.
11561
11562 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
11563
11564         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
11565
11566         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
11567
11568 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
11569
11570         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
11571         methods returning vtypes in registers.
11572         (mono_arch_allocate_vars): Ditto.
11573
11574         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
11575
11576         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
11577
11578         * generics.cs: Add a test from the linear IR branch.
11579
11580         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
11581
11582         * mini.c (inline_method): Cache failed inline attempts.
11583
11584 2008-03-04  Mark Probst  <mark.probst@gmail.com>
11585
11586         * mini.c: For shared methods of generic classes put the location
11587         of "this" into the MonoGenericJitInfo.
11588
11589         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
11590         register out of a MonoContext by register number.  Add the generic
11591         sharing context as an argument to mono_arch_find_this_argument().
11592
11593         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
11594         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
11595         for new arch function.
11596
11597         * mini-exception.c: Handle open exception clauses in shared
11598         generic code.
11599
11600         * mini-trampolines.c: Supply additional argument to
11601         mono_arch_find_this_argument().
11602
11603 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
11604
11605         * Makefile.am (regtests): Run the bench.exe tests last.
11606
11607 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
11608
11609         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
11610         a bit.
11611
11612 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
11613
11614         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
11615         with MS.
11616
11617         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
11618         
11619         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
11620
11621         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
11622         whose class has no cctor.
11623
11624         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
11625
11626 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
11627
11628         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
11629         unverified.
11630
11631 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
11632
11633         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
11634         to be in sync with the code on the linear IR branch.
11635
11636         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
11637
11638         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
11639
11640 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
11641
11642         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
11643
11644         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
11645
11646         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
11647
11648         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
11649
11650         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
11651         
11652         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
11653         body.
11654
11655 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
11656
11657         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
11658         OP_LOADR4_MEMBASE emission.
11659
11660         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
11661         (mono_spillvar_offset_float): Ditto.
11662
11663         * mini-mips.c (mono_arch_emit_prolog): Ditto.
11664
11665         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
11666         emission.
11667
11668         * basic-long.cs: Add regression tests for them.
11669
11670         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
11671         use.
11672         (mono_arch_allocate_vars): Fix representation of single-precision float
11673         argument.
11674         (mono_arch_output_basic_block): Ditto.
11675
11676         * inssel-mips.brg: Ditto, remove duplicate items.
11677
11678         * mini-mips.c (emit_load_volatile_arguments): New function to handle
11679         arguments of tail calls as on other platforms.
11680         (mono_arch_output_basic_block): Handle tail calls.
11681
11682         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
11683         register.
11684
11685         * objects.cs (test_5_pass_static_struct): Add test for it.
11686
11687         Contributed under MIT/X11 license.
11688
11689 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
11690
11691         * Makefile.am: Use gmcs for compiling the regression tests.
11692
11693         * *.2.cs *.2.il: Rename to *.cs and *.il.
11694
11695 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
11696
11697         * regalloc.h: Make the vassign array smaller.
11698
11699         * mini.c (mini_method_compile): Remove an unused field in cfg.
11700
11701         * mini-codegen.c: Add a bunch of micro optimizations.
11702
11703 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
11704
11705         * regalloc.h: Remove some unused fields.
11706
11707 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
11708
11709         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
11710
11711         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
11712
11713 2008-02-22  Mark Probst  <mark.probst@gmail.com>
11714
11715         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
11716
11717         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
11718         trampoline: Fetch an entry from the runtime generic context.  If
11719         it's NULL, jump to the actual trampoline to fill the runtime
11720         generic context.  Otherwise, return it.
11721
11722         * mini.c: Call the lazy fetch trampoline to get entries out of the
11723         runtime generic context.
11724
11725         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
11726         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
11727         tramp-sparc.c: Stubs for the lazy fetch trampoline.
11728
11729 2008-02-21  Mark Probst  <mark.probst@gmail.com>
11730
11731         * mini.c: Fetch data out of the extensible part of the runtime
11732         generic context instead of calling a helper function.
11733
11734         * generic-sharing.c: Some functions moved into
11735         metadata/generic-sharing.c.  Helper function for fetching other
11736         types now checks and asserts against extensible rgctx (just for
11737         debugging purposes - the helper function isn't called anymore
11738         unless for debugging).
11739
11740 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
11741
11742         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
11743         for tail calls up to the point that the tests in iltests.exe run. Also add a
11744         dummy CKFINITE implementation.
11745         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
11746         needed for trampoline LMF frames.
11747
11748         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
11749         trampoline LMF frames.
11750
11751 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
11752
11753         * mini.c (inline_method): clean any pending loader error when inlining fail.
11754         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
11755
11756 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
11757
11758         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
11759
11760         * aot-runtime.c (decode_patch_info): Ditto.
11761
11762         * mini.c (mono_resolve_patch_target): Ditto.
11763         
11764         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
11765         icall wrappers.
11766
11767         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
11768         
11769         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
11770         if it references an icall address.
11771
11772 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
11773
11774         * cpu-s390x.md: Remove some more unused opcodes.
11775         
11776         * cpu-s390x.md: Remove some unused opcodes.
11777
11778         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
11779         mono_op_imm_to_op ().
11780
11781         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
11782         instead of a switch statement.
11783         
11784         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
11785         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
11786
11787         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
11788         
11789         * mini-codegen.c: Remove unused mono_regstate2_... functions.
11790
11791         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
11792         -1.
11793
11794 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
11795
11796         * driver.c (mono_main): Improve error reporting when an assembly cannot be
11797         opened. Fixes #362607.
11798
11799         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
11800
11801         * iltests.il.in: Add a test for static methods in interfaces.
11802
11803 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
11804
11805         * genmdesc.c (build_table): Fix a crash on older glib versions.
11806
11807         * cpu-sparc.md: Remove some unused opcodes.
11808         
11809         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
11810         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
11811
11812         * cpu-amd64.md: Remove some unused opcodes.
11813
11814         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
11815         like the other opcodes.
11816
11817 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
11818
11819         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
11820
11821         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
11822
11823         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
11824         variables 'cfg' instead of 'm' for consistency.
11825
11826         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
11827
11828         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
11829         argument holding the vtype return address, to avoid the ambigious use of
11830         cfg->ret for this purpose.
11831
11832         * mini.c (NEW_RETLOADA): Use vret_addr if set.
11833
11834         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
11835         
11836         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
11837         new mono_print_ins () function which only takes one argument.
11838
11839 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
11840
11841         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
11842         macro arguments.
11843
11844 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
11845
11846         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
11847
11848         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
11849
11850         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
11851         opcodes and other small changes.
11852
11853         * mini-ops.h: Add some new opcodes from the linear IR branch.
11854
11855         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
11856
11857         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
11858         opcodes, use the REG_MEMBASE opcodes instead.
11859         
11860         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
11861         opcodes, use the REG_MEMBASE opcodes instead.
11862         
11863         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
11864         linear IR branch.
11865
11866         * mini.c (mono_op_imm_to_op): New helper function.
11867
11868         * mini-ops.h: Add some opcodes from linear IR branch.
11869
11870 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
11871
11872         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
11873         <tsv@solvo.ru>.
11874
11875 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
11876
11877         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
11878         OP_ICONV_TO_R4/R8.
11879
11880         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
11881
11882 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
11883
11884         * aot-compiler.c (emit_method_code): Add an assert.
11885
11886         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
11887         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
11888         methods.
11889
11890 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
11891
11892         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
11893         some load/store opcodes so they are consistent. 
11894         (mono_arch_emit_prolog): Simplify some code.
11895
11896         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
11897
11898         * objects.cs: Add tests for large argument offsets on ARM.
11899
11900         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
11901         stack offsets. Fixes #359651.
11902
11903         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
11904
11905         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
11906
11907         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
11908
11909         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
11910
11911         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
11912
11913         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
11914         rid of CEE_CONV_R_UN.
11915
11916         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
11917
11918 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
11919
11920         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
11921
11922         * mini.c (mono_normalize_opcodes): Add some more opcodes.
11923
11924         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
11925
11926         * cpu-amd64.md: Remove some unused opcodes.
11927
11928         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
11929
11930         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
11931
11932         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
11933         arch specific functions for its parts. Call the peephole pass after local
11934         regalloc so the prolog can compute a more accurate max_offset.
11935         
11936         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
11937         the corresponding OP_I/OP_L opcodes.
11938
11939         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
11940
11941         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
11942
11943 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
11944
11945         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
11946         as they are handled in mini.c.
11947
11948         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
11949         
11950         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
11951         case since it is handled in mini.c.
11952
11953         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
11954
11955         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
11956
11957         * *.c: Use the new opcodes in the IR and back end code.
11958
11959         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
11960
11961         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
11962
11963 2008-02-06  Mark Probst  <mark.probst@gmail.com>
11964
11965         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
11966         an assert because it has a race condition.
11967
11968 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
11969
11970         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
11971
11972         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
11973
11974         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
11975
11976         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
11977         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
11978
11979 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
11980
11981         * cpu-amd64.md (move): Correct the maximum size of move.
11982
11983 2008-02-05  Mark Probst  <mark.probst@gmail.com>
11984
11985         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
11986         the generic class init trampoline to return quickly if the class
11987         is already inited.
11988
11989 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
11990
11991         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
11992         issues where an 32 bit callsite cannot be patched by a 64 bit address.
11993
11994 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
11995
11996         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
11997         branch.
11998
11999 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
12000
12001         * objects.cs: Add some soft-float tests.
12002
12003         * mini.c: Fix a couple more soft-float issues.
12004
12005         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
12006
12007         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
12008         avoid a REX prefix.
12009
12010 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
12011
12012         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
12013         exception happens while compiling a virtual method.
12014
12015 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
12016
12017         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
12018         
12019         * mini-sparc.c: Fix build.
12020
12021         * mini-sparc.c (get_call_info): Add support for generic sharing.
12022
12023         * mini-exceptions.c: Add a FIXME.
12024
12025 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
12026
12027         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
12028         altstack handling code.
12029
12030         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
12031         
12032         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
12033
12034         * mini-s390.c: Add support for generic sharing.
12035
12036         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
12037         Fix CAS on s390.
12038         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
12039
12040         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
12041
12042         * mini-s390x.c: Add support for generic sharing.
12043         
12044         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
12045         Fix CAS on ia64.
12046         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
12047
12048         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
12049         can be used since it takes a 16 bit signed immediate.
12050
12051         * inssel-s390x.brg: Fix OP_SETRET.
12052
12053         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
12054
12055         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
12056
12057         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
12058
12059         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
12060
12061         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
12062         in one place.
12063
12064         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
12065         stuff.
12066
12067         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
12068         of the unused mono_arch_patch_delegate_trampoline stuff.
12069
12070 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
12071
12072         * basic-long.cs: Move the fp related tests to basic-float.cs.
12073
12074         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
12075
12076         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
12077
12078         * basic-calls.cs: Add a test for proper float argument passing.
12079
12080         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
12081         if the context corresponds to an exception received through a signal.
12082
12083         * exceptions.cs: Add a test for nullref handling at the start of a try
12084         clause.
12085
12086         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
12087
12088         * jit-icalls.c (mono_break): New JIT icall.
12089
12090         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
12091
12092         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
12093
12094 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
12095
12096         * cpu-*.md: Get rid of unused opcodes.
12097
12098         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
12099
12100         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
12101         by all platforms.
12102
12103         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
12104         define.
12105
12106         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
12107         the arch independent trampoline code in mini-trampolines.c.
12108
12109         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
12110
12111         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
12112
12113         * mini-s390.h: Remove an unused define.
12114         
12115         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
12116         the arch independent trampoline code in mini-trampolines.c.
12117
12118         * mini-arm.c (mono_arch_emit_prolog): Fix build.
12119
12120 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
12121
12122         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
12123
12124         * mini-s390.c (mono_arch_emit_prolog): Fix build.
12125
12126         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
12127
12128         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
12129
12130         * cpu-amd64.md: Use smaller sizes for int opcodes.
12131
12132         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
12133
12134         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
12135         objects.cs.
12136
12137         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
12138         debugging.
12139
12140         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
12141         instead of though a pointer to save an indirection when accessing elements of
12142         the array.
12143
12144         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
12145         some typos.
12146         (NOT_IMPLEMENTED): New helper macro.
12147         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
12148         of a bb.
12149
12150         * *.c: Use the new helper macro.
12151
12152 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
12153
12154         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
12155
12156 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
12157
12158         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
12159         stack slots.
12160
12161 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
12162
12163         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
12164         profiling is enabled.
12165         
12166         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
12167         the end.
12168         (mono_arch_emit_prolog): Add more first bblock optimizations.
12169
12170         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
12171         in order if possible.
12172         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
12173         bblock, since the arguments are still in their original registers.
12174
12175         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
12176
12177 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
12178
12179         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
12180         as well.
12181
12182         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
12183         offset 0.
12184
12185         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
12186
12187         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
12188         process async exceptions received while in unmanaged code.
12189
12190         * mini.c (mini_init): Install a callback with the runtime which will be called
12191         when a thread receives an async exception while in unmanaged code.
12192
12193         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
12194
12195         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
12196
12197 2008-01-16  Wade Berrier  <wberrier@novell.com>
12198
12199         * cpu-g4.md:
12200         * cpu-arm.md:
12201         * cpu-s390x.md:
12202         fix build
12203
12204 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
12205
12206         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
12207         compilation with sun cc.
12208
12209         * cpu-*.md: Fix the build.
12210
12211         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
12212
12213         * mini-amd64.h: Add some comments to the MonoLMF structure.
12214
12215         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
12216         
12217         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
12218         in the LMF structure if possible. This saves two instructions in the
12219         managed->native wrappers.
12220
12221         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
12222
12223 2008-01-16  Mark Probst  <mark.probst@gmail.com>
12224
12225         * generic-sharing.c: New type argument lookup code which uses the
12226         runtime generic context template.
12227
12228 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
12229
12230         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
12231
12232         * mini-arm.c (add_general): Fix arm eabi parameter passing.
12233         (mono_arch_output_basic_block): Fix localloc implementation.
12234
12235         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
12236
12237         * mini-ia64.c (peephole_pass): Fix ia64 build.
12238
12239         * mini-amd64.c (peephole_pass): Fix a warning.
12240         
12241         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
12242         at a constant offset from sp/fp.
12243
12244         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
12245         instead of obtaining it from *lmf in the managed method case.
12246
12247 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
12248
12249         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
12250
12251 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
12252
12253         * mini.h (MonoInstList): New type.
12254         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
12255         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
12256         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
12257         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
12258         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
12259         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
12260         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
12261         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
12262         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
12263         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
12264         MONO_INST_LIST_FOR_EACH_ENTRY,
12265         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
12266         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
12267         mono_inst_list_first, mono_inst_list_last,
12268         mono_inst_list_next, mono_inst_list_prev): New instruction
12269         list handling interfaces.
12270         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
12271         list head 'ins_list'.
12272         (MonoInst): Replace next pointer with list head 'node'.
12273         (MonoCallInst): Make 'out_args' a MonoInstList.
12274         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
12275         (MonoCompile): Delete reverse_inst_list and
12276         reverse_inst_list_len.
12277         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
12278         mono_arch_lowering_pass, mono_arch_local_regalloc,
12279         mono_arch_output_basic_block, mono_arch_emit_prolog):
12280         Convert to new instruction lists.
12281         (insert_after_ins): Delete.
12282         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
12283         instruction lists.
12284         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
12285         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
12286         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
12287         mono_emulate_opcode, mono_emit_load_got_addr,
12288         inline_method, mono_method_to_ir, mono_print_bb_code,
12289         print_dfn, decompose_pass, nullify_basic_block,
12290         replace_out_block_in_code, remove_block_if_useless,
12291         merge_basic_blocks, move_basic_block_to_end,
12292         try_unsigned_compare, optimize_branches, mono_print_code,
12293         mini_select_instructions, remove_critical_edges): Likewise.
12294         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
12295         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
12296         mono_arch_output_basic_block, mono_arch_emit_prolog):
12297         Likewise.
12298         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
12299         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12300         mono_arch_output_basic_block): Likewise.
12301         (inst_list_prepend, insert_after_ins): Delete.
12302         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
12303         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
12304         instruction lists.
12305         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
12306         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
12307         mono_arch_emit_prolog): Likewise.
12308         * cfold.c (mono_constant_fold): Likewise.
12309         * liveness.c (visit_bb, mono_analyze_liveness,
12310         optimize_initlocals): Likewise.
12311         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
12312         * graph.c (mono_draw_code_cfg): Likewise.
12313         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
12314         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
12315         mono_ssa_cprop): Likewise.
12316         * abcremoval (get_relations_from_previous_bb, process_block):
12317         Likewise.
12318         * local-propagation (mono_cprop_invalidate_values,
12319         mono_local_cprop_bb): Likewise.
12320         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
12321         peephole_pass, mono_arch_output_basic_block,
12322         mono_arch_emit_prolog): Likewise.
12323         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
12324         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12325         mono_arch_emit_prolog): Likewise.
12326         (insert_after_ins): Delete.
12327         * aliasing.c (print_code_with_aliasing_information,
12328         mono_build_aliasing_information, mono_aliasing_deadce):
12329         Convert to new instruction lists.
12330         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
12331         peephole_pass, NEW_INS, mono_arch_lowering_pass,
12332         mono_arch_local_regalloc, mono_arch_output_basic_block):
12333         Likewise.
12334         (insert_after_ins): Delete.
12335         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
12336         peephole_pass, mono_arch_output_basic_block): Convert to
12337         new instruction lists.
12338         * mini-codegen (InstList, inst_list_prepend,
12339         insert_after_ins): Delete.
12340         (insert_before_ins, get_register_force_spilling,
12341         get_register_spilling, free_up_ireg, free_up_reg,
12342         create_copy_ins, create_spilled_store, alloc_int_reg,
12343         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
12344         to new instruction lists.
12345         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
12346         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12347         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
12348         (insert_after_ins): Delete.
12349         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
12350         mono_arch_local_regalloc, mono_arch_output_basic_block,
12351         mono_arch_call_opcode): Convert to new instruction lists.
12352         (insert_after_ins): Delete.
12353         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
12354         peephole_pass, mono_arch_output_basic_block,
12355         mono_arch_emit_prolog): Convert to new instruction lists.
12356
12357 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
12358
12359         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
12360
12361         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
12362         Fixes #353182.
12363
12364         * Makefile.am (version.h): Make this work with non-bash shells.
12365
12366 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
12367
12368         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
12369
12370 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
12371
12372         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
12373         the InitializeArray optimization.
12374
12375 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
12376
12377         * mini.c driver.c: Don't include os/gc_wrapper.h.
12378
12379 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
12380
12381         * mini.c (print_jit_stats): Print GC statistics if available.
12382
12383 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
12384
12385         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
12386
12387 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
12388
12389         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
12390
12391 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
12392
12393         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
12394         
12395         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
12396
12397         * driver.c (mono_main): Ditto.
12398
12399 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
12400
12401         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
12402
12403         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
12404         in the vtable can't be encoded.
12405         (compile_method): Ditto.
12406
12407 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
12408
12409         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
12410         defined.
12411
12412         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
12413         lmf->rbp.
12414
12415         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
12416         the top LMF entry belongs to the current method.
12417
12418         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
12419
12420 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
12421
12422         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
12423         
12424         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
12425
12426         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
12427
12428         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
12429
12430         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
12431
12432         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
12433         implementation.
12434
12435         * basic-float.cs: Add an ulong->double cast test.
12436
12437 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
12438
12439         * mini.c (mono_method_to_ir): Fix a warning.
12440
12441 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
12442
12443         * mini-ops.h: Add OP_SWITCH.
12444
12445         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
12446         CEE_SWITCH in back-end code, use OP_SWITCH instead.
12447
12448 2007-12-11  Geoff Norton  <gnorton@novell.com>
12449
12450         * mini-s390x.c: Minor change to the MAX() define to allow
12451         it to compile with other gcc versions.
12452
12453 2007-12-11  Geoff Norton  <gnorton@novell.com>
12454
12455         * cpu-s390x.md:
12456         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
12457
12458 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
12459
12460         exceptions-arm.c (mono_arch_get_restore_context): Restore
12461         the frame pointer.
12462
12463         exceptions-arm.c (throw_exception): Save the frame pointer.
12464         This is a partial fix for #323747. Only the client side is
12465         fixed.
12466
12467 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
12468
12469         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
12470         was using an unrelated variable to log the class which
12471         needed the cctor to be called. This was crashing on arm.
12472
12473 2007-12-09  Robert Jordan  <robertj@gmx.net>
12474
12475         * mini-x86.c (mono_arch_emit_epilog):
12476         Consider all kinds of 64-bit types. Fixes #323114.
12477
12478 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
12479
12480         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
12481
12482 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12483
12484         * mini-amd64.c (peephole_pass): Add a missing instruction check.
12485
12486 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
12487
12488         * mini.c: run type ctor before allocating an object, not only
12489         when running it's constructor method (fixes at least part of bug #342507).
12490
12491 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12492         
12493         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
12494         
12495         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
12496         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
12497         function.
12498
12499         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
12500         mono_generic_class_init_trampoline () the same as it is done with the other
12501         trampolines.
12502
12503         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
12504         aot-runtime.c aot-compiler.c: Implement AOT support.    
12505
12506 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12507
12508         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
12509         build for archs which don't have the vtable trampoline defined
12510         yet.
12511
12512 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12513
12514         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
12515
12516         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
12517
12518         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
12519
12520         * tramp-<ARCH>.c: Use the new helper function.
12521
12522 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12523
12524         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
12525         trampoline call, which takes a vtable argument.
12526
12527         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
12528         OP_TRAMPCALL_VTABLEs like other calls.
12529
12530         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
12531         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
12532         call.  Implemented a support function which fetches the vtable
12533         from a register set.
12534
12535         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
12536         Implemented a generic class init trampoline, using the
12537         OP_TRAMPCALL_VTABLE opcode.
12538
12539         * mini.c: Implemented static field access when sharing generic
12540         code.  This implies initing the class using the new
12541         OP_TRAMPCALL_VTABLE call.
12542
12543 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12544
12545         * mini.c: Don't compile methods with sharing enabled if their
12546         classes are disabled for sharing.
12547
12548 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
12549
12550         * inssel.brg: Add a missing sign extension to the GETCHR and array access
12551         opcodes. Fixes #346563.
12552
12553         * objects.cs: Add a new test.
12554
12555         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
12556
12557         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
12558         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
12559
12560 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
12561
12562         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
12563
12564 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
12565
12566         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
12567         code stream.
12568
12569 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
12570
12571         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
12572
12573         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
12574         optimization in the AOT case.
12575         
12576 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
12577
12578         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
12579         
12580         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
12581
12582         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
12583
12584         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
12585
12586         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
12587         is created by the inlined delegate ctor.
12588
12589         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
12590
12591         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
12592
12593 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
12594
12595         * cpu-x86.md: Fix the length of ckfinite.
12596
12597 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
12598
12599         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
12600         
12601         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
12602         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
12603
12604         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
12605
12606         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
12607         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
12608
12609 2007-11-28  Martin Baulig  <martin@ximian.com>
12610
12611         * mini-x86.c
12612         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
12613         after creating the trampoline.
12614
12615 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
12616
12617         * aot-runtime.c (load_aot_module): Check runtime version if needed.
12618
12619         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
12620         the same version.
12621
12622         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
12623         instead of the calling method to help AOT.
12624
12625         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
12626
12627 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
12628
12629         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
12630         is defined.
12631
12632 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
12633
12634         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
12635         
12636         * aot-compiler.c (compile_method): Correct check for generic method definitions.
12637         (encode_method_ref): No need to handle generic method definitions specially.
12638
12639         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
12640
12641         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
12642         decode_klass_info.
12643
12644         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
12645         encode_klass_info.
12646         (compile_method): Enable generic sharing.
12647
12648 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
12649
12650         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
12651         (mini_method_compile): Add preliminary support for AOTing shared generic code.
12652
12653         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
12654         generic code.
12655
12656         * mini-trampolines.c: Fix a warning.
12657
12658         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
12659         NEW_PCONST.
12660         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
12661         (generic_class_is_reference_type): Remove unused function.
12662
12663         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
12664         in the generic vtable trampoline case.
12665
12666         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
12667         
12668         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
12669         return an AOT method based on a vtable slot.
12670
12671         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
12672
12673         * mini.c (mini_get_vtable_trampoline): Export this.
12674
12675 2007-11-22  Martin Baulig  <martin@ximian.com>
12676
12677         * debug-debugger.h
12678         (MonoDebuggerInfo): Move `debugger_version' up.
12679
12680 2007-11-22  Martin Baulig  <martin@ximian.com>
12681
12682         * mini-amd64.c
12683         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
12684
12685         * mini-trampolines.c
12686         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
12687         after compiling the method.
12688
12689 2007-11-20  Martin Baulig  <martin@ximian.com>
12690
12691         * debug-mini.c
12692         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
12693         (mono_debugger_remove_breakpoint): Likewise.
12694         (mono_debugger_check_breakpoints): Likewise.
12695
12696         * debug-debugger.c: Implement the new breakpoint interface here.
12697
12698 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
12699
12700         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
12701         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
12702
12703         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
12704
12705 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
12706
12707         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
12708
12709         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
12710         mini.c.
12711
12712         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
12713         mini.c.
12714
12715         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
12716         returning a vtype in a register.
12717
12718         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
12719         here from the arch specific code.
12720
12721         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
12722         mini.c.
12723
12724         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
12725         (mono_arch_emit_prolog): Increment maximum prolog size.
12726
12727         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
12728         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
12729
12730         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
12731         MonoGenericSharingContext.
12732
12733         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
12734         MonoGenericSharingContext. Allocate memory from the cfg mempool.
12735
12736 2007-11-15  Mark Probst  <mark.probst@gmail.com>
12737
12738         * mini.c, mini.h, generic-sharing.c: Functions for producing code
12739         which extract fields out of the runtime generic context.  Full
12740         sharing of the NEWARR opcode.
12741
12742 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
12743
12744         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
12745         --enable-minimal=ssa.
12746
12747 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
12748
12749         * mini-trampolines.c (mono_delegate_trampoline): Update after 
12750         mono_marshal_get_delegate_invoke () signature change.
12751
12752 2007-11-13  Mark Probst  <mark.probst@gmail.com>
12753
12754         * mini.c: Removed the shared context in favor of the generic
12755         sharing context.  Allocate the MonoJitInfo structure with room for
12756         the generic sharing context if it's needed.
12757
12758         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
12759         domain-internals.h now.
12760
12761         * mini-x86.c: Pass the generic sharing context to get_call_info ().
12762
12763         * generic-sharing.c: Several changes for working without a shared
12764         context and instead operating on open types instead.
12765
12766 2007-11-12  David S. Miller  <davem@davemloft.net>
12767
12768        * inssel-sparc.brg: Fix double instruction emit.
12769
12770 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
12771
12772         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
12773         Get/Set/Address methods.
12774         
12775         * mini.c debug-debugger.c mini-trampolines.c: Update after 
12776         mono_marshal_get_delegate_invoke signature change.
12777
12778 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
12779
12780         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
12781         This can happens with dynamic methods. Fixes the other bug in #322722.
12782
12783 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
12784
12785         * tramp-arm.c (mono_arch_patch_callsite): Support patching
12786         BX call sequence.
12787
12788         * mini-arm.c (arm_patch): Implement patching of BX call
12789         sequence. Fixes one of the bugs in #322722.
12790
12791 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
12792
12793        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
12794        under Linux.  We only need to flush every 32-byte cache line.    
12795
12796 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
12797
12798         * mini.c:
12799         move_basic_block_to_end: Add branches when needed, eventually creating
12800         a new BB.
12801         optimize_branches: added a parameter that tells if it's ok to create
12802         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
12803         and avoid calling move_basic_block_to_end when it's not ok.
12804         Fixes bug 318677.
12805
12806 2007-11-07  Mark Probst  <mark.probst@gmail.com>
12807
12808         * mini.c: Abort inlining call to InitializeArray if something
12809         looks wrong.  Let the icall handle it, which now has proper safety
12810         checks.
12811
12812 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
12813
12814         * mini.c (mono_spill_call): add support for soft-float.
12815
12816         * mini.c (mono_method_to_ir): add support for soft-float
12817         to inlined functions that return float.
12818
12819         * mini.c (mono_method_to_ir): add support for soft-float
12820         to cee_stsfld opcode on float fields.
12821
12822 2007-11-05  Geoff Norton  <gnorton@novell.com>
12823
12824         * mini-x86.h: Fix the structure access for X86 Leopard.
12825
12826
12827 2007-11-05  Martin Baulig  <martin@ximian.com>
12828
12829         * mini-trampolines.c
12830         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
12831         after compiling the method to notify the debugger.
12832
12833 2007-11-05  Martin Baulig  <martin@ximian.com>
12834
12835         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
12836
12837 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
12838
12839         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
12840         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
12841
12842 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
12843
12844         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
12845         native-to-managed wrappers.
12846         
12847 2007-11-01  Geoff Norton  <gnorton@novell.com>
12848
12849         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
12850         members.
12851
12852 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
12853
12854         * mini.c, mini-x86.c: when getting back from unmanaged code
12855         to managed via a marshaled delegate we also need to set the
12856         right domain.
12857
12858 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
12859
12860         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
12861         for amd64.
12862
12863 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
12864
12865         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
12866         let the debugger or other external agents to tell the JIT when
12867         a sw breakpoint has been inserted in the code that the JIT needs
12868         to be able to inspect.
12869
12870 2007-10-31  Martin Baulig  <martin@ximian.com>
12871
12872         * debug-debugger.h
12873         (MonoDebuggerInfo): Remove `runtime_class_init'.
12874
12875 2007-10-30  Martin Baulig  <martin@ximian.com>
12876
12877         * debug-mini.h
12878         (mono_debugger_thread_created): Added `MonoThread *' argument.
12879         (mono_debugger_extended_notification): New public method.
12880         (mono_debugger_trampoline_compiled): New public method.
12881
12882         * debug-mini.c
12883         (MonoDebuggerThreadInfo): Added `thread' and
12884         `extended_notifications' fields.
12885
12886         * debug-debugger.c
12887         (debugger_executable_code_buffer): New static variable.
12888
12889         * debug-debugger.h
12890         (MonoDebuggerInfo): Added `executable_code_buffer',
12891         `executable_code_buffer_size', `breakpoint_info_area',
12892         `breakpoint_table' and `breakpoint_table_size'.
12893
12894 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
12895
12896         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
12897         that IP  either is an unused value or the vtable pointer. IMT 
12898         calls use vtable + offset now. Reduced by almost half the size
12899         of IMT entries.
12900
12901 2007-10-26  Jonathan Chambers <joncham@gmail.com>
12902
12903         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
12904         defines to access param registers. Replace long usage with
12905         gsize as sizeof(long) != sizeof(void*) on Win64.
12906
12907         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
12908         on Win64. Fix intrinsic, use _AddressOfReturnAddress
12909         instead of non-existant _GetAddressOfReturnAddress.
12910
12911         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
12912         param registers. Save/restore %rdi and %rsi in MonoLMF.
12913
12914         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
12915         param registers. Modify (throw_exception) signature to take 
12916         %rdi and %rsi on Win64. 
12917
12918         Code is contributed under MIT/X11 license.
12919
12920 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
12921
12922         * helpers.c: unlink debugging output files.
12923
12924 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
12925
12926         * mini.c: Move mono_create_ftnptr () to object.c.
12927
12928 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
12929
12930         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
12931         optional. This function can now be used to disassemble code generated
12932         outside the JIT such as trampolines and IMT thunks.
12933
12934         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
12935
12936         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
12937         vtable pointer from a ldr instruction.
12938
12939         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
12940         new IMT call sequence.
12941
12942         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
12943         call sequence for interface invocations.
12944
12945         * mini-arm.c (mono_arch_emit_imt_argument): added, required
12946         for imt support. This function is empty since IMT on ARM requires no
12947         special handling on the IR side.
12948
12949         * mini-arm.c (mono_arch_find_imt_method): added, required for
12950         imt support.
12951
12952         * mini-arm.c (mono_arch_find_this_argument): added, required
12953         for imt support.
12954
12955         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
12956         a ldr instruction to load a value stored in the code stream.
12957
12958         * mini-arm.c (mono_arch_build_imt_thunk):added, required
12959         for imt support.
12960
12961
12962 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
12963
12964         * mini.c (mini_init): Install the jump trampoline callback.
12965
12966 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12967
12968         * mini-trampolines.c: handle synchronized methods with the common
12969         vtable trampoline (bug #335601).
12970
12971 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
12972
12973         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
12974
12975         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
12976         64 bit platforms.
12977
12978         * mini-ia64.h mini-ia64.c: Add support for IMT.
12979
12980         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
12981         prolog. Fixes #331958.
12982
12983 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
12984
12985         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
12986
12987 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12988
12989         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
12990         trampoline.
12991
12992 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12993
12994         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
12995         trampoline.
12996
12997 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
12998
12999         * mini-x86.c, mini-x86.h: x86 support for the common vtable
13000         trampoline.
13001
13002 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
13003
13004         * mini-trampolines.c: changed the magic rampoline to understand
13005         the common vtable trampoline method: the method to invoke is
13006         determined by the vtable displacement of the call.
13007
13008 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13009
13010         * mini.c, mini.h: register the common vtable trampoline if the
13011         architecture supports it.
13012
13013 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13014
13015         * cpu-amd64.md: use the correct max length for tls_get.
13016
13017 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
13018
13019         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
13020         CEE_STELEM_ANY. Fixes #333696.
13021
13022 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
13023
13024         * exceptions-x86.c: provide more graceful handling of the case where
13025         we followed a bogus function pointer from managed code (bug #332866).
13026
13027 2007-10-11  Mark Probst  <mark.probst@gmail.com>
13028
13029         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
13030         replaces the generic_shared flag and will carry more information
13031         in the future.
13032
13033         * generic-sharing.c: Added mini_type_stack_size() which allows
13034         allows open types if given a generic sharing context.
13035         mini_get_basic_type_from_generic() takes a
13036         MonoGenericSharingContext* instead of a MonoCompile* now.
13037
13038         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
13039         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
13040         mini-sparc.c, mini-x86.c: Trivial changes required by the two
13041         changes above.  Just passing arguments through to the right
13042         places.
13043
13044 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
13045
13046         * mini-arm.c: unify the call emission to emit_code_seq().
13047
13048 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
13049
13050         * tramp-arm.c: reduced the trampoline size.
13051
13052 2007-10-10  Mark Probst  <mark.probst@gmail.com>
13053
13054         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
13055         variable handling out of arch-specific code.
13056
13057 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
13058
13059         * mini-arm.c: implemented fast delegate dispatch.
13060
13061 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
13062
13063         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
13064         that fp elimination is turned off if the space required by locals is too
13065         big. Fixes #331958.
13066
13067 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
13068
13069         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
13070         ARM to the new style trampoline.
13071
13072 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
13073
13074         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
13075
13076         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
13077
13078 2007-10-09  Martin Baulig  <martin@ximian.com>
13079
13080         * debug-debugger.h
13081         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
13082         `field_info_offset_offset'.     
13083
13084 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
13085
13086         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
13087         removed more internal usage of the r11 register and made it available
13088         to the register allocator.
13089
13090 2007-10-08  Mark Probst  <mark.probst@gmail.com>
13091
13092         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
13093         when sharing generics and treat type variables as references.
13094
13095 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
13096
13097         * mini-ppc.c: started removing the internal uses of register r11
13098         to eventually allow the register allocator to manage it as an
13099         additional available register.
13100
13101 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
13102
13103         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
13104
13105 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
13106
13107         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
13108         specific trampolines as they are not performance critical as a jump
13109         target (maybe align as before only for AOT code?). This saves about
13110         200 KB of native code on x86 for monodevelop startup.
13111
13112 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
13113
13114         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
13115         monodevelop startup.
13116
13117 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
13118
13119         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
13120
13121         * mini-sparc.h mini-sparc.c: Implement IMT support.
13122
13123         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
13124         its smaller and doesn't clobber sparc_g1.
13125
13126         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
13127
13128 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
13129
13130         * mini-ppc.c: optimized the size of the IMT thunks a bit.
13131
13132 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
13133
13134         * mini-ppc.c: implemented fast delegate invocation.
13135
13136 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
13137
13138         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
13139
13140 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
13141
13142         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
13143         code to the new style trampoline in preparation for IMT support.
13144
13145 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
13146
13147         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
13148         systems already. This also reduces the specific trampiline sizes and
13149         prepares for the use of r12 as the IMT identifier register.
13150
13151 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13152
13153         * mini-mips.h: endianess fix (simplified from a patch by
13154         Thomas Kunze <thommy@tabao.de>, bug #323737).
13155
13156 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
13157
13158         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
13159         to access ucontext fields and enable netbsd support
13160         (partially from Magnus Henoch <mange@freemail.hu>).
13161
13162 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13163
13164         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
13165         use the preprocessor from the CPP env var if it is set.
13166
13167 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
13168
13169         * mini-trampolines.c: fixed an assertion and moved it earlier in the
13170         code, before interface_offset gets used.
13171
13172 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
13173
13174         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
13175         mono_class_setup_vtable () before accessing klass->vtable.
13176
13177 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
13178
13179         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
13180         hackish.
13181
13182 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13183
13184         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
13185         IMT slots (this saves hundreds of KB of memory in programs like
13186         IronPython and Monodevelop).
13187
13188 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
13189
13190         * mini.c: print the delegate counter.
13191
13192 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
13193
13194         * mini-x86.c: make it easier to enable the debugging code for IMT
13195         slots.
13196
13197 2007-09-28  Martin Baulig  <martin@ximian.com>
13198
13199         * debug-debugger.h
13200         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
13201         `mono_method_klass_offset' and `mono_method_token_offset'.
13202
13203 2007-09-20  Mark Probst  <mark.probst@gmail.com>
13204
13205         * mini.c: First generics sharing implementation.  Can only share
13206         in very simple cases.  If sharing doesn't work it falls back to
13207         dedicated compilation.
13208
13209         * mini.h: Flag in MonoCompile to specify whether generic
13210         compilation is shared.  Flags enum for marking which generic inst
13211         of a context is used.  Prototypes for helper functions.
13212
13213         * generic-sharing.c: Helper functions for generic method sharing.
13214
13215         * optflags-def.h: Optimization flag (gshared) for enabling generic
13216         method sharing added.
13217
13218         * Makefile.am: generic-sharing.c added.
13219
13220 2007-09-19 Daniel Nauck <dna@mono-project.de>
13221
13222         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
13223
13224 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
13225         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
13226         fixes bug 325507.
13227
13228 2007-09-19  Martin Baulig  <martin@ximian.com>
13229
13230         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
13231         mono_debug_cleanup() is now part of mono_cleanup().
13232
13233 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
13234
13235         * driver.c (mono_main): Fix a warning.
13236
13237 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
13238
13239         * aot-compiler.c: Optimize various parts when processing large assemblies.
13240         Fixes ##325568.
13241
13242         * mini.c (mono_patch_info_hash): Improve hash function.
13243
13244 2007-09-14  Jonathan Chambers <joncham@gmail.com>
13245
13246         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
13247         
13248         Code is contributed under MIT/X11 license.
13249
13250 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
13251
13252         * mini.c (mini_init): Fix a leak.
13253
13254         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
13255
13256 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13257
13258         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
13259
13260 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
13261
13262         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
13263
13264 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
13265
13266         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
13267         variance tests.
13268
13269         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
13270
13271         * mini.c (handle_alloc): Enable managed allocators in AOT code.
13272
13273         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
13274
13275         * aot-runtime.c (decode_patch_info): Ditto.
13276
13277 2007-09-12  Jonathan Chambers <joncham@gmail.com>
13278
13279         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
13280         static case. Cache delegates in architecture specific code, 
13281         based on number of parameters.
13282         
13283         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
13284         in architecture specific code, based on number of parameters.
13285         
13286         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
13287         caching happen in architecture specific code now.
13288         
13289         Code is contributed under MIT/X11 license.
13290
13291 2007-09-12  Jonathan Chambers <joncham@gmail.com>
13292
13293         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
13294         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
13295         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
13296
13297         Code is contributed under MIT/X11 license.
13298
13299 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
13300         * mini.c: (mono_thread_abort) Fixed bug #82416.
13301
13302 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
13303
13304         * mini.: hook the new managed GC allocation feature into the JIT.
13305
13306 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
13307
13308         * mini.c: implementation for the new runtime tls opcode.
13309
13310 2007-09-11  Martin Baulig  <martin@ximian.com>
13311
13312         * debug-debugger.h
13313         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
13314         `mono_method_inflated_offset'.
13315
13316 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
13317
13318         * driver.c mini.h mini.c: Add a new devel command line option for injecting
13319         async exceptions into a method.
13320
13321         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
13322         purpose of testing whenever the unwinder works at every instruction.
13323
13324 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
13325
13326         * mini.c: check accessibility of method used in ldftn (fixes
13327         bug #82635).
13328
13329 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
13330
13331         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
13332
13333         * inssel.brg: Fix a warning.
13334
13335 2007-09-03  Martin Baulig  <martin@ximian.com>
13336
13337         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
13338         now takes the `main_method' as argument.
13339
13340 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
13341
13342         * cpu-sparc.md (endfilter): Add missing src1:i argument.
13343
13344 2007-08-30  Jonathan Chambers <joncham@gmail.com>
13345
13346         * driver.c: include the cil-coff.h header on Windows.
13347         
13348         Code is contributed under MIT/X11 license.
13349
13350 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
13351
13352         * mini.c, driver.c: don't include the cil-coff.h header.
13353
13354 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
13355
13356         * mini.c: flag places that needs fixes fo soft-float support.
13357
13358 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
13359
13360         * mini.h, inssel-float.brg: fix soft-float constant loads on big
13361         endian systems (partially from Dean Jenkins, bug #81924).
13362
13363 2007-08-28  Mark Probst  <mark.probst@gmail.com>
13364
13365         * mini.c (check_linkdemand): Remove embedded reference object in
13366         call to LinkDemandSecurityException.
13367         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
13368         with an IntPtr instead of a reference object.
13369
13370 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
13371
13372         * mini.c (handle_initobj): Handle alignment properly.
13373
13374         * inssel.brg (mini_emit_memset): Ditto. 
13375
13376         * inssel.brg (mini_emit_memcpy): Ditto. 
13377
13378         * inssel-sparc.brg: Ditto.              
13379
13380         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
13381
13382 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
13383
13384         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
13385         exceptions raised in unmanaged code. Fixes part of #82594.
13386
13387 2007-08-24  Mark Probst  <mark.probst@gmail.com>
13388
13389         * mini.c (mono_method_to_ir), declsec.c
13390         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
13391
13392 2007-08-22  Martin Baulig  <martin@ximian.com>
13393
13394         * debug-mini.h
13395         (MonoDebuggerThreadInfo): New typedef.
13396         (mono_debugger_thread_table): New global variable.
13397         (mono_debugger_thread_created): New public function.
13398         (mono_debugger_thread_cleanup): New public function.
13399
13400         * debug-debugger.h
13401         (MonoDebuggerInfo):
13402         - removed `get_current_thread' and `lookup_assembly'.
13403         - removed `data_table'.
13404         - added `thread_table'.
13405
13406         * mini.c
13407         (mono_thread_start_cb): Call mono_debugger_thread_created().
13408         (mono_thread_attach_cb): Likewise.
13409         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
13410         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
13411         initial domain.
13412
13413         * driver.c (mono_main): Move mono_debug_init() up, before calling
13414         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
13415
13416 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13417
13418         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
13419         together when passing several arguments of type double (gives a small
13420         speedup and saves a few bytes of generated code).
13421
13422 2007-08-20  Jb Evain  <jbevain@novell.com>
13423
13424         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
13425
13426 2007-08-20  Jb Evain  <jbevain@novell.com>
13427
13428         * mini.c (mono_method_to_ir): throw MethodAccessException
13429         and FieldAccessException instead of InvalidProgramException.
13430
13431 2007-08-20  Mark Probst  <mark.probst@gmail.com>
13432
13433         * mini.c: CoreCLR security checks.
13434
13435         * mini.h: Removed MonoSecurityMode (moved to
13436         metadata/security-manager.h) and mono_security_mode global var
13437         (replaced by set/get functions in security-manager.h).
13438
13439         * driver.c: Added "core-clr-test" security mode for testing.  Used
13440         set-function for setting security mode.
13441
13442 2007-08-17  Mark Probst  <mark.probst@gmail.com>
13443
13444         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
13445         the new jit_info_table.
13446
13447         * driver.c: Test code for the new jit_info_table (enabled by the
13448         define MONO_JIT_INFO_TABLE_TEST).
13449
13450 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
13451
13452         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
13453         detection of call <REG> instruction sequence. Fixes build on freebsd.
13454
13455 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
13456
13457         * mini-exceptions.c: Fix a warning.
13458
13459 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
13460
13461         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
13462         stack overflow handling code on amd64 too.
13463
13464         * mini-exceptions.c (mono_setup_altstack): Make this use 
13465         mono_thread_get_stack_bounds ().
13466
13467         * mini-x86.h: Disable sigaltstack on solaris x86.
13468
13469 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
13470
13471         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
13472
13473 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
13474
13475         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
13476
13477 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
13478
13479         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
13480
13481         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
13482
13483 2007-08-03  Neale Ferguson <neale@sinenomine.net>
13484
13485         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
13486         due to alignment.
13487
13488 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
13489
13490         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
13491         to be emitted (bug #82281).
13492
13493 2007-08-01  Martin Baulig  <martin@ximian.com>
13494
13495         Merged the `debugger-dublin' branch.
13496
13497         * debug-debugger.h (MonoDebuggerInfo):
13498         Removed the `old_*' compatibility entries.
13499         Added `debugger_version' and `data_table'.
13500         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
13501         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
13502
13503         * debug-mini.c
13504         (MiniDebugMethodBreakpointInfo): Add `address_list'.
13505         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
13506         instead of a `gconstpointer'.
13507         (mono_debugger_insert_method_breakpoint): Return a
13508         `MonoDebugMethodAddressList *'.
13509
13510 2007-06-28  Martin Baulig  <martin@ximian.com>
13511
13512         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
13513
13514 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
13515
13516         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
13517         __builtin_frame_address () since it is broken on older gcc versions.
13518
13519 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
13520
13521         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
13522         on the stack overflow handling and made the managed stack overflows
13523         catchable in most cases using soft guard pages.
13524         * exceptions-x86.c: added code to restore the protection in the soft
13525         guard pages at the end of exception handling.
13526
13527 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
13528
13529         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
13530
13531 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13532
13533         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
13534         exception handling.
13535
13536 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13537
13538         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
13539         signal handling support until it has been ported to the new mechanism.
13540         * mini.c: fixed stack overflow detection and use the new
13541         architecture code  to handle signals on the altstack.
13542
13543 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
13544
13545         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
13546         stack overflows on the alt stack.
13547
13548 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
13549
13550         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
13551         stack overflows on the alt stack.
13552
13553 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
13554
13555         * exceptions-ppc.c: cleanup preparing for altstack support.
13556
13557 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
13558
13559         * exceptions-arm.c: cleanup preparing for altstack support.
13560
13561 2007-07-27  Mark Probst  <mark.probst@gmail.com>
13562
13563         * mini.c (print_jit_stats): Output hazard pointer stats.
13564
13565 2007-07-26  Mark Probst  <mark.probst@gmail.com>
13566
13567         * driver.c, mini.c: Replaced security mode flags with a single
13568         enum variable.
13569
13570 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13571
13572         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
13573
13574 2007-07-25  Mark Probst  <mark.probst@gmail.com>
13575
13576         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
13577         (which doesn't do anything yet) for activating Core CLR
13578         (Silverlight) security.
13579
13580 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
13581
13582         * mini-codegen.c: work around a possible gcc bug on arm.
13583
13584 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
13585
13586         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
13587         message for platforms that don't support AOT compilation.
13588
13589 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
13590
13591         * mini.h, mini.c, driver.c: temporary smcs hack.
13592
13593 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
13594
13595         * mini-arm.h, mini-arm.c: arm EABI fixes.
13596
13597 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
13598
13599         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
13600         case.
13601
13602         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
13603         trampolines taking a method argument.
13604
13605         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
13606
13607         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
13608         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
13609
13610         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
13611         JIT compilation throws an exception. Fixes #82050.
13612
13613 2007-07-19  Mark Probst  <mark.probst@gmail.com>
13614
13615         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
13616         with the MONO_EXCEPTION_ defines.
13617
13618 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
13619
13620         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
13621         #82117.
13622         
13623         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
13624         the cause of an assertion.
13625
13626 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
13627
13628         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
13629         removed.
13630
13631 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
13632
13633         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
13634         assert. Should fix #82103.
13635
13636 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
13637
13638         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
13639         here too. Fixes #82095.
13640
13641         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
13642         addresses.
13643
13644         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
13645
13646         * mini-amd64.h: Enable IMT for amd64.
13647         
13648         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
13649
13650 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
13651
13652         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
13653
13654 2007-07-12  Mark Probst  <mark.probst@gmail.com>
13655
13656         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
13657         as soon as check_linkdemand sets an exception_type.
13658
13659 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
13660
13661         * mini-x86.c: fixed offsets for IMT call sequence.
13662         * mini-x86.h: enable IMT again.
13663
13664 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
13665
13666         * trace.c (mono_trace_enter_method): Decode MonoType too.
13667
13668         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
13669
13670         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
13671
13672         * mini-amd64.c: Add preliminary IMT implementation.
13673         
13674 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
13675
13676         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
13677         understand the new IMT-base interface invocation (thanks to
13678         Daniel Nauck for the report and the remote debugging session).
13679
13680 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
13681
13682         * mini-x86.c: size and speed optimizations for the IMT bsearch.
13683
13684 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
13685
13686         * Makefile.am (aotcheck): Make this actually use the AOTed code.
13687
13688 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
13689
13690         * mini-trampolines.c: implement AOT IMT support.
13691         * mini-x86.h: enable IMT support for wider testing.
13692
13693 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
13694
13695         * inssel.brg (emit_imt_argument): Add aot support here.
13696
13697         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
13698
13699 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
13700
13701         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
13702         of the IMT implementation, partially from massi, with my
13703         implementation of the bsearch sequence. Disabled by default until
13704         the AOT code is implemented.
13705
13706 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
13707
13708         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
13709
13710         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
13711
13712 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13713
13714         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
13715         arch-independent IMT JIT code from Massimiliano
13716         Mantione (massi@ximian.com) with small cleanups from me.
13717
13718 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
13719
13720         * Makefile.am: fix svn invocation to get the svn revision to be
13721         independent of the local language (build fix).
13722
13723 2007-07-09  Mark Probst  <mark.probst@gmail.com>
13724
13725         * mini.c (inline_method): Reset cfg->exception_type if the
13726         inlining is aborted.  Fixes: 82049.
13727
13728 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
13729
13730         * mini.c: remove assert from exception handling code when exception_ptr
13731         is not set.
13732
13733 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
13734
13735         * mini.c (mono_codegen): Add an assert.
13736
13737         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
13738         enter and leave code.
13739         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
13740
13741 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13742
13743         * mini-ppc.c: fixed memory corruption for localloc(0)
13744         (bug #81852).
13745
13746 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
13747         
13748         * mini.c: Fix warnings.
13749
13750 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
13751
13752         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
13753         to emit better double->int conversions.
13754
13755 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
13756
13757         * mini.c: the provided Min/Max optimizations are valid for unisgned
13758         ints.
13759
13760 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
13761
13762         * 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
13763
13764 2007-06-28  Miguel de Icaza  <miguel@novell.com>
13765
13766         * mini.c (mono_running_on_valgrind): Add support for reporting the
13767         method and  its boundaries to valgrind.
13768
13769 2007-06-28  Martin Baulig  <martin@ximian.com>
13770
13771         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
13772
13773 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
13774
13775         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
13776
13777         * generic.2.cs: Add new test case.
13778
13779 2007-06-25  Martin Baulig  <martin@ximian.com>
13780
13781         Merged the `debugger-dublin' branch.
13782
13783         * debug-mini.c
13784         (mono_debugger_insert_method_breakpoint): New public method.
13785         (mono_debugger_remove_method_breakpoint): Likewise.
13786         (mono_debugger_check_breakpoints): New static method.
13787         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
13788
13789         * debug-debugger.h (MonoDebuggerInfo):
13790         Renamed (to keep backward compatibility in the vtable):
13791         `insert_breakpoint' -> `old_insert_breakpoint'.
13792         `remove_breakpoint' -> `old_remove_breakpoint'.
13793         `create_string' -> `old_create_string'.
13794         `lookup_class' -> `old_lookup_class'.
13795         `lookup_type' -> removed; changed into a dummy field.
13796         `lookup_assembly' -> `old_lookup_assembly'.
13797         Added (same functionality, but different signature):
13798         `create_string', `lookup_class', `lookup_assembly'
13799         Added new:
13800         `get_method_addr_or_bpt', `remove_method_breakpoint',
13801         `runtime_class_init'.
13802
13803         * debug-debugger.c: Merged the `debugger-dublin' branch.
13804
13805 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
13806
13807         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
13808         well.
13809         (peephole_pass): Likewise.
13810
13811 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
13812
13813         * driver.c: hopefully make setaffinity work also for ancient
13814         versions of linux.
13815
13816 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
13817
13818         * driver.c : win32 build fix.
13819
13820 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
13821
13822         * driver.c: check for the MONO_NO_SMP env var and bind to a single
13823         processor if it is set.
13824
13825 2007-06-21  Martin Baulig  <martin@ximian.com>
13826
13827         * debug-mini.h: New file.
13828
13829         * debug-mini.c
13830         (mono_debugger_insert_breakpoint_full): Moved here from
13831         ../metadata/mono-debug-debugger.c.
13832         (mono_debugger_remove_breakpoint): Likewise.
13833         (mono_debugger_breakpoint_callback): Likewise.
13834
13835 2007-06-15  Raja R Harinath  <rharinath@novell.com>
13836
13837         * jit-icalls.c (mono_helper_compile_generic_method): Update to
13838         changes in MonoGenericClass.
13839
13840 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
13841
13842         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
13843
13844 2007-06-14  Raja R Harinath  <rharinath@novell.com>
13845
13846         * jit-icalls.c (mono_helper_compile_generic_method): Update to
13847         removal of MonoGenericMethod.
13848
13849 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13850
13851         * mini-exceptions.c: hooks for the exception events profiling API.
13852
13853 2007-06-14  Randolph Chung  <tausq@debian.org>
13854
13855         * Makefile.ma: Add hppa target.
13856         * mini-arch.h: Include mini-hppa.h
13857         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
13858         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
13859         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13860
13861 2007-06-14  Randolph Chung  <tausq@debian.org>
13862
13863         * inssel.brg: Add rules for "chained" compare-branch operations so that
13864         a single compare op can affect multiple branches.  Adjust cost for
13865         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
13866         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
13867         cost for some rules so that they can more easily be overridden by
13868         per-arch rules (with fixes from lupus).
13869         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13870
13871 2007-06-13  Randolph Chung  <tausq@debian.org>
13872
13873         * mini-ops.h: Reorder branch ops so that they match the order of the
13874         corresponding CEE_* ops.  The code expects them this way.
13875         Add new ops for HPPA target.
13876         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13877
13878 2007-06-13  Randolph Chung  <tausq@debian.org>
13879
13880         * mini-exceptions.c: Handle cases where the stack grows towards
13881         larger addresses.
13882         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13883
13884 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
13885
13886         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
13887         counter.
13888         * driver.c: explain where a non-matching corlib is found.
13889
13890 2007-06-13  Mark Probst  <mark.probst@gmail.com>
13891
13892         * mini.c (print_jit_stats): Output dynamic code allocation stats.
13893
13894 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
13895
13896         * mini-exceptions.c: Generate a method profile leave event during
13897         an exception to ensure that the profiler gets notified.
13898
13899 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
13900
13901         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
13902         branch.
13903
13904         * cpu-amd64.md: Add long_and/or/xor opcodes.
13905
13906 2007-06-06  Wade Berrier  <wberrier@novell.com>
13907
13908         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
13909         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
13910         length of instruction shr_imm (expected 8, got 10)
13911
13912 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
13913
13914         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
13915
13916 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13917
13918         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
13919         MonoInternalHashTable again (fixed bug in the internal hash table
13920         code).
13921
13922 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13923
13924         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
13925         Have to figure out what makes it crash the SWF regression.
13926
13927 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
13928
13929         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
13930
13931 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13932
13933         * mini.c: optimize out the type check when storing null in a
13934         reference array.
13935
13936 2007-06-04  Mark Probst  <mark.probst@gmail.com>
13937
13938         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
13939         MonoInternalHashTable.
13940
13941 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
13942
13943         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
13944         signed integer methods.
13945
13946 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
13947
13948         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
13949         permanently since the current approach doesn't work.
13950
13951 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
13952
13953         * inssel.brg (stmt): Only call delegate->invoke_impl if 
13954         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
13955
13956 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
13957
13958         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
13959         the sreg2==rdx case.
13960         
13961         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
13962         account if it contains a rex prefix.
13963         (peephole_pass): Handle OP_FMOVE as well.
13964
13965 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
13966
13967         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
13968         as it causes regressions.
13969
13970 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
13971
13972         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
13973         static case as well.
13974
13975         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
13976
13977         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
13978         (mono_arch_get_this_arg_from_call): Ditto.
13979
13980         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
13981
13982         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
13983         invoke_impl field.
13984
13985         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
13986         (mono_arch_get_this_arg_from_call): Ditto.
13987
13988         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
13989         
13990         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
13991         try to create optimized invoke code and use that for further invocations. 
13992         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
13993
13994         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
13995
13996 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
13997
13998         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
13999         sealed classes or methods.
14000         *devirtualization.cs: tests for the new optimization
14001
14002 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
14003
14004         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
14005         by the update_volatile () function.
14006
14007 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
14008
14009         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
14010         require it.
14011
14012         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
14013
14014 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
14015
14016         * mini.c: Add configure checks for header files.
14017         * mini-x86.c: Add configure checks for header files.
14018         * trace.c: Add configure checks for header files.
14019         * aot-runtime.c: Add configure checks for header files.
14020         * aot-compiler.c: Add configure checks for header files.
14021         * driver.c: Add configure checks for header files.
14022         * mini-codegen.c: Add configure checks for header files.
14023         
14024         Code is contributed under MIT/X11 license.
14025
14026 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
14027
14028         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
14029         icompare_imm -128 + op_iclt. Fixes #81703.
14030
14031 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
14032
14033         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
14034
14035 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14036
14037         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
14038         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
14039         so that all isinst checks now use "interface_bitmap".
14040
14041 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
14042
14043         * cpu-amd64.md (jmp): Fix a warning.
14044
14045         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
14046
14047         * basic.cs: Add new regression test.
14048
14049         * basic.cs: Remove test which is now in basic-long.cs.
14050
14051         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
14052
14053         * basic-long.cs: Add new test.
14054         
14055 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
14056
14057         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
14058
14059 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
14060
14061         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
14062
14063         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
14064         places.
14065         
14066         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
14067         throwing code a bit.
14068
14069         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
14070         the exception throwing code a bit.
14071
14072         * mini-x86.c (get_call_info): Allocate result from a mempool.
14073
14074 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
14075
14076         * aot-compiler.c (find_typespec_for_class): Fix the assert.
14077
14078         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
14079
14080         * mini.h (MonoCompile): Add 'token_info_hash' field.
14081
14082         * mini.c: Save token->method associations during compilation so the AOT 
14083         compiler can use it.
14084         
14085         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
14086         which reference generic classes and methods.
14087
14088 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
14089
14090         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
14091
14092         * aot-compiler.c (compile_method): Fix a typo in a comment.
14093
14094         * aot-runtime.c (decode_cached_class_info): Skip generic types.
14095
14096         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
14097         everything generic.
14098
14099         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
14100
14101 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
14102
14103         * mini.h (MonoCompile): Add 'args' field.
14104
14105         * mini.c (mono_compile_create_vars): Store variables representing the arguments
14106         into cfg->args.
14107
14108         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
14109
14110 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
14111
14112         * mini.c (mono_compile_get_interface_var): Remove this unused function.
14113
14114         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
14115
14116         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
14117         opcodes for some opcodes.
14118
14119         * mini.h *.brg *.c: Use the new opcodes.
14120
14121 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
14122
14123         * mini.h: Bumped aot revision.
14124
14125         * inssel.brg: modified code generation of type checks for interfaces
14126         to use the new "MonoClass.interface_bitmap" instead of the old
14127         "MonoClass.interface_offsets".
14128
14129 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
14130
14131         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
14132
14133 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
14134
14135         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
14136         64 bit platforms.
14137
14138 2007-04-27  Neale Ferguson <neale@sinenomine.net>
14139
14140         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
14141
14142 2007-04-27  Wade Berrier  <wberrier@novell.com>
14143
14144         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
14145         mini.h) to fix build.
14146
14147 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
14148
14149         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
14150         
14151         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
14152         causes the corlib unit tests to fail.
14153
14154 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
14155
14156         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
14157
14158         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
14159
14160         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
14161         opcodes to the comparison relations.
14162
14163         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
14164         opcodes to their types.
14165         
14166         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
14167
14168         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
14169         it in cfg->arch.cinfo.
14170
14171         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
14172
14173         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
14174         cfg->cil_offset_to_bb.
14175
14176 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
14177
14178         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
14179         created becase of initlocals.
14180
14181 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
14182
14183         * mini-alpha.c cpu-alpha.md: More alpha port work from 
14184         Sergey Tikhonov <tsv@solvo.ru>.
14185
14186 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
14187
14188         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
14189
14190 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
14191
14192         * cpu-s390.md (break): Correct the length of break instruction.
14193
14194 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14195
14196         * mini.c: fix a couple of soft-float issues and comments.
14197
14198 2007-04-15  Miguel de Icaza  <miguel@novell.com>
14199
14200         * trace.c (is_filenamechar): - is also a filename char.
14201
14202 2007-04-15  Neale Ferguson <neale@sinenomine.net>
14203
14204         * mini-s390.c: Correct checking for enum type in return value processing.
14205
14206 2007-04-14  Raja R Harinath  <rharinath@novell.com>
14207
14208         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
14209         (version.h): Makefile is in the build directory.
14210
14211 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
14212
14213         * mini-amd64.h: fix for assertion failure on Solaris/amd64
14214
14215 2007-04-11  Martin Baulig  <martin@ximian.com>
14216
14217         * mini.c (can_access_member): Fix handling of generic classes;
14218         fixes #81259.
14219
14220 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
14221
14222         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
14223
14224 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
14225
14226         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
14227
14228 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
14229
14230         * mini-codegen.c: make sure the right spill amount is
14231         used for fp or integer registers (fixes the float_sub_spill() on ppc).
14232
14233 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
14234
14235         * mini-ppc.c: fixes for the fp_branch_nan test.
14236
14237 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
14238
14239         * basic.cs: Comment out new test which still fails on ia64.
14240
14241 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14242
14243         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
14244
14245 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14246
14247         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
14248
14249 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
14250
14251         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
14252         on 64 bit machines. Fixes part of #80738.
14253
14254         * basic.cs: Add regression test.
14255
14256 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
14257
14258         * inssel.brg basic.cs: Revert previous change to fix build.
14259
14260         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
14261         platforms.
14262         
14263         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
14264
14265         * basic.cs: Add new regression test.
14266
14267 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
14268
14269         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
14270         many arguments.
14271
14272 2007-03-16  Neale Ferguson <neale@sinenomine.net>
14273
14274         * cpu-s390x.md: Correct length of break instruction.
14275
14276 2007-03-16  Neale Ferguson <neale@sinenomine.net>
14277
14278         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
14279         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
14280
14281 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
14282
14283         * *.c: Begin WIN64 port.
14284         * mini.c:  Use correct register in profiler.
14285         * mini-amd64.c: No inline assembly on Win64.
14286         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
14287         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
14288         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
14289         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
14290         mono_arch_ip_from_context for Win64.
14291         
14292         Contributed under MIT/X11 license.
14293
14294 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
14295
14296         * exceptions-amd64.c (seh_handler): Ditto.
14297
14298         * exceptions-x86.c (seh_handler): Fix a memory leak.
14299
14300 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
14301
14302         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
14303         mini-s390x.c: fixed peephole optimizations to deal
14304         correctly with 1 and 2 byte reload avoidance.
14305
14306 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
14307
14308         * cpu-s390.md, cpu-s390x.md: update localloc length.
14309
14310 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
14311
14312         * cpu-g4.md: added missing descriptions.
14313
14314 2007-03-14  Miguel de Icaza  <miguel@novell.com>
14315
14316         *  Makefile.am: Add support so the tail tests are not executed on
14317         PowerPC as that is a known limitation of the PowerPC port.
14318
14319 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
14320
14321         * runmdesc.bat:  Move to msvc directory.
14322         
14323 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
14324
14325         * runmdesc.bat:  Run executable that was produced by the current
14326         target and sent via an argument.
14327         
14328 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
14329
14330         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
14331         #81102.
14332
14333         * generics.2.cs: Add regression test.
14334
14335 2007-03-09  Wade berrier  <wberrier@novell.com>
14336
14337         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
14338
14339 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
14340
14341         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
14342         AOT code depends on this.
14343
14344 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
14345
14346         * mini.c: more precise tracking of types in the eval stack
14347         (part of fix for bug #81044).
14348
14349 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
14350
14351         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
14352
14353         * aot-compiler.c (encode_patch): Remove an obsolete comment.
14354
14355 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
14356
14357         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
14358
14359         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
14360
14361 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
14362
14363         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
14364         a pointer on 64 bit systems. Fixes #80190.
14365
14366         * iltests.il: Add new regression test.
14367
14368 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14369
14370         * mini.c: inline a constant for Environment.IsRunningOnWindows.
14371
14372 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
14373
14374         * trace.c: Remove an erroneous alignemnt check when tracing.
14375           Fixes --trace on OSX86.
14376
14377 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
14378
14379         * mini-$(arch).h: initialize SP in context for all the archs.
14380
14381 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
14382
14383         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
14384         regressions in the thread tests.
14385
14386 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
14387
14388         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
14389         - fixed implementation of LOCALLOC opcode
14390         - implemented non-un compare for floats
14391         - code cleanup
14392         - implementation of FDIV and CKFINITE opcodes
14393         - fixes for latest mono updates
14394         - additional arch opcodes
14395
14396 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
14397
14398         * Makefile.am: simplify and merge rules for cross-compilation.
14399
14400 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
14401
14402         * local-propagation.c: Actually *apply* the fix for bug 80591...
14403
14404 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
14405
14406         * mini-exceptions.c: backuot part of the last change
14407         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
14408
14409 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
14410         * inssel.brg: Fix bug 59286.
14411
14412
14413 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
14414
14415         * mini-exceptions.c: patch from Zoltan to correctly check for
14416         stack boundaries (using the stack register, not the frame register),
14417         fixes bugs #80724, #79717.
14418
14419 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
14420
14421         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
14422         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
14423
14424         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
14425         presence of frame pointer elimination.
14426
14427 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
14428         
14429         * mini-x86.h: NetBSD UCONTEX_REG defines.
14430
14431 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
14432
14433         * inssel-amd64.brg: Fix amd64 build.
14434
14435 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
14436
14437         * mini.h: remove extern to workaround what looks likes gcc bug 26905
14438         on amd64.
14439
14440 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
14441
14442         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
14443         ends.
14444
14445         * mini-<ARCH>.c: Use mono_is_regsize_var ().
14446
14447 2007-01-30 Mark Mason <mason@broadcom.com>
14448
14449            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
14450            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
14451            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
14452            beginning support for CEE_JMP [not quite working yet]
14453            * tramp-mips.c: LMF handling now works
14454         
14455 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
14456
14457         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
14458
14459         * mini.h (NULLIFY_INS): New macro.
14460
14461 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14462
14463         * mini.c: statistical profiler fix for windows, patch
14464         from Tor Lillqvist (tml@novell.com).
14465
14466 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
14467         * local-propagation.c: Fix bug 80591.
14468
14469 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
14470
14471         * Makefile.am: put back the --export-dynamic option as with
14472         the previous gmodule flags (thanks to Robert Jordan).
14473
14474 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
14475
14476         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
14477
14478         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
14479         simplify and speed up the local register allocator. Also rename some fields
14480         like iassign->vassign.
14481         
14482         * regalloc.c: Remove some functions which are no longer used since their
14483         inlined version is in mini-codegen.c.
14484         
14485         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
14486
14487         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
14488
14489 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
14490
14491         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
14492         narrowing. Fixes #80622.
14493
14494         * iltests.il: Add new regresssion test. 
14495
14496 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
14497
14498         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
14499         debug-debugger.c, debug-debugger.h: warning fixes.
14500         * driver.c: updated copyright year and made it fit in one line.
14501
14502 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
14503
14504         * aot-runtime.c: updated to use mono-dl instead of gmodule.
14505
14506 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
14507
14508         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
14509
14510         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
14511
14512         * iltests.il: Add new test for bug #80507.
14513
14514 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14515
14516         * mini-arm.h: use soft-float also on vfp for now.
14517
14518 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
14519
14520         * mini.c: fix some more soft-float issues.
14521
14522 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
14523
14524         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
14525
14526 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
14527         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
14528         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
14529         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
14530
14531 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
14532
14533         * mini-arm.c: typo fix.
14534
14535 2007-01-23  Neale Ferguson <neale@sinenomine.net>
14536
14537         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
14538
14539 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
14540
14541         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
14542         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
14543
14544         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
14545
14546         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
14547
14548         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
14549         
14550         * inssel.brg: Fix a warning.
14551
14552         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
14553
14554         * abcremoval.c ssa.c ssapre.c: Update after this change.
14555         
14556         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
14557
14558         * dominators.c (df_set): Use mono_bitset_union_fast.    
14559
14560 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
14561
14562         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
14563         mini-codegen.c: reduce relocations and memory usage for the cpu
14564         description.
14565
14566 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
14567
14568         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
14569
14570         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
14571         to reduce their size.
14572
14573 2007-01-19 Mark Mason <mason@broadcom.com>
14574
14575         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
14576         * mini-mips.c: more configuration macros, support long conditional branches, additional
14577         asserts, fix epilog instrumentation.
14578         * mini-mips.h: use standard stack walk
14579         * cpu-mips.md: increase size of div, rem and conditional branches
14580         
14581 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
14582
14583         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
14584         to cpu spec data.
14585
14586 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
14587
14588         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
14589         (compile_method): Ditto.
14590
14591         * aot-runtime.c (decode_klass_info): Ditto.
14592
14593         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
14594         needed by the code generated by inssel.brg. Also fix a warning.
14595
14596 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
14597
14598         * mini.c: deal with enums that become genericinsts by
14599         being nested in a generic class (bug #79956).
14600
14601 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
14602
14603         * mini.c: match the generic definition to check for
14604         private access with generic types (bug #78431).
14605
14606 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
14607
14608         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
14609         to make life easier for people cross-compiling that insist on not
14610         using scratchbox.
14611
14612 2007-01-17 Mark Mason <mason@broadcom.com>
14613
14614         * inssel-long.brg: patch to deal with mips missing flags
14615         * inssel-long32-mips.brg: implement overflow checks
14616         * insset-mips.brg: implement overflow checks
14617         * mini-mips.h: implement conditional exception handling
14618         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
14619           Remove unused code, minor cleanups.
14620         * exceptions-mips.c: minor cleanups
14621         * mini-ops.h: add mips conditional exception ops
14622         * cpu-mips.md: add mips conditional exception ops
14623
14624         
14625 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
14626
14627         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
14628         to deal with mips missing of flags.
14629
14630 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
14631
14632         * exceptions-ppc.c: execute fault handlers.
14633
14634 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
14635
14636         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
14637
14638 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
14639
14640         * mini.c: handle also floating point values in initialize_array.
14641
14642 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
14643
14644         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
14645         array initialization and make it conditional on the intrins option.
14646
14647 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
14648
14649         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
14650         relocations and put the patch info names close to the enum definition.
14651
14652 2007-01-15 Mark Mason <mason@broadcom.com>
14653
14654         * basic.cs, exceptions.cs: break up large tests to increase debugability.
14655
14656 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14657
14658         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
14659
14660 2007-01-12  Raja R Harinath  <rharinath@novell.com>
14661
14662         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
14663
14664 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
14665
14666         * Makefile.am: distribute the mips sources.
14667
14668 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14669
14670         * mini-codegen.h: handle bug #80489 here, by excluding ecx
14671         directly.
14672
14673 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
14674
14675         * cpu-x86.md: back out for now as this triggers other regressions.
14676
14677 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
14678
14679         * cpu-x86.md: force src1 and dest regpair for long shift instructions
14680         to eax:edx, so ecx can't get allocated to them (bug #80489).
14681
14682 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
14683
14684         * mini.c, mini-exceptions.c: enabled running fault handlers
14685         (bug #80469).
14686
14687 2007-01-03  Miguel de Icaza  <miguel@novell.com>
14688
14689         * driver.c: If nothing fail, do not use the string "failed",
14690         because it makes it very annoying to view test result logs on the
14691         web. 
14692
14693 2006-12-30  Miguel de Icaza  <miguel@novell.com>
14694
14695         * debug-debugger.c (mono_debugger_main): Rename "main" to
14696         "main_method" to prevent a warning.
14697
14698         Remove a warning for unused field.
14699
14700 2006-12-28  Martin Baulig  <martin@ximian.com>
14701
14702         * debug-debugger.c
14703         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
14704
14705 2006-12-22  Martin Baulig  <martin@ximian.com>
14706
14707         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
14708         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
14709         seperate `.mdb_debug_info' section, so we can access it from the
14710         debugger even if the binary is stripped.
14711
14712         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
14713         from the `.mdb_debug_info' here to prevent the linker from
14714         removing that section.
14715
14716         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
14717         mdb-debug-info64.s.
14718
14719 2006-12-19  Robert Jordan  <robertj@gmx.net>
14720
14721         * mini-x86: enable the code to return small structures in
14722         registers for FreeBSD as well. Fixes bug #80278.
14723         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
14724
14725 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14726
14727         * mini-x86.c: align the stack when calling the profiler
14728         function instrumenting the prolog (on OSX).
14729
14730 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
14731
14732         * mini.c: emit a break opcode where Debugger.Break () is called.
14733
14734 2006-12-13  Miguel de Icaza  <miguel@novell.com>
14735
14736         * mini.c (mono_method_to_ir): Provide useful information on this
14737         assert, to prevent others from debugging like I did.
14738
14739 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14740
14741         * mini.c: enable code which was incorrectly commented
14742         (bug #80235).
14743
14744 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
14745
14746         * mini-x86.c: enable on OSX, too, the code to return small
14747         structures in registers.
14748
14749 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14750
14751         * mini-x86.c: remove the use of the dynamic code manager here, too.
14752
14753 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
14754
14755         * mini.h, debug-debugger.c, tramp-*.c: fixed 
14756         mono_debugger_create_notification_function() to use
14757         mono_global_codeman_reserve () instead of a dynamic code manager.
14758
14759 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
14760
14761         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
14762         ves_array_element_address() jit icall and use a generated
14763         managed method instead (which is about 4 times faster for a rank 3
14764         array access).
14765
14766 2006-11-29  Mark Mason  <mason@broadcom.com>
14767
14768         * basic-calls.cs: additional tests for passing
14769         structures as function arguments.
14770
14771 2006-11-29  Mark Mason  <mason@broadcom.com>
14772
14773         * mini-mips.h: disable custom exception handling
14774         * mini-mips.c: throw/rethrow should use jalr to call
14775         exception stubs.  Fixed bug with passing structures
14776         by value. More support for tracing floating point
14777         functions.
14778
14779 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14780
14781         * mini.c: fixed typo in the soft-float ldind.r4 handling
14782         (bug #80086).
14783
14784 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
14785
14786         * mini.c, mini.h, driver.c: added --runtime command line
14787         option to select a different runtime than the autodetected one.
14788         * jit.h: added API for embedders to initialize with a specific
14789         runtime version.
14790
14791 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
14792
14793         * mini.c: handle also boxing of r4 values (bug #80024).
14794
14795 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14796
14797         * mini-ppc.c: force indirect calls until we reserve
14798         enough address space for all the generated code.
14799
14800 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
14801
14802         * exceptions-arm.c: workaround bugs in the libc definition
14803         of struct ucontext.
14804
14805 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14806
14807         * inssel.brg: fixes from me and Mark Mason.
14808
14809 2006-11-23  Dick Porter  <dick@ximian.com>
14810
14811         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
14812         semaphore display now we've fixed the initial value
14813
14814 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14815
14816         * inssel.brg: partially revert the last change to fix the build.
14817
14818 2006-11-21  Mark Mason  <mason@broadcom.com>
14819
14820         * inssel.brg: Add and use compare-and-branch macros to support
14821         architectures that do not have condition code registers (ie. MIPS).
14822         * *-mips.{c,brg,md}: Fix copyright statements
14823
14824 2006-11-20  Mark Mason  <mason@broadcom.com>
14825
14826         * Makefile.am: remove mini-codegen.c from list of MIPS sources
14827         * mini.c: Allow GET_CONTEXT to be specified by the arch port
14828         * mini.h: Added declaration for mono_print_ins()
14829         * mini-codegen.c: added ins_spec initializer for MIPS
14830         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
14831         vreg to be virtual and hreg to be non-virtual.
14832         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
14833         is not yet working/implemented correctly.
14834         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
14835         non-static, fixup calls to print_ins() from other parts in the file.
14836
14837 2006-11-20  Mark Mason  <mason@broadcom.com>
14838
14839         * basic-calls.cs: added tests for passing structures as arguments
14840         to calls.
14841
14842 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14843
14844         * inssel-long32.brg: optimize signed division by power of two.
14845
14846 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
14847
14848         * mini-arm.c: added support for interworking with thumb code
14849         (mono must be still be built using the ARM instruction encoding).
14850
14851 2006-11-19  Miguel de Icaza  <miguel@novell.com>
14852
14853         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
14854         verifier has different rules for it.   Fixes a few verifier issues
14855         in the test suite.
14856
14857         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
14858         at the end, so people know what happened.
14859
14860 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
14861
14862         * brach-opts.c: in optimize_exception_target() make sure we
14863         are in a catch clause (fixes bug #79871).
14864
14865 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14866
14867         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
14868         more soft-float support fixes.
14869
14870 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
14871
14872         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
14873         that are passed half on the stack and half in registers.
14874
14875 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
14876
14877         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
14878         more mips integration work from Mark E Mason 
14879         <mark.e.mason@broadcom.com>.
14880
14881 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
14882
14883         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
14884         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
14885         tramp-mips.c: added sources for the mips port, not
14886         integrated in the build yet. Contributed by
14887         Mark E Mason <mark.e.mason@broadcom.com>.
14888
14889 2006-11-14  Neale Ferguson <neale@sinenomine.net>
14890
14891         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
14892
14893 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14894
14895         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
14896         put the soft-float rules in its own file since it seems to
14897         break s390 compilation.
14898
14899 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14900
14901         * mini-arm.c: fixed wrnings.
14902
14903 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
14904
14905         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
14906         inssel-arm.brg: ARM support for soft-float.
14907
14908 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
14909
14910         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
14911         loads and stores of 32 bit fp values.
14912
14913 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
14914
14915         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
14916
14917         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
14918         works. Fixes #79852 and #79463.
14919
14920 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14921
14922         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
14923         more soft-float support WIP and fixes.
14924
14925 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
14926
14927         * mini-arm.c: some VFP updates.
14928
14929 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
14930
14931         * mini-exceptions.c: 0 is a valid local var offset in some
14932         architectures, don't assert (bug #78508).
14933
14934 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
14935
14936         * exceptions-arm.c: fixed off by one error in stack walk code.
14937
14938 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
14939
14940         * mini.h, mini.c: more precise tracking of type load exceptions.
14941
14942 2006-11-03  Robert Jordan  <robertj@gmx.net>
14943
14944         * Makefile.am: [WIN32] Add monow.exe target.
14945         * driver.c: [WIN32] Don't detach the console when debugging.
14946         Fixes bug #79797.
14947         
14948 2006-10-30  Miguel de Icaza  <miguel@novell.com>
14949
14950         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
14951
14952 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
14953
14954         * aot-compiler.c (emit_method_info): Add a case missed earlier.
14955
14956         * driver.c (mini_regression): Fix --regression with AOT.
14957
14958         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
14959
14960 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
14961
14962         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
14963
14964         * mini-sparc.h: Don't use sigaction on sparc/linux.
14965
14966         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
14967
14968         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
14969
14970         * mini-exceptions.c: Add proper include files for getpid ().
14971
14972 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
14973
14974         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
14975         address instead of a MonoJitInfo* to avoid decoding the exception info for the
14976         method.
14977
14978         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
14979         name cache to reduce its size.
14980
14981         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
14982
14983 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
14984
14985         * mini-x86.c: Save/restore the current LMF structure more efficiently using
14986         the mono_lmf TLS variable.
14987
14988         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
14989         trampoline lmf frames.  
14990
14991         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
14992
14993 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
14994
14995         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
14996         the mono_lmf TLS variable.
14997
14998         * mini-exceptions.c: Access the LMF structure through accessors.
14999
15000         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
15001         variable instead of in jit_tls->lmf.
15002
15003         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
15004         
15005         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
15006         trampoline lmf frames.
15007
15008         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
15009
15010 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
15011
15012        * mini.c trace.c mini-x86.c: Revert these too.
15013         
15014        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
15015        signature change.
15016
15017 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
15018
15019         * genmdesc.c: removed now dead code.
15020
15021 2006-10-09  Robert Jordan <robertj@gmx.net>
15022
15023         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
15024
15025 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
15026
15027         * mini.h: do not leave gaps in the opcode values.
15028
15029 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
15030
15031         * jit-icalls.h: flag functions as internal here, too.
15032
15033 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
15034
15035         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
15036         functions with the internal attribute.
15037
15038 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
15039
15040         * aot-compiler.c: fclose the file descriptor in the profile read loop.
15041
15042 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
15043
15044         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
15045         for soft-float.
15046
15047 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
15048
15049         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
15050         tail calls as on other platforms.
15051
15052         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
15053
15054         * iltests.il: Add a few tailcall tests.
15055
15056 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
15057
15058         * driver.c: fix loop for old compilers (bug #79521).
15059
15060 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
15061
15062         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
15063
15064         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
15065
15066         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
15067         metadata without any code.
15068
15069         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
15070         more precise debugging information using gdb.
15071
15072 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
15073
15074         * inssel-ia64.brg: Make the helper methods static.
15075
15076 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
15077
15078         * inssel-x86.brg: make the helper methods static.
15079
15080 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
15081
15082         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
15083
15084 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
15085
15086         * mini.c: updates for monoburg changes.
15087         * inssel.brg: make a few helper functions static as they should.
15088
15089 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
15090
15091         * Makefile.am: Move mini-codegen.c to common_sources.
15092
15093 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
15094
15095         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
15096         instructions.
15097         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
15098         mini-ppc.h: port to use the common local register allocator.
15099
15100 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
15101
15102         * mini.h: Remove the comment too then.
15103
15104 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
15105
15106         * mini.h: put back backend.data which is to be used shortly and
15107         doesn't increase the size of MonoInst. If any 64 bit arch aligned
15108         pointers on 4 byte boundaries it'd have much bigger issues running
15109         and you can ifdef it out anyway.
15110
15111 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
15112
15113         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
15114         MonoInst size by 4 bytes on 64 bit machines.
15115
15116 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
15117
15118         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
15119         replacement with more meaningful field names. Arch maintainers, please
15120         check the assigned names are good enough for your arch.
15121
15122 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
15123
15124         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
15125         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
15126
15127 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
15128
15129         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
15130         relocations and memory requirements, put the optimization flags
15131         definitions in their own file.
15132
15133 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
15134
15135         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
15136
15137         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
15138
15139 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
15140
15141         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
15142
15143 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
15144
15145         * inssel.brg: use the correct function to get the size of an item
15146         in an array, given an element class.
15147         * aot-compiler.c: do not access class->class_size directly.
15148
15149 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
15150
15151         * mini.h, debug-mini.c: added a debugging function to print
15152         info about local variables and arguments in a jitted method.
15153
15154 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
15155
15156         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
15157
15158         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
15159
15160 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
15161
15162         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
15163         inner and outer loops when passing vtypes.
15164
15165 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
15166
15167         * mini-ppc.c: take into account the cpu errata for cache flushing
15168         which caused some random errors (bug #79381).
15169
15170 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
15171
15172         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
15173         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
15174
15175 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
15176
15177         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
15178         loaded.
15179
15180         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
15181         freebsd ports tree.
15182
15183         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
15184         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
15185
15186         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
15187         displacement.
15188
15189 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
15190
15191         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
15192
15193 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
15194
15195         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
15196         macro does not have to be changed during debugging.
15197
15198         * 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>.
15199
15200         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
15201
15202         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
15203         
15204         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
15205         MONO_ARCH_NO_EMULATE_MUL is defined.
15206
15207         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
15208
15209         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
15210
15211         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
15212
15213         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
15214         
15215 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
15216
15217         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
15218         stuff to mini-exceptions.c where it is used.
15219
15220         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
15221         setup code, the real one is in mini-exceptions.c.
15222
15223         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
15224         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
15225         some changes from the freebsd ports tree.
15226
15227         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
15228         constants.
15229         
15230         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
15231
15232 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
15233
15234         * mini.c: on Linux, check for /proc to be mounted
15235         (bug# 79351, novell bug#201204).
15236
15237 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
15238
15239         * mini.c: handle cases where pthread_attr_getstack() behaves
15240         incorrectly (bug #78096).
15241
15242 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
15243
15244         * mini-arm.c: support larger stack frames (bug #79272).
15245
15246 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
15247
15248         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
15249
15250         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
15251         tokens.
15252
15253         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
15254         mono_class_from_name () to find a class from its name.
15255
15256         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
15257
15258 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
15259
15260         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
15261
15262 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
15263
15264         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
15265
15266 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
15267
15268         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
15269         callinfo->trampoline.
15270
15271         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
15272         fixes #79271.
15273         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
15274         future.
15275
15276 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
15277
15278         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
15279
15280 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
15281
15282         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
15283         stats.method_trampolines, it is already done by the generic trampoline code.
15284
15285         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
15286         
15287 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
15288
15289         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
15290
15291         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
15292
15293         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
15294
15295         * mini.c (print_jit_stats): Print mscorlib mempool size too.
15296         
15297         * mini.c (print_jit_stats): Print new stats.
15298
15299         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
15300
15301 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
15302
15303         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
15304         Address on two dimensional arrays. Fixes #78729.
15305
15306         * mini.h (MonoCompile): Add a 'skip_visibility' field.
15307
15308         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
15309         a method.
15310
15311         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
15312
15313         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
15314         #79130.
15315         
15316         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
15317         a race condition.
15318         (mini_get_ldelema_ins): Ditto.
15319
15320 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
15321
15322         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
15323         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
15324         Fixes #79213.
15325
15326 2006-08-29 Neale Ferguson <neale@sinenomine.net>
15327
15328         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
15329         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
15330
15331         * exceptions-s390x.c: Cosmetic change.
15332
15333         * tramp-s390.c: Fix warning.
15334
15335         * cpu-s390.md: Correct length of mul_imm.
15336
15337 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
15338
15339         * aot-compiler.c: added binary writer with ELF backend
15340         implementation (only on Linux/x86 for now).
15341
15342 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
15343
15344         * Makefile.am: Don't run net 2.0 AOT tests.
15345
15346         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
15347         (mono_compile_assembly): Skip net 2.0 assemblies as well.
15348
15349         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
15350
15351 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
15352
15353         * aot-compiler.c: simplified and refactored the asm-writing code
15354         to allow different backends.
15355
15356 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
15357
15358         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
15359
15360         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
15361         little. Share patches of type TYPE_FROM_HANDLE as well.
15362
15363         * mini.c (mono_patch_info_equal): New helper function.
15364         (mono_patch_info_hash): Ditto.
15365
15366         * aot-compiler.c (emit_method_code): Fix s390 build.
15367
15368         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
15369         is not handled because it is stored as a flag and not as a type ctor. Fixes
15370         #79016.
15371
15372 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
15373
15374         * aot-compiler.c: Fix computation of GOT slot statistics.
15375         
15376         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
15377         Also remove support for not PIC AOT.
15378
15379         * mini.h: Bump AOT file format version.
15380
15381         * objects.cs: Add a test for #78990.
15382
15383         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
15384         (peter.dettman@iinet.net.au). Fixes #79087.
15385
15386         * basic-long.cs: Add a test for the above.
15387
15388 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
15389
15390         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
15391         
15392         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
15393         code somewhat.
15394
15395 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
15396
15397         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
15398         exceptions.
15399
15400 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
15401
15402         * mini.c: Don't verify COM proxy invoke calls
15403         
15404
15405 2006-08-10  Dick Porter  <dick@ximian.com>
15406
15407         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
15408         which process is holding semaphores locked.
15409
15410 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
15411
15412         * mini-ia64.c mini-amd64.c: Fix #79027.
15413
15414         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
15415
15416         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
15417
15418         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
15419         implicit arguments in a vararg call. Fixes #79027.
15420
15421 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
15422
15423         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
15424         (mono_get_array_new_va_signature): Ditto.
15425
15426 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
15427
15428         * aot-runtime.c: Call init_plt lazily.
15429
15430         * inssel-long.brg: Fix unsigned long->int conversion.
15431
15432         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
15433
15434         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
15435         that most data is now in the .rss/.data section.
15436
15437 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
15438
15439         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
15440
15441         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
15442
15443         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
15444
15445         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
15446
15447         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
15448         virtual call. Fixes #79010.
15449
15450         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
15451         and use the result as the this argument in the real call.
15452
15453         * generics.2.cs: Add a new test for #79010.
15454         
15455 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
15456
15457         * mini-x86.c: Fix a warning.
15458
15459         * aot-compiler.c: Add a bunch of statistics.
15460
15461         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
15462
15463 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
15464
15465         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
15466
15467 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
15468
15469         * 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>.
15470
15471 2006-07-13  Miguel de Icaza  <miguel@novell.com>
15472
15473         * mini.c (mono_method_to_ir): Obtain the original method in the
15474         CIL stream and use this to perform validation.
15475
15476         Fixed: #78816
15477
15478 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
15479
15480         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
15481         (mono_arch_call_opcode): Ditto.
15482
15483         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
15484         #78826.
15485
15486         * mini.c (mono_patch_info_dup_mp): New helper function.
15487         
15488         * aot-compiler.c (compile_method): Fix some of the memory allocated during
15489         compilation. Fixes #78827.
15490
15491 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
15492
15493         * declsec.c: Use original security informations for
15494           MONO_WRAPPER_MANAGED_TO_MANAGED.
15495
15496 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
15497
15498         * mini.c: Allow Com Interop methods/classes and
15499         don't verify COM wrapper calls
15500         
15501
15502 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
15503
15504         * inssel-long32.brg: Fix long->i4 checked conversion.
15505
15506         * exceptions.cs: Add a test for the above.
15507
15508 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
15509
15510         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
15511
15512         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
15513         leaks.
15514
15515         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
15516         #78775.
15517
15518 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
15519
15520         * mini.c: Fix solaris/x86 exception handling.
15521
15522         * Makefile.am: Get rid of $(ICU_LIBS).
15523
15524 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
15525
15526         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
15527         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
15528         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
15529
15530         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
15531
15532         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
15533         this function causes a SIGSEGV.
15534
15535 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
15536
15537         * mini.c: Remove unused solaris/x86 includes.
15538
15539 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
15540
15541         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
15542
15543 2006-06-20  Jb Evain  <jbevain@gmail.com>
15544
15545         * cpu-g4.md: fix max length of start_handler instruction.
15546
15547 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
15548         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
15549
15550 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
15551         * ssa.c: Fixed bug 78653 for SSA based deadce.
15552         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
15553         MonoInst.flags, used in SSA based deadce.
15554         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
15555         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
15556
15557 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
15558
15559         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
15560         it can end up using non executable memory on ppc64 systems
15561         running ppc32 userspace (fix from Johannes Berg).
15562
15563 2006-06-14  Dick Porter  <dick@ximian.com>
15564
15565         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
15566         4.1.1
15567
15568 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
15569         * mini.c: Made so that inline is locally disabled if it would
15570         trigger a .cctor, because too many apps depend on this behavior
15571         (which seems to be also the one of the MS CLR).
15572
15573 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
15574
15575         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
15576         No idea why this worked before.
15577
15578         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
15579         which branch to outer exception clauses since they could skip the
15580         inner finally clauses. Fixes #78633.
15581
15582         * exceptions.cs: Add a test for the above.
15583
15584         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
15585         Fixes #78629.
15586
15587         * iltests.il: Add a test for the above.
15588
15589 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
15590
15591         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
15592         after the end of a try bblock, to prevent asserts in mini_method_compile ().
15593
15594         * iltests.il: Add a test for the above.
15595
15596 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
15597
15598         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
15599         
15600         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
15601         methods as instrinsics.
15602
15603 2006-06-09  Wade Berrier <wberrier@novell.com>
15604
15605         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
15606         (simple-cee-ops.h ssapre-mini-ops.h)
15607
15608 2006-06-09  Neale Ferguson <neale@sinenomine.net>
15609
15610         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
15611         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
15612         instruction).
15613         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
15614         * cpu-s390x.md: Fix max. length values for a couple of instructions.
15615
15616 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
15617
15618         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
15619
15620 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
15621
15622         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
15623         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
15624         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
15625         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
15626         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
15627         of opcodes, so that bug 78549 should not happen again.
15628         * ssapre.c: Updated to use the renamed files.
15629
15630 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
15631
15632         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
15633         in OP_ATOMIC_EXCHANGE_I4.
15634
15635 2006-06-07  Wade Berrier <wberrier@novell.com>
15636
15637         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
15638         in mono_debugger_create_notification_function)
15639
15640 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
15641
15642         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
15643         
15644         * mini.c (type_from_stack_type): Disable some changes which do not
15645         seem to work.
15646
15647         * driver.c: Reenable opts.
15648
15649         * mini.h (MonoStackSlot): New structure to keep track of the verification state
15650         of the evaluation stack.
15651         
15652         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
15653         evaluation stack trace at entry to the bblock.
15654
15655         * mini.c (merge_stacks): New function to perform verification of stack merges.
15656         Turned off by default.
15657
15658         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
15659         STACK_MP.
15660         
15661 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
15662
15663         * local-propagation.c: Fixed bug 78549.
15664
15665 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
15666
15667         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
15668
15669 2006-06-02  Miguel de Icaza  <miguel@novell.com>
15670
15671         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
15672         tramp-arm.c, tramp-ia64.c
15673         (mono_debugger_create_notification_function): Update signature to
15674         new signature and use new protocol for creating the notification
15675         function.  
15676
15677         Should fix the build.
15678
15679 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
15680
15681         * exceptions-ppc.c (mono_jit_walk_stack)
15682         (ves_icall_get_frame_info): Fix the build
15683
15684 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
15685
15686         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
15687
15688 2006-05-31  Raja R Harinath  <rharinath@novell.com>
15689
15690         * il2tests.2.il: New file for generics CIL tests.  Add test for
15691         #78019.
15692         * Makefile.am: Update.
15693
15694         Fix #78019
15695         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
15696         to nullable types.
15697
15698 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
15699
15700         * aliasing.c: Fixed bug 78311.
15701
15702 2006-05-29  Martin Baulig  <martin@ximian.com>
15703
15704         * mini-exceptions.c (mono_find_jit_info): When computing the
15705         native offset, check whether we're actually inside the method's
15706         code; call mono_debug_print_stack_frame() to format the frame.
15707         (ves_icall_System_Exception_get_trace): Call
15708         mono_debug_print_stack_frame() to format the stack frame.
15709         (ves_icall_get_trace): Update to the new debugging API.
15710         (mono_jit_walk_stack_from_ctx): Likewise.
15711         (ves_icall_get_frame_info): Likewise.
15712
15713         * mini.c (get_method_from_ip): Use the new debugging API.
15714         (mono_print_method_from_ip): Likewise.
15715
15716         * exceptions-ppc.c
15717         (mono_jit_walk_stack): Use the new debugging API.
15718         (ves_icall_get_frame_info): Likewise.   
15719
15720 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
15721
15722         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
15723
15724 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
15725
15726         * mini.c: Added "limitator" to inline for debugging.
15727
15728 2006-05-24  Martin Baulig  <martin@ximian.com>
15729
15730         * debug-debugger.c (mono_debugger_init): Create a private,
15731         malloc()-based code manager for the notification function and
15732         intentionally leak it on exit.  This fixes the crash-on-exit race
15733         condition.
15734
15735         * tramp-amd64.c
15736         (mono_debugger_create_notification_function): Added
15737         `MonoCodeManager *' argument.
15738
15739         * tramp-x86.c
15740         (mono_debugger_create_notification_function): Added
15741         `MonoCodeManager *' argument.
15742
15743 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
15744
15745         * aliasing.c: Fixed 64 bit issue.
15746         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
15747         default since all known bugs are fixed (one more time!).
15748
15749 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
15750
15751         * mini.c: write barrier support.
15752
15753 2006-05-23  Martin Baulig  <martin@ximian.com>
15754
15755         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
15756         check at the top of the file.
15757
15758 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
15759
15760         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
15761         reverting changes without reason and without changelog entries.
15762
15763 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
15764
15765         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
15766         to a few opcodes. Fixes #78439.
15767
15768         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
15769         consistency with other archs.
15770
15771         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
15772
15773 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
15774
15775         * debug-debugger.c: fix the build.
15776
15777 2006-05-17  Martin Baulig  <martin@ximian.com>
15778
15779         * debug-debugger.c
15780         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
15781         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
15782         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
15783         (debugger_attach): Call GC_mono_debugger_add_all_threads().
15784
15785 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
15786
15787         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
15788
15789 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
15790
15791         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
15792         MONO_TYPE_GENERICINST.
15793         
15794         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
15795         MONO_TYPE_GENERICINST.
15796
15797 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
15798
15799         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
15800         #78325.
15801
15802 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
15803
15804         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
15805         mempool.
15806         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
15807
15808 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
15809
15810         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
15811         mono_trace_cleanup ().
15812
15813         * iltests.il: Fix problem with the newly added test.
15814
15815         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
15816         due to register constraints, free up the previous hreg. Fixes #78314.
15817
15818         * iltests.il: Add new test for #78314.  
15819
15820         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
15821         Interlocked.Add. Fixes #78312.
15822
15823         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
15824         
15825 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
15826
15827         * inssel.brg (mini_emit_virtual_call): Fix a warning.
15828
15829 2006-05-05  Martin Baulig  <martin@ximian.com>
15830
15831         * debug-mini.c (mono_debug_open_block): New method.
15832
15833         * mini-amd64.c
15834         (mono_arch_output_basic_block): Call mono_debug_open_block() at
15835         the beginning of each basic block.
15836
15837         * mini-x86.c
15838         (mono_arch_output_basic_block): Call mono_debug_open_block() at
15839         the beginning of each basic block.
15840
15841 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
15842
15843         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
15844         default until I understand why they break the build on amd64.
15845
15846 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
15847
15848         * mini.c (mini_cleanup): Call mono_cleanup ().
15849
15850         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
15851         errors.
15852
15853 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
15854
15855         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
15856         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
15857         default since all known bugs are fixed, and I cannot reproduce bug
15858         77944... I'm asking Matt Hargett to test again after this commit.
15859
15860 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
15861
15862         * mini-codegen.c: Fixed typo that thrashed inline.
15863
15864 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
15865
15866         * dominators.c (compute_dominators): Avoid using a worklist since
15867         it is not correct in some cases. Instead, iterate over all bblocks as
15868         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
15869
15870 2006-04-28  Miguel de Icaza  <miguel@novell.com>
15871
15872         * mini.c (mono_jit_compile_method_inner): Use
15873         mono_prepare_exception_from_error that resets the value
15874         internally.
15875
15876 2006-04-27  Miguel de Icaza  <miguel@novell.com>
15877
15878         * mini.c: Move the mini_loader_error_to_exception to metadata. 
15879         
15880 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
15881
15882         * aliasing.c: Fixed bug 78210.
15883
15884 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
15885
15886         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
15887         default until all their problems (or the ones they trigger) are fixed.
15888
15889 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
15890
15891         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
15892         
15893         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
15894         as loaded only after resolving patches since that could invoke the same method.
15895
15896         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
15897
15898         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
15899         functions.
15900
15901         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
15902         AOT loader.
15903
15904         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
15905         stack.
15906
15907         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
15908         made from AOT code through the PLT table.
15909
15910         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
15911         holding the plt offset when a call is made to the aot plt trampoline.
15912         
15913 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
15914
15915         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
15916         amd64 AOT support.
15917
15918         * Makefile.am (common_sources): Fix build breakage.
15919
15920         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
15921         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
15922         intra-assembly calls if possible.
15923         
15924         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
15925
15926         * mini-trampolines.c: Handle PLT entries.
15927
15928         * mini.c: Avoid creating a GOT var for calls.
15929
15930         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
15931         from mscorlib code.
15932
15933         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
15934         from mscorlib code.
15935
15936         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
15937         AOT code.       
15938
15939         * mini.h: Bump AOT file format version.
15940         
15941         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
15942         covers more cases.
15943
15944 2006-04-25  Martin Baulig  <martin@ximian.com>
15945
15946         * driver.c: Disable copyprop, consprop and inline when running
15947         inside the debugger.
15948
15949 2006-04-25  Martin Baulig  <martin@ximian.com>
15950
15951         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
15952         with `get_current_thread' and added `detach'.
15953         (MonoDebuggerMetadataInfo): Added `thread_size',
15954         `thread_tid_offset', `thread_stack_ptr_offset' and
15955         `thread_end_stack_offset'.
15956
15957 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
15958
15959         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
15960         aot-runtime.c.
15961
15962         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
15963         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
15964
15965         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
15966
15967         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
15968
15969         * aot.c: Add support for ADJUSTED_IID.  
15970
15971 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
15972
15973         * aot.c (emit_method_order): Don't align method_order_end.
15974
15975         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
15976         the interface ID changes.
15977
15978 2006-04-21  Dick Porter  <dick@ximian.com>
15979
15980         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
15981         cleaning up a thread.  Fixes the new part of bug 77470.
15982
15983 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
15984
15985         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
15986         to managed wrapper.
15987                      
15988 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
15989
15990         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
15991         
15992         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
15993         SIGSEGV. Fixes #78072.
15994
15995         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
15996         unregister our SIGABRT handler.
15997
15998 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
15999
16000         * mini.c: Disabled inline where it can alter the call stack in a
16001         way visible from managed code.
16002         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
16003         default.
16004
16005 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
16006
16007         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
16008         on other platforms. Fixes #78089.
16009
16010 2006-04-13  Martin Baulig  <martin@ximian.com>
16011
16012         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
16013         determine whether we're inside the debugger.
16014
16015         * debug-debugger.h
16016         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
16017
16018 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
16019
16020         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
16021         handler clauses. Fixes #78024.
16022
16023         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
16024         in the CALL_MEMBASE opcodes. Fixes #78088.
16025         (mono_arch_get_vcall_slot_addr): Ditto.
16026
16027 2006-04-10  Martin Baulig  <martin@ximian.com>
16028
16029         * debug-debugger.c: The thread handling code has now been moved
16030         into ../metadata/threads.c.
16031
16032 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
16033
16034         * driver.c (mono_main): Fix --with-gc=none build.
16035
16036         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
16037         (mono_spillvar_offset_float): Ditto.
16038         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
16039         hreg, not when its !global, since on ia64, there is a third category: stacked
16040         registers.      
16041
16042 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
16043
16044         * mini.c: set MonoInst->klass for load field address and a few other
16045         places.
16046
16047 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
16048
16049         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
16050
16051 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
16052
16053         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
16054         the branch opt changes.
16055
16056 2006-04-06  Dick Porter  <dick@ximian.com>
16057
16058         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
16059         
16060         * wapihandles.c (mini_wapi_seminfo): 
16061         * driver.c (mono_main): Add semaphore info option
16062
16063 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
16064
16065         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
16066         branch optimization changes. Fixes #78009.
16067
16068 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
16069
16070         * mini.c: ignore accessibility of methods in managed->native wrappers.
16071
16072 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
16073
16074         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
16075         
16076         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
16077
16078 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
16079
16080         * mini.c: Modify the branch optimizations to preserve the invariant that
16081         the entries inside the in_bb and out_bb arrays are unique.
16082         (mono_unlink_bblock): Avoid creation of new arrays.
16083
16084 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
16085
16086         * mini.c (mono_unlink_bblock): Fix regression caused by previous
16087         change (#77992).
16088
16089 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
16090
16091         * mini.c (optimize_branches): Remove the "optimizations" in
16092         the cbranch1/cbranch2 -> branch cases which were causing several
16093         problems in the past. Fixes #77986.
16094
16095 2006-03-31  Chris Toshok  <toshok@ximian.com>
16096
16097         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
16098         default optimizations :(
16099
16100 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
16101
16102         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
16103         branch.
16104
16105 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
16106
16107         * local-propagation.c: Added comments to structs and removed
16108         "Mono" prefixes from local tree mover types.
16109
16110 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
16111
16112         * Makefile.am (arch_sources): Define this for each architecture so 
16113         libmono_la_SOURCES is defined in one place.
16114
16115 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
16116
16117         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
16118         from handles/.
16119
16120 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
16121
16122         * driver.c: print the GC name supplied by configure.
16123
16124 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
16125
16126         * local-propagation.c: Added tree mover, and moved here all the
16127         local propagation code from mini.c
16128         * mini.c: Added support for treeprop, and moved all the local
16129         propagation code to local-propagation.c
16130         * mini.h: Added support for treeprop
16131         * driver.c: Added support for treeprop, enabled consprop, copyprop,
16132         treeprop, inline and deadce by default
16133         * Makefile.am: Added local-propagation.c
16134
16135 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
16136
16137         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
16138
16139 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
16140
16141         * debug-debugger.c: make it compile without the Boehm GC.
16142
16143 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16144
16145         * mini.c: fixed issue with mismatch when an icall is registered
16146         with multiple names but same address.
16147
16148 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
16149
16150         * declsec.c, mini-exceptions.c: use write barrier to set reference
16151         fields of managed objects.
16152
16153 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
16154
16155         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
16156         (can_access_internals): Fix a warning.
16157
16158         * mini.c (print_method_from_ip): Rename this to 
16159         mono_print_method_from_ip so it gets exported.
16160
16161         * trace.c: Deal with strings inside StringBuilder's containing garbage
16162         and fix memory leaks. Fixes #77848.
16163
16164 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
16165
16166         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
16167         fixes #77787.
16168
16169 2006-03-16 Neale Ferguson <neale@sinenomine.net>
16170         
16171         * mini-s390.c: Remove OP_X86_TEST_NULL.
16172
16173 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
16174
16175         * mini.c: use the correct GetHashCode() for the moving collector.
16176
16177 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
16178
16179         * liveness.c: Regalloc spill cost tuning.
16180
16181 2006-03-15 Neale Ferguson <neale@sinenomine.net>
16182         
16183         * mini-s390x.h: Correct S390_LONG macro.
16184
16185         * mini-s390x.c: Cleanup unused code.
16186
16187 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
16188
16189         * jit-icalls.h: New file.
16190
16191         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
16192         icalls and include that instead of including jit-icalls.c.
16193
16194         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
16195         OP_X86 opcodes.
16196
16197 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
16198
16199         * mini.c: when checking for member accessibility, also check for
16200         friend assemblies and for explicit interface implementations.
16201
16202 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
16203
16204         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
16205
16206         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
16207
16208         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
16209         common cases are done first.    
16210
16211         * mini-ops.h: Only define platform specific opcodes on the given platform.
16212
16213         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
16214         branch.
16215         
16216 2006-03-14  Martin Baulig  <martin@ximian.com>
16217
16218         Revert Paolo's change from r57348:
16219
16220         * mini.h: don't use gboolean for bitfields.
16221         * mini.c: verifier changes for fields and methods accessibility.
16222
16223 2006-03-13  Neale Ferguson <neale@sinenomine.net>
16224
16225         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
16226
16227         * mini-s390x.c: Fix conv_r_un.
16228
16229         * cpu-s390, cpu-s390x.md: Fix lengths.
16230
16231 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
16232
16233         * mini.c: nested types have access to all the nesting
16234         levels, not just the enclosing types.
16235
16236 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16237
16238         * mini.c: added a few more verification checks.
16239
16240 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
16241
16242         * liveness.c: Merge optimizations from the linear-il branch.
16243
16244 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
16245
16246         * mini-ia64.c (emit_call): Add a comment.
16247
16248         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
16249
16250         * tramp-ia64.c: Fix some warnings.
16251
16252 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
16253
16254         * mini.h: don't use gboolean for bitfields.
16255         * mini.c: verifier changes for fields and methods accessibility.
16256
16257 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
16258
16259         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
16260         lazy icall wrapper changes.
16261
16262         * dominators.c: Replace all the dominator algorithms with faster
16263         ones from the linear-il branch.
16264
16265         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
16266         the mempool.
16267
16268         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
16269         common cases are done first.
16270
16271         * mini-amd64.c: Fix some warnings.
16272
16273         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
16274         from the mempool.
16275
16276         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
16277         added code.
16278
16279         * mini.h: Add a missing prototype.
16280
16281 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
16282
16283         * mini.c: Compile icall wrappers lazily.
16284
16285         * mini-codegen.c: Use printf instead of g_print since its much faster.
16286
16287         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
16288         function.
16289
16290         * mini.c (optimize_branches): Cache the negative result from 
16291         remove_block_if_useless ().
16292
16293         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
16294         Also fix some bblock linking issues.
16295
16296         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
16297         assembly files.
16298
16299         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
16300
16301         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
16302         accessed fields first, for better cache behavior.
16303         
16304 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16305
16306         * mini.c: speedup IList<T> array accesses.
16307
16308 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
16309
16310         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
16311         inline_costs counter. Fixes #77190.
16312
16313 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
16314
16315         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
16316         trace messages. Fixes #77706.
16317
16318 2006-03-04  Martin Baulig  <martin@ximian.com>
16319
16320         * tramp-amd64.c, tramp-x86.c
16321         (mono_debugger_create_notification_function): Use
16322         mono_global_codeman_reserve() to allocate a buffer at runtime and
16323         return it.
16324
16325         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
16326
16327         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
16328         notification function at runtime and then call `initialize' in the
16329         `MONO_DEBUGGER__debugger_info' vtable.
16330
16331 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
16332
16333         * iltests.il: Fix a visibility problem.
16334
16335 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
16336
16337         * driver.c, mini.c: add hooks for the counters API.
16338
16339 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
16340
16341         * driver.c: show disabled options.
16342
16343 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16344
16345         * linear-scan.c: always use cost-driven selection.
16346
16347 2006-02-28  Raja R Harinath  <rharinath@novell.com>
16348
16349         * jit-icalls.c (helper_compile_generic_method): Revert change from
16350         2006-02-24.
16351
16352 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
16353
16354         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
16355
16356 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
16357
16358         * inssel.brg: style fixes, mostly to force the updated monoburg
16359         to run for people using svn.
16360
16361 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
16362
16363         * mini.c: match monoburg changes.
16364
16365 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16366
16367         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
16368         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
16369         declaration in the header file.
16370
16371 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
16372
16373         * helpers.c: reduce relocations and mem usage.
16374
16375 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
16376
16377         * mini.h, mini-codegen.c: disable logging features if
16378         requested by configure.
16379
16380 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
16381
16382         * mini.c: tiny verifier changes.
16383
16384 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
16385
16386         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
16387         cpu-pentium.md: stack alignment changes for osx/x86,
16388         partially from Geoff Norton <gnorton@customerdna.com>.
16389
16390 2006-02-24  Raja R Harinath  <harinath@gmail.com>
16391
16392         * jit-icalls.c (helper_compile_generic_method): Update to changes
16393         in metadata/class.c.
16394
16395 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
16396         
16397         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
16398         
16399         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
16400         interface calls with large offsets.
16401
16402 2006-02-23  Raja R Harinath  <rharinath@novell.com>
16403
16404         * jit-icalls.c (helper_compile_generic_method): Document the
16405         special-case we depend on so that we can inflate the method twice
16406         with the same context with no bad side-effects.
16407
16408 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
16409
16410         * mini-x86.c, mini-amd64.c: fix for case when xen support
16411         is disabled.
16412
16413 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
16414
16415         * mini-x86.c, mini-amd64.c: generate code to access tls items
16416         in a faster way for Xen systems.
16417
16418 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
16419
16420         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
16421         updates and compilation fixes for the OSX/x86 port, mostly from
16422         Geoff Norton <gnorton@customerdna.com>.
16423
16424 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16425
16426         * inssel.brg: faster interface call implementation
16427         to sync with the interface_offsets MonoVTable changes.
16428
16429 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
16430
16431         * mini.c: more verification checks.
16432
16433 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
16434
16435         * mini.c: added a few more verification checks.
16436
16437 2006-02-17      Neale Ferguson <neale@sinenomine.net>
16438
16439         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
16440         facility on the processor and use it if available.
16441
16442 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
16443
16444         * driver.c, aot.c, mini.c: throw exception if the IL code is
16445         invalid or unverifiable.
16446
16447 2006-02-17  Raja R Harinath  <rharinath@novell.com>
16448
16449         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
16450         m.StructField.
16451
16452 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
16453
16454         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
16455
16456 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16457
16458         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
16459         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
16460         handling of instantiated generic valuetypes.
16461
16462 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
16463
16464         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
16465         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
16466         instead.
16467
16468         * generics.2.cs: Revert the nullable reftypes tests.
16469
16470 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
16471
16472         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
16473         using __builtin_frame_address (1) as it doesn't work in the presence
16474         of optimizations. Hopefully fixes #77273.
16475
16476         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
16477         -> generics.cs change as it doesn't work with some automake versions.
16478
16479 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16480
16481         * mini.c: handle systems that sue a different way to
16482         retrieve the stack address of the current thread.
16483
16484 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
16485
16486         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
16487         it specially in the makefile.
16488
16489         * generics.2.cs: Add tests for nullable reference types.
16490
16491 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16492
16493         * mini.c: always handle the case when mono_jit_init()
16494         is called in a thread different from the main thread,
16495         confusing libgc (bug #77309).
16496
16497 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
16498
16499         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
16500
16501 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16502
16503         * mini.c: change optimize_branches () to use a single loop
16504         and introduce a new optimization to simplify some range checks.
16505
16506 2006-02-03  Martin Baulig  <martin@ximian.com>
16507
16508         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
16509         and merged with debugger_thread_manager_add_thread().
16510         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
16511         inform the debugger about the main thread.
16512
16513 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
16514
16515         * basic.cs: Add test for div.un/rem.un constant folding.
16516
16517 2006-02-03  Neale Ferguson <neale@sinenomine.net>
16518
16519         * cpu-s390x.md: correct int_xor_imm length
16520
16521 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
16522
16523         * generics.2.cs: New test for #77442.
16524
16525         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
16526         #77442.
16527
16528 2006-02-02  Martin Baulig  <martin@ximian.com>
16529
16530         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
16531         <mono/metadata/mono-debug-debugger.h>   
16532
16533         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
16534
16535 2006-02-02  Martin Baulig  <martin@ximian.com>
16536
16537         * debug-debugger.h: New header file for debug-debugger.c.
16538
16539         * debug-debugger.c: Big API cleanup; don't run the managed Main()
16540         function is a separate thread anymore; add support for attaching.
16541
16542 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
16543
16544         * tramp-x86.c: Fix a warning.
16545
16546 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
16547
16548         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
16549         on very large methods.
16550
16551         * aot.c (load_patch_info): Fix a warning.
16552
16553 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
16554
16555         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
16556         mini-ops.h: alu membase optimizations.
16557
16558 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
16559
16560         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
16561         to speedup StringBuilder.
16562
16563 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
16564
16565         * dominators.c (mono_compute_natural_loops): Fix detection of
16566         loop body start blocks.
16567
16568         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
16569
16570 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
16571
16572         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
16573         #75145.
16574
16575 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
16576
16577         * aliasing.c: Fixed aliasing issue on 64 bit archs.
16578
16579 2006-01-25  Martin Baulig  <martin@ximian.com>
16580
16581         * debug-debugger.c: Moved the `MonoDebuggerManager' and
16582         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
16583         started to cleanup this file a little bit.
16584
16585 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
16586
16587         * mini.c: optimize a codepath frequently happening in generics code.
16588
16589 2006-01-23  Martin Baulig  <martin@ximian.com>
16590
16591         * Makefile.am: Only compile debug-debugger.c on supported platforms.
16592
16593         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
16594         functions directly.
16595
16596         * driver.c: debug-debugger.c is only available if
16597         `MONO_DEBUGGER_SUPPORTED' is defined.   
16598
16599 2006-01-23  Martin Baulig  <martin@ximian.com>
16600
16601         * debug-debugger.c: Only enable this on platforms where the Mono
16602         Debugger is working (x86 and x86_64).
16603
16604 2006-01-21  Martin Baulig  <martin@ximian.com>
16605
16606         The Mono Debugger is now using the normal `mono' instead of the
16607         `mono-debugger-mini-wrapper' when executing managed code.
16608
16609         * debug-debugger.c: New file; previously known as
16610         debugger/wrapper/wrapper.c.
16611
16612         * debug-mini.c (mono_init_debugger): Removed.
16613
16614         * driver.c (mono_main): Added new `--inside-mdb' command line
16615         argument which is used when running inside the debugger.
16616
16617 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
16618
16619         * liveness.c (mono_analyze_liveness): Remove some unused data
16620         structures.
16621
16622 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
16623
16624         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
16625
16626 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
16627
16628         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
16629         depends on implementation details of monobitset.
16630
16631         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
16632         Fixes #77271.
16633
16634 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
16635
16636         * liveness.c: Update after monobitset changes.
16637
16638 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
16639
16640         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
16641
16642 2006-01-11 Neale Ferguson <neale@sinenomine.net>
16643
16644         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
16645
16646         * mini-s390x.c: Remove warning messages.
16647
16648 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
16649
16650         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
16651
16652 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
16653
16654         * generics.2.cs: Add ldelem/stelem_any test.
16655
16656 2006-01-10 Neale Ferguson <neale@sinenomine.net>
16657
16658         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
16659
16660 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
16661
16662         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
16663         
16664 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
16665
16666         * generics.2.cs: Reenable vtype tests.
16667
16668         * inssel-x86.brg: Remove an icorrect valuetype rule.
16669
16670 2006-01-06 Neale Ferguson <neale@sinenomine.net>
16671
16672         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
16673         initial support for OP_ABS.
16674
16675 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16676
16677         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
16678
16679 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16680
16681         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
16682         conversion and implement LADD/LSUB.
16683
16684         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
16685         architectures.
16686
16687 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16688
16689         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
16690
16691         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
16692         architectures.
16693
16694 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16695
16696         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
16697         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
16698         (stack walk problem).
16699
16700 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
16701
16702         * aot.c (mono_aot_load_method): Fix a warning.
16703
16704 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16705
16706         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
16707
16708 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
16709
16710         * iltests.il: Add test for #77148.
16711
16712         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
16713         #77148.
16714
16715 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16716
16717         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
16718
16719 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16720
16721         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
16722         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
16723
16724         * basic-long.cs: Add lconv-to-r4/r8 tests.
16725
16726 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
16727
16728         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
16729
16730         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
16731         here as on other archs.
16732
16733 2005-12-29 Neale Ferguson <neale@sinenomine.net>
16734
16735         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
16736
16737 2005-12-29 Neale Ferguson <neale@sinenomine.net>
16738
16739         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
16740         
16741         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
16742
16743         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
16744         instrument_prolog; Add memory_barrier instruction.
16745
16746 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
16747
16748         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
16749
16750 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
16751
16752         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
16753
16754         * aliasing.c inssel.brg: Fix warnings.
16755
16756         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
16757         could skip initialization of some parts of memory.
16758
16759         * mini.c mini-ia64.c: Fix warnings.
16760
16761         * inssel-sparc.brg: Add an implementation of lneg which actually works.
16762
16763 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
16764
16765         * aliasing.c (mono_build_aliasing_information): Add a workaround for
16766         a crash seen on sparc.
16767
16768         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
16769         
16770         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
16771
16772 2005-12-21 Neale Ferguson <neale@sinenomine.net>
16773
16774         * mini-ops.h: Add s390_backchain instruction
16775
16776         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
16777
16778         * cpu-s390.md: Add s390_backchain instruction
16779
16780         * mini-s390.c: Significant ABI changes
16781
16782         * mini-s390.h: Cater for zero length structures
16783
16784 2005-12-20 Neale Ferguson <neale@sinenomine.net>
16785
16786         * mini-s390.c: ABI fixes
16787
16788         * inssel-s390.brg: Remove debug statements
16789
16790         * cpu-s390.md: Fix length of ATOMIC_xx operations
16791
16792 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
16793
16794         * basic-float.cs: Add float<->long conversion tests.
16795
16796 2005-12-16 Neale Ferguson <neale@sinenomine.net>
16797
16798         * mini-s390.c: Fix LOCALLOC processing.
16799
16800         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
16801
16802 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
16803
16804         * iltests.il: Add tests for some opcodes not covered by the other
16805         tests.
16806
16807 2005-12-15 Neale Ferguson <neale@sinenomine.net>
16808
16809         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
16810         register loading for Tail processing; Correct trace output.
16811
16812         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
16813
16814         * cpu-s390.md: Correct size of jmp instruction. 
16815
16816 2005-12-13 Neale Ferguson <neale@sinenomine.net>
16817
16818         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
16819
16820 2005-12-13 Neale Ferguson <neale@sinenomine.net>
16821
16822         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
16823           Bring s390 up to current level.
16824
16825 2005-12-12  Zltan Varga  <vargaz@gmail.com>
16826
16827         * generics.2.cs: Disable the newly added tests as they do not work yet.
16828         
16829         * generics.2.cs: Add valuetype tests.
16830
16831 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
16832
16833         * basic-long.cs: Add i4->u8 test.
16834
16835         * objects.cs: Add tests for JIT intrinsic.
16836
16837         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
16838         optimizations lost by a mistake.
16839
16840 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
16841
16842         * basic-long.cs: Remove a test moved to objects.cs.
16843
16844         * arrays.cs: Add more array tests.
16845
16846 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
16847
16848         * arrays.cs: Add new tests for multi-dimensional arrays.
16849
16850 2005-12-06  Raja R Harinath  <rharinath@novell.com>
16851
16852         * Makefile.am (test_sources2): Add generics.2.cs.
16853         (EXTRA_DIST): Add test_sources2.
16854
16855 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
16856
16857         Support for boxing and unboxing nullable types as well as the
16858         isinst operation on nullables, per the CLI ammendment.
16859
16860         * inssel.brg (CEE_ISINST): Special case for nullable
16861
16862         * mini.c (handle_unbox_nullable): new method
16863         (handle_box): Special case for nullable types
16864         (mono_method_to_ir): Call handle_unbox_nullable in correct
16865         places.
16866
16867         * generics.2.cs: New test suite
16868
16869         * Makefile.am: Support for regression tests with generics.
16870
16871 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
16872
16873         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
16874         allocated to registers. Fixes #76800.
16875
16876 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
16877
16878         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
16879
16880 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
16881
16882         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
16883         of platforms.
16884
16885 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
16886
16887         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
16888         objects.cs.
16889
16890         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
16891         
16892         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
16893 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
16894
16895         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
16896         single precision before storing to a single precision location.
16897
16898 2005-11-28  Raja R Harinath  <rharinath@novell.com>
16899
16900         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
16901
16902 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
16903
16904         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
16905         correct files.
16906
16907         * basic.cs: Remove test_0_byte_compares test which was moved to
16908         objects.cs a long time ago.
16909
16910 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
16911
16912         * aliasing.c: Fixed aliasing issue on 64 bit archs.
16913
16914 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
16915
16916         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
16917         handlers are called.
16918
16919         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
16920         throwing code.
16921
16922          * mini-ia64.c: Add support for the throw->branch exception 
16923         optimization.   
16924
16925         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
16926
16927 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
16928
16929         * mini.c: Enabled "fastpath" deadce :-)
16930         
16931 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
16932
16933         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
16934         alias analysis pass to support it.
16935         * mini.h: Likewise.
16936         * ssa.c: Likewise.
16937         * liveness.c: Likewise (liveness computation can use aliasing
16938         information to be more accurate).
16939         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
16940         moreover made so that "--compile-all" uses the given optimization
16941         flags and not the default ones.
16942         * aliasing.c: Alias analysis (new file).
16943         * aliasing.h: Likewise.
16944         * Makefile.am: added "aliasing.c" and "aliasing.h".
16945         
16946 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
16947
16948         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
16949         OP_L opcodes.
16950
16951 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
16952
16953         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
16954         fp >= end_of_stack exit condition, as it is not needed, and it might
16955         become true for fp eliminated frames.
16956
16957 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
16958
16959         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
16960         coded offsets.
16961
16962 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
16963
16964         * mini-arm.c: fixed alignment of doubles/longs to match
16965         the C ABI (bug #76635).
16966
16967 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
16968
16969         * aot.c: fix compilation with --enable-minimal=aot.
16970
16971 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
16972
16973         * mini-arm.c: fixed compatibility with the new
16974         floating point emulator package for compares.
16975
16976 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
16977
16978         * mini.c : reverted sig->pinvoke changes (r51396-51397).
16979
16980 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
16981
16982         * mini-exceptions.c (print_stack_frame): Output to stderr.
16983         (mono_handle_native_sigsegv): Ditto.
16984
16985 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
16986
16987         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
16988         OP_LCONV_TO_OVF_I implementation.
16989
16990         * mini-amd64.c: Add support for the throw->branch exception 
16991         optimization.
16992
16993         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
16994         when the catch clause catches a more general exception, i.e. Object.
16995
16996 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
16997
16998         * cpu-ia64.md: Remove unused opcodes.
16999
17000         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
17001         specific defines for architectures defining USE_SIGACTION.
17002
17003         * mini-ia64.c: Fix some warnings.
17004
17005         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
17006         version seemed to skip a frame.
17007
17008 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
17009
17010         * mini.c: Clean up the usage of sig->pinvoke flag. Now
17011         only calls which are made to native code use this flag.
17012
17013 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
17014
17015         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
17016         varargs methods as well.
17017         
17018         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
17019         which have save_lmf set. Reorganize methods prologs a bit.
17020
17021         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
17022         debugger to the proper place.
17023
17024 2005-10-29  Martin Baulig  <martin@ximian.com>
17025
17026         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
17027         when running inside the debugger until the debugger has support
17028         for it.
17029
17030 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
17031
17032         * mini.h: Fix a warning.
17033
17034 2005-10-24  Miguel de Icaza  <miguel@novell.com>
17035
17036         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
17037         we expose publicly, this returns the string.
17038
17039 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
17040
17041         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
17042         with fp elimination.
17043
17044 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
17045
17046         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
17047         native stacktrace using the glibc 'backtrace' function if available.
17048
17049 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
17050
17051         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
17052
17053         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
17054         handle SIGSEGVs received while in native code.
17055
17056         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
17057         code, call mono_handle_native_sigsegv which will abort the runtime
17058         after printing some diagnostics, instead of converting it into a
17059         confusing NullReferenceException.
17060
17061 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
17062
17063         * cpu-pentium.md: Remove unused opcodes.
17064
17065 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
17066
17067         * mini-amd64.h (MonoLMF): Add rsp field.
17068
17069         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
17070         the lmf too.
17071
17072 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
17073
17074         * mini-codegen.c (get_register_spilling): Fix some warnings.
17075
17076 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
17077
17078         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
17079         elimination during exception handling. Enable fp elimination by
17080         default.
17081
17082         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
17083         elimination.
17084
17085 2005-10-16  Martin Baulig  <martin@ximian.com>
17086
17087         * mini-exceptions.c
17088         (mono_debugger_run_finally): New public method for the debugger.
17089
17090 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
17091
17092         * debug-mini.c (mono_debug_init_method): Fix warning.
17093
17094         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
17095         the 'exname' parameter const to fix some warnings.
17096
17097 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
17098
17099         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
17100         introduced by the previous patch.
17101
17102 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
17103
17104         * basic-float.cs: Add test for precision of float arithmetic.
17105
17106         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
17107         when loading/storing single values from/to memory.
17108
17109         * mini.c (mono_jit_compile_method_with_opt): Create the function
17110         pointers in the correct domain.
17111
17112 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
17113
17114         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
17115         introduced by previous patch.
17116         
17117         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
17118         when out_filter_idx is NULL.
17119
17120         * mini-exceptions.c: Don't run filter clauses twice during exception
17121         handling. Fixes #75755.
17122
17123 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
17124
17125         * aot.c: Add support for ldflda wrappers.
17126
17127         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
17128         #75902.
17129
17130 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
17131
17132         * mini.c, mini.h: do not consider exception handlers blocks when
17133         setting up interface variables.
17134
17135 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
17136
17137         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
17138
17139 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
17140
17141         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
17142         causes a regression.
17143
17144         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
17145
17146 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
17147
17148         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
17149         of the OP_P definitions.
17150
17151         * TODO: Add a proposal for dealing with the CEE/OP mess.
17152
17153         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
17154         optimizations from the x86 port.
17155
17156         * cpu-amd64.md: Ditto.
17157
17158         * basic.cs basic-long.cs: Add tests.
17159
17160 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
17161
17162         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
17163         Patrik Torstensson's implementation of my exception-handling
17164         optimization idea, when the exception object is not used
17165         (bug #62150).
17166
17167 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
17168
17169         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
17170         of the mul_imm optimizations from the old jit.
17171
17172 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
17173
17174         * mini.c, liveness.c: patch by Patrik Torstensson and
17175         Zoltan Varga to improve performance in methods with
17176         exception clauses.
17177
17178 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
17179
17180         * driver.c: Remove 'Globalization' entry from --version.
17181
17182 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
17183
17184         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
17185         there is a profiler interested in JIT events.
17186
17187         * aot.c: Load profile files produced by the AOT profiling module, and
17188         reorder methods based on the profiling info. Add a 'method_order' table
17189         to the AOT file to make mono_aot_find_jit_info work with the reordered
17190         methods.
17191
17192         * mini.h: Bump AOT file version info.
17193
17194 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
17195
17196         * mini-arm.h: work around what looks like a gcc bug when optimizations
17197         are enabled.
17198
17199 2005-09-28  Raja R Harinath  <rharinath@novell.com>
17200
17201         * Makefile.am (AM_CFLAGS): Don't use += to append inside
17202         conditionals.  Use ...
17203         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
17204
17205 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
17206
17207         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
17208         to determine the amount of memory to copy when passing valuetypes.
17209
17210         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
17211         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
17212
17213 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
17214
17215         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
17216         information about aot.
17217
17218 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
17219
17220         * *.c: Replace the use of {Enter,Leave}CriticalSection with
17221         macros. This will allow a deadlock debugger to easily be plugged
17222         in.
17223
17224 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
17225
17226         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
17227
17228 2005-09-27  Raja R Harinath  <rharinath@novell.com>
17229
17230         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
17231         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
17232         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
17233         ($(arch_built)) [CROSS_COMPILING]: Error out.
17234
17235 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
17236
17237         * aot.c: Add support for the no_special_static flag for classes.
17238
17239 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
17240
17241         * Reapply reverted patches.
17242
17243         * *: Revert r50174 as well.
17244
17245         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
17246
17247 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
17248
17249         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
17250
17251 2005-09-23  Miguel de Icaza  <miguel@novell.com>
17252
17253         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
17254         part of the SIG_HANDLER_SIGNATURE.  
17255
17256 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
17257
17258         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
17259         statistics.
17260
17261         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
17262         introduced by previous patch.
17263
17264 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
17265
17266         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
17267         saved registers too.
17268
17269         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
17270         upon the information returned by get_call_info ().
17271         
17272         * mini-x86.c (add_float): Fix stack size calculation.
17273         (mono_arch_call_opcode): Rewrite this so it works based up the
17274         information returned by get_call_info ().
17275         (mono_arch_get_this_vret_args): Ditto.
17276
17277 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
17278
17279         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
17280         in cinfo to determine the registers which need to be used.
17281
17282 2005-09-20  Miguel de Icaza  <miguel@novell.com>
17283
17284         * driver.c (mono_main): Add --server and --desktop flags. 
17285
17286 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
17287
17288         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
17289         registers as global registers.
17290
17291         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
17292         longer needed with the new register allocator.
17293
17294         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
17295
17296         * cpu-ia64.md: Remove unused opcodes.
17297         
17298         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
17299         
17300 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
17301
17302         * cpu-amd64.md: Remove unused opcodes.
17303
17304         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
17305         needed with the new register allocator.
17306
17307         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
17308         reg-reg moves.
17309
17310 2005-09-16  Raja R Harinath  <rharinath@novell.com>
17311
17312         * Makefile.am (check-local): Don't invoke semdel-wrapper.
17313
17314 2005-09-16  Martin Baulig  <martin@ximian.com>
17315
17316         * exceptions-amd64.c
17317         (throw_exception): Don't call mono_debugger_throw_exception() if
17318         we're a rethrow - see the FIXME in the code.
17319
17320 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
17321
17322         * mini.c (mono_init_exceptions): This only works on some architectures.
17323         
17324 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
17325
17326         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
17327         on ia64.
17328
17329         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
17330
17331         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
17332         now in mini-exceptions.c.
17333
17334 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
17335
17336         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
17337         now in mini-exceptions.c.
17338
17339 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
17340
17341         * exceptions-x86.c: Applied patch from Patrik Torstensson 
17342         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
17343
17344         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
17345         code into mini-exceptions.c. Add some assertions to it.
17346
17347 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
17348
17349         * aot.c (emit_section_change): Applied patch from "The Software Team" 
17350         (<software@solmersa.com>). Fix as errors on windows.
17351
17352 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
17353
17354         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
17355         method info into the LMF.
17356
17357 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
17358         
17359         * mini-ia64.c: Add proper unwind info for method epilogs.
17360
17361         * exceptions-ia64.c: Add some code to help debugging.
17362         
17363         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
17364
17365         * mini-exceptions.c: Fix warning.
17366
17367 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
17368
17369         * mini.c: Really fix build.
17370
17371         * mini-x86.c mini-amd64.c: Fix build.
17372
17373 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
17374
17375         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
17376
17377         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
17378         some Interlocked methods as intrinsics.
17379
17380         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
17381         for Thread methods as well.
17382
17383         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
17384
17385         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
17386
17387         * mini-ia64.c mini-x86.c mini-amd64.c 
17388         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
17389         OP_MEMORY_BARRIER.
17390         
17391         * mini.c (mono_init_exceptions): Fix build breakage.
17392
17393 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
17394
17395         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
17396         of instructions. Use the new ia64_unw_op macros for emitting unwind
17397         info.
17398
17399         * mini.c (mono_init_exceptions): Initialize exception handling
17400         related trampolines at startup.
17401
17402 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
17403
17404         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
17405
17406 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
17407
17408         * mini.c: Handle type loading errors gracefully during compilation and
17409         throw the appropriate exception.
17410
17411 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
17412
17413         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
17414         for the mono binary.
17415
17416 2005-09-09  Martin Baulig  <martin@ximian.com>
17417
17418         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
17419         the release.
17420
17421 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
17422
17423         * mini-arm.h: use emulation for conv.r.un for the release.
17424
17425 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
17426
17427         * mini-arm.c, objects.cs: more fixes and tests for them.
17428
17429 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
17430
17431         * mini-arm.c: align structures to at least 4 bytes to be able
17432         to keep our current optimized memcpy.
17433
17434 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
17435
17436         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
17437
17438 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17439
17440         * mini.c: ignore SIGPIPE.
17441
17442 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
17443
17444         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
17445
17446         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
17447
17448 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
17449
17450         * mini.h: Add prototype for mono_allocate_stack_slots_full.
17451
17452 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
17453
17454         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
17455         exception handling support.
17456         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
17457         patch by Brian Koropoff <briank@marakicorp.com>).
17458
17459 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
17460
17461         * mini.c: revert another 'optimization' which breaks when
17462         items on the eval stack need to be saved at a basic block end
17463         (bug #75940).
17464
17465 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
17466
17467         * jit-icalls.c: for arrays, ensure we always provide
17468         lower bounds.
17469
17470 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
17471
17472         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
17473         
17474         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
17475
17476 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
17477
17478         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
17479         arguments in their original register.
17480
17481 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
17482
17483         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
17484         memset/memcpy.
17485
17486         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
17487         when ssapre is enabled.
17488
17489         * inssel-long.brg: Fix bug in previous patch.
17490
17491         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
17492         multiplication by a constant.
17493
17494 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
17495
17496         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
17497         icc.
17498
17499         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
17500         saving registers.
17501
17502 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
17503
17504         * inssel-arm.brg: apply changes tested by Brian Koropoff
17505         <briank@marakicorp.com>.
17506
17507 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
17508
17509         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
17510         
17511 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
17512
17513         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
17514         to the same register if dreg is just a base register.
17515         (print_ins): Improve printing of membase opcodes.
17516
17517         * inssel-x86.brg: Add optimized ldind(reg) rules.
17518
17519         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
17520
17521 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
17522
17523         * mini.c: when running under valgrind, set the stack bottom for
17524         the GC at the actual approximate stack for the app (fixes running
17525         mono with valgrind).
17526
17527 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
17528
17529         * mini.c: do no break at the first valuetype to init found
17530         (fixes bug #75791).
17531
17532 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
17533
17534         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
17535
17536 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
17537
17538         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
17539
17540 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
17541
17542         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
17543
17544 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17545
17546         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
17547
17548         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
17549         code.
17550
17551         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
17552         code.
17553
17554         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
17555         methods.
17556
17557 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
17558
17559         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
17560
17561 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17562
17563         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
17564         in the tail recursion optimization.
17565
17566         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
17567         debug info into the assembly file.
17568
17569         * iltests.il: Add test for filter regions.
17570
17571         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
17572         initial stack of filter regions. Fixes #75755.
17573
17574 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
17575
17576         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
17577         stack requirements.
17578
17579 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17580
17581         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
17582         the check for an already compiled method on non-ia64 platforms.
17583         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
17584         proper domain.
17585
17586         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
17587
17588         * inssel-x86.brg: Add some optimized call rules.
17589
17590 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
17591
17592         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
17593         method here.
17594
17595         * mini.h mini-trampolines.c: Pass the trampoline argument to 
17596         mono_arch_patch_delegate_trampoline.
17597
17598         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
17599
17600         * mini-trampolines.c: Fix build.
17601
17602         * mini-amd64.h: Add delegate trampolines.
17603
17604         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
17605
17606         * inssel-amd64.brg: Add optimized call rules.
17607         
17608         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
17609
17610         * inssel-ia64.brg: Add optimized ldind(reg) rules.
17611
17612 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
17613
17614         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
17615         change.
17616
17617         * mini-ia64.c: Remove LMF fixmes.
17618
17619         * mini-ia64.h: Remove most fields from LMF.
17620
17621         * inssel-ia64.brg (stmt): Fix unaligned access errors.
17622
17623         * mini-trampolines.c: Add support for IA64 function descriptors.
17624
17625         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
17626         for IA64 function descriptors.
17627
17628 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
17629
17630         * tramp-arm.c: patch the vtable for virtual calls. Added
17631         support code to register/unregister the LMF.
17632         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
17633         more LMF work.
17634
17635 2005-08-19  Dick Porter  <dick@ximian.com>
17636
17637         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
17638         bit value if needed.
17639
17640 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
17641
17642         * mini.c (mini_get_method): Move handling of wrapper data here.
17643
17644         * mini.c (mono_method_to_ir): Add support for dynamic methods.
17645
17646         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
17647         virtual.
17648
17649         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
17650         bblock->code does not remain empty.
17651
17652 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
17653
17654         * arrays.cs: Add regression test for #75832.
17655
17656         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
17657         rules. Fixes #75832.
17658
17659         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
17660         instruction scheduling.
17661
17662 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
17663
17664         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
17665
17666 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
17667
17668         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
17669
17670         * mini-codegen.c: Fix VC build.
17671
17672         * cpu-pentium.md: Increase length of atomic_exhange_i4.
17673
17674 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17675
17676         * mini.h: fix signature for mono_register_opcode_emulation.
17677
17678 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
17679
17680         * mini.c: Get rid of most of the helper_sig_... constants using
17681         mono_create_icall_signature ().
17682
17683 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
17684
17685         * jit-icalls.c (helper_ldstr): New helper function.
17686
17687         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
17688
17689         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
17690         throw, load the string using a helper call instead of creating a string object.
17691
17692         * aot.c: Update after LDSTR changes.
17693
17694         * mini.h: Bump AOT file version.
17695         
17696         * aot.c: Save class size info into the AOT file. Print more statistics during
17697         compilation.
17698
17699         * mini.h: Bump AOT file version.
17700
17701         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
17702         ordering of disasm cases. Fixes #74957.
17703
17704 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
17705
17706         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
17707         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
17708         the generic code needed for the ARM port.
17709
17710 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
17711
17712         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
17713         inssel-arm.brg: more ARM features and fixes.
17714
17715 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
17716
17717         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
17718         ARM port work in progress.
17719
17720 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
17721
17722         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
17723
17724         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
17725
17726         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
17727
17728         * inssel.brg (mini_emit_memset): Add support for unaligned access.
17729
17730         * *-ia64.*: Ongoing IA64 work.
17731         
17732         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
17733
17734 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
17735
17736         * TODO: Remove out-of-data todo stuff.
17737
17738         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
17739         dead code.
17740
17741         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
17742
17743         * mini.h: Bump corlib version.
17744
17745 2005-07-27  Martin Baulig  <martin@ximian.com>
17746
17747         * mini-codegen.c
17748         (create_copy_ins): Added `const unsigned char *ip' argument; set
17749         `copy->cil_code' from it.
17750
17751 2005-07-27  Martin Baulig  <martin@ximian.com>
17752
17753         * mini-exceptions.c (mono_handle_exception): Don't call
17754         mono_debugger_handle_exception() for filters.
17755
17756 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
17757
17758         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
17759         as well.
17760
17761 2005-07-26  Martin Baulig  <martin@ximian.com>
17762
17763         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
17764
17765         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
17766         helper_compile_generic_method() if the method is actually virtual
17767         and non-final.
17768
17769 2005-07-26  Martin Baulig  <martin@ximian.com>
17770
17771         * mini.c
17772         (trampoline_code): Renamed to `mono_trampoline_code' and made it
17773         public; this is now accessed directly by the debugger.
17774         (mono_generic_trampoline_code): Removed.
17775
17776         * debug-mini.c
17777         (mono_debug_init_method): Also add interncalls and wrappers.
17778
17779 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
17780
17781         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
17782
17783 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
17784
17785         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
17786
17787 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
17788
17789         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
17790
17791 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
17792
17793         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
17794         getting TLS offsets on AMD64 too.
17795
17796 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
17797
17798         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
17799
17800 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
17801
17802         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
17803         inssel-arm.brg, mini-arm.h: ARM port work in progress.
17804
17805 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
17806
17807         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
17808
17809         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
17810         to mini.c.
17811
17812         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
17813         mono_sparc_is_virtual_call ().
17814         
17815         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
17816
17817         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
17818         trampoline parameters.
17819
17820         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
17821         
17822         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
17823         to mono_arch_get_vcall_slot_addr.
17824
17825         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
17826         trampoline code.
17827
17828         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
17829
17830 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
17831
17832         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
17833
17834 2005-07-19  Martin Baulig  <martin@ximian.com>
17835
17836         * exceptions-amd64.c (throw_exception): Call
17837         mono_debugger_throw_exception() here like we're doing it on i386.
17838
17839 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
17840
17841         * mini-ia64.c: Add optimized TLS access support.
17842
17843 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
17844
17845         * mini-exceptions.c: Ongoing IA64 work.
17846
17847         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
17848
17849         * mini.c: Use the default optimization set when embedding. Fixes
17850         #75194.
17851
17852 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
17853
17854         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
17855         of trampolines to a separate file.
17856
17857         * mini-trampolines.c: New file.
17858
17859         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
17860         separate file.
17861         
17862         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
17863         amd64/ia64 code.
17864
17865         * mini-codegen.c: Fix cygwin build.
17866
17867 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
17868
17869         * mini.c: Add some minor changes needed by the IA64 port.
17870
17871         * *-ia64.*: Ongoing IA64 work.
17872
17873 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
17874
17875         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
17876         trampolines into arch-independent and arch-dependent parts.
17877
17878         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
17879
17880 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
17881
17882         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
17883
17884         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
17885         the xp-regalloc-branch for amd64.
17886
17887         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
17888         xp-regalloc-branch for x86.
17889
17890 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
17891
17892         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
17893
17894 2005-07-06  Martin Baulig  <martin@ximian.com>
17895
17896         * mini.c
17897         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
17898         (mono_jit_runtime_invoke): Likewise.
17899
17900 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
17901
17902         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
17903         on x86 too.
17904         
17905         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
17906         without loading their metadata. Reorganize the file format so exception handling+
17907         debug info is kept separate from normal method info. Create MonoJitInfo 
17908         structures for methods lazily.
17909
17910         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
17911         loading metadata.
17912         (x86_class_init_trampoline): Patch AOT class init trampolines too.
17913
17914         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
17915
17916         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
17917         in AOT code.
17918
17919         * mini.h: Bump AOT file version.
17920
17921 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
17922
17923         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
17924
17925 2005-07-01  Raja R Harinath  <rharinath@novell.com>
17926
17927         * Makefile.am (check-local): Call semdel-wrapper.
17928
17929 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
17930
17931         * mini-x86.c: Revert the last change as it seems to break the build..
17932
17933 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
17934
17935         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
17936         
17937         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
17938
17939 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
17940
17941         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
17942         outside of the macro, so strange stuff doesn't happen with gcc4
17943         (NEW_AOTCONST_TOKEN): Likewise.
17944
17945 2005-06-28  Martin Baulig  <martin@ximian.com>
17946
17947         * mini.c (mini_class_is_system_array): New static method; use this
17948         instead of `klass->parent == mono_defaults.array_class' everywhere
17949         since this also works for the new generic array class.
17950
17951 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
17952
17953         * inssel.brg: Remove warnings.
17954
17955 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
17956
17957         * mini-ia64.c: Ongoing IA64 work.
17958
17959         * basic-float.cs: Add float->i1 conversion test.
17960
17961         * iltests.il: Add conv.u4 test.
17962
17963 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
17964
17965         * inssel-long.brg: Fix bug caused by last change.
17966
17967 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
17968
17969         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
17970         BSDs.  Allows the x86 JIT to work on OSX86
17971
17972 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
17973
17974         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
17975         u4->i8 conversion.
17976
17977         * mini-ia64.c: Ongoing IA64 work.
17978
17979 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
17980
17981         * mini-ia64.c: Ongoing IA64 work.
17982
17983         * driver.c: Clean up jit_code_hash as well when using --regression.
17984
17985         * inssel-long.brg: Fix long->i4/u4 conversion rules.
17986
17987         * basic-long.cs: Add tests for long->u4 conversion.
17988
17989 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
17990
17991         * mini.c: Take mono_get_domainvar out of macros. This makes sure
17992         that we do not depend on undefined C behavior: the order stuff
17993         gets evaluated within an expression. Fixes mono when compiled on
17994         GCC 4.
17995
17996 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
17997
17998         * *-ia64.*: Ongoing IA64 work.
17999
18000         * aot.c: Lower memory usage while loading AOT methods.
18001
18002         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
18003
18004         * mini.h: Bump AOT file format version.
18005
18006 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
18007
18008         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
18009
18010 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
18011
18012         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
18013         not on callee assembly). Fixed some comments.
18014
18015 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
18016
18017         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
18018         it gets proper disassembly.
18019         (emit_method_info): Remove some dead code.
18020
18021         * mini.c (mini_method_compile): Allways allocate the GOT var in
18022         mono_method_to_ir for emulating opcodes.
18023
18024 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
18025
18026         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
18027         before freeing the code memory. Fixes #74990.
18028
18029         * objects.cs: Add regression test for #74992.
18030
18031         * liveness.c: Extend live ranges of arguments to the beginning of the
18032         method. Fixes #74992.
18033
18034         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
18035         so it points into the faulting instruction.
18036
18037 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
18038
18039         * jit-icalls.c (mono_imul_ovf): Add exception handling.
18040
18041         * *-ia64.*: Ongoing IA64 work.
18042
18043         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
18044
18045 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
18046
18047         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
18048
18049         * *-ia64.*: Ongoing IA64 work.
18050
18051 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
18052
18053         * basic-long.cs: Add tests for add/sub.ovf.
18054
18055         * basic.cs: Add tests for sub.ovf.
18056
18057         * *-ia64.*: Ongoing IA64 work.
18058
18059 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
18060
18061         * *-ia64.*: Ongoing IA64 work.
18062
18063         * basic.cs: Add conv.ovf.i4.un test.
18064
18065 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
18066
18067         * mini.c: (remove_block_if_useless) Fixed bug 75061.
18068         
18069 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18070
18071         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
18072
18073 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
18074
18075         * *-ia64.*: Ongoing IA64 work.
18076
18077 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18078
18079         * trace.[ch]:
18080         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
18081
18082 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
18083
18084         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
18085
18086 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
18087
18088         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
18089
18090         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
18091         of a call is callable by a near call.
18092
18093 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
18094
18095         * mini-ia64.c: Ongoing IA64 work.
18096
18097 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
18098
18099         * genmdesc.c: Make the generated array non-static.
18100
18101         * inssel-long.brg: Fix LSHR_IMM rule.
18102
18103         * *-ia64.*: Ongoing IA64 work.
18104
18105         * *-ia64.*: Ongoing IA64 work.
18106
18107 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
18108
18109         * *-ia64.*: Ongoing IA64 work.
18110
18111         * *-ia64.*: Ongoing IA64 work.
18112         
18113         * mini-ia64.c: Ongoing IA64 work.
18114
18115         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
18116
18117 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
18118
18119         * objects.cs basic-calls.cs: Move some tests to objects.cs.
18120         
18121         * objects.cs basic-long.cs: Move some tests to objects.cs.
18122
18123 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
18124
18125         * *-ia64.*: Ongoing IA64 work.
18126
18127         * iltests.il: Add a new test.
18128
18129         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
18130         newobj. Fixes #75042.
18131
18132 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
18133
18134         * *-ia64.*: Ongoing IA64 work.
18135         
18136         * *-ia64.*: Ongoing IA64 work.
18137         
18138         * *-ia64.*: Ongoing IA64 work.
18139
18140         * basic.cs objects.cs: Move tests accessing static variables as well.
18141
18142         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
18143
18144 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
18145
18146         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
18147
18148         * driver.c: Always print failed tests.
18149
18150         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
18151         frame pointer.
18152
18153         * *ia64*: Ongoing IA64 work.
18154
18155 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
18156
18157         * basic.cs: Add tests for add.ovf. Fix warnings.
18158
18159 2005-05-18  Miguel de Icaza  <miguel@novell.com>
18160
18161         * driver.c (mono_main): Avoid crash if no argument is passed to
18162         --break;  Do not use g_error, but f_printf.   And fix all other
18163         ocurrences of the same crash.
18164
18165 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
18166
18167         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
18168         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
18169         Fixes #74742.
18170
18171 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
18172
18173         * *-ia64.*: Add beginnings of IA64 backend.
18174
18175         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
18176
18177 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
18178
18179         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
18180         Fixes #74925.
18181
18182         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
18183
18184         * mini-amd64.c: Fix a warning.
18185
18186 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
18187
18188         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
18189         in float_neg. Fixes #74897.
18190
18191         * mini-amd64.c (emit_call): Fix another near call bug.
18192
18193 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
18194
18195         * declsec.c: Keep the appdomain information in the structure. Added a 
18196         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
18197         value gets overwritten).
18198         * declsec.h: Set the default MonoArray for the the stack to 6. Added
18199         an MonoAppDomain member to MonoSecurityFrame.
18200         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
18201         used in the stack walk. Now use a MonoArray which grow (double) when
18202         it gets full.
18203
18204 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
18205
18206         * mini.c: Re-enabled runtime cleanup, since running threads should
18207         now properly stop when exiting.
18208
18209 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
18210
18211         * mini-codegen.c: New file contaning the arch-independent local
18212         register allocator. Not used by any architectures yet.
18213
18214         * mini.h linear-scan.c: Merge some changes from the 
18215         mini-xp-local-regalloc branch.
18216
18217 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
18218
18219         * mini-amd64.c (emit_call): Fix calls to native functions when the
18220         runtime is compiled as a shared library. Fixes #74756.
18221
18222         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
18223         on a literal field. Fixes #74751.
18224
18225 2005-04-25  Raja R Harinath  <rharinath@novell.com>
18226
18227         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
18228
18229 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
18230
18231         * objects.cs: Add missing null casting test.
18232
18233 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
18234
18235         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
18236         in wrapper methods. Also rename 'address' variable to 'offset'.
18237
18238 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
18239
18240         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
18241         warnings.
18242         
18243         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
18244
18245         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
18246         work on windows.
18247
18248 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
18249
18250         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
18251
18252 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
18253
18254         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
18255         just the last bytes.
18256
18257 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
18258
18259         * aot.c (mono_compile_assembly): Fix warning.
18260
18261         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
18262         by the _MSC_VER stuff.
18263
18264 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
18265
18266         * inssel-long.brg: Fix #74588.
18267
18268         * cpu-amd64.md: Fix #74591.
18269
18270         * iltests.il: Add new regression tests.
18271
18272 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
18273
18274         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
18275         valuetype.
18276
18277 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
18278
18279         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
18280
18281         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
18282         from Bill Middleton <flashdict@gmail.com>.
18283
18284 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
18285
18286         * arrays.cs: Add new regression test. Fix warnings.
18287
18288 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
18289
18290         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
18291         and leakage in CKFINITE.
18292
18293         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
18294         this to a null op since it is called on amd64 too.
18295
18296         * exceptions-amd64.c (get_throw_trampoline): Align stack.
18297
18298         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
18299         body since this is not used on amd64.
18300         
18301         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
18302
18303         * mini-amd64.c: Remove obsolete fixmes.
18304
18305         * mini.c (print_method_from_ip): Fix debugging support.
18306
18307 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18308
18309         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
18310         so that expressions that don't give much gain are not reduced.
18311         * ssapre.h: Likewise.
18312
18313 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
18314
18315         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
18316
18317         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
18318
18319         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
18320
18321 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
18322
18323         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
18324
18325         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
18326
18327 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
18328
18329         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
18330         stack touching.
18331
18332         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
18333
18334         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
18335
18336         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
18337
18338         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
18339         MONO_ARCH_USE_SIGACTION. Fixes #74252.
18340
18341         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
18342
18343         * mini-x86.c: Fix up stack overflow handling.   
18344
18345         * exceptions.cs: Add new regression test.
18346
18347 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
18348
18349         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
18350         mono_jit_thread_attach.
18351
18352         * mini.c (mono_method_to_ir): Verify called method is not abstract.
18353
18354 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
18355
18356         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
18357         avoid calling constructors using callvirt.
18358
18359         * inssel.brg: Fix #74073.
18360
18361 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
18362
18363         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
18364         compilation with non-GCC compilers.
18365         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
18366         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
18367
18368 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
18369
18370         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
18371         klass->interface_offsets (will likely fix bug#74073).
18372
18373 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
18374
18375         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
18376
18377 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
18378
18379         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
18380         to amd64_div_reg_size ().
18381         
18382         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
18383
18384 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
18385
18386         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
18387
18388 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
18389
18390         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
18391
18392 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
18393
18394         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
18395         
18396         * mini.c (mono_precompile_assembly): Load and precompile referenced
18397         assemblies as well. Fixes #74015.
18398
18399 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
18400
18401         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
18402
18403 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
18404
18405         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
18406         a lot of checks and (anyway) permissions cannot work until corlib is 
18407         loaded.
18408
18409 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
18410
18411         * mini-ppc.c: fixed ABI issue on sysv/ppc.
18412
18413 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
18414
18415         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
18416         calls (fixes bug#72824).
18417
18418 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18419
18420         * mini.c: fix tail recursion elimination (see test in bug#73936).
18421
18422 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
18423
18424         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
18425         some fp functions in sse2 mode.
18426
18427 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
18428
18429         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
18430
18431 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
18432
18433         * mini.h mini.c: Add mono_get_jit_tls_key ().
18434
18435         * mini-x86.c: Enable fast TLS support on windows.
18436
18437 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
18438
18439         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
18440         * mini.c: Check for p/invoke method when generating code. If a
18441         p/invoke method, or it's class, isn't decorated with [Suppress
18442         UnmanagedCodeSecurity] then generate code to call System.Security.
18443         UnmanagedDemand (only if the security manager is active).
18444
18445 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
18446
18447         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
18448         last change as it seems to cause strange crashes.
18449         
18450 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18451
18452         * *.c: handle unsafe function pointers where needed.
18453
18454 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
18455
18456         * mini.c (mono_jit_free_method): Remove the fixme too.
18457
18458 2005-03-15  Miguel de Icaza  <miguel@novell.com>
18459
18460         * mini.c: As discussed, make the code actually free the delegate
18461         thunk now, to enable the debugging of delegate problems, use
18462         MONO_DEBUG=1 when running Mono. 
18463
18464         This takes also care of parts of the leaks as seen by Joe.
18465
18466 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
18467
18468         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
18469         thread_tls_offset calculation.
18470
18471 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
18472
18473         * declsec.c: Reworked linkdemand checks for icall. The previous code
18474         was using the declaration code (untrusted) and didn't work as expected
18475         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
18476         specific case.
18477
18478 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
18479
18480         * iltests.il: Add new localloc test.
18481
18482         * mini-amd64.c: Handle large stack allocations the same way as on
18483         windows if stack overflow handling is working.
18484         
18485         * mini-amd64.c: Allocate the signal stack using mmap.
18486
18487         * mini.c (sigsegv_signal_handler): Fix reading of context.
18488
18489         * mini-exceptions.c: Fix up stack overflow handling.
18490
18491         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
18492
18493         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
18494
18495         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
18496
18497         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
18498
18499         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
18500         tramp_init functions as they are no longer needed.
18501
18502 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
18503
18504         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
18505         
18506         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
18507
18508         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
18509         
18510         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
18511         support that now.
18512
18513         * mini-ops.h: Add OP_LMUL_IMM.
18514
18515         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
18516         long mul/div opcodes as intrinsic.
18517
18518         * mini-amd64.c (emit_call): Handle the case when the callee might be
18519         an AOT method.
18520
18521 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
18522
18523         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
18524         extra safe.
18525         
18526         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
18527
18528         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
18529
18530 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
18531
18532         * mini.c (mono_codegen): Don't leak here, to help people running
18533         monogrind.
18534
18535 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
18536
18537         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
18538         conversions in sse2 mode.
18539
18540         * basic-float.cs: Add regression test.
18541         
18542         * mini-amd64.c: Reenable sse2.
18543
18544 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
18545
18546         * mini-amd64.c: Disable sse2 until some regressions are fixed.
18547
18548 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
18549
18550         * driver.c: Copyright text should include 2005.
18551         
18552 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
18553
18554         * cpu-amd64.md (load_membase): Fix more max lengths.
18555
18556 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
18557
18558         * cpu-amd64.md (load_membase): Fix max length.
18559
18560         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
18561
18562         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
18563
18564         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
18565         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
18566
18567         * basic-float.cs: Add rounding regression test.
18568
18569         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
18570
18571 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
18572
18573         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
18574         structures in registers for pinvoke wrappers.
18575
18576 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
18577
18578         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
18579
18580 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
18581
18582         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
18583         wrapper to mono_jit_thread_attach.
18584
18585         * mini.c (mini_jit_thread_attach): New jit icall.
18586
18587         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
18588         native->managed wrappers.
18589
18590         * exceptions.cs: Add new regression test.
18591
18592         * mini.c (optimize_branches): Check regions in the cbranch to throw
18593         block case as well. Fixes #73242.
18594
18595 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18596
18597         * mini.c: thread safety fixes.
18598
18599 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
18600
18601         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
18602         patching stuff, since delegates use jump trampolines so there is
18603         no caller.
18604
18605         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
18606         jump trampolines.
18607         
18608         * tramp-amd64.c: Fix build.
18609
18610         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
18611         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
18612
18613         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
18614         Rename this to mono_arch....
18615         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
18616
18617         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
18618
18619         * mini-amd64.c (emit_call): If both the caller and the callee is
18620         guaranteed to have 32 bit addresses, emit a normal call.
18621
18622         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
18623
18624         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
18625         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
18626         method_ptr inside delegates.
18627
18628 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
18629
18630         * mini.c (mono_jit_free_method): Free the method info even if the native code is
18631         invalidated. Fixes #73001.
18632
18633         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
18634
18635         * mini-x86.c: Only use stdcall for pinvokes on windows.
18636
18637 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
18638
18639         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
18640         * mini-x86.c: remove unreliable __thread var offset detection,
18641         use the correct accessors and enable by default.
18642
18643 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
18644
18645         * mini.c (mono_jit_free_method): Fix memory leak.
18646
18647 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
18648
18649         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
18650
18651 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
18652
18653         * cpu-amd64.md: Fix lengths of atomic opcodes.
18654
18655 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
18656
18657         * driver.c: try to not imply using ICU is any good.
18658
18659 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
18660
18661         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
18662         functions as inline ops.
18663
18664         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
18665         some Interlocked functions as inline ops.
18666
18667         * mini.c (move_basic_block_to_end): Fix bug in last patch.
18668
18669         * mini.h (MonoBasicBlock): Reorganize fields a bit.
18670
18671         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
18672
18673         * mini.c: Add support for OP_NOT_TAKEN.
18674
18675         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
18676         structures in registers for pinvoke wrappers.
18677
18678         * mini-amd64.c: Fix warnings.
18679
18680 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
18681
18682         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
18683
18684         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
18685
18686         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
18687         address instead of loading the address from it.
18688
18689         * mini-x86.c: Add support for returning small structs in registers
18690         on Win32. Fixes part of #70864.
18691         
18692 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
18693
18694         * trace.c (get_token): Improve error checking.
18695
18696 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
18697
18698         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
18699
18700 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
18701  
18702         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
18703         it can be reused for MonoClass.
18704         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
18705         _LINKDEMAND.
18706
18707 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
18708
18709         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
18710         instead of a MonoReflectionMethod. The method information wasn't used
18711         when displaying SecurityException details (but will be now).
18712
18713 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
18714
18715         * Makefile.am : windows build fix.
18716
18717 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
18718
18719         * iltests.il: Add new regression test.
18720
18721         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
18722         #72522.
18723
18724 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
18725  
18726         * mini.c: Moved linkdemand check into helper function check_linkdemand
18727         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
18728         LDFTN, LDVIRTFTN).
18729
18730 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
18731
18732         * declsec.c: Added statistics counter for different kinds of 
18733         LinkDemands.
18734         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
18735         (and commented) declaration.
18736         * mini.c: Added statistics counter for security Demand code 
18737         generation. Added display of security statistics.
18738
18739 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
18740
18741         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
18742         Fix compilation errors under gcc-2.95.
18743
18744 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
18745
18746         * mini.c, driver.c: Use the new jit trampoline hashtable
18747
18748 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18749
18750         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
18751
18752 2005-02-11  Martin Baulig  <martin@ximian.com>
18753
18754         * debug-mini.c (mono_debug_close_method): Free the line number array.
18755
18756 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
18757
18758         * aot.c: Break up large methods into smaller ones. Share GOT slots for
18759         icalls.
18760
18761         * mini.h: Bump AOT file format version. 
18762
18763 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
18764
18765         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
18766         APTC and P/Invoke.
18767         * declsec.h: Added macros to get/set lazyly initialized security 
18768         informations about assemblies. Added new enum for different type of
18769         possible LinkDemand violation. Added function to check LinkDemands.
18770         * mini.h: Added a field to MonoCompile to hold any security violation
18771         detected when JITting a method (so it can be thrown later).
18772         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
18773         and CEE_CALLVIRT. Added code to throw exception at the end of
18774         mini_method_compile (note: the exception is unhandled right now).
18775
18776 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
18777
18778         * mini.c, jit-icalls.c: use the managed implementation of
18779         memset for initobj and memset, to avoid managed <-> unmanaged
18780         transitions.
18781
18782 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
18783
18784         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
18785         optimization if it would need a GOT var.
18786
18787         * basic.cs: Add tests for constant propagation and switch statements.
18788
18789         * ssa.c: Fix out-of-range constant propagation and switch statements.
18790
18791 2005-02-09    <vargaz@freemail.hu>
18792
18793         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
18794
18795 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
18796
18797         * cpu-amd64.md (load_membase): Fix max length of load_membase.
18798
18799 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18800
18801         * mini.c: update to new signature of mono_class_get_allocation_ftn().
18802
18803 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
18804
18805         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
18806         arithmetic operations.
18807
18808 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
18809
18810         * mini-ppc.c: add a workaround for broken user code that
18811         DllImports vararg functions with non-vararg signatures.
18812
18813 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18814
18815         * mini.c (mono_jit_compile_method_inner): Add detection and a 
18816         meaningfull error message for assemblies written in Managed C++.
18817
18818         * tramp-amd64.c mini-amd64.h: Add support for 
18819         create_trampoline_from_token ().
18820
18821         * aot.c mini-x86.c abcremoval.c: Applied patch from
18822         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
18823
18824 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
18825
18826         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
18827         which takes a MonoImage/token as parameter instead of a MonoMethod.
18828
18829         * aot.c: Use the new trampoline for initializing vtables.
18830
18831         * aot.c: Add support for ldfld/stfld_remote wrappers.
18832
18833         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
18834         rules for compare <MEM>, IMM.
18835
18836         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
18837
18838         * aot.c: Handle inherited finalizers correctly.
18839
18840 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
18841
18842         * inssel.brg (stmt): Add a missing _setup_... ().
18843
18844         * aot.c: Save some parts of the class state to the AOT file and use it
18845         to recompute that state when a class is initialized.
18846
18847         * mini.c: Install AOT hooks into the runtime.
18848
18849         * mini.h: Bump AOT file format version.
18850         
18851         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
18852         Fixes #72148.
18853
18854         * iltests.il: Add new test.
18855
18856 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
18857
18858         * mini.c: fix typo.
18859
18860 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
18861
18862         * mini.c: setup the statistical profiler in the thread attach
18863         callback to cope with the new single thread code.
18864
18865 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
18866
18867         * mini-ppc.c: ensure we have enough room for the profiler
18868         calls (fixed bug#72084).
18869
18870 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
18871
18872         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
18873         it.
18874
18875 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18876
18877         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
18878
18879 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18880
18881         * ssapre.c: Fixed an issue with down safety (this allows IronPython
18882         to succesfully execute parrotbench).
18883         * ssapre.h: Likewise.
18884
18885 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18886
18887         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
18888         variable for stores to method arguments (fixes a SSAPRE issue).
18889
18890 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18891
18892         * mini.c: handle value types in dup, fixes gen-112.cs.
18893
18894 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
18895
18896         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
18897         sequence for calls in dynamic methods to avoid thunks.
18898
18899 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18900
18901         * mini.c: correctly remove dynamic methods from the hashtable.
18902
18903 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18904
18905         * driver.c: Disabled SSAPRE until fix the bug that appears
18906         in IronPython's parrotbench.
18907
18908 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
18909
18910         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
18911
18912         * mini.c (mono_method_to_ir): Revert the previous change.
18913         
18914         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
18915         when AOT compiling.
18916
18917         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
18918         mono_jit_info_table_find () etc. when running under valgrind.
18919
18920         * inssel.brg: Fix warnings.
18921
18922         * mini-exceptions.c: Fix warnings.
18923
18924 2005-01-31  Martin Baulig  <martin@ximian.com>
18925
18926         * driver.c (compile_all_methods_thread_main): Don't try to compile
18927         generic methods or anything which has type parameters.
18928
18929 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
18930
18931         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
18932
18933         * TestDriver.cs: Add --verbose flags.
18934
18935         * graph.c ssa.c: Fix 64 bit warnings.
18936         
18937         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
18938         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
18939         Fix 64 bit warnings.
18940
18941         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
18942         variable not spotted by gcc.
18943         
18944         * mini-amd64.c inssel-amd64.brg: Applied patch from  
18945         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
18946         X86_COMPARE_MEMBASE opcodes.
18947
18948         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
18949
18950 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
18951
18952         * *: MonoMethod->signature might be NULL now. You *MUST* use
18953         mono_method_signature.
18954
18955 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18956
18957         * driver.c (compile_all_methods_thread_main): Compile the methods
18958         without invoking cctors.
18959
18960 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18961
18962         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
18963         * basic-calls.cs: test for the above.
18964
18965 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18966
18967         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
18968         MonoJitInfo changes.
18969
18970 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
18971
18972         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
18973         eagerly if it contains dynamic methods.
18974         
18975         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
18976
18977         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
18978         trace, it is now computed by an icall from trace_ips.
18979         
18980         * mini-exceptions.c: Fix a warning.
18981
18982 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
18983
18984         * mini-exceptions.c: don't bother getting stack trace info if
18985         it's not going to be used.
18986
18987 2005-01-27  Raja R Harinath  <rharinath@novell.com>
18988
18989         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
18990         ssapre-mini-ops.h.
18991
18992 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
18993
18994         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
18995
18996         * aot.c: Avoid calling mono_method_get_header () if not needed.
18997
18998         * mini.h: Bump AOT file format version.
18999         
19000         * mini.c (mono_emit_native_call): Allocate a GOT var here.
19001
19002         * mini.c (mono_print_tree): Print more info for calls.
19003
19004 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
19005
19006         * declsec.h: Remove warning by adding missing include for marshal.h
19007
19008 2005-01-26  Martin Baulig  <martin@ximian.com>
19009
19010         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
19011         `ip' twice.
19012
19013 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
19014
19015         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
19016         flags.
19017
19018         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
19019
19020         * aot.c (mono_compile_assembly): Fix a warning.
19021
19022 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
19023
19024         * declsec.c: Look for security attributes on the original MonoMethod 
19025         (and not the wrapped one). This fix permissions on icalls.
19026
19027 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
19028
19029         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
19030
19031         * mini.c (mono_allocate_stack_slots): Add a fixme.
19032
19033         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
19034
19035 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19036
19037         * inssel.brg: optimize casts of sealed types (more
19038         optimizations waiting for fixes in remoting).
19039
19040 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
19041
19042         * inssel.brg (stmt): Add another dummy rule.
19043
19044         * driver.c: Fix warnings.
19045
19046         * driver.c (mono_main): If running under valgrind, instruct glib to use
19047         the system allocation functions so valgrind can track the memory
19048         allocated by the g_... functions.
19049
19050         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
19051
19052         * mini-ops.h: Add OP_DUMMY_STORE opcode.
19053
19054         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
19055
19056         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
19057         variables in try regions.
19058
19059         * mini.c (mini_method_compile): Don't disable optimizations on large
19060         methods when AOT compiling.
19061
19062         * mini.c (mono_allocate_stack_slots): New arch independent method to 
19063         allocate stack slots. Not yet used.
19064
19065 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
19066
19067         * debug-mini.c (mono_debug_close_method): Plug some leaks.
19068
19069 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
19070
19071         * mini-ppc.c: make the branch info relative as the code
19072         buffer can be reallocated.
19073
19074 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
19075
19076         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
19077         * driver.c: Removed the AOT/security restriction. Now initialize the
19078         security manager (in metadata) if --security is used.
19079         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
19080         rather than the pointer to declarative security, when AOT is used.
19081
19082 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
19083
19084         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
19085         basic blocks, reduced intrinsic exception throwing code size.
19086
19087 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
19088
19089         * driver.c (mini_usage): Reorder the usage screen.
19090
19091 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
19092
19093         * mini.c (mono_resolve_patch_target): Fix warning.
19094
19095 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
19096
19097         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
19098         previous patch.
19099
19100         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
19101
19102         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
19103         breaks the amd64 build.
19104
19105         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
19106         register allocation. Fixes #71454.
19107
19108         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
19109
19110         * arrays.cs: Add new regression test.   
19111
19112 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19113
19114         * ssapre.c: Turned usage of snprintf to GString.
19115         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
19116         (I left it on by mistake in my previous commit).
19117
19118 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
19119
19120         * mini.c, cfold.c, basic-calls.cs: preserve side effects
19121         on cond branch optimization (fixes bug# 71515).
19122
19123 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19124
19125         * abcremoval.c: Fixed bug 71062.
19126         * abcremoval.h: Likewise.
19127
19128 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19129
19130         * mini.c: Added a new functionality to optimize_branches, the removal
19131         of useless basic blocks, and fixed some problem in the removal of
19132         critical edges; some utility functions added for both purposes.
19133         * ssapre.c: Added complex expression support, and fixed bug 70637.
19134         * ssapre.h: Likewise.
19135         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
19136         enabled in SSAPRE.
19137         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
19138         * driver.c: Re-enabled SSAPRE.
19139
19140 2005-01-19  Martin Baulig  <martin@ximian.com>
19141
19142         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
19143         the result of mono_get_method_constrained().
19144
19145 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
19146
19147         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
19148         manager.
19149
19150 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
19151
19152         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
19153         be detected.  Fixes #59296.
19154
19155 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
19156
19157         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
19158         which can happen. Fixes #71361.
19159
19160 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
19161
19162         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
19163         manager.
19164
19165 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
19166
19167         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
19168         appdomain-unload.exe to fail.
19169         
19170         * mini.c: Fix some memory leaks.
19171
19172 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
19173
19174         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
19175         Fixed bug and sped up some codepaths.
19176
19177 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
19178
19179         * mini.c: Fix some memory leaks.
19180
19181         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
19182         conversion.
19183
19184         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
19185
19186         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
19187         #71320.
19188
19189         * iltests.il: Add regression test for #71320.
19190
19191 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
19192
19193         * mini.c (mono_codegen): Fix installation of profiler hooks.
19194
19195         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
19196
19197 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
19198
19199         * mini.h, mini.c, cfold.c: optimize access to enum
19200         readonly fields, too. Eval conditional branches if possible
19201         to perform unreachable code removal in more cases.
19202
19203 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
19204
19205         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
19206
19207         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
19208         code manager.
19209
19210         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
19211         WinXP DEP. Fixes #71244.
19212
19213 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
19214
19215         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
19216
19217 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
19218
19219         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
19220
19221 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
19222
19223         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
19224         changes.
19225
19226         * mini.h: Bump AOT version.
19227
19228         * mini.h (MonoCompile): Change exvar to a hash table.
19229
19230         * mini.c: Allocate a separate exvar for each handler block.
19231
19232         * mini.c: Get rid of the computation of filter_lengths, its not needed.
19233
19234         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
19235         ex var with the pending exception and only throw if the two are equal.
19236         Fixes #68552.
19237         
19238         * exceptions.cs: Add tests for rethrow and nested catch clauses.
19239
19240         * mini-x86.c: Fix warnings.
19241
19242         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
19243         used by all the ports now.
19244
19245         * aot.c: Add write-symbols and save-temps options.
19246
19247 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
19248
19249         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
19250
19251 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
19252
19253         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
19254         operations.
19255
19256         * tramp-s390.c: Check vtable slot belongs to the domain.
19257
19258         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
19259         as per other platforms.
19260
19261         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
19262
19263 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
19264
19265         * driver.c: we don't run the Main() code in a subthread anymore.
19266
19267 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
19268
19269         * mini.c: added experimental rtc support in the statistical
19270         profiler: if the user has the permission, more accurate statistics
19271         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
19272         The MONO_RTC value must be restricted to what the linux rtc allows:
19273         power of two from 64 to 8192 Hz.
19274
19275 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
19276
19277         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
19278
19279 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
19280
19281         * mini-ppc.c: better icache flush for smp.
19282
19283 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
19284
19285         * mini-amd64.c (emit_move_return_value): Fix memory leak.
19286
19287         * mini-x86.c (get_call_info): Add the get_call_info () code from the
19288         amd64 port, not yet used.
19289
19290 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
19291
19292         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
19293         a struct type.
19294
19295 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
19296
19297         * driver.c: Added --security option to activate the security manager.
19298         Right now this will allow code generation for declarative demands and
19299         is disabled when AOT is specified.
19300         * mini.c: Add code generation for declarative security demands.
19301         * mini.h: Add mono_use_security_manager as an extern gboolean.
19302
19303 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
19304
19305         * aot.c (mono_compile_assembly): Speed up compilation a bit by
19306         emitting more dense assembly code.
19307
19308         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
19309         exception throwing stuff.
19310
19311 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
19312
19313         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
19314         dead code.
19315
19316         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
19317         left in by mistake.
19318
19319         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
19320         fixed.
19321
19322         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
19323
19324         * tramp-*.c: Only patch vtable slots if the object is in the current
19325         domain. Fixes appdomain-unload.exe.
19326
19327         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
19328         
19329         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
19330         x86 branch.
19331
19332 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
19333
19334         * mini.c (reverse_branch_op): New helper function.
19335
19336         * mini.c (optimize_branches): Run the new optimization only on 
19337         platforms which support it. Also reverse all kinds of branches.
19338
19339         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
19340
19341         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
19342         a throw statement.
19343
19344         * mini.c (optimize_branches): Reverse not-equals branches if the false
19345         bblock is a throw. This happens a lot of time with argument checking in
19346         corlib.
19347
19348         * mini.c (mono_codegen): Add support for placing basic blocks after
19349         the function epilogue.
19350
19351         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
19352         function epilogue.
19353         
19354 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
19355
19356         * mini.c (setup_stat_profiler): Only set this up if the platform
19357         supports ITIMER_PROF.
19358
19359 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
19360
19361         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
19362         previous patch.
19363
19364         * inssel.brg: Fix a warning.
19365
19366 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
19367
19368         * mini.c: added support for statistical profiler 
19369         (run with: --profile=default:stat).
19370
19371 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
19372
19373         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
19374
19375         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
19376
19377         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
19378         related to global registers from the amd64 port.
19379
19380 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
19381
19382         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
19383
19384         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
19385         with global registers.
19386         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
19387
19388         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
19389
19390 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
19391
19392         * debug-mini.c (encode_value): Fix off-by-one.
19393
19394         * aot.c (encode_value): Likewise.
19395
19396         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
19397
19398 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
19399
19400         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
19401         AOT.
19402
19403         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
19404         
19405         * aot.c (emit_method_info): Increase size of temp buffer.
19406
19407         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
19408         the AOT case.
19409
19410 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
19411
19412         * aot.c (emit_method_info): Fix build.
19413         
19414         * aot.c: Further rework of the AOT file format to reduce the size of
19415         the method info data.
19416
19417         * mini.h: Bump AOT file format version.
19418
19419 2004-12-27  Martin Baulig  <martin@ximian.com>
19420
19421         * mini.c (mini_get_method): New static method; call
19422         mono_get_method_full() and mono_get_inflated_method().
19423         (mono_method_to_ir): Use mini_get_method() instead of
19424         mono_get_method_full(). 
19425
19426 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
19427
19428         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
19429
19430 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
19431
19432         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
19433
19434         * inssel-amd64.brg: Add some optimization rules.
19435
19436 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
19437
19438         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
19439         standard not GC'd stuff is fine.
19440
19441 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
19442
19443         * aot.c: Rework the AOT file format to get rid of most of the global
19444         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
19445
19446         * mini.h: Bump AOT file format version.
19447         
19448 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
19449
19450         * mini.h: Bump AOT file format version.
19451
19452         * aot.c (mono_aot_is_got_entry): New function to determine if an 
19453         address is inside a GOT.
19454
19455         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
19456
19457         * cpu-pentium.md: Increase the maximum size of some instructions which
19458         might involve a got access.
19459         
19460         * mini.c (get_method_from_ip): Another debug helper function.
19461
19462         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
19463         when got var accesses are created during the decompose phase.
19464
19465         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
19466
19467         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
19468         argument mini_compile_method and to MonoCompile, and use this to
19469         determine whenever a given method is compiled for AOT. This allows the
19470         other methods compiled during AOT compilation to be free of AOT stuff,
19471         so the backends does not need to add special support for them by
19472         creating a fake GOT etc.
19473
19474         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
19475         longer needed.
19476
19477 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
19478
19479         * mini.c (mono_method_to_ir): It turns out that some of the
19480         x-appdomain wrappers are lax with types, so just ignore this for
19481         all wrappers.
19482
19483         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
19484         at the vtable->klass. If it is non-shared code we can just use the
19485         vtable.
19486
19487 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
19488
19489         * mini-ppc.c: access MonoDomain from tls, too.
19490
19491 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
19492
19493         * declsec.c: Removed unused variable (and related warning ;-)
19494
19495 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
19496
19497         * iltests.il: New test for LDELEMA on an array of ref types.
19498
19499         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
19500         all ldelema's on reftypes.
19501         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
19502         it was the wrong place to put it.
19503
19504         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
19505         register to pop to make this cleaner, at the request of Paolo.
19506
19507 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
19508
19509         * mini-ops.h (OP_GETHASHCODE): New op.
19510
19511         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
19512
19513         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
19514         operation.
19515
19516         For a microbenchmark, this reduces the cost of Hashtable.get_Item
19517         by 25%.
19518         
19519         * mini-x86.c (mono_arch_output_basic_block): Rather than
19520
19521         add ebp, 4
19522
19523         Emit
19524
19525         pop edx
19526
19527         The first is 3 bytes while the second is 1. This saves 36 kb on
19528         mscorlib, quite a big saving. When bootstraping mcs, I was able to
19529         see a small boost because of icache locality.
19530
19531         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
19532
19533 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
19534
19535         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
19536         started code sharing with the generic code.
19537
19538 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
19539
19540         * mini-ppc.c, cpu-g4.md: added code for direct access to
19541         tls data slots.
19542
19543 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
19544
19545         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
19546          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
19547         to OP_TLS_GET.
19548
19549 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
19550
19551         * declsec.c|h: Added functions to cache the declarative stack modifiers
19552         in MonoJitInfo and to create a security frame from a MonoJitInfo 
19553         structure.
19554         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
19555         created. Register internal calls for System.Security.SecurityFrame::
19556         _GetSecurityFrame and _GetSecurityStack.
19557         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
19558         the definitions for the new stack walk/callback mechanism.
19559         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
19560         first security frame for LinkDemands and InheritanceDemands) and
19561         GetSecurityStack for Demands. Both use the new mono_walk_stack code
19562         from lupus.
19563         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
19564         walk initialization (lupus).
19565
19566 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
19567
19568         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
19569         idiom.
19570         (handle_loaded_temps): Do not create a temporary variable for
19571         things that we know are temps. They will never be modified.
19572         (mono_spill_call): Set MONO_INST_IS_TEMP
19573         (mono_emulate_opcode): ditto
19574         (emit_tree): ditto
19575         (mono_method_to_ir.CEE_DUP): ditto
19576
19577 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
19578
19579         * mini.c (type_to_eval_stack_type): Make this handle the void type
19580         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
19581         (emit_tree): use ip_in_bb to special case some common idioms
19582         Update all callers to pass in the IP.
19583         (mono_method_to_ir): Make CEE_CALL* do the above as well.
19584
19585         This gives us a nice 2% speedup in mcs bootstrap.
19586
19587         * mini-x86.c (peephole_pass): Peephole pass to make
19588         mov  [foo], eax
19589         push [foo]
19590
19591         into
19592
19593         mov [foo], eax
19594         push eax
19595
19596         * mini.c (ip_in_bb): new method.
19597         (mono_method_to_ir): use this method rather than doing the hash
19598         lookup ourselves.
19599
19600         * linear-scan.c (mono_linear_scan): When expiring actives, you
19601         don't need to keep around variables that expire on this
19602         instruction. This makes it so that:
19603              a = b + 1
19604         will turn into:
19605              store (ebx add (ebx, 1))
19606         which will become
19607              add ebx, 1
19608
19609 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
19610
19611         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
19612         combination to avoid doing two copies. Fix up problems with previous
19613         patch.
19614
19615         * mini.c: Fix 64 bit warnings.
19616
19617         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
19618
19619 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
19620
19621         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
19622         changes from the x86 code.
19623
19624         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
19625
19626 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
19627
19628         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
19629         throwing code to reduce its size, unify the AOT and non-aot code and 
19630         get rid of relocations in the AOT case.
19631
19632         * mini-x86.h mini.c exceptions-x86.c 
19633         (mono_arch_get_throw_corlib_exception): New arch specific function to 
19634         raise corlib exceptions which doesn't require relocations in the 
19635         caller.
19636
19637         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
19638
19639 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
19640
19641         * mini.c (mono_emit_method_call): Only allocate the got var when it is
19642         needed.
19643
19644         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
19645         in the AOT case.
19646
19647 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19648
19649         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
19650         with add function when used from Inc/dec atomic 
19651         functions. Re-enabled optimization on x86.
19652         * mini-ops.h: renamed atomic_add functions to
19653         allow _add to match the Interlocked::Add and
19654         _add_next to match Interlocked::Inc/Dec.
19655
19656 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
19657
19658         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
19659         linking of BBs to the end BB, and enabled SSAPRE also with
19660         consprop and copyprop (which was prevented by that bug).
19661
19662 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19663
19664         * mini-x86.c: disabling the Interlocked optimizing code. 
19665
19666 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
19667
19668         * aot.c (load_aot_module): Move reading of got_addr after the AOT
19669         file version check.
19670         
19671 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19672
19673         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
19674         interlocked optimization due lack of support on x86, rewrote 
19675         exchange to take into account that base may be in eax.
19676         
19677         xsp works again; activated Interlocked optimizing code.
19678         
19679 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
19680
19681         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
19682
19683 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
19684
19685         * mini-ops.h: Add new opcodes.
19686
19687         * mini.h: Add new patch types. Add got_var to MonoCompile.
19688
19689         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
19690         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
19691         make it work with all kinds of patchable code.
19692
19693         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
19694         address of the GOT, and referencing entries in the GOT.
19695
19696         * mini.c: Add code to load the GOT address if needed by an opcode.
19697
19698         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
19699         independent AOT code on the x86 using an elf-style Global Offset Table.
19700
19701 2004-12-14  Raja R Harinath  <rharinath@novell.com>
19702
19703         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
19704
19705 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19706
19707         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
19708         when running xsp.
19709
19710 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
19711
19712         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
19713         of Interlocked:Increment/Decrement/Add as inline ops.
19714         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
19715
19716 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
19717
19718         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
19719         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
19720
19721 2004-12-12  Duncan Mak  <duncan@ximian.com>
19722
19723         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
19724         again. `patch_info->table_size' is no longer valid after Zoltan's
19725         commit #37636.
19726
19727 2004-12-12  Martin Baulig  <martin@ximian.com>
19728
19729         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
19730         if we are the "real" method, ie. not an inlined method inside it.
19731
19732 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
19733
19734         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
19735         before we look in the special fields table. This fixes
19736         ../tests/thread-static-init.cs.
19737
19738 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19739
19740         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
19741         for Array get_Rank and get_Length. Fixes bug #70465.
19742
19743 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
19744
19745         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
19746         separate structure to reduce the size of MonoJumpInfo.
19747
19748 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
19749
19750         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
19751
19752 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
19753
19754         * mini.c (mini_get_inst_for_method): Changed to allow ports
19755         to return a MonoInst instead of opcode 
19756         (renamed mini_get_opcode_for_method to better reflect the new functionality)
19757         
19758         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
19759         Allow ports to return a created MonoInst instead of op-code, will enable
19760         new optimizations.
19761         (renamed mini_get_opcode_for_method to better reflected the functionality)
19762
19763 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
19764
19765         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
19766
19767 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19768
19769         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
19770         Fixes #69985.
19771
19772 2004-12-08  Martin Baulig  <martin@ximian.com>
19773
19774         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
19775         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
19776
19777 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19778
19779         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
19780         correctly.
19781
19782         * exceptions.cs: Disable some tests which depend on properties of x86 fp
19783         arithmetic.
19784
19785 2004-12-08  Raja R Harinath  <rharinath@novell.com>
19786
19787         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
19788
19789 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
19790
19791         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
19792         bug introduced by the previous patch.
19793
19794 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
19795
19796         * mini-ppc.c, objectc.cs: handle large structs passed by value
19797         (fixes bug #69972).
19798
19799 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
19800
19801         * mini-ppc.c: OP_ARGLIST implementation from
19802         Geoff Norton  <gnorton@customerdna.com>.
19803
19804 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
19805
19806         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
19807         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
19808
19809 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
19810
19811         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
19812
19813 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19814
19815         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
19816         support.
19817
19818 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
19819
19820         * mini-sparc.c: Zero out localled-ed memory.
19821
19822         * iltests.il: Add tests for zeroing out localloc-ed memory.
19823
19824 2004-12-04  Martin Baulig  <martin@ximian.com>
19825
19826         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
19827         mono_method_get_signature_full().       
19828
19829 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
19830
19831         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
19832         and some utility functions (always for SSAPRE), integrated SSAPRE.
19833         * mini.h: Likewise.
19834         * driver.c: Added ssapre option.
19835         * ssa.c: Small fix on OP_ARG handling.
19836         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
19837         * Makefile.am: Likewise.
19838
19839 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
19840
19841         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
19842         now in the xp code.
19843
19844         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
19845         icall.
19846
19847 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19848
19849         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
19850         
19851         * cpu-s390.md : Increase instruction length of oparglist.
19852
19853         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
19854
19855 2004-11-30  Martin Baulig  <martin@ximian.com>
19856
19857         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
19858         virtual generic methods.  We call a special helper_compile_generic_method()
19859         icall to retrieve the method from the vtable, inflate and compile
19860         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
19861
19862         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
19863
19864 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
19865
19866         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
19867
19868 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
19869
19870         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
19871         Fixes #69929.
19872
19873 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
19874
19875         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
19876         platforms with PIC aot.
19877
19878 2004-11-28  Martin Baulig  <martin@ximian.com>
19879
19880         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
19881         Fixes gen-112.cs.
19882
19883 2004-11-28  Martin Baulig  <martin@ximian.com>
19884
19885         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
19886         the result of mono_type_get_underlying_type() to check whether
19887         we're byref.
19888
19889 2004-11-26  Martin Baulig  <martin@ximian.com>
19890
19891         * mini.c
19892         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
19893         in the g_assert().
19894
19895 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
19896
19897         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
19898         the same way as the other arguments so they won't get clobbered.
19899
19900         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
19901         calls through R11 since it is clobbered by the trampoline code.
19902
19903 2004-11-26  Raja R Harinath  <rharinath@novell.com>
19904
19905         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
19906         pick up in-tree mscorlib.dll.
19907
19908 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
19909
19910         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
19911
19912         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
19913         runtime data/code are now stored in a table similar to the GOT in ELF. 
19914         This allows the code itself to be position independent.
19915
19916         * aot.c: Fix loading of referenced assemblies after the lazy assembly
19917         loading changes.
19918
19919         * aot.c: Attach ELF type (object/function) directives to all global
19920         symbols.
19921
19922         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
19923
19924         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
19925
19926         * mini-amd64.h: Turn on PIC AOT code.
19927
19928         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
19929         returning the offset within an OP_AOTCONST instruction where the GOT
19930         offset needs to be added.
19931
19932         * mini.h: Bump AOT file format version.
19933
19934 2004-11-25  Martin Baulig  <martin@ximian.com>
19935
19936         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
19937         uninflated generic methods.
19938
19939 2004-11-25  Martin Baulig  <martin@ximian.com>
19940
19941         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
19942
19943 2004-11-24  Martin Baulig  <martin@ximian.com>
19944
19945         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
19946         original klass (this only applies for generic instances).
19947
19948 2004-11-24  Martin Baulig  <martin@ximian.com>
19949
19950         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
19951         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
19952         that array).
19953
19954 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
19955
19956         * mini.c (mono_method_to_ir): Disable inlining for methods containing
19957         localloc. Fixes #69678.
19958
19959         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
19960         
19961 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
19962
19963         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
19964         used SSE registers on pinvoke calls. Fixes #69774.
19965
19966 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
19967
19968         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
19969         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
19970
19971 2004-11-23  Raja R Harinath  <rharinath@novell.com>
19972
19973         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
19974         Refer directly to the mcs/ tree.
19975
19976 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19977
19978         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
19979         Check if a trampoline for a synchronized method is required. 
19980
19981 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
19982
19983         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
19984         with localloc if needed. Throe arithmetric exception in
19985         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
19986         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
19987
19988 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
19989
19990         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
19991         types before switching on type.  Fixes #69622.
19992
19993 2004-11-19  Raja R Harinath  <rharinath@novell.com>
19994
19995         * Makefile.am (check-local): New.  Integrate into 'make check'.
19996         (MCS,RUNTIME): Define using in-tree mono and mcs.
19997         (ILASM): New.
19998         (%.exe): Use $(ILASM).
19999
20000 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
20001
20002         * mini-ppc.c: adjust initial prolog size (bug #69691).
20003
20004 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
20005
20006         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
20007         #69664.
20008
20009 2004-11-17  Raja R Harinath  <rharinath@novell.com>
20010
20011         * Makefile.am (clean-local): Rename from 'clean'.
20012
20013 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20014
20015         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
20016         to mono_arch_is_int_overflow. 
20017         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
20018         SIGFPE events.
20019
20020 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
20021
20022         * declsec.c|h: New files to support declarative security attributes.
20023         Added function to check if a method has (applicable) security.
20024         * mini.c|h: Add check for declarative security attributes in
20025         mono_method_check_inlining.
20026         * Makefile.am: Added declsec.c and declsec.h to the build.
20027
20028 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
20029
20030         * mini.c, mini.h: update to keep dynamic code info per-domain.
20031
20032 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
20033
20034         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
20035         (mini_init): Get rid of it from here too.
20036
20037 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
20038
20039         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
20040         implemented OP_RETHROW (patch by Geoff Norton
20041         <gnorton@customerdna.com>).
20042
20043 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
20044
20045         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
20046         between appdomains.  Fixes appdomain-unload on PPC.
20047
20048 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
20049
20050         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20051         mini-exceptions.c: handle the new wrapper types.
20052         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
20053         token value as a MonoClass* when compiling a wrapper.
20054         mono_jit_create_remoting_trampoline now takes an additional
20055         MonoRemotingTarget parameter.
20056         
20057 2004-11-10  Martin Baulig  <martin@localhost>
20058
20059         * mini.c (mono_method_to_ir): Use `generic_container->context'
20060         rather than creating a new one.
20061
20062 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20063
20064         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
20065
20066         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
20067
20068 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
20069
20070         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
20071         the experimental aot cache stuff.
20072
20073 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
20074
20075         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20076         mini-exceptions.c: update to exception clause structure changes.
20077
20078 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
20079
20080         * exceptions-x86.c (throw_exception): Fix warnings.
20081
20082         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
20083         for OP_RETHROW.
20084
20085 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
20086
20087         * exceptions-sparc.c (get_throw_exception): Really fix this.
20088
20089 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
20090
20091         * tramp-*.c: we no longer support icalls without wrappers, so
20092         a bit of code can be removed here
20093
20094 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
20095
20096         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
20097         patch.
20098
20099         * cpu-sparc.md: Add op_rethrow.
20100
20101         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
20102
20103         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
20104
20105         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
20106         * mini-ops.h: Add OP_RETHROW.
20107
20108         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
20109
20110         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
20111
20112 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
20113         
20114         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
20115         Makes the output much easier to read
20116
20117 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
20118
20119         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
20120         prevents another huge leak when compiling with ssa. Secondly, the
20121         performance of doing this rather than freeing the lists is much
20122         better. GList does a lock every time you allocate a list link,
20123         so that it can use a memory pool. So, it is better to just use
20124         a memory pool of our own.
20125         
20126         * ssa.c, linear-scan.c: replace g_list_remove_link with
20127         g_list_delete.  The remove one does not free the GList, so we were
20128         leaking memory. On -O=all --compile-all with corlib, this cut down
20129         3 MB of allocations.
20130
20131 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
20132
20133         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
20134
20135         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
20136
20137         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
20138         into a new function mono_create_jit_trampoline ().
20139
20140 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
20141
20142         * trace.c (get_spec): Allow tracing of classes without a namespace.
20143
20144 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
20145
20146         * mini.c: Fix pointer overwrite in mini_method_compile.
20147
20148 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
20149
20150         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
20151         The darwin ABI needs some special handling for 1 and 2 byte structs
20152         Lets use lbz/lhz instead of lwz everywhere.
20153         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
20154         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
20155         Use stb/sth for the former, and put the latter always on stack instead of in
20156         argument registers.
20157
20158 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
20159
20160         * trace.c (is_filenamechar): Add '_'.
20161
20162 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
20163
20164         * mini-s390.c: Fix prolog length to allow for large trace requirements.
20165
20166         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
20167
20168 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
20169
20170         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
20171         depends on libmonogc. Fixes #68805.
20172
20173 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
20174
20175         * mini.c (mono_jit_free_method): Provide extra information for
20176         this error.  Currently this leaks, but will be turned into a
20177         developer option in the future.
20178
20179 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
20180
20181         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
20182
20183 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
20184
20185         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
20186         boundary. Fixes reading of PATCH_INFO_R4 and R8.
20187         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
20188
20189 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
20190
20191         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
20192         trampolines for AOT code.
20193
20194 2004-10-22    <vargaz@freemail.hu>
20195
20196         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
20197         constructed types. Fixes #68136.
20198
20199 2004-10-21  Martin Baulig  <martin@ximian.com>
20200
20201         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
20202         if it returns true, unwind the stack to the call instruction.
20203
20204 2004-10-21    <vargaz@freemail.hu>
20205
20206         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
20207
20208         * mini.h: Bump AOT version number.
20209
20210         * objects.cs: Add another test for unbox trampolines.
20211
20212         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
20213         valuetype methods.
20214
20215 2004-10-20    <vargaz@freemail.hu>
20216
20217         * driver.c: Add SHARED to the set of optimizations tested.
20218
20219         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
20220
20221         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
20222         used by CEE_NEWARR.
20223
20224         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
20225
20226 2004-10-20  Martin Baulig  <martin@ximian.com>
20227
20228         * mini-exceptions.c (mono_handle_exception): Call
20229         mono_debugger_handle_exception() to tell the debugger about
20230         catch/finally clauses.
20231
20232 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
20233
20234         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
20235
20236         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
20237         #68447.
20238
20239 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
20240
20241         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
20242         methods as their native size, fixed bug #57543, #57545.
20243         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
20244         This saves a temporary register and mullw call down into 1 (minor perf
20245         increase for cases like sum = sum * 5;  This use to translate into:
20246             li r11,5
20247             mullw r28,r28,r11
20248         It now translates to
20249             mulli r28,r28,5
20250
20251 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
20252
20253         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
20254         #68388.
20255
20256 2004-10-11  Martin Baulig  <martin@ximian.com>
20257
20258         * mini.c (mono_method_to_ir): If we're a generic method, get the
20259         MonoGenericContainer from our MonoMethodNormal and create a
20260         MonoGenericContext from it.
20261
20262 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
20263
20264         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
20265
20266         * basic-long.cs: Add test for checked i8->i2 cast.
20267
20268 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20269
20270         * inssel-ppc.brg: added a couple of speedup rules.
20271
20272 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
20273
20274         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
20275         to speed up rebuilds.
20276
20277 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20278
20279         * mini-s390.c: Minor fix to OP_OR_IMM.
20280
20281 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
20282
20283         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
20284         better. Fixes appdomain-unload.exe on sparc.
20285
20286 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
20287
20288         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
20289         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
20290         see bug 67324.
20291
20292 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
20293
20294         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
20295
20296 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
20297
20298         * mini.c: Always generate a field read/write wrapper for members
20299         of the class MarshalByRefObject since the actual instance could
20300         be a CBO.
20301
20302 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
20303
20304         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
20305
20306 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
20307
20308         * driver.c mini.h trace.c: Move the setting of the main assembly into
20309         a separate function called mono_trace_set_assembly () and call it after
20310         actually loading the main assembly. Fixes #66872.
20311
20312 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
20313
20314         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
20315         using the code manager.
20316
20317 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
20318
20319         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
20320
20321 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
20322
20323         * cpu-amd64.md: Fix bug in previous patch.
20324         
20325         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
20326         #66650.
20327
20328 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
20329
20330         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20331         mini-exceptions.c: updates for changed stack walk interface.
20332
20333 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20334
20335         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
20336
20337 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
20338
20339         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
20340
20341 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
20342
20343         * driver.c (mini_regression_list): Do not call mono_assembly_close 
20344         since assemblies can't be unloaded.
20345         
20346 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20347
20348         * cpu-amd64.md: Fix more instruction lengths.
20349
20350         * cpu-amd64.md: Fix lengths of some instructions.
20351
20352 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
20353
20354         * inssel.brg: Make the array ldelema check aot friendly.
20355
20356 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20357
20358         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
20359
20360         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
20361
20362 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
20363
20364         * mini-x86.c: Fix build.
20365
20366         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
20367         mono_type_get_underlying_type () helper function to simplify code.
20368         
20369 2004-09-09  Martin Baulig  <martin@ximian.com>
20370
20371         * mini-amd64.c: Don't access `type->data.klass' directly, call
20372         mono_class_from_mono_type() instead since the type may be a
20373         generic instance.
20374
20375 2004-09-09  Martin Baulig  <martin@ximian.com>
20376
20377         * mini-amd64.c (get_call_info): Fix support for generic instances.
20378         (add_valuetype): Use mono_class_from_mono_type() to get the class
20379         since we can be a generic instance.
20380
20381 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
20382
20383         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
20384
20385 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
20386
20387         * liveness.c: reset spill costs on each scan: bug 62107
20388
20389 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
20390
20391         * exceptions-sparc.c (mono_arch_find_jit_info): remove
20392         unnecessary line that doesn't compile
20393
20394 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20395
20396         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
20397         trampolines, make them call an error function so people can fix their
20398         code.
20399
20400 2004-09-06  Martin Baulig  <martin@ximian.com>
20401
20402         * mini.c (mono_method_to_ir): When initializing locals, handle a
20403         generic instances like a valuetype if it's a valuetype and like a
20404         class if it's a class.
20405
20406 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20407
20408         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
20409         stack. Fixes #64674.
20410
20411         * exceptions.cs: Add test for unwinding of call arguments.
20412
20413 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
20414
20415         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
20416         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
20417         set the carry/borrow flag). The sparc and s390 implementations
20418         can now use optimized versions (and simplify the code). ppc bugfixes.
20419
20420 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20421
20422         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
20423
20424 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
20425
20426         * inssel-amd64.brg: Remove leftover 32 bit rule.
20427
20428         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
20429
20430 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
20431
20432         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
20433         mono_arch_find_jit_info functions into a new function. Fix a memory
20434         leak.
20435
20436         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
20437         refactored code.
20438         
20439 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20440
20441         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
20442         as well.
20443         
20444         * exceptions.cs: Add array size tests.
20445
20446         * mini.c: Allocate a separate icall wrapper for each arity of 
20447         mono_array_new_va. Fixes #59509.
20448
20449         * exceptions.cs: Add testcase for 64578.
20450
20451         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
20452
20453         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
20454         
20455 2004-09-02  Martin Baulig  <martin@ximian.com>
20456
20457         * mini.c (mono_method_to_ir): When initializing the locals, call
20458         handle_initobj() on the generic instance itself, not its
20459         underlying type.
20460
20461 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20462
20463         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
20464         MonoJitInfo for dynamic methods.
20465
20466         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
20467
20468         * mini.c: Add support for freeing JIT data for dynamic methods.
20469         
20470 2004-09-01  Martin Baulig  <martin@ximian.com>
20471
20472         * mini-x86.c (is_regsize_var): Added support for generic
20473         instances.
20474         (mono_arch_emit_prolog): Make this compile again, use
20475         `x86_push_imm_template (code)'.
20476
20477 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
20478
20479         * mini-x86.c: make all push_imm instructions that get
20480         patched always emit the long form
20481
20482 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
20483
20484         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
20485         in a per-domain hash.
20486
20487         * mini-amd64.c (merge_argument_class_from_type): Handle generic
20488         types.
20489
20490 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
20491
20492         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
20493         work.
20494         
20495         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
20496         work.
20497
20498         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
20499         Beginnings of SSE2 support.
20500
20501         * exceptions.cs: Add more tests for checked int<->uint casts.
20502
20503 2004-08-28  Martin Baulig  <martin@ximian.com>
20504
20505         * mini-x86.c (mono_arch_instrument_epilog): Added support for
20506         generic instances.
20507
20508         * mini.c
20509         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
20510         Handle generic instances recursively.
20511
20512 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20513
20514         * iltests.il: test for conv.u8 on a constant
20515
20516 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20517
20518         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
20519         LCONV_x4 (shrun_32 (membase)).
20520
20521 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20522
20523         * inssel-x86.brg: c&p rules for push/setret of long
20524
20525 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
20526
20527         * inssel-x86.brg: c&p rules for compare (base, regvar) and
20528         compare (regvar, base)
20529
20530         * inssel-x86.brg: more burg love
20531
20532         * inssel.brg: more cleanup
20533
20534         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
20535
20536 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
20537
20538         * basic-long.cs, basic-calls.cs: new tests for optimization.
20539
20540 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
20541
20542         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
20543         patch.
20544
20545 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20546
20547         * mini-amd64.c (read_tls_offset_from_method): Add another case.
20548         
20549 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
20550
20551         * inssel.brg (mini_emit_memcpy): use 
20552         NO_UNALIGNED_ACCESS to disable memcpy optimization
20553
20554 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20555
20556         * mini-amd64.c: Handle generic types in various places.
20557
20558         * mini.c (mono_method_to_ir): Handle generic types in init locals.
20559
20560 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
20561
20562         * mini.c (handle_box): Fix warning.
20563
20564         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
20565
20566         * mini-amd64.h: Enable the emit_state optimization.
20567
20568         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
20569
20570         * mini-amd64.c: Add some new 64 bit peephole opts.
20571
20572         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
20573
20574         * cpu-amd64.md: sreg1 of div instructions must be %rax.
20575
20576         * mini-amd64.c: Register allocator fixes.
20577
20578         * mini.c: Add an optimization to emit_state to avoid allocation of new
20579         registers on some platforms.
20580
20581 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
20582
20583         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
20584
20585         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
20586         allocation. Fixes #63085.
20587
20588         * basic-long.cs: Add new regression test.
20589
20590         * mini-amd64.c: Register allocator improvements.
20591
20592 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
20593
20594         * mini-amd64.c (read_tls_offset_from_method): Add another code
20595         sequence.
20596
20597         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
20598         instruction sequence for nullifying class init trampolines.
20599
20600         * objects.cs: Add new regalloc test.
20601
20602         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
20603
20604 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20605
20606         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
20607         
20608         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
20609         arguments.
20610
20611         * driver.c: Fix profiling after TLS changes.
20612         
20613         * driver.c (mono_main): Set mono_stats.enabled if needed.
20614
20615         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
20616         CEE_BOX.
20617
20618 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
20619
20620         * mini-x86.c: use a 1 op rather than a 2 op tls access
20621         instruction -> faster.
20622
20623 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20624
20625         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
20626         x86 backend.
20627
20628 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
20629
20630         * exceptions-sparc.c (throw_exception): fix typo
20631
20632 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
20633
20634         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
20635         set tree->dreg correctly with tls. Allow any
20636         register to be used.
20637
20638         * mini-x86.c (read_tls_offset_from_method): add new code
20639         generation pattern seen with GCC.
20640
20641
20642 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
20643
20644         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
20645         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20646         exceptions-sparc.c: fix some performance issues in exception
20647         handling and setting of the stack trace for exceptions that were
20648         already thrown.
20649
20650 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20651
20652         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
20653         x86 backend.
20654         
20655         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
20656         registers.
20657
20658 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20659
20660         This patch inlines tls access, when possible.
20661         
20662         * mini.h: new arch functions for TLS intrinsics.
20663         All platforms updated with a stub.
20664
20665         * mini.c: use the new intrinsics
20666
20667         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
20668         arch specific intrinsic for tls variables
20669
20670 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20671
20672         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
20673         under windows.
20674
20675 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20676
20677         * mini.c: thread local allocation
20678
20679 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
20680
20681         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
20682
20683         * Makefile.am: Link against the static version of libmonogc.
20684         
20685         * Makefile.am: Link the static versions of the convenience libraries
20686         into the mono executable.
20687
20688         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
20689
20690 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
20691
20692         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
20693         on integer overflow.
20694
20695         * mini-amd64.c: Reorganize function call code.
20696
20697         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
20698
20699 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20700
20701         * inssel-x86.brg: use xor eax,eax.
20702         
20703         * basic.cs: new tests
20704
20705 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20706
20707         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
20708         in exception throwing code.
20709         
20710 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20711
20712         * inssel-x86.brg: use xor esi,esi.
20713
20714 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20715
20716         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
20717         can trace methods compiled during mini_init () too.
20718
20719         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
20720         CEE_CONV_U4.
20721
20722 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20723
20724         * Makefile.am: static link on x86 (r=zoltan)
20725
20726 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20727
20728         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
20729         code since it causes some programs to fail.
20730
20731 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
20732
20733         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
20734
20735 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
20736
20737         * mini.c: ovfops_op_map - add STACK_OBJ case for
20738         CONV_I 
20739         * basic.cs: add test_0_pin_string as test
20740         case for above.
20741
20742 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
20743
20744         * Makefile.am: build C# if srcdir != builddir
20745
20746 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
20747
20748         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
20749         fall-through blocks.
20750
20751 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20752
20753         * driver.c: enable loop by default again and include abcrem in -O=all.
20754
20755 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
20756
20757         * iltests.il: Add some localloc tests.
20758
20759         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
20760
20761         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
20762         Fixes #62574.
20763
20764         * inssel-amd64.brg: Add some optimizations.
20765
20766         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
20767         for gcc-3.4.
20768
20769         * Makefile.am: Statically link mono against libmono on AMD64.
20770         
20771         * mini-amd64.c inssel-amd64.brg: Optimizations.
20772
20773 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
20774
20775         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
20776
20777         * tramp-amd64.c: Patch calling code in trampolines.
20778
20779 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
20780
20781         * mini-amd64.c: pinvoke struct passing fixes.
20782
20783 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
20784
20785         * mini-sparc.c: redo change, make mono_arch_cpu_init call
20786         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
20787
20788 2004-08-05  Duncan Mak  <duncan@ximian.com>
20789
20790         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
20791         CEE_LDELEM_ANY.
20792
20793 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20794
20795         * mini-amd64.c (emit_move_return_value): Move return value for normal
20796         calls too.
20797
20798 2004-08-05  Martin Baulig  <martin@ximian.com>
20799
20800         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
20801         `type->type'; just modify `type' itself when dealing with enums
20802         and generic instances.
20803         (check_call_signature): Make `simple_type' a `MonoType *'.
20804
20805 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20806
20807         * mini.c: Use OP_PADD to add offsets to addresses.
20808
20809         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
20810
20811 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
20812
20813         * mini-sparc.c (mono_arch_emit_epilog): fix check
20814         for folding last op into restore instruction
20815
20816 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20817
20818         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
20819         helper methods using the code manager.
20820         
20821         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
20822
20823         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
20824
20825 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20826         
20827         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
20828           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
20829
20830         * mini-s390.c: fix tail processing
20831
20832 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
20833
20834         * mini-ppc.c: mul.ovf.un exception name fix.
20835
20836 2004-08-03  Martin Baulig  <martin@ximian.com>
20837
20838         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
20839         instances; before jumping to `handle_enum', also modify `ptype'.
20840
20841 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
20842
20843         * cpu-sparc.md: fcall maximal length too small.
20844
20845 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
20846
20847         * mini-amd64.c mini.h: Add initial support for passing/returning 
20848         structures to/from pinvoked methods.
20849
20850 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
20851
20852         * mini-ppc.c: reg allocator fix.
20853
20854 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
20855
20856         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
20857
20858         * inssel.brg: Optimize memset on 64 bit machines.
20859
20860         * mini-amd64.c: Fix some vararg cases.
20861
20862 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20863
20864         * mini-s390.c: Corrected macro in emit_float_to_int
20865
20866         * s390-abi.cs: Tests to exercise the s390 ABI
20867
20868 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20869
20870         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
20871         caller saved regs.
20872
20873         * basic.cs: Add a test for add.ovf.un.
20874
20875 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
20876
20877         * mini-sparc.c: add case for OP_IDIV_UN
20878
20879 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20880
20881         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
20882         
20883         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
20884
20885 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
20886
20887         * basic.cs: regression tests.
20888
20889         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
20890         regressions.
20891
20892 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20893
20894         * basic.cs: Add a new test.
20895
20896         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
20897         and AOT. Various fixes and optimizations.
20898
20899         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
20900
20901 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20902
20903         * mini-ppc.c: make sure temp regs are not used for global reg
20904         allocation.
20905
20906 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
20907
20908         * cpu-sparc.md: conv_i8 fix for 64bits
20909
20910         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
20911
20912 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
20913         
20914         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
20915         add opcode for cmp BYTE PTR [eax], imm.
20916
20917         * inssel.brg: Make memcpy and memset takes bases.
20918
20919 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
20920
20921         * *-amd64.*: More AMD64 work.
20922         
20923 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
20924
20925         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
20926         add a compare-not-equal opcode.
20927         
20928 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
20929
20930         * mini.c: Use mono_init_from_assembly instead of mono_init.
20931         
20932 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
20933
20934         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
20935
20936         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
20937
20938         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
20939
20940         * inssel.brg: 64 bit fixes.
20941
20942         * mini.h (MonoCallInst): Add some AMD64 specific data.
20943
20944         * mini.h: Add some OP_P opcodes.
20945
20946 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
20947
20948         * basic.cs: tests for 61797 and 61740
20949
20950 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
20951
20952         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
20953         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
20954
20955 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
20956
20957         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
20958
20959         * *-amd64*.*: Ongoing AMD64 work.
20960
20961 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
20962
20963         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
20964
20965         * *-amd64*: Ongoing AMD64 work.
20966
20967         * mini-arch.h: Add AMD64 support.
20968
20969         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
20970
20971         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
20972
20973         * mini-ops.h: Add new opcodes.
20974
20975         * Makefile.am: Add AMD64 support.
20976
20977         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
20978         rules into the inssel-long*.brg files.
20979
20980         * *-amd64.*: Add beginnings of AMD64 backend.
20981
20982 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
20983
20984         * mini.c (print_dfn): commenting out the code that prints
20985         the cil. With -O=deadce, this makes -v -v crash.
20986         
20987         * cpu-pentium.md: make checkthis have a length of 2
20988
20989 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
20990
20991         * mini-sparc.h: fix implementations of __builtin
20992         functions for Sun compiler for V9.
20993
20994 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
20995
20996         * mini.c: use the new stelem.ref wrapper
20997         * exceptions.cs, arrays.cs: new stelem.ref tests
20998
20999 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21000
21001         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
21002         new XSP should work with these changes).
21003
21004 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
21005         
21006         * inssel-{long32,x86,}.brg: trivial optimizations.
21007         
21008 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
21009
21010         * mini.c: load value when emitting box operation in
21011         constrained calls.
21012
21013 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
21014
21015         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
21016         is one byte shorter than cmp DWORD PTR [eax], 0.
21017
21018 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
21019
21020         * inssel-ppc.brg: arguments on the stack are always
21021         relative to the stack pointer (spotted by Neale Ferguson).
21022
21023 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21024
21025         * exceptions-x86.c: delay appending the method name to the trace until
21026         after mono_jit_info_table_find is called, as this gets the real
21027         MonoMethod.
21028
21029 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
21030
21031         * aot.c: register roots
21032
21033 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21034
21035         * aot.c : I could just use PLATFORM_WIN32 flag.
21036
21037 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21038
21039         * aot.c : Reverting the previous fix. This time it broke linux build.
21040
21041 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21042
21043         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
21044
21045 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
21046
21047         * mini.c (handle_stack_args): Remove some more debugging code.
21048         
21049         * mini.c (handle_stack_args): Remove debug output left in by mistake.
21050
21051         * driver.c mini.h aot.c: Allow additional options to be specified with
21052         --aot and pass them to mono_compile_assembly.
21053
21054         * aot.c: Add experimental code to AOT compile all loaded assemblies
21055         on demand and save the code into a cache in the filesystem.
21056
21057         * aot.c: Add support for more wrapper methods.
21058         
21059         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
21060         58863.
21061
21062         * cpu-*.md: Remove removed opcodes.
21063
21064         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
21065         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
21066         related icalls to marshal.c.
21067
21068 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
21069
21070         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
21071
21072         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
21073
21074         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
21075
21076 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
21077         * liveness.c: If liveness is recomputated we need to reset the information
21078         for each variable. This way, if the liveness range has been narrowed
21079         by optimizations that happened after the last computation, we can return
21080         a smaller range.
21081         
21082         For example, if you have
21083         
21084         {
21085                 int i = 0;
21086                 
21087                 // Tons of code that does not affect i
21088                 
21089                 i = foo ();
21090                 ...
21091         }
21092         
21093         i = 0 is dead code and will be removed by SSA. However, when
21094         linear scan gets to the code, i will still appear to be live
21095         throughout the entire block. This prevents good register allocation.
21096
21097 2004-07-06  Martin Baulig  <martin@ximian.com>
21098
21099         * debug-mini.c (mono_debug_init_method): Allow
21100         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
21101         (mono_debug_add_icall_wrapper): New method.
21102
21103         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
21104
21105 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
21106
21107         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
21108         optimization.
21109
21110 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
21111
21112         * aot.c (mono_aot_load_method): Fix loading of debug info.
21113
21114 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
21115
21116         * aot.c: Add logging support.
21117
21118 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
21119
21120         * mini.h: Add prototype for mono_print_method_from_ip.
21121
21122         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
21123
21124         * inssel.brg: 64 bit fixes.
21125
21126         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
21127         inssel-long32.brg.
21128
21129         * Makefile.am: Add SPARC64 support.
21130
21131 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
21132
21133         * aot.c: Fix alignment problems on 32 bit platforms.
21134
21135 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
21136
21137         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
21138         SPARC64.
21139
21140         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
21141         problems.
21142
21143         * mini.h: Bump AOT file version. Some 64 bit fixes.
21144
21145 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
21146
21147         * inssel-sparc.brg: Add new rule to avoid register moves.
21148
21149         * inssel.brg: Add ldind_to_load_membase helper function.
21150
21151 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
21152
21153         * mini.c: OffsetToStringData intrinsic.
21154         
21155 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
21156
21157         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
21158
21159         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
21160         regression tests.
21161
21162         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
21163 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21164
21165         * mini.c: reinstated mono_compile_get_interface_var()
21166         on x86, too, since the change breaks the Gtk# build there as well.
21167
21168 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21169
21170         * driver.c: remove loop from the default optimizations: it seems to
21171         interact badly with some of the other options (see bug #60613).
21172
21173 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
21174
21175         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
21176         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
21177
21178 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
21179
21180         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
21181         vararg-using methods.
21182
21183 2004-06-21  Martin Baulig  <martin@ximian.com>
21184
21185         * mini/mini-exceptions.c
21186         (mono_handle_exception): Added `gpointer original_ip' argument.
21187         After calling mono_unhandled_exception(), call
21188         mono_debugger_unhandled_exception() and if that returns true,
21189         restore the context and return.
21190
21191 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
21192
21193         * mini-ppc.c: prefer the use of relative branches so
21194         they won't need to be patched in aot code (patch from Patrick Beard).
21195
21196 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
21197
21198         * aot.c: patch from Patrick Beard to make the output assembly
21199         more correct for the MacOSX assembler. Small tweak to
21200         generate sane images on Linux/PPC, too.
21201
21202 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21203
21204         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
21205         case until bug #59509 is fixed (shows up in #60332).
21206
21207 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21208
21209         * mini.c: make sure the needed wrappers are compiled, too, with
21210         precomp.
21211
21212 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
21213
21214         * driver.c: remove NPTL reference in --version output.
21215
21216 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21217
21218         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
21219         generate valid assembly for the Mach-O assembler.
21220
21221 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
21222
21223         * driver.c: don't include abcrem in the all optimization specifier
21224         since it slows down jit compilation too much for now.
21225
21226 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
21227
21228         * mini.c: use BIGMUL only if both operands have the same signage.
21229         * iltests.il: Test for bug 60056. (errors related to signage in
21230         BIGMUL).
21231
21232         r=lupus.
21233
21234 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
21235
21236         * mini.c, aot.c: memory leak fixes.
21237
21238 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21239
21240         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
21241
21242 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
21243
21244         * Makefile.am: remove the -static hack completely, it links in
21245         statically glib as well.
21246
21247 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
21248
21249         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
21250         * exceptions.cs: make it compile with new mcs/csc.
21251
21252 2004-06-03 Massimiliano Mantione <massi@ximian.com>
21253         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
21254         and added relevant test case.
21255
21256 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
21257
21258         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
21259         regressions in gtk-sharp.
21260
21261 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
21262
21263         * exceptions.cs: New regression tests.
21264
21265         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
21266
21267 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
21268
21269         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
21270
21271 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
21272
21273         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
21274
21275         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
21276
21277 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
21278
21279         * mini.c (mono_jit_runtime_invoke): Init class in this
21280         method instead of trusting mono_jit_compile_method to
21281         do the work (because wrappers can be in object class)
21282
21283 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
21284
21285         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
21286
21287         * basic-long.cs: New regression test.
21288
21289 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
21290
21291         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
21292         and div/rem checks.
21293
21294 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
21295
21296         * Makefile.am: fix miguel's change to build mono statically against
21297         libmono (track build dependencies).
21298
21299 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21300
21301         * cfold.c: Some glib versions do not have G_MININT32.
21302
21303 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
21304
21305         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
21306         with precision of tan, atan, sin and cos, and implemented related
21307         regressions tests (fixes bug 54467, but one new problem appeared and
21308         is not fixed yet).
21309
21310 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21311
21312         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
21313
21314         * exceptions.cs: Add test for constant folding && division by zero.
21315
21316         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
21317         since driver.c is in libmono too, so the optimization was useless.
21318
21319         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
21320         variable to driver.c so the compiler can emit more efficient code to
21321         access them.
21322
21323 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21324
21325         * Makefile.am: don't distribute generated inssel.[ch] files.
21326
21327 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21328
21329         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
21330         into the default appdomain. Fixes #58707.
21331
21332         * jit-icalls.c: Remove the broken approximation for truncl, doing
21333         no conversion is better.
21334
21335         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
21336         Fixes #58863.
21337
21338 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
21339
21340         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
21341         of the mcrxr instruction which is not available on some processors
21342         even if it's documented to be. Implement add and sub overflow correctly
21343         (still not complete for long unsigned). Speed up icalls a bit.
21344
21345 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
21346
21347         * mini.c (mono_jit_compile_method_with_opt): Make sure that
21348         we run .cctor in the current domain instead of target_domain.
21349         
21350         Fixes bug #58558, .cctor not being called in -O=shared.
21351
21352 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21353
21354         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
21355
21356 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
21357
21358         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
21359         which can be done with an imm8, do it that way.
21360         (mono_arch_output_basic_block): ditto for a jmp
21361         (mono_arch_emit_prolog): Computate maximum offset of a label.
21362
21363 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
21364
21365         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
21366         now tries to allocate prefered physical reg's for virtual
21367         regs. This reduces the number of emited spills/loads with
21368         20-30% on our core assemblies.
21369
21370 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21371
21372         * jit-icalls.c: truncl() is not needed and trunc() is
21373         the correct thing to do anyway (bug #58287).
21374
21375 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
21376
21377         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
21378         if available.
21379
21380 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
21381
21382         * driver.c: enable loop optimizations by default.
21383
21384 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
21385
21386         * mini-x86.c: fix calc of max loop size when aligning loops start.
21387
21388 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
21389
21390         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
21391         the stack.
21392
21393 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
21394
21395         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
21396         should set carry.
21397
21398         * basic-long.cs: Add tests for add/subtract of immediates with carry.
21399
21400         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
21401         
21402         * mini.c (inline_method): Allways inline some wrappers even if the cost
21403         is too large. Fixes #58785.
21404
21405         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
21406         
21407 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
21408
21409         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
21410         (crichton@gimp.org). Beginning of support for sparc/linux.
21411
21412         * mini-sparc.c: Optimize retrieval of LMF address.
21413
21414 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
21415
21416         * exceptions-ppc.c:  handle alloca in methods with clauses.
21417
21418 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
21419
21420         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
21421
21422 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
21423
21424         * mini.c: Delegate most of the abort signal work to 
21425           mono_thread_request_interruption, which also handles Stop and Suspend
21426           states.
21427
21428 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
21429
21430         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
21431         supports the save/restore lmf opcodes.
21432
21433 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
21434
21435         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
21436         by gcc-3.4 as well.
21437
21438         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
21439
21440 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21441
21442         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
21443         methods which contain array accesses.
21444
21445         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
21446         boundaries. Fixes #58537.
21447
21448         * iltests.il: Add regression test for #58537.
21449
21450 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
21451
21452         * mini-x86.c (mono_arch_local_regalloc): Last part of
21453         fix for bug #58633 (releasing register to early).
21454
21455 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
21456
21457         * basic-long.cs: Add new regression test.
21458
21459 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
21460
21461         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
21462         register too early on the chain.
21463
21464 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21465
21466         * mini.c (create_helper_signature): Use a helper function to reduce
21467         the code which needs to be written. Also set the calling convention of
21468         icalls on windows. Fixes #57840.
21469
21470 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
21471
21472         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
21473         exceptions-ppc.c: added helper function to get the instruction address
21474         from a signal handler context.
21475
21476 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21477
21478         * helpers.c: use g_get_tmp_dir. Invokes happyness 
21479         from gonzalo.
21480
21481 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21482
21483         * helpers.c: Add new env variable to pass args to objdump.
21484         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
21485
21486 2004-05-17  Radek Doulik  <rodo@ximian.com>
21487
21488         * Makefile.am (common_sources): added abcremoval.h so it get
21489         disted and daily mono packages on go-mono.com will build again
21490
21491 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
21492
21493         * abcremoval.c: Fixed coding style, added copyright header.
21494
21495         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
21496
21497         * mini.h: Added prototype for abc removal main function.
21498
21499         * build_relations_propagation_table.pl: Added copyright header.
21500
21501 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
21502
21503         * basic-long.cs: reg test for complex ceq_long bug.
21504
21505 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
21506
21507         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
21508         reg in long and clob case (bug #58343). Fixed/added comments.
21509
21510 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
21511
21512         * mini.c (mono_jit_runtime_invoke): Follow new convention
21513         of calling the invoke method with an function pointer.
21514
21515 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
21516
21517         * ChangeLog: Fix author of memory leak patch.
21518
21519 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
21520
21521         * Makefile.am: fix make dist as well...
21522
21523
21524 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
21525
21526         * cfold.c: Made so that conversions from pointer to int4 are no-ops
21527         on archs where pointers are 4 bytes long.
21528
21529         * Makefile.am: Added abcremoval.c source file.
21530
21531         * abcremoval.c: Added abcremoval.c.
21532
21533         * abcremoval.h: Added abcremoval.h.
21534
21535         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
21536
21537         * inssel.brg: Enabled bounds check removal.
21538
21539         * mini.c: Added support for abcrem optimization.
21540
21541         * mini.h: Added abcrem optimization label.
21542
21543         * driver.c: Added support for abcrem optimization.
21544
21545         * propagated_relations_table.def: Added propagated_relations_table.def.
21546
21547 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
21548
21549         * mini.c, cfold.c: fix style.
21550
21551 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21552
21553         * mini.c: handle issue with the low-level implementation of
21554         some long opcodes (bug #54209).
21555
21556 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
21557
21558         * basic.cs: test for my new cmov stuff.
21559
21560 2004-05-13      Patrik Torstensson
21561
21562         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
21563         opt and added peephole documentation.
21564
21565 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
21566
21567         * tramp-ppc.c: rewrote the generic trampoline code.
21568
21569 2004-05-11      Patrik Torstensson
21570
21571         * mini-x86.c: optimize long shl/shr asm code (one less branch)
21572
21573 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
21574
21575         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
21576
21577         * mini.h mini.c dominators.c: Applied patch from Derek Woo
21578         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
21579
21580         * mini.c: Add new icalls for AsAny marshalling.
21581
21582 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
21583
21584         * tramp-ppc.c, mini-ppc.c: more cleanups.
21585
21586 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21587
21588         * mini.c: no warnings.
21589
21590 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21591
21592         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
21593
21594 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
21595
21596         * mini.c: In the thread abort signal handler, if the thread is in the
21597         process of being stoped, don't throw the Abort exception, just stop the
21598         thread.
21599
21600 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
21601
21602         * tramp-ppc.c: removed old code.
21603
21604 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21605
21606         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
21607         do some simple speed optimizations on ppc.
21608
21609 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
21610
21611         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
21612         and large offsets in load/store.
21613
21614 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
21615
21616         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
21617         it causes regressions.
21618
21619 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
21620
21621         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
21622         support.
21623
21624 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21625
21626         * jit-icalls.c: remove warnings.
21627         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
21628         speedups for unsafe code.
21629
21630 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21631
21632         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
21633
21634 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
21635
21636         * basic-calls.cs: Add new regression test.
21637
21638         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
21639         more portable.
21640
21641         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
21642
21643         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
21644         is no longer used.
21645
21646 2004-05-06      Patrik Torstensson
21647
21648         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
21649         long reg allocation in any reg (not only eax:edx) and implemented 
21650         long shl/shr ops in asm instead of helpers.
21651
21652 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
21653
21654         * mini-sparc.h: Fix warnings.
21655
21656         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
21657         stack.
21658
21659         * mini-exceptions.c (mono_handle_exception): Call the filter in a
21660         separate statement for clarity.
21661
21662         * mini-sparc.c: Update status.
21663
21664 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
21665
21666         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
21667         here.
21668
21669 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21670
21671         * inssel-ppc.brg: another small pre-release workaround:
21672         we don't do overflow detection for long_sub_un.
21673
21674 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21675
21676         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
21677         (also works around a weird ppc bug: 57957).
21678
21679 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
21680
21681         * tramp-ppc.c: trampoline fixes.
21682
21683 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
21684
21685         * mini-ppc.c: fixed typos.
21686
21687 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21688
21689         * mini-ppc.c, exceptions-ppc.c: more code saves registers
21690         at the top of the stack. Fixed typos. Use a frame registers
21691         for all the methods with exception clauses.
21692
21693 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21694
21695         * exceptions-ppc.c: restore fp registers.
21696
21697 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
21698
21699         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
21700         order from the stack top (moved the stack room to save the
21701         return value for trace after the param area). Fixed corruption
21702         in restoring registers on unwind.
21703
21704 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21705
21706         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
21707
21708 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21709
21710         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
21711         and prolog/epilog for methods that use it. Allow
21712         enough param area room for varargs methods. Fix miguel's
21713         breakage in exception handling.
21714
21715 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21716
21717         * Makefile.am: run genmdesc only on current arch.
21718
21719 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21720
21721         * exceptions-x86.c:
21722         * mini-x86.h: fix the build on windows.
21723
21724 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
21725
21726         * 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.
21727
21728         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
21729
21730         * mini-exceptions.c: New file.
21731         
21732         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
21733         Move some parts of the x86 exception handling code to an 
21734         arch-independent file so it can be shared with other ports.
21735
21736 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
21737
21738         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
21739
21740 2004-04-26  David Waite  <mass@akuma.org>
21741
21742         * driver.c: remove comma from end of enumeration declaration
21743
21744 2004-04-26  Jackson Harper  <jackson@ximian.com>
21745
21746         * driver.c: parse config file before loading first assembly. This
21747         allows the user gac to be enabled/disabled. 
21748         
21749 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
21750
21751         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
21752         simpler mechanism: we do not care what is encoded initially
21753         (branch absolute or relative), we care about the code and its
21754         target.  I kept the old code for reference for now.
21755
21756         The new code tries first to determine if the jump is anywhere in
21757         the -/+32 absolute meg range, if it succeeds, it encodes using the
21758         absolute branch;  If not, it tried to find something in the
21759         relative range, if not, it uses the handle_thunk code. 
21760
21761 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
21762
21763         * exceptions-ppc.c: use the correct ip register on macosx.
21764
21765 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
21766
21767         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
21768
21769 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
21770
21771         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
21772         Raise exception on integer divide by zero by hand since the hw
21773         doesn't support it. Handle NaNs in FP compares.
21774
21775 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
21776
21777         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
21778         code reducing duplication between the platforms and enabled
21779         signal exception handling (on linux for now).
21780
21781 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
21782
21783         * exceptions-ppc.c: more macosx support.
21784
21785 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21786
21787         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
21788
21789 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
21790
21791         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
21792
21793 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
21794
21795         * iltests.il: more tests.
21796
21797 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21798
21799         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
21800         vars as well.
21801
21802 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21803
21804         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
21805
21806 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21807
21808         * liveness.c: Mark variables as volatile in all basic blocks reachable
21809         from exception clauses.
21810
21811 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
21812
21813         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
21814         inlining.
21815
21816 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
21817
21818         * iltests.il, basic.cs: more tests for regalloc.
21819
21820 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21821
21822         * iltests.il: Some tests for register allocation modifications
21823         I have locally.
21824
21825 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
21826
21827         * exceptions.cs: Add regression test for bug #56782.
21828
21829         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
21830         original stack trace if an exception is rethrown. Fixes #56782. Oh,
21831         the beauty of fixing the same thing in 5 different files...
21832
21833 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
21834
21835         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
21836         methods.
21837
21838 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
21839
21840         * mini.c: Add support for STRWLPARRAY marshalling convention.
21841
21842 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
21843
21844         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
21845         to init the context to setup the regs pointer).
21846
21847 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21848
21849         * exceptions-ppc.c: more exceptions work.
21850
21851 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21852
21853         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
21854         not allowed.
21855
21856 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
21857
21858         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
21859         can use the memory directly.
21860
21861         * cpu-pentium.md: Update documentation from a post from Zoltan. 
21862
21863         add x86_add_membase, x86_sub_membase, x86_mul_membase
21864
21865 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
21866
21867         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
21868         GENERAL_REGS they were also hardcoded for all PPC ports.
21869
21870         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
21871
21872         Remove hard-coded limit for floating point registers, use
21873         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
21874
21875         Notice that in MacOS X calling conventions you can fit a lot more
21876         floating point values in registers, so I should update the PInvoke
21877         test to excercise the passing of floating point values on the
21878         stack (currently broken).
21879         
21880 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
21881
21882         * tramp-ppc.c (create_trampoline_code): Added
21883         JUMP_TRAMPOLINE_SIZE. 
21884         (ppc_magic_trampoline): Follow the pattern from
21885         x86_magic_trampoline: if code is set to zero, return. 
21886         (create_trampoline_code): Always pass MonoMethod to the jump
21887         trampoline, before it was passing a null.
21888         (mono_arch_create_jump_trampoline): Implement the jump stub, could
21889         share the code with mono_arch_create_jit_trampoline. 
21890
21891         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
21892         implemented.
21893         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
21894         implemented.  
21895
21896         * cpu-g4.md: Added length for jmp instruction, the worst case
21897         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
21898         for save_lmf).
21899
21900 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
21901
21902         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
21903
21904 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
21905
21906         * mini.c: Only set bblock->real_offset when adding a new bblock, and
21907         before each IL instruction.
21908
21909         * mini.c (CEE_BOX): Fix warnings.
21910
21911 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21912
21913         * mini.c: removed a few unused vars and extra whitespace.
21914
21915 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
21916
21917         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
21918         checks.
21919         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
21920         index.
21921         (OP_GETCHR): use the above
21922         (CEE_LDELEMA): use the above.
21923
21924         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
21925         version of the generic impl.
21926         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
21927         (CEE_LDELEMA): use the above.
21928
21929 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
21930
21931         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
21932         Fixes #56317.
21933
21934         * iltests.il: Added new regression test for #56317.
21935
21936 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
21937
21938         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
21939         under NetBSD. Fixes #56450.
21940
21941         * liveness.c (update_gen_kill_set): Fix previous patch.
21942
21943 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21944
21945         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
21946
21947 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
21948
21949         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
21950         ldsfld and ldsflda.
21951
21952         * inssel-sparc.brg: Add more optimizations.
21953
21954         * mini-sparc.c: Replace multiply/divide with shifts if possible.
21955
21956 2004-04-01  Martin Baulig  <martin@ximian.com>
21957
21958         * mini.c (handle_box): New static function; moved the
21959         implementation of CEE_BOX here.
21960         (mono_method_to_ir): Added `constrained_call' variable.
21961         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
21962         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
21963         mono_method_get_constrained() to get the method.
21964
21965 2004-04-01  Martin Baulig  <martin@ximian.com>
21966
21967         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
21968         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
21969         (mono_method_to_ir): We don't need these macros anymore since
21970         mono_class_get_full() already takes care of it. 
21971
21972 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21973
21974         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
21975         use @function (as doesn't accept #function here) and check the return
21976         value of system and stop if fails.
21977
21978 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21979
21980         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
21981
21982 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
21983
21984         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
21985
21986         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
21987
21988         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
21989         #56223.
21990
21991         * basic-long.cs: Add test for negation of Int64.MinValue.
21992
21993 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
21994
21995         * mini-sparc.c: Update status.
21996
21997         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
21998
21999         * exceptions-sparc.c: Fix return value in filters.
22000
22001         * inssel-sparc.brg: Fix register allocation in some rules.
22002
22003 2004-03-28  Martin Baulig  <martin@ximian.com>
22004
22005         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
22006         if neccessary.  
22007
22008 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
22009
22010         * mini-x86.c (mono_arch_patch_code): Fix warnings.
22011         
22012         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
22013         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
22014         remove unused conv_u4 opcode.
22015
22016         * mini-x86.c: Remove valgrind workaround since it slows down things
22017         even when mono is not run under valgrind.
22018
22019 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
22020
22021         * mini-sparc.c: Update status.
22022
22023         * inssel-sparc.brg: Add some optimizations.
22024
22025         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
22026         future delay slot filling. Add support for varargs, tail calls and JMP.
22027
22028         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
22029         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
22030
22031         * inssel.brg: Fix register allocation in OP_ARGLIST.
22032
22033         * inssel.brg: Fix warnings.
22034
22035 2004-03-25  Martin Baulig  <martin@ximian.com>
22036
22037         * mini.c (inflate_generic_field): Removed.
22038         (mini_get_method): Removed, use mono_get_method_full(),
22039         (mini_get_class): Removed, use mono_class_get_full().
22040         (mono_method_to_ir): Pass our generic context to
22041         mono_field_from_token().        
22042
22043 2004-03-25  Martin Baulig  <martin@ximian.com>
22044
22045         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
22046         of a `MonoMethod *'.
22047         (mini_get_method): Take a `MonoGenericContext *' instead
22048         of a `MonoMethod *'.
22049         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
22050         a new local variable called `generic_context' which holds the
22051         current `MonoGenericContext *'; use it to lookup things.
22052
22053 2004-03-24  Martin Baulig  <martin@ximian.com>
22054
22055         * mini.c (mini_get_class): New static method; if we're inside a
22056         generic instance, inflate the class if neccessary.
22057         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
22058
22059 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
22060
22061         * iltests.il: New regression test for #55976.
22062
22063         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
22064         #55976.
22065
22066 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
22067
22068         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
22069         output.
22070
22071 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
22072
22073         * liveness.c: Consider SSA stores as well as loads when making vars
22074         volatile.
22075
22076         * exceptions.cs: New regression tests for register allocation.
22077         
22078 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
22079
22080         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
22081         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
22082           domain lock only to protect puntual access to data structures.
22083           Added access lock for sighash, jit_icall_hash_name, 
22084           jit_icall_hash_addr and domain->code_mp.
22085
22086 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
22087
22088         * driver.c: Print SIGSEGV handling method.
22089
22090         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
22091
22092         * mini.c (setup_jit_tls_data): Handle case when this is called
22093         multiple times for a thread.
22094
22095         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
22096         is different from fbxx_un. Fixes #54303. Also use constants instead of
22097         magic numbers in a lot of places.
22098
22099 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
22100
22101         * exceptions.cs: Fix cctor test when --regression is used.
22102
22103 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
22104
22105         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
22106         for Linux/ppc.
22107
22108 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
22109
22110         * inssel-ppc.brg: fixed register assignments for some rules.
22111
22112 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22113
22114         * exceptions.cs: Add test for exceptions in static constructors.
22115
22116         * mini.c (mono_jit_compile_method_with_out): Move the calling of
22117         static constructors outside the domain lock. Fixes #55720.
22118
22119 2004-03-17  Martin Baulig  <martin@ximian.com>
22120
22121         * mini.c (get_generic_field_inst): Removed, this'll never happen.
22122         (inflate_generic_field): Take the `MonoMethod *' instead of the
22123         `MonoClass *' and added support for generic method.
22124         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
22125         have a `field->parent->gen_params', only inflate the field if it's
22126         an open constructed type.
22127
22128 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22129
22130         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
22131         exception object instead of the preconstructed ones.
22132
22133 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22134
22135         * mini.c: reverted changed to sigsegv_signal_handler commited
22136         accidentally in the previous patch.
22137
22138 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22139
22140         * mini.c:
22141         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
22142         running --aot with an old assembly.
22143
22144 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
22145
22146         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
22147         point values.
22148
22149         * mini-sparc.c: Add support for v9 branches with prediction.
22150
22151 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
22152
22153         * mini.c (mini_init): #warning is GNUC only
22154
22155         * mini-sparc.h: implement __builtin_frame_address
22156         and __builtin_return_address for Sun C compiler
22157
22158 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
22159
22160         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
22161
22162 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
22163
22164         * basic-calls.cs: Add test for unaligned byref long argument passing.
22165
22166         * mini-ops.h: Add sparcv9 compare and branch instructions.
22167
22168         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
22169         v9 instructions if we have a v9 cpu.
22170
22171         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
22172         registers for global allocation.
22173
22174         * exceptions-sparc.c: Fixes.
22175         
22176 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
22177
22178         * liveness.c (mono_analyze_liveness): Optimized version.
22179
22180         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
22181
22182         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
22183         sparc work.
22184
22185         * basic-float.cs basic-calls.cs: New regression tests.
22186
22187 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
22188
22189         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
22190         sigaltstack implementation.
22191
22192         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
22193         
22194         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
22195         stuff if SIGSEGV_ON_ALTSTACK is not defined.
22196
22197 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
22198
22199         * mini.c: Fix warnings.
22200         
22201         * mini.c (mono_resolve_patch_target): New function which contains the
22202         arch independent part of the patching process.
22203
22204         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
22205         patching code to a separate function.
22206
22207 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
22208
22209         * mini.c (add_signal_handler): ifdef out on Windows
22210
22211 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
22212
22213         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
22214         cpu-sparc.md: Add exception handling support + other fixes.
22215
22216         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
22217         typed GC detection in --version.
22218
22219         * basic.cs exceptions.cs: New regression tests.
22220
22221         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
22222         the arch specific code can store data during a compilation.
22223
22224         * mini-ops.h: Add OP_SETFRET.
22225
22226         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
22227         function, register a separate icall for each arity, so the icalls can
22228         get a wrapper.
22229         
22230         * mini.c (mono_print_tree): Print negative offsets in a more readable
22231         form.
22232         
22233         * mini.c: Make signal handling work on sparc.
22234         
22235         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
22236
22237         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
22238
22239         * jit-icalls.c: Emulate truncl by aintl on solaris.
22240
22241         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
22242
22243 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
22244
22245         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
22246
22247 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
22248
22249         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
22250         a MarshalByRef type, inline a method that performs the check, taking into
22251         account that the object can be a proxy. Also implemented tow new opcodes:
22252         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
22253         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
22254         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
22255
22256 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
22257
22258         * mini-ppc.c: if a relative branch displacement is too big
22259         but it points to and area reachable with an absolute branch, 
22260         avoid the thunks.
22261
22262 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
22263
22264         * mini.c: optimize small copies in cpblk.
22265
22266 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
22267
22268         * basic-calls.cs basic-float.cs: New regression tests.
22269
22270         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
22271         negative offsets from %fp. Implement localloc. Fix local register 
22272         allocation. Fix the case when the this argument needs to be saved to
22273         the stack. Implement some missing opcodes.
22274
22275 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
22276
22277         * mini.c (mini_method_compile): Reenable global regalloc in methods
22278         with exception handlers.
22279
22280         * linear-scan.c (mono_varlist_sort): Fix warning.
22281
22282         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
22283
22284         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
22285         regalloc costs.
22286
22287         * liveness.c: Make all variables uses in exception clauses volatile, to
22288         prevent them from being allocated to registers. Fixes #42136.
22289
22290 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
22291
22292         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
22293         causes regressions.
22294
22295         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
22296         argument to mono_arch_regalloc_cost.
22297
22298         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
22299         precisely.
22300
22301 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
22302
22303         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
22304         Make the cost of allocating a variable to a register arch dependent.
22305
22306         * basic-calls.cs: Fix compilation of tests.
22307         
22308         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
22309         helper function to cut back on the number of #ifdefs needed.
22310
22311         * mini-ppc.c: Fix compilation.
22312
22313         * basic-calls.cs: New regression tests.
22314
22315         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
22316
22317         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
22318         of l0 since that is callee saved.
22319
22320         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
22321         to virtual calls.
22322
22323         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
22324         of delay instruction.
22325
22326         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
22327
22328         * mini.h (MonoCallInst): Add 'virtual' flag.
22329
22330         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
22331
22332 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
22333
22334         * *.cs: New regression tests.
22335
22336         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
22337         work.
22338
22339         * mini.c (mono_runtime_install_handlers): Fix build.
22340
22341         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
22342         'signal_stack_size' members.
22343
22344         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
22345         alternate signal stack.
22346
22347         * exceptions-x86.c: Add stack overflow handling.
22348
22349         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
22350         functions to arch independent code.
22351
22352         * mini.c (mono_print_tree): Print more detailed info for load_membase
22353         opcodes.
22354         
22355 2004-02-23  Martin Baulig  <martin@ximian.com>
22356
22357         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
22358
22359 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
22360
22361         * mini-x86.c: fixed reg allocation for div/rem.
22362
22363 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
22364
22365         * driver.c (mono_main): Report some configuratio options on --version.
22366
22367 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
22368
22369         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
22370         low in the address space. Correctly flush memory in thunks where we
22371         output native code.
22372
22373 2004-02-20  Martin Baulig  <martin@ximian.com>
22374
22375         * mini.c (mini_get_method): New static method; inflate all generic
22376         methods and methods in open generic instances.
22377         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
22378         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
22379
22380 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
22381
22382         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
22383
22384         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
22385
22386 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
22387
22388         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
22389
22390         * mini-sparc.c (flushi mono_arch_output_basic_block): make
22391         it compile using Sun's compiler.
22392
22393 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
22394
22395         * 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.
22396
22397         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
22398
22399 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
22400
22401         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
22402         code.
22403         * mini-ppc.c: handle calls outside of the allowed range with thunks
22404         allocated using the code manager.
22405         * tramp-ppc.c: use the code manager to hold generated native code.
22406         Fixed the magic trampoline to just patch vtable entries.
22407
22408 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
22409
22410         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
22411         independent file.
22412
22413 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
22414
22415         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
22416         PPC.
22417
22418         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
22419         if we have a working __thread implementation.
22420
22421         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
22422         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
22423
22424 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
22425
22426         * mini-x86.c: Fix compilation under gcc 2.
22427         
22428 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
22429
22430         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
22431         contains a call to the wrapped function.
22432
22433         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
22434         OP_<CALL>_IMM opcodes, and use them under X86.
22435         
22436         * mini.c (mono_jit_find_compiled_method): Fix warning.
22437
22438         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
22439
22440         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
22441
22442         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
22443         functionality to mini.c.
22444
22445         * mini.c (mono_create_jump_trampoline): New function to create a jump
22446         trampoline. Return a compiled method instead of a trampoline if it
22447         exists. Add a cache for jump trampolines.
22448
22449         * mini.c (mono_jit_find_compiled_method): New function to return a
22450         compiled method if it exists.
22451
22452         * mini-x86.c: Call mono_create_jump_trampoline instead of 
22453         mono_arch_create_jit_trampoline.
22454
22455         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
22456         a jump trampoline. Fixes #52092.
22457         
22458 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
22459
22460         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
22461         which is not up-to-date. Add check_corlib_version () instead.
22462
22463         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
22464         have to call it.
22465         
22466         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
22467         since newer valgrind versions do not need it.
22468
22469         * mini.c (mono_jit_compile_method_with_opt): New helper function to
22470         compile a method with a given set of optimizations.
22471
22472         * mini.c: Compile icall wrappers on-demand instead of at startup.
22473
22474         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
22475         wrapper for an icall.
22476
22477 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
22478
22479         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
22480         #54063.
22481
22482         * iltests.il: Add test for non-empty stack before switch instruction.
22483
22484 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
22485
22486         * mini.c: Add support for new stringbuilder marshalling conventions.
22487
22488         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
22489
22490 2004-02-01  Martin Baulig  <martin@ximian.com>
22491
22492         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
22493         in `ginst->mtype_argv'.
22494
22495 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
22496
22497         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
22498         facilitate grepping.
22499
22500 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
22501
22502         * mini.c: fixed buglet in initobj generic implementation for references.
22503
22504 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
22505
22506         * Makefile.am: make the version script conditional.
22507         * jit-icalls.c: handle missing truncl().
22508
22509 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
22510
22511         * exceptions.cs: Add more tests for double->int conversion.
22512
22513         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
22514         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
22515
22516 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
22517
22518         * driver.c: make --verbose --version emit an error
22519         if the loaded corlib doesn't match the runtime version.
22520
22521 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
22522
22523         * mini-ppc.h: export ppc_patch().
22524         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
22525         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
22526         on par or better than on MacOSX.
22527
22528 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
22529
22530         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
22531         mono_lookup_pinvoke_call.
22532
22533         * mini-x86.c: Under windows, the default pinvoke calling convention is
22534         stdcall. Fixes #52834.
22535
22536         * mini.c (optimize_branches): Add an upper bound to the number of
22537         iterations to prevent infinite loops on strange loops. Fixes #53003.
22538
22539 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
22540
22541         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
22542         and ISINST. Fixes #52093.
22543
22544         * objects.cs (test_0_vector_array_cast): New tests.
22545         
22546 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
22547
22548         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
22549         checking in Array.Set ().
22550
22551         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
22552         #52590.
22553
22554         * object.cs (test_0_multi_array_cast): New regression test.
22555
22556 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
22557
22558         * exceptions-ppc.c: fix build on Linux/PPC.
22559
22560 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
22561
22562         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
22563         running under valgrind.
22564         (x86_magic_trampoline): Fix build bustage.
22565
22566         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
22567         negative values as well. This is needed for the encoding of the line number
22568         info, since sometimes the line numbers are not in increasing order.
22569
22570 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
22571
22572         * cpu-pentium.md (localloc): Increase the size of the localloc 
22573         instruction since it is a loop under Win32.
22574
22575         * debug-mini.c (record_line_number): Get rid of unneccesary memory
22576         allocation.
22577
22578 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
22579
22580         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
22581         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
22582         Max Horn (max@quendi.de). Fix file names in comments.
22583
22584 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
22585
22586         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
22587         avoid stack overflow.
22588         (replace_usage): Avoid uninitialized variable warnings.
22589
22590         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
22591         and taking the address of valuetype variables.
22592
22593 2004-01-03  Patrik Torstensson
22594
22595         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
22596         for other purposes than FP later on.
22597
22598 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
22599
22600         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
22601         of tail calls.
22602
22603 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
22604
22605         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
22606
22607 2003-12-30  Patrik Torstensson <p@rxc.se>
22608
22609         * mini-x86.h: Decreased number of availiable fp regs.
22610         Solves corner cases with FP spilling.
22611
22612 2003-12-23  Patrik Torstensson <p@rxc.se>
22613
22614         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
22615         for floating point stack tracking / spilling on x86. 
22616         Fixes bug #49012.
22617         
22618         * basic-float.cs: added float mul overflow test.
22619
22620 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
22621
22622         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
22623
22624 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
22625
22626         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
22627         supports for cond branches that overflow the immediate
22628         overflow offset. mcs can compile simple programs.
22629
22630 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
22631
22632         * exceptions-ppc.c: exception handling support wip:
22633         finally handlers get run on exception.
22634
22635 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
22636
22637         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
22638         profiling.
22639
22640 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
22641
22642         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
22643         initial support for stack walking and unwinding.
22644
22645 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
22646
22647         * driver.c (mono_main): Make corlib-out-of-sync message more 
22648         descriptive. Also remove verify_corlib call.
22649
22650 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
22651
22652         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
22653         not overlap with other call's arguments, too.
22654
22655 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
22656
22657         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
22658         move to arch-specific code the choice of arch-specific
22659         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
22660         * mini.c: ensure emulation calls will not interleave
22661         with other calls.
22662
22663 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
22664
22665         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
22666         the magic trampoline stack frame is dropped before executing
22667         the new method.
22668
22669 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
22670
22671         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
22672         and integer to fp conversions. Added support for overflowing
22673         arguments on the stack. Reserve a couple more registers as temps.
22674         Added support for aot compilation (as output still needs to be
22675         tweaked, though).
22676
22677 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22678
22679         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
22680         Don't overwrite return register in some corner cases.
22681
22682 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
22683
22684         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
22685         static constructors when AOT compiling.
22686
22687         * driver.c (mono_main): Call mono_check_corlib_version.
22688
22689 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
22690
22691         * cpu-g4.md, basic.cs: fixed div target register.
22692
22693 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
22694
22695         * mini-ppc.c, basic.cs: shl_imm fix with test.
22696
22697 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
22698
22699         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
22700         structures by value. Misc fixes.
22701         * objects.cs: more tests.
22702
22703 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
22704
22705         * mini-ppc.c: lconv.ovf.i implemented.
22706
22707 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22708
22709         * mini.c:
22710         (mini_init): don't error out if someone already called g_thread_init.
22711
22712 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
22713
22714         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
22715         to be any type per the spec. Fix abnormal memory usage when
22716         the same object is repeatedly thrown.
22717
22718 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
22719
22720         * mini.c: check for overruns in IL code.
22721
22722 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
22723
22724         * TODO: Add/remove some todo entries.
22725
22726 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
22727
22728         * driver.c (mono_main): Call mono_verify_corlib.
22729
22730 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
22731
22732         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
22733         This has been moved to mini.c
22734         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
22735         type being casted is marshalbyref it could be a proxy, so instead of
22736         emitting the type check code, emit a call to a runtime method that will
22737         perform the check by calling CanCastTo if needed.
22738
22739 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
22740
22741         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
22742         methods with large stack frames under Win32.
22743
22744 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
22745
22746         * Makefile.am: Distribute regression tests.
22747
22748         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
22749         at the end instead of inserting each variable into the sorted list.
22750
22751         * linear-scan.c (mono_varlist_sort): New helper function.
22752         
22753 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
22754
22755         * mini.c: ensure arguments and locals are within bounds.
22756
22757 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22758
22759         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
22760         related fixes.
22761
22762 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
22763
22764         * mini.c (mono_cprop_copy_values): Fix crash.
22765
22766         * aot.c: Set verbosity back to 0.
22767         
22768 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22769
22770         * regalloc.c: complete memory leak fix by Laurent Morichetti
22771         (l_m@pacbell.net).
22772
22773 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
22774
22775         * driver.c (main_thread_handler): Revert the previous patch.
22776
22777         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
22778         under valgrind.
22779
22780         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
22781         memory from the memory pool.
22782
22783         * driver.c (main_thread_handler): Turn on all optimizations when
22784         --aot is used.
22785
22786         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
22787         an array for better performance.
22788
22789         * regalloc.c (mono_regstate_assign): Fix memory leak.
22790
22791         * debug-mini.c (mono_debug_serialize_debug_info): New function to
22792         serialize the debug info.
22793
22794         * debug-mini.c (mono_debug_add_aot_method): New function to load the
22795         debug info from the serialized representation.
22796
22797         * aot.c: Save debug info into the generated file and load it when 
22798         loading a method.
22799
22800         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
22801
22802 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
22803
22804         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
22805         More FP-related fixes.
22806
22807 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
22808
22809         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
22810         and register allocation buglet. Hello world now runs.
22811
22812 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
22813
22814         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
22815         * tramp-ppc.c: fixed class init trampoline.
22816         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
22817
22818 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
22819
22820         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
22821         mini.c: more ppc changes/fixes.
22822
22823 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
22824
22825         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
22826         Also optimize the case when the arguments are the same in the caller 
22827         and in the callee.
22828
22829         * iltests.il: Add tests for tail calls with valuetype arguments.
22830
22831 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
22832
22833         * mini-ppc.c: fixes for struct return type.
22834
22835 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
22836
22837         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
22838         mono_spillvar_offset() to arch-specific code.
22839
22840 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
22841
22842         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
22843
22844 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
22845
22846         * exceptions-x86.c: Fix stack space leaks.
22847         
22848         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
22849         registers from the lmf if the method has save_lmf set.
22850
22851 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
22852
22853         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
22854         of icall wrappers into InvokeInDomain, since these are now per-domain.
22855
22856 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
22857
22858         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
22859         make some opcode emulation and intrinsic ops enabled/disabled 
22860         according to the architecture. More fixes.
22861
22862 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
22863
22864         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
22865
22866 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
22867
22868         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
22869         arch-specific handling for 'this' and struct return type to
22870         arch-specific code.
22871
22872 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22873
22874         * aot.c: prevent divide by zero error when reporting (it happened with
22875         Accessibility.dll).
22876
22877 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
22878
22879         * mini.h (inst_switch): Remove unused macro.
22880
22881 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22882
22883         * aot.c:
22884         (load_aot_module): free 'info->methods' and 'info' properly. No more
22885         "free(): invalid pointer blah" messages when you have an old aot
22886         compiled assembly.
22887
22888 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
22889
22890         * jit-icalls.c, mini.c: Added support for context static fields.
22891
22892 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
22893
22894         * mini.c (mono_method_blittable): Methods which set LastError are not 
22895         blittable either. Fixes #51108.
22896         
22897 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
22898
22899         * mini.c: flush icache.
22900         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
22901
22902 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
22903
22904         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
22905
22906 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
22907
22908         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
22909         safe on IA32.
22910
22911         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
22912         vararg calls.
22913
22914         * inssel.brg (CEE_MKREFANY): Fix AOT case.
22915
22916 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
22917
22918         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
22919         instruction when the result is discarded.
22920
22921         * iltests.il (test_0_div_regalloc): New regression test.
22922
22923         * arrays.cs: Fix compilation error.
22924
22925 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
22926
22927         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
22928         float rules to inssel-x86.brg: sane architectures with FP registers
22929         don't need to implement these rules.
22930
22931 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
22932
22933         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
22934
22935 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22936
22937         * mini.h, inssel-long32.brg: fixed endianess issues in int64
22938         implementation of 32 bit systems.
22939
22940 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
22941
22942         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
22943         (Jeroen Zwartepoorte).
22944
22945 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
22946
22947         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
22948         the caller and the callee matches.
22949         
22950         * mini.c (mono_method_to_ir): Add comment.
22951
22952         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
22953         signbit is missing on some platforms.
22954
22955 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
22956
22957         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
22958
22959         * mini.c (setup_jit_tls_data): Call the new function.
22960         
22961         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
22962
22963         * mini-x86.c: Add experimental support for fast access to the lmf
22964         structure under NPTL/Linux 2.6.x.
22965
22966 2003-11-06  Martin Baulig  <martin@ximian.com>
22967
22968         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
22969         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
22970         the debugger.
22971
22972 2003-11-02  Martin Baulig  <martin@ximian.com>
22973
22974         * mini.c (inflate_generic_field): New static method.
22975         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
22976         generic instance and the field is declared in a generic type, call
22977         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
22978
22979 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
22980
22981         * mini.h mini.c (mono_method_same_domain): New function to return
22982         whenever the caller and the callee are in the same domain.
22983
22984         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
22985
22986 2003-10-30  Martin Baulig  <martin@ximian.com>
22987
22988         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
22989         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
22990         method parameters.
22991         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
22992         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
22993
22994 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
22995
22996         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
22997         propagation.
22998
22999         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
23000         object here, so it is in the correct appdomain etc.
23001
23002 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
23003
23004         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
23005         already done.
23006         (mono_method_to_ir): Avoid freeing the type created returned from
23007         mono_type_create_from_typespec, since it is put into an internal cache
23008         by the function. Fixes pointer.exe.
23009
23010         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
23011         trampolines for icalls and pinvokes as well. Fixes #33569.
23012
23013 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
23014
23015         * mini.c: Update after appdomain changes.
23016
23017         * mini.c (mono_jit_compile_method_inner): Allways compile native
23018         method wrappers in the root domain, since there can only be one
23019         instance of them, whose address is stored in method->info.
23020
23021 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
23022
23023         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
23024         environment variable. Instead detect automatically whenever running
23025         under valgrind using the magic macro RUNNING_ON_VALGRIND from
23026         valgrind.h.
23027
23028 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
23029
23030         * trace.c, trace.h: New files that implement the new trace option
23031         parsing. 
23032
23033         * driver.c: Document new --trace options.
23034
23035         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
23036         mini-x86.c: Apply:
23037
23038         -       if (mono_jit_trace_calls)
23039         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
23040
23041         * mini.h: prototypes.
23042         
23043 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
23044
23045         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
23046
23047         * mini.c inssel.brg: Implement typedefbyref opcodes.
23048
23049         * mini.c (mono_jit_compile_method): Remove unused local variable.
23050
23051         * mini.c (mono_jit_compile_method_inner): Ditto.
23052         
23053 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
23054
23055         * tramp-x86.c (x86_class_init_trampoline): Fix build.
23056         
23057         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
23058
23059 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
23060
23061         * mini.c (mono_no_aot): Remove unused global variable.
23062
23063         * mini.c: Thread safety fixes.
23064
23065 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
23066
23067         * mini.c (mono_create_class_init_trampoline): Add a lock around
23068         class_init_hash_addr.
23069
23070         * arrays.cs (test_0_newarr_emulation): Add new regression test for
23071         #30073.
23072
23073         * mini.c: Decompose the NEWARR instruction before decomposing its
23074         arguments. Fixes #30073.
23075
23076 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
23077
23078         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
23079         convention.
23080
23081 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
23082
23083         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
23084
23085         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
23086
23087         * driver.c: Add support for compiling icall wrappers to --compile.
23088
23089 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
23090
23091         * inssel.brg: The empty value in class->interface_offsets is -1, not
23092         0. Fixes #49287.
23093
23094 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
23095
23096         * objects.cs: New test for 'is' operator on an array of interfaces.
23097
23098 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23099
23100         * tramp-ppc.c: update trampoline code to support jumps
23101         and class initialization.
23102
23103 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
23104
23105         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
23106
23107         * inssel.brg (OP_UNBOXCAST): Fix #46027.
23108
23109         * inssel.brg (OP_UNBOX): Remove unused rule.
23110
23111         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
23112         region instead of one for each method. Fixes #47813.
23113
23114 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
23115
23116         * exceptions.cs (test_0_nested_finally): New regression test for
23117         nested exception handlers.
23118
23119         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
23120
23121         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
23122
23123         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
23124         inlining.
23125
23126         * mini.c (mono_method_check_inlining): Make the inlining limit 
23127         configurable by an environment variable.
23128         
23129         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
23130
23131         * mini.h: Bump AOT file version.
23132
23133         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
23134         token, store the image along with the token, since the token might not 
23135         refer to the same image as the method containing the relocation, 
23136         because of inlining.
23137
23138 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
23139
23140         * mini.c (mono_precompile_assemblies): New function to compile
23141         all methods in all loaded assemblies.
23142
23143         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
23144
23145         * regalloc.h regalloc.c (MonoRegState): Change the type of 
23146         iassign and fassign to int*, since they can contain large negative
23147         values if the register is spilled. Also added some comments. Fixes
23148         #45817.
23149
23150         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
23151         under Win32. Fixes #42964.
23152
23153 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
23154
23155         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
23156
23157         * aot.c: Added support for AOT compiling methods which contain calls
23158         to wrappers. Currently, only remoting-invoke-with-check wrappers are
23159         handled.
23160         
23161         * driver.c (compile_all_methods): Run the compilation in a thread
23162         managed by mono. Fixes #44023.
23163
23164         * mini.c (mono_codegen): Print full method name in verbose output.
23165
23166         * mini-x86.c (mono_arch_patch_code): Fix warning.
23167         
23168         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
23169         jumps, since the method we are jumping to might be domain-specific.
23170
23171         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
23172
23173 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23174
23175         * inssel.brg: string chars are unsigned.
23176
23177 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
23178
23179         * TODO: New todo item.
23180
23181         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
23182         which calls mono_runtime_class_init and patches the call site to
23183         avoid further calls.
23184         (mono_arch_create_class_init_trampoline): New arch specific function 
23185         to create a class init trampoline.
23186         (create_trampoline_code): Generalized so it can create
23187         class init trampolines as well.
23188
23189         * mini.c (helper_sig_class_init_trampoline): New helper variable.
23190         (mono_create_class_init_trampoline): New function to create and cache
23191         class init trampolines.
23192         (mono_find_class_init_trampoline_by_addr): New function to lookup the
23193         vtable given the address of a class init trampoline. Used by the
23194         patching process.
23195         (mono_codegen): Generate a call to a trampoline instead of
23196         mono_runtime_class_init in LDSFLD[A].
23197         (mono_codegen): Add relocations for the new trampoline.
23198         
23199         * mini.h mini-x86.c aot.c: Added a new relocation type: 
23200         MONO_PATCH_INFO_CLASS_INIT.
23201
23202         * mini.h: Bump AOT version number.
23203
23204         * aot.c: Create a copy of the loaded code instead of using the original
23205         so methods which call each other will be close in memory, improving
23206         cache behaviour.
23207         
23208         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
23209         patch since it breaks the regression tests.
23210         
23211         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
23212         for the register saving instruction sequence since the 
23213         frame_state_for function in glibc 2.3.2 don't seem to detect it.
23214
23215 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
23216
23217         * TODO: Fix todo item && remove another.
23218
23219 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
23220
23221         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
23222         previous checkin.
23223
23224         * aot.c: Moved the check for MONO_LASTAOT into the initialization
23225         function of the module.
23226
23227         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
23228         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
23229         --no-aot command line option.
23230
23231 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
23232
23233         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
23234         by Bernie Solomon (bernard@ugsolutions.com).
23235
23236         * inssel.brg: Refactor the interface offset table related code into
23237         its separate functions and add support for the AOT case.
23238
23239 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
23240
23241         * aot.c (mono_aot_get_method_inner): Fix memory leak.
23242         
23243         * aot.c: Added mono_aot_verbose variable and made all debugging
23244         output depend on the value of this variable.
23245
23246         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
23247         method_label and info_label.
23248
23249         * mini.h mini-x86.c aot.c: Added a new relocation type 
23250         MONO_PATCH_INFO_IID for klass->interface_id.
23251
23252         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
23253         the MonoJitInfo structure.
23254
23255         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
23256         a non-root appdomain in shared mode.
23257
23258 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
23259
23260         * aot.c: make aot loader less verbose. Remove free of unused variable.
23261
23262 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
23263
23264         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
23265
23266         * .cvsignore: Added *.dll.
23267
23268         * mini.c (mono_print_tree_nl): New function callable while debugging.
23269
23270         * mini.c (mono_print_code): Export this.
23271
23272         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
23273         patched code.
23274
23275 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
23276
23277         * mini.h (MonoCompile): Added 'jit_info' field.
23278
23279         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
23280         the cfg structure, since it is needed by the AOT compiler.
23281
23282         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
23283
23284         * aot.c: A major rewrite. Changes include:
23285         - save exception tables for methods which have them.
23286         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
23287         to g_module_symbol.
23288         - reworked the file format so it is now much smaller and needs
23289         fewer relocation entries.
23290         
23291 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
23292
23293         * aot.c (load_aot_module): Fix build bustage on platforms without
23294         Boehm GC.
23295
23296 2003-09-04  Martin Baulig  <martin@ximian.com>
23297
23298         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
23299
23300 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
23301
23302         * TODO: Some new optimization ideas.
23303
23304         * aot.c: Move AOT module loading logic here from mono_assembly_open.
23305
23306         * aot.c: Save the optimization flags used to compile the code into
23307         the AOT module.
23308
23309         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
23310         support emitting domain specific code.
23311         
23312         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
23313         no longer domain neutral. It can be made domain neutral by compiling 
23314         with --optimize=shared.
23315
23316         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
23317         between appdomains.
23318
23319         * driver.c mini.h mini.c: New --no-aot debugging option which disables
23320         loading of AOT code.
23321
23322         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
23323         
23324         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
23325         if there is no domain neutrality information.
23326
23327 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
23328
23329         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
23330         format version into the generated library.
23331
23332         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
23333         callee method into the caller since one of them could be shared.
23334
23335         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
23336         system exceptions from AOT code now works.
23337
23338         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
23339         method if it is domain neutral and the callee is not.
23340
23341         * graph.c (cfg_emit_one_loop_level): Fix warning.
23342
23343 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
23344
23345         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
23346         last checkin.
23347
23348 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
23349
23350         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
23351         is needed  by code which is executed before mono_runtime_init ().
23352         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
23353         
23354         * mini.c (mono_thread_abort): Fix warning.
23355         (mono_jit_compile_method): Call static constructor in the AOT case too.
23356
23357         * aot.c (mono_compile_assembly): Fix warning.
23358
23359 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23360
23361         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
23362
23363 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
23364
23365         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
23366
23367         * cpu-pentium.md: Fix the length of call opcodes so they include the
23368         ESP restoring instruction. Fixes #47968.
23369
23370 2003-08-28  Martin Baulig  <martin@ximian.com>
23371
23372         * mini-x86.c (mono_arch_call_opcode): Added support for
23373         MONO_TYPE_GENERICINST.
23374
23375         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
23376
23377 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
23378
23379         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
23380         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
23381
23382         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
23383         metadata_section.
23384
23385 2003-08-26  Martin Baulig  <martin@ximian.com>
23386
23387         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
23388         when reporting an error, set this to the actual error location.
23389         (mono_method_to_ir): Report the correct error location if
23390         get_basic_blocks() returned an error.
23391
23392 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
23393
23394         * mini.c (mono_type_blittable): OBJECT is not blittable.
23395         (mono_method_blittable): Methods which have marshalling descriptors
23396         are not blittable either. Fixes #47842.
23397
23398 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
23399
23400         * driver.c mini.c: Use an environment variable instead of a global 
23401         variable. Also fix the build.
23402
23403         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
23404         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
23405         reporting this. 
23406
23407         * driver.c mini.c: Added --with-valgrind option to turn off some
23408         code which prevents mono from running under valgrind.
23409
23410         * mini.c (mono_emit_call_args): Fixed warning.
23411
23412         * mini.c (mono_emulate_opcode): Fixed warning.
23413
23414 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23415
23416         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
23417         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
23418         regalloc.c, regalloc.h: specify available registers in arch-specific
23419         code and support floats in the regallocator (patch by Laurent Morichetti 
23420         <l_m@pacbell.net>)
23421
23422 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
23423
23424         * mini.c: mono_thread_current() can be called only after
23425         mono_runtime_init(): rearrange code to not call it early on.
23426
23427 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23428
23429         * mini.c: allocate jump tables in the code mempools.
23430
23431 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23432
23433         * mini.c, mini.h: make sure per-thread data allocated by the jit is
23434         freed.
23435
23436 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
23437
23438         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
23439         12 to 16.  This fixes bug #47453.
23440
23441
23442 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
23443
23444         * mini-ppc.c: fixed indexed load and unsigned compares.
23445
23446 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
23447
23448         * mini.c: reenabled installation of handler for
23449           thread abort signal.
23450
23451 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23452
23453         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
23454         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
23455         until it's fixed and actually useful.
23456
23457 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23458
23459         * inssel-long32.brg: couple more opcodes implemented.
23460
23461 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
23462         
23463         * mini-sparc.c: Even more opcodes implemeted.
23464
23465 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
23466
23467         * mini-sparc.c: More opcodes implemented.
23468
23469 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
23470
23471         * mini-sparc.c: More opcodes implemented.
23472
23473 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
23474
23475         * inssel-sparc.brg: Add some needed rules.  Direct
23476         copy from PPC.
23477         * Makefile.am: Use inssel-sparc.brg
23478         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
23479         an assert happy for now.
23480
23481 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
23482
23483         * mini-sparc.c: Fixed compile errors.
23484         * exceptions-sparc.c: Same.  We now produce a mono binary 
23485         on sparc-linux.  Yea.
23486
23487 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
23488
23489         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
23490         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
23491         They compile, but do not work.
23492
23493 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23494
23495         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
23496         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
23497         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
23498         (ct@gentoo.org).
23499
23500 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23501
23502         * mini.c: more opcodes implemented and better support for generics.
23503
23504 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
23505
23506         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
23507         * mini.c, mini.h: first cut at generics support: some new instructions 
23508         added and changed the behaviour of some of the existing ones.
23509
23510 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
23511
23512         * mini.c: Removed definition of metadata_shared mutex here.
23513
23514 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
23515
23516         * mini-x86.c: make vararg calls work for instance methods.
23517
23518 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
23519
23520         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
23521         returns the arguments in a separte list, now.
23522
23523 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23524
23525         * aot.c, mini.c: updates for array type representation changes.
23526
23527 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
23528
23529         * mini.c: register function to perform jit shutdown.
23530
23531 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23532
23533         * mini.c: use a faster allocator if possible.
23534
23535 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
23536
23537         * aot.c: some cleanups and portability changes.
23538
23539 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23540
23541         * mini.c: use faster allocation for CEE_BOX if possible.
23542
23543 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
23544
23545         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
23546         Moved inlined mempcy code to its own function so that is can be
23547         reused. Added an inline memset function as well (optimized initobj).
23548         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
23549
23550 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23551
23552         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
23553
23554 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
23555
23556         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
23557         arch code can setup the cpu for CLR execution, if needed.
23558         We use it on x86 to set the precision of FP operations.
23559
23560 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
23561
23562         * mini.c: disable some optimizations if we can guess they'll cost too
23563         much for a given method.
23564
23565 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
23566
23567         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
23568         
23569 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
23570         * mini.h mini.c mini-x86.c: Added instruction level coverage 
23571         info collection support.
23572
23573 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23574
23575         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
23576         is now implemented in the profiling API. Get rid of a couple of
23577         unnecessary global variables.
23578
23579 2003-06-15  Nick Drochak <ndrochak@gol.com>
23580
23581         * basic-long.cs: tests for negative values for bigmul, and unsigned.
23582         * cpu-g4.md: add op_bigmul and op_bigmul_un
23583         * cpu_pentium.md: add op_bigmul_un
23584         * inssel-long32.brg: add rule for unsigned bigmul
23585         * mini-ops.h: define OP_BIGMUL_UN
23586         * mini-x86.c: THE BUG: handle (un)signed properly
23587         * mini.c: choose unsigned opcode if needed.
23588         This set of patches fixes bug #44291
23589
23590 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
23591
23592         * mini.c (optimize_branches): improved to handle all kinds of
23593         conditional branches.
23594
23595 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
23596
23597         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
23598         don't raise exceptions.
23599
23600 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23601
23602         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
23603         to arch-specific files.
23604
23605 2003-06-09  Martin Baulig  <martin@ximian.com>
23606
23607         * Makefile.am (libs): Added $(LIBGC_LIBS).
23608
23609 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
23610
23611         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
23612         and OP_ATAN (fixes bug#44293).
23613
23614 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
23615
23616         * Makefile.am, mini-x86.c: rename cpu description array to
23617         pentium_desc, since some compilers define the 'pentium' preprocessor
23618         symbol.
23619
23620 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
23621
23622         * mini.c (mini_select_instructions): add explicit branch if the
23623         following block is not the false target of a conditional branch -
23624         we need this with any optimization that reorder or remove bblocks
23625
23626         * mini.c (optimize_branches): bug fixes
23627
23628 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
23629
23630         * mini.c (mono_method_to_ir): inline static readonly fields
23631
23632         * ssa.c (fold_tree): start cfold support for long (very simple
23633         cases only)
23634
23635         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
23636
23637 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23638
23639         * inssel.brg: fixed memcpy (bug #44219).
23640
23641 2003-06-05  Dick Porter  <dick@ximian.com>
23642
23643         * driver.c: Set the glib log levels to not abort if g_message
23644         recurses.
23645
23646         g_set_prgname() has to happen before mini_init() so that the
23647         process handle gets the info.
23648         
23649 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23650
23651         * driver.c: add intrins to the default optimizations to get wider
23652         exposure.
23653
23654 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
23655
23656         * mini.h: some large basic blocks will overflow a 16-bit
23657         integers for symbolic registers.
23658
23659 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
23660
23661         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
23662         (mono_arch_output_basic_block): fix bug 43499 
23663
23664 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
23665
23666         * mini.c: kill duplicated definition of mono_debug_format.
23667
23668 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
23669
23670         * mini-x86.c, arrays.cs: fixed register allocation bug.
23671
23672 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
23673
23674         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
23675
23676         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
23677
23678 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23679
23680         * mini.c:
23681         (print_method_from_ip): also print source location information if
23682         available.
23683
23684 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
23685
23686         * mini.c (mono_find_block_region): bug fix in region code
23687         (mini_method_compile): enable removing unreachable code again, but
23688         only in methods without exception clauses.
23689
23690 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
23691
23692         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
23693         Implemented arglist opcode and handling of TypedReference type.
23694         Fixed x86 call convention when a structure is returned.
23695         Minimal support for calling static vararg methods.
23696
23697 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
23698
23699         * mini.c (mini_method_compile):  always remove unreachable code,
23700         because the code in them may be inconsistent  (access to dead
23701         variables for example).
23702
23703 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
23704
23705         * driver.c, debug-mini.c: warning fixes.
23706
23707 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
23708
23709         * Makefile.am, jit.h, mini.h: install header for embedding mono.
23710
23711 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
23712
23713         * mini.c: thread-static fields are registered in mono_class_vtable(),
23714         so ensure the function is called before checking for them.
23715
23716 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
23717
23718         * mini.c (optimize_branches): fix for bug 43586
23719
23720         * jit-icalls.c (mono_llmult_ovf): added an additional check for
23721         overflow (fixes Bug #43639)
23722
23723 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23724
23725         * mini.c, objects.cs: allow the use of stobj for primitive types.
23726
23727 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23728
23729         * mini.c: be less strict about argument checking until we support
23730         running the verifier.
23731
23732 2003-05-27  Nick Drochak <ndrochak@gol.com>
23733
23734         * basic-long.cs: tests for (ulong)int * (ulong)int also
23735         * mini.c: use the same trick for (ulong)int * (ulong)int
23736
23737 2003-05-27  Nick Drochak <ndrochak@gol.com>
23738
23739         * basic-long.cs: add regression test for (long)int * (long)int
23740         * cpu-pentium.md: add op_bigmul specification
23741         * inssel-long32.brg: add OP_BIGMUL rule
23742         * mini-ops.h: add OP_BIGMUL
23743         * mini-x86.c: register allocator: handle case where src1 needs to be
23744         in EAX.
23745         * mini.c: substitute special BIGMUL opcode in the tree for 
23746         (long)int * (long)int
23747
23748 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
23749
23750         * jit-icalls.c: call the type ctor on field access if needed.
23751
23752 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
23753
23754         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
23755         to a method (including results of ldelema, bug#43207).
23756
23757 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
23758
23759         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
23760         colors to show exception handler blocks.
23761
23762         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
23763         (fix for pinvoke7.cs).
23764
23765 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23766
23767         * mini.h, mini.c: ensure correct initialization order for types that
23768         require it. Prepare for lazy compilation of jit icall wrappers.
23769         Provide a name for opcode emulation to reduce unneeded mallocing.
23770
23771 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
23772
23773         * mini-x86.c: better register restoring code and profiling
23774         support for tail calls.
23775
23776 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23777
23778         * mini.h, driver.c: prepare for leaf methods optimization.
23779
23780 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
23781
23782         * mini.c: get targets of branches before converting a method.
23783
23784 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
23785
23786         * mini.c (optimize_branches): added some experimental code (disbaled) 
23787
23788 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
23789
23790         * mini.c (optimize_branches): fix branch to branch optimization 
23791
23792         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
23793
23794         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
23795
23796         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
23797
23798         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
23799         if needed.
23800
23801 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
23802
23803         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
23804         enable use of interface variables again.
23805
23806         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
23807         I1 to registers because there is no simply way to sign extend 8bit
23808         quantities in caller saved registers on x86.
23809
23810         * inssel-float.brg: set costs of some rules to 2 so
23811         that monobure always select the arch. specific ones if supplied,
23812         regardless of the order we pass the files to monoburg.
23813
23814 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
23815
23816         * mini.c, mini-x86.c: since the magic trampoline for jumps
23817         can't patch the code directly, we do it as soon as the
23818         method gets compiled.
23819
23820 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
23821
23822         * mini-x86.c, mini.h: introduce a new patching method
23823         to support CEE_JMP and tail calls.
23824         * mini.c: obey tail.call. Don't precompile methods target
23825         of CEE_JMP.
23826         * tramp-x86.c: new trampoline code to handle methods
23827         reached through a jump.
23828
23829 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
23830
23831         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
23832         bit values to registers
23833
23834 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
23835
23836         * mini.c (mono_compile_get_interface_var): share interface
23837         variables if possible.
23838
23839 2003-05-16  Martin Baulig  <martin@ximian.com>
23840
23841         * debug-mini.c (mono_init_debugger): New function to initialize
23842         the debugger.  This is not in the debugger since it needs to
23843         access some of mini's internals.
23844
23845 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
23846
23847         * mini.c (mono_method_to_ir): inlining fixes/cleanups
23848
23849 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
23850
23851         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
23852         for value type handling.
23853
23854 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
23855
23856         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
23857         (mono_method_check_inlining): enable inlining of all kinds of wrappers
23858
23859 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
23860
23861         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
23862           the constructor through a proxy.
23863
23864 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23865
23866         * jit-icalls.c, inssel.brg: fixes to array element address
23867         calculations.
23868
23869 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
23870
23871         * mini-x86.c (is_regsize_var): allocate pointer to registers
23872
23873 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23874
23875         * driver.c: fixed typo, added intrins to the set of optimizations
23876         tested with regressions.
23877
23878 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
23879
23880         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
23881         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
23882         test case.
23883
23884 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
23885
23886         * inssel.brg: remove some common pop instructions without side effects
23887
23888 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23889
23890         * inssel-x86.brg: fixed thinko in int to double conversions.
23891
23892 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
23893
23894         * mini.c, jit-icalls.c: added runtime thread-static variable support.
23895
23896 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
23897
23898         * inssel-long32.brg: two more missing instructions.
23899
23900 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
23901
23902         * mini.c (mono_emit_call_args): set the cil_code for all arguments
23903         if not already set.
23904
23905 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
23906
23907         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
23908         correctly.
23909
23910         * basic-float.cs: Added tests for negative zero.
23911
23912 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23913
23914         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
23915         a couple of missing operations for long casts, with test cases.
23916
23917 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23918
23919         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
23920
23921 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
23922
23923         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
23924         code size estimation.
23925
23926 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
23927
23928         * mini.c (mono_jit_create_remoting_trampoline): make it work with
23929         abstract methods (fix bug 42542)
23930
23931         * aot.c: add ability to handle array types
23932         
23933 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
23934
23935         * mini.c: Call the _specific versions of the object allocation
23936         functions if possible.
23937
23938 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
23939
23940         * driver.c: call setlocale ().
23941
23942 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
23943
23944         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
23945         windows build.
23946
23947 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
23948
23949         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
23950
23951         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
23952         wrappers (fix bug 42122)
23953
23954 2003-05-04  Martin Baulig  <martin@ximian.com>
23955
23956         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
23957
23958         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
23959         s/mini_set_defaults/mono_set_defaults/g.
23960
23961 2003-05-04  Martin Baulig  <martin@ximian.com>
23962
23963         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
23964
23965 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23966
23967         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
23968         (reported by Don Roberts).
23969
23970 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
23971
23972         * mini.c: temporarily work around two bugs for this release.
23973
23974 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23975
23976         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
23977         that contains -export-dynamic and it makes using the ld script
23978         useless.
23979         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
23980
23981 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
23982
23983         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
23984         specific cpu.
23985
23986 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
23987
23988         * mini.c: make sure leave calls all the needed finally blocks,
23989         even when the target jumps out of multiple exception clauses.
23990
23991 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23992
23993         * ldscript, Makefile.am: add linker script to reduce the number of
23994         exported symbols (should also fix the issues with libwine defining
23995         some of the same symbols in io-layer).
23996
23997 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
23998
23999         * driver.c (mini_main): Avoid assertion when no file name is given on 
24000         the command line.
24001
24002 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
24003
24004         * driver.c: added --version/-V command line option.
24005         Added the inline optimization in the regression tests.
24006
24007 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24008
24009         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
24010         to the type in the method signature (fixes bug#42134).
24011
24012 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
24013
24014         * mini.c: when inlining, check this is not null only when needed (bug #42135).
24015
24016 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
24017
24018         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
24019
24020 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24021
24022         * driver.c: fixed bug #42100.
24023
24024 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
24025
24026         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
24027
24028 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
24029
24030         * mini.c: moved most of the code required to do inlining to its own
24031         function so it can be reused. Inline also ctors if appropriate.
24032
24033 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
24034
24035         * Makefile.am: Link with -export-dynamic so shared libs loaded by
24036         the runtime can call mono API functions.
24037
24038 2003-04-27  Martin Baulig  <martin@ximian.com>
24039
24040         * debug-mini.c (mono_debug_init_method): Added
24041         `guint32 breakpoint_id' argument; if the method has a breakpoint,
24042         send a notification to the debugger.
24043
24044         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
24045         running in the Mono Debugger, just pass the breakpoint number to
24046         mono_debug_init_method().
24047
24048         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
24049
24050 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
24051
24052         * mini.c: allow some more unsafe compares.
24053
24054 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24055
24056         * mini-x86.c, Makefile.am: make distcheck works (partially from
24057         a patch by Richard Lee <r.h.lee@attbi.com>).
24058         * regset.c, regset.h: removed, they are unused.
24059
24060 2003-04-25  Dick Porter  <dick@ximian.com>
24061
24062         * driver.c: Usage reports the name as 'mono' not 'mini'
24063         * exceptions-x86.c: Build and run on freebsd
24064
24065 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
24066
24067         * Makefile.am: install the program with the 'mono' name and
24068         the library as libmono instead of mini and libmini.
24069
24070 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24071
24072         * driver.c: provide the APIs for the embedding interface of the old jit.
24073
24074 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
24075
24076         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
24077
24078 2003-04-23  Martin Baulig  <martin@ximian.com>
24079
24080         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
24081
24082         * driver.c: Added `--debug' command line argument to enable
24083         debugging support.
24084
24085 2003-04-23  Martin Baulig  <martin@ximian.com>
24086
24087         * debug.[ch]: Removed.  The code is now in
24088         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
24089
24090         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
24091         last six months.
24092
24093 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
24094
24095         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
24096
24097 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24098
24099         * mini.c:
24100         (mini_cleanup): moved mono_runtime_cleanup call after the call to
24101         mono_domain_finalize.
24102         (mini_method_compile): use mono_method_profile* if the the option is
24103         enabled.
24104
24105 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
24106
24107         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
24108         methods with their wrapper.
24109
24110         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
24111         methods with their wrapper.
24112
24113         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
24114         their wrapper.
24115
24116         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
24117         wrapper.
24118
24119         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
24120         methods.
24121
24122 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
24123
24124         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
24125
24126 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
24127
24128         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
24129         of the mempool. This is slightly faster and uses less memory
24130
24131 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24132
24133         * mini.c: avoid O(n) allocation for variables.
24134
24135 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24136
24137         * mini.c: handle items on the stack after inlining methods.
24138
24139 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
24140
24141         * mini.c: make the method->opcode optimization dependent
24142         on MONO_OPT_INSTRINS and do it lazily.
24143
24144 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
24145
24146         * driver.c: print overall results at the end of regression run.
24147
24148 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
24149
24150         * inssel.brg: don't overwrite symbolic registers.
24151
24152 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
24153
24154         * inssel-x86.brg: fix conversion from long to float.
24155
24156 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
24157
24158         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
24159
24160 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
24161
24162         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
24163
24164         * driver.c: Added --print-vtable option as in the old JIT.
24165
24166 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
24167
24168         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
24169
24170 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
24171
24172         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
24173
24174 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
24175
24176         * mini.c regalloc.c regalloc.h: Fix memory leak.
24177
24178 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
24179
24180         * aot.c (mono_aot_get_method): register all used strings
24181
24182 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24183
24184         * mini.c: always intern strings references with ldstr at compile time.
24185
24186 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24187
24188         * Makefile.am: add BUILT_SOURCES.
24189
24190 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
24191
24192         * driver.c: give a better error message when the assembly to execute
24193         doesn't have an entry point.
24194
24195 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
24196
24197         * Makefile.am: added hack for automake
24198
24199         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
24200         correct sematics.
24201
24202         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
24203
24204 22003-04-07  Martin Baulig  <martin@ximian.com>
24205
24206         * Makefile.am: Added Makefile.am.
24207
24208         * debugger-main.c: Removed, this is now in the debugger where it
24209         belongs.
24210
24211         * mini.pc.in: Call this package `mini' for the moment.
24212
24213
24214
24215
24216
24217
24218
24219
24220
24221
24222
24223
24224
24225
24226