7f956248d90eecacb52b7deb5bdbbb20617552aa
[mono.git] / mono / mini / ChangeLog
1 2010-02-26  Martin Baulig  <martin@ximian.com>
2
3         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
4
5         * debug-mini.c
6         (MonoDebuggerThreadInfo): Added `internal_flags'.
7         (MonoDebuggerInternalThreadFlags): New enum.
8         (_mono_debugger_throw_exception): Don't signal the debugger if a
9         type abort was requested.
10         (_mono_debugger_unhandled_exception): Likewise.
11         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
12         (mono_debugger_runtime_invoke): If the debugger requested a thread
13         abort during the invocation, reset it here.
14
15 2010-02-26  Martin Baulig  <martin@ximian.com>
16
17         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
18         instead of `MonoThread *'.
19
20 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
21
22         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
23         code offsets table, as it is mostly sorted.
24
25 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
26
27         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
28         Fixes #582991.
29
30 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
31
32         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
33
34 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
35
36         * Makefile.am: build the new ABI version of the libmono library.
37         * debugger-agent.c, mini.c: fix warnings with the new API.
38         * jit.h: don't depend on glib.h being included.
39
40 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
41
42         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
43
44 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
45
46         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
47         ThreadStatic variables.
48
49 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
50
51         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
52         data is not freed yet. Fixes #582460.
53
54 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
55
56         * debugger-agent.c: Add support for the caught/uncaught flags on exception
57         event requests. Bump protocol minor version.
58
59 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
60
61         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
62
63 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
64
65         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
66         #581950.
67
68         * iltests.il.in: Add a test.
69
70 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
71
72         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
73         instead of mono_method_get_header as it doesn't decode locals
74         so the called method can have unresolved dependencies that will only
75         be satisfied after the current method is JIT'd.
76
77         Fixes #550968.
78
79 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
80
81         * basic.cs (test_0_div_opt): Speed this up a bit.
82
83 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
84
85         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
86
87         * mini.c (mono_jit_create_remoting_trampoline): Call
88         mono_create_specific_trampoline () instead of
89         mono_arch_create_specific_trampoline ().
90
91         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
92
93 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
94
95         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
96         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
97
98         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
99
100         * mini-amd64.c: Fix DISABLE_JIT support.
101
102 2010-02-20  Geoff Norton  <gnorton@novell.com>
103
104         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
105
106 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
107
108         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
109         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
110         CATCH_TXT. Send normal exception events for unhandled exceptions too.
111         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
112         handle_exception.
113
114 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
115
116         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
117         edx/ecx too. This is needed to support OP_SEQ_POINT.
118
119 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
120
121         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
122
123         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
124
125 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
126
127         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
128         LLVM+AOT+exceptions, not enabled yet.
129
130 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
131
132         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
133
134 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
135
136         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
137         xdebug info for these.
138
139         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
140         in a few places.
141
142         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
143         not used yet.
144
145 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
146
147         * aot-compiler.c (load_profile_files): Update after the profiler changes.
148
149 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
150
151         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
152         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
153
154         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
155         for mtouch.
156
157 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
158
159         * debugger-agent.c: handle incomplete reads and EINTR in
160         recv()/send(). This could have been causing random
161         disconnections.
162
163 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
164
165         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
166         points.
167
168         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
169         so they have small offsets. Fixes #566311.
170
171 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
172
173         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
174
175 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
176
177         * mini-amd64.c: Remove the special casing of byref in a few places now that
178         mini_type_get_underlying_type () handles it.
179
180         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
181         by returning native int. Fixes #577984.
182
183 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
184
185         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
186         a macro.
187
188         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
189         of putting the clause itself.
190
191         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
192
193 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
194
195         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
196         might be unaligned.
197
198 2010-02-10  Geoff Norton  <gnorton@novell.com>
199
200         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
201
202 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
203
204         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
205         llvm methods too.
206
207         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
208         it is not an LLVM generated symbol.
209
210         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
211
212         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
213         implementation in gshared mode because it causes regressions.
214
215         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
216
217         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
218         should be done by the caller.
219
220         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
221
222         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
223
224         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
225         since mono_jit_info_table_find () doesn't do it anymore.
226
227         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
228         instead of mono_jit_info_table_find ().
229
230 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
231
232         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
233
234         * aot-compiler.c (encode_method_ref): Update after the removal of
235         mono_gc_get_managed_allocator_type ().
236
237         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
238         Fixes #564538.
239
240 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
241
242         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
243         generic params as well.
244         (handle_isinst): Ditto.
245
246         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
247         instead of always calling an icall.
248
249         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
250         computing the size of the got.
251
252         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
253         when using LLVM. Instead of emitting it as an LLVM method, emit it using
254         the assembly directive '.set' so it points to the first LLVM emitted method.
255
256 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
257
258         * mini.c (mini_method_verify): Report the method which failed to verify.
259
260 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
261
262         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
263         to avoid JIT'ng dead basic blocks. This is the same behavior as the
264         runtime MS verifier.
265
266 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
267
268         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
269         #561962.
270
271 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
272
273         * mini-llvm.c: Init the jit module only when first JITting.
274
275         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
276
277         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
278
279         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
280         replaced with the real got.
281
282         * debugger-agent.c (type_commands): Return the enumness if the type as well.
283
284         * image-writer.c: Reduce the amount of #ifdefs a bit.
285
286         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
287         llvm on darwin/arm.
288
289         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
290
291         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
292         global.
293
294 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
295
296         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
297         (mono_llvm_emit_method): Fix unaligned stores too.
298
299         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
300         so async stack walks don't crash.
301
302 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
303
304         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
305         was not patched if the callee needed an rgctx trampoline.
306
307 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
308
309         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
310         vtable address in AOT code.
311
312 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
313
314         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
315         MonoInst's.
316
317 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
318
319         * genmdesc.pl: remove dependency on external cpp.
320
321 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
322
323         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
324         using LLVM, its not needed, and abcrem can't handle it.
325
326 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
327
328         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
329         it easier to group instructions and reduce duplication.
330
331 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
332
333         * decompose.c: Move the array/soft float decompose routines here from
334         method-to-ir.c.
335
336         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
337
338 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
339
340         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
341         to tell LLVM that the got is constant, not used yet.
342
343         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
344
345 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
346
347         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
348         managed wrappers.
349
350 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
351
352         * aot-compiler.c (add_wrappers): Commit the hack which generates
353         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
354         custom attribute.
355
356 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
357
358         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
359         a fault, only used by the LLVM backend.
360
361         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
362         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
363
364         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
365         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
366
367         * mini-llvm.c: Only generate volatile loads from load instructions which have
368         the MONO_INST_FAULT flag set.
369
370 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
371
372         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
373         64 bit platforms.
374
375 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
376
377         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
378         sequence points. Fixes #571236.
379
380 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
381
382         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
383         end of the appdomain unload process, after assemblies have been unloaded.
384         Fixes #574842.
385
386 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
387
388         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
389         works.
390
391         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
392         Fixes #573988.
393
394 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
395
396         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
397
398 2010-01-26  Geoff Norton  <gnorton@novell.com>
399
400         * aot-compiler.c: Fix a logic error introduced when guarding against enums
401         with struct marshalability.
402
403 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
404
405         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
406         it supports class names as well.
407
408         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
409         needed by the GC map code.
410
411         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
412         flags if needed.
413
414         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
415         if cfg->init_ref_vars is set.
416
417         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
418         cfg->disable_initlocals_op_refs is set.
419
420         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
421         using liveness info if cfg->compute_precise_live_ranges is set.
422
423         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
424         volatile variables correctly. Add comments about the live ranges. Not enabled
425         yet.
426
427 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
428
429         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
430         0x2a into them in method prologs.
431
432         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
433
434 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
435
436         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
437         classes, since llvm is compiled with -fno-rtti.
438
439         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
440
441         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
442         llvm does not require it.
443
444         * aot-runtime.c (load_method): Print the full name of the last aot method.
445
446 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
447
448         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
449         thread has not fully started yet.
450
451 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
452
453         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
454
455 2010-01-21  Miguel de Icaza  <miguel@novell.com>
456
457         * driver.c: Do not abort if LLVM is not supported, print a
458         warning and add the information to the Mono JIT information.
459
460 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
461
462         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
463         using explicit null checks.
464
465 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
466
467         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
468         related code.
469
470         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
471         () in one place.
472         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
473         its no longer needed.
474
475         * method-to-ir.c (mono_method_to_ir): Fix a warning.
476
477         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
478         define for platforms still using it (s390). Get rid of the
479         mono_arch_get_throw_exception_by_name () routines on all other platforms.
480
481         * exceptions-x86.c: Rework the throw trampolines so there is only one function
482         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
483
484         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
485         the caller pushed the arguments.
486
487         * mini-llvm.c: Enable throwing exceptions on x86.
488
489         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
490         "Thread (nil) may have been prematurely finalized" messages if this is called
491         on a thread not registered with the runtime.
492
493         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
494
495 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
496
497         * jit-icalls.c (mono_array_new_3): New jit icall.
498
499         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
500
501         * arrays.cs: Add a test for 3 dimensional arrays.
502
503 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
504
505         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
506         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
507         used.
508
509         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
510         thrown on x86.
511
512         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
513
514         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
515
516         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
517
518 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
519
520         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
521           HOST_WIN32.  Also including winsock2. to define struct in_addr.
522
523         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
524
525         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
526
527         Code is contributed under MIT/X11 license.
528
529 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
530
531         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
532
533         * branch-opts.c (mono_optimize_branches): Honor the new flag.
534
535         * mini.c (mini_method_compile): Set the new flag when running under the
536         debugger.
537
538 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
539
540         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
541         a ref/noref value + a global pin flag, so parts of stack frames can still be
542         precisely marked even if they include stuff which needs pinning. Improve logging.
543         Fix many bugs. Not enabled yet.
544
545         * gc-test.cs: Add a few tests.
546
547         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
548         the normal -v options. Avoid propagating liveness information through bblocks
549         which end with a NOT_REACHED opcode.
550
551         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
552         after cfg has been freed.
553
554 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
555
556         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
557         if a clause is skipped because it uses the exception object, since it could
558         have caught the exception.
559
560         * exceptions.cs: Add a test.
561
562 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
563
564        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
565
566         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
567         ICollection<T> wrappers.
568
569 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
570
571         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
572
573 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
574
575         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
576         NOMAP32BIT or optimize_for_xen is set.
577
578 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
579
580         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
581         mono_metadata_str_hash () instead.
582
583 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
584
585         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
586         sizeof (void*).
587
588         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
589
590 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
591
592         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
593         flag is set.
594
595         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
596         throwing code correctly.
597
598         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
599
600 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
601
602         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
603         ftnptrs created by us, handle RGCTX_FETCH correctly.
604         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
605
606         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
607         ftnptr added by mono_aot_get_named_code ().
608
609 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
610
611         * mini-arm.c: Fix a few LLVM problems.
612
613         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
614
615 2010-01-13  Mark Probst  <mark.probst@gmail.com>
616
617         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
618         AOT compiling.
619
620 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
621
622         * jit.h, method-to-ir.c: added ability to set the policy for
623         inserting breakpoints from the break IL instruction or the
624         Debugger.Break () API call.
625
626 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
627
628         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
629         assemblies need to be eagerly loaded.
630
631 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
632
633         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
634
635 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
636
637         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
638         an argument which matches any exception.
639
640 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
641
642         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
643         optimization if the called method is gshared and marshalbyref, since gshared
644         methods can' have wrappers. Fixes #569390.
645
646         * generics.cs: Add a test.
647
648 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
649
650         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
651         callable from gdb.
652
653 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
654
655         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
656
657 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
658
659         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
660         since it is not supported in win2000.
661
662 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
663
664         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
665         error if loading an assembly fails.
666         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
667
668         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
669         if exists.
670
671         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
672         compiled methods.
673
674         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
675
676         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
677         is not supported yet.
678
679         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
680
681 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
682
683         * method-to-ir.c: All types with variant arguments must fallback to the
684         slow path. This makes cast of variant delegates work.
685
686         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
687         argument that is set to TRUE is the returned vtable slot is for a variant
688         interface. Changed a g_print + g_assert_not_reached to a g_error.
689
690         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
691         a similar fashion of generic virtual methods.
692
693 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
694
695         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
696         when cfg is null.
697
698         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
699         method using a variance aware function.
700
701         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
702
703 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
704
705         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
706         do an icall for now.
707
708 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
709
710         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
711         If LLVM decides to set the code model to Large, reset it to Default.
712
713 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
714
715         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
716         stripped binaries as well.
717
718 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
719
720         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
721         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
722
723         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
724         reg.
725
726 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
727
728         * mini.c (mini_method_compile): Extract the JIT info creation code into a
729         separate function.
730
731         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
732         as the type info to llvm.eh.selector.
733         (exception_cb): Use the type info for filling out some fields of
734         MonoJitExceptionInfo like the flags and the exception class. This is needed
735         because the LLVM produced exception handling clauses might not match the original
736         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
737
738         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
739         separate function. Add an extra argument which returns the type infos
740         corresponding to the exception clauses.
741
742         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
743         exception handling clauses.
744
745 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
746
747         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
748         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
749         to fix an AOT case.
750
751 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
752
753         * mini.c (mono_compile_is_broken): Skip methods from serialization's
754         internal assembly.
755
756 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
757
758         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
759         llvm code.
760
761 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
762
763         * mini.c (mini_method_compile): Verify the method before calling
764         mono_compile_create_vars as this might crash since it uses method
765         information.
766
767         Fixes #560196.
768
769 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
770
771         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
772         one case if AOTing, since the class might not be a concrete class.
773
774 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
775
776         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
777         functions which are now defined in mempool-internals.h.
778
779         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
780
781         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
782
783 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
784
785         * mini.c:
786         * method-to.ir.c:
787         * mini-*.c: Properly handle generic enums.
788
789         Fixes #566294
790
791 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
792
793         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
794         in a few more places.
795
796 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
797
798         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
799         nullable parameters. Fixes #567351.
800
801 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
802
803         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
804
805 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
806
807         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
808         mono_get_generic_context_from_code () call.
809
810         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
811
812 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
813
814         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
815         needed.
816
817 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
818
819         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
820         mono_method_get_signature returns NULL. Fix #567084
821
822 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
823
824         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
825         instead of once for each module.
826
827 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
828
829         * debugger-agent.c (ss_start): Implement step over for the last sequence
830         point in methods.
831
832         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
833         have the STEP_LOC flag set.
834
835         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
836         fails. Fixes #566689.
837
838 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
839
840         * mini.c (mono_add_seq_point): New helper function.
841         (mono_save_seq_point_info): New function to save sequence point info, extracted
842         from mini_method_compile ().
843
844         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
845
846         * mini.h (MonoSeqPointInfo): New structure containing information about
847         the sequence points of a JITted method.
848         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
849         'bucket' field.
850
851         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
852         point information is stored, use a MonoSeqPointInfo structure instead of a
853         GPtrArray. For each seq point, compute a list of successor seq points.
854
855         * debugger-agent.c: Use the successor list to implement step-over more
856         efficiently: instead of single stepping until a different line/IL offset is
857         reached, place breakpoints into all successor seq points.
858
859         * mini.h: Bump AOT file format version.
860
861 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
862
863         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
864
865         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
866
867 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
868
869         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
870         build.
871
872 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
873
874         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
875         alloca as g_malloc is not signal safe.
876
877 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
878
879         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
880         VALGRIND_DISCARD_TRANSLATIONS.
881
882         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
883         checks, they are no longer needed.
884
885         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
886         a function into a sigctx which can handle function pointers.
887
888         * mini-ppc.c: Implement soft debugger support on ppc64.
889
890         * mini-ppc.c: Implement soft debugger support.
891
892 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
893
894         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
895
896 2009-12-17  Marek Habersack  <mhabersack@novell.com>
897
898         * mini.c (mono_get_runtime_build_info): include Mono version in
899         the returned value.
900
901         * driver.c (mono_main): VERSION is now included in the string
902         returned from mono_get_runtime_build_info()
903
904 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
905
906         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
907         signatures. Fixes #565143.
908
909         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
910
911 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
912
913         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
914
915 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
916
917         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
918         making max stack 10x smaller.
919
920 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
921
922         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
923
924 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
925
926         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
927
928 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
929
930         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
931         bigger than MONO_ARCH_MAX_FRAME_SIZE.
932
933         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
934
935         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
936
937         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
938
939         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
940         the compilation.
941
942 2009-12-14  Miguel de Icaza  <miguel@novell.com>
943
944         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
945         raise an invalid program exception.   
946
947         For other opcodes that we might not handle use a g_warning and
948         raise the exception.   Beats termination.
949
950         Fixes #561724
951
952 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
953
954         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
955
956         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
957         by merging the LLVM and !MAP_32BIT cases.
958
959 2009-12-13 Jonathan Chambers <joncham@gmail.com>
960
961         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
962         sigctx being passed in, as we have no CONTEXT available in the APC.
963
964         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
965         for now.
966
967         Code contributed under MIT/X11 license.
968
969 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
970
971         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
972         in the LLVM backend on AMD64.
973
974         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
975         FDE.
976
977         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
978
979         * mini-llvm.c: Export mono_personality for AOT.
980
981         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
982
983         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
984         implicit exception can occur.
985
986         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
987         OP_IMPLICIT_EXCEPTION instruction.
988
989         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
990
991         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
992
993         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
994         inside a protected block.
995
996         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
997         trampolines doesn't include the argument.
998
999         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
1000         trampolines on amd64.
1001
1002         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
1003         of RDI.
1004
1005         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
1006         disabled for methods with clauses.
1007
1008         * mini-llvm.c: Enable support for catch clauses.
1009
1010         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
1011         end of an LLVM compiled finally clause.
1012         (mono_handle_exception_internal): Save the exception handling state in TLS
1013         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
1014         resume unwinding from that point.
1015
1016         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
1017         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
1018         to obtain the addresses of the exception handling regions.
1019
1020         * mini-llvm.c: Add beginnings of support for exception handling, currently only
1021         finally clauses are supported.
1022
1023         * mini.c (mini_method_compile): Add support for LLVM code with exception
1024         handlers.
1025
1026 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
1027
1028         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
1029         proper size.
1030
1031 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
1032
1033         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
1034         as a primitive type.
1035
1036 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
1037
1038         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
1039         for 2 parameter sched_setaffinity in older glibc versions. Fixes
1040         #564000.
1041
1042 2009-12-11  Marek Habersack  <mhabersack@novell.com>
1043
1044         * method-to-ir.c (mini_redirect_call): do not redirect the
1045         InternalAllocateStr internal call if string profiling is enabled.
1046
1047 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
1048
1049         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
1050         generic methods.
1051
1052         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
1053         unwind.h header file.
1054
1055         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
1056         newer valgrind versions seems to handle this fine.
1057
1058 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
1059
1060         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
1061         on the debugger thread.
1062
1063 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
1064
1065         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
1066
1067         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
1068
1069         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
1070
1071         * cpu-<ARCH>.md: Make call_handler clob:c.
1072
1073         * mini.c: Reenable SSA for methods with clauses.
1074
1075         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
1076         as it causes failures on x86.
1077
1078 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
1079
1080         * driver.c: Fail gracefully with --compile-all if mono_method_signature
1081         returns NULL (e.g. a bad assembly).
1082
1083 2009-12-08  Geoff Norton  <gnorton@novell.com>
1084
1085         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
1086         stepping out into native code.  There were issues with nested invokes
1087         like .cctors.
1088
1089 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
1090
1091         * mini.c (mini_method_compile): Do the disable_llvm checks early
1092         and avoid the LLVM compile pass if the checks fail.
1093
1094         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
1095
1096         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
1097         LLVM optimizations don't try to remove them.
1098
1099         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
1100         different file so the original remains.
1101
1102 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
1103
1104         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
1105
1106         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
1107
1108         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
1109         support for non-inline unwind descriptors.
1110
1111 2009-12-07  Geoff Norton  <gnorton@novell.com>
1112
1113         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
1114         the interrupt_count slightly differently.  Native threads were never
1115         marked as resumed.
1116
1117 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
1118
1119         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
1120         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
1121         yet generate this info.
1122
1123         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
1124
1125         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
1126         client can distinguish between intptrs and longs.
1127
1128 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
1129
1130         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
1131         blob.
1132
1133         * aot-runtime.c (load_function): Update after the change above.
1134
1135         * mini.h: Bump AOT file format version.
1136
1137         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
1138         if the delegate class is dynamic.
1139
1140         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
1141         in gshared code too using the new rgctx info type
1142         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
1143
1144 2009-12-04  Geoff Norton  <gnorton@novell.com>
1145
1146         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
1147         we need to track the original suspend count so the thread properly
1148         wakes up in resume_thread.
1149
1150 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
1151
1152         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
1153         code.
1154
1155         * generics.cs: Add a test.
1156
1157         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
1158         is 0. Simplify a lot of code using this.
1159
1160         * mini-trampolines.c (mono_delegate_trampoline): Call
1161         mono_create_static_rgctx_trampoline () before saving the final address in
1162         delegate->method_code, to avoid calling it each time a delegate is first called.
1163
1164         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
1165         which need static rgctx trampolines.
1166
1167         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
1168         keyed on the method+addr pair, since addr could be either the method addr or
1169         an unbox trampoline in the AOT case. Fixes #560246.
1170
1171 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1172
1173         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
1174         place it was called before too.
1175
1176 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1177
1178         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
1179         if no security manager is present, to speed up the AOT case. Call
1180         mono_class_vtable () full with raise_on_error == TRUE instead.
1181
1182 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1183
1184         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
1185         the local optimization passes can take its result into account. Fixes
1186         #559876.
1187
1188         * exceptions.cs: Add a test.
1189
1190 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
1191
1192         This patch is contributed under the terms of the MIT/X11 license
1193
1194         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
1195
1196 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1197
1198         * mini.h (MonoInst): Remove unused 'ssa_op' field.
1199
1200         * debugger-agent.c: Rework the handling of stack traces of running threads to
1201         avoid crashes if compute_frames () tries to walk the stack of running thread.
1202
1203         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
1204
1205         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
1206
1207         * mini.h (StackFrameInfo): Add an 'lmf' field.
1208
1209 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
1210
1211         * debugger-agent.c (suspend_current): Always set really_suspended.
1212
1213         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
1214
1215         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
1216
1217 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
1218
1219         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
1220         really suspended.
1221
1222 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
1223
1224         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
1225
1226 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
1227
1228         * mini-trampolines.c: Fix MSVC build.
1229
1230 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
1231
1232         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
1233
1234 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
1235
1236         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
1237         the instruction following an OP_FCOMPARE is optimized away.
1238
1239 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
1240
1241         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
1242         emit_autoreg () into this arch-specific function.
1243
1244         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
1245         code, it is no longer needed.
1246
1247         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
1248
1249         * mini.h: Bump AOT file format version.
1250
1251         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
1252         using the sorted_code_offsets array, instead of reading it from the
1253         exception debug info.
1254         (load_method): Call mono_aot_find_jit_info instead of
1255         decode_exception_debug_info ().
1256
1257         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
1258         LLVM compiled as a flag.
1259
1260 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
1261
1262         * debugger-agent.c (resume_thread): Fix a warning.
1263
1264         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
1265         generated.
1266
1267 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
1268
1269         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
1270         contents to MonoAotFileInfo.
1271
1272 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
1273
1274         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
1275         Put all binary data into a giant blob, similarly to the way .net assemblies
1276         store binary data. Emit offset tables in a compact form to reduce their size.
1277
1278         * mini.h: Bump AOT file format version.
1279
1280         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
1281         places.
1282
1283         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
1284         avoid linear searches at runtime.
1285
1286         * aot-runtime.c (find_symbol): Update this to use the hash.
1287
1288         * mini.h: Bump AOT file format version.
1289
1290 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
1291
1292         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
1293         container.
1294
1295         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
1296         too.
1297
1298         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
1299         the distribution of got slot types.
1300
1301         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
1302
1303         * method-to-ir.c: Add support for generating explicit null checks.
1304
1305 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
1306
1307         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
1308         on a random thread if possible.
1309
1310         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
1311         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
1312         correctly.
1313
1314         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
1315         regs. Pass the real size of the regs array to mono_unwind_frame ().
1316
1317         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
1318         ones instead.
1319
1320 2009-11-24  Geoff Norton  <gnorton@novell.com>
1321
1322         * mini-darwin.c: Work around apple bug rdar://7209349  See
1323         http://openradar.appspot.com/7209349 for details.  Synopsis,
1324         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
1325         never been initialized before.
1326
1327 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1328
1329         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
1330
1331         * mini-arm.c (mono_arm_thumb_supported): New helper function.
1332
1333 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1334
1335         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
1336         OP_SHL_IMM is not 32 bit.
1337
1338 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1339
1340         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
1341
1342 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1343
1344         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
1345         encountered.
1346
1347         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
1348         > 0 since some threads can resume if their resume_count is > 0.
1349         (invoke_method): Avoid reading freed memory.
1350
1351         * debugger-agent.c (process_suspend): Extract the suspend code from
1352         process_single_step_inner () to a separate function. Rework the code to prevent
1353         races between this function and thread interrupts.
1354
1355         * debugger-agent.c (suspend_current): Check the resume_count field instead
1356         of resume_one so suspends+resumes during single threaded invokes work
1357         correctly.
1358
1359 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
1360
1361         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
1362         to make the generated code smaller.
1363
1364         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
1365         sequence generated by recent LLVM versions.
1366
1367         * mini-llvm.c: Add support for a few simple cases which weren't supported
1368         before.
1369
1370         * mini-trampolines.c (mono_magic_trampoline): Don't call
1371         mono_arch_get_vcall_slot () when llvm is enabled.
1372
1373         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
1374
1375         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
1376         into a new function called common_call_trampoline () which is used by the
1377         llvm vcall trampoline as well.
1378
1379         * debugger-agent.c: Implement single threaded invokes.
1380
1381         * debugger-agent.c: Revert change which broke the agent on linux.
1382
1383         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
1384         #557606.
1385
1386         * generics.cs: Add a test.
1387
1388 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
1389
1390         * debugger-agent.c: Fix the cygwin build.
1391
1392 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1393
1394         * cprop.c: Remove this unused file.
1395
1396 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1397
1398         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
1399         #557262.
1400
1401         * basic.cs: Add a test.
1402
1403 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1404
1405         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
1406         in one more place.
1407
1408 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
1409
1410         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
1411         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
1412         it. Use this flag to control llvm related code paths instead of #ifdef
1413         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
1414         AOT code.
1415
1416         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
1417
1418         * mini.h: Bump AOT file format version.
1419
1420         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
1421         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
1422
1423         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
1424         was used as an assembly filter.
1425
1426 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1427
1428         * unwind.c: Fix support for ppc.
1429
1430         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
1431         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
1432
1433 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1434
1435         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
1436         port.
1437         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
1438         added by the ps3 changes.
1439
1440 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1441
1442         * mini-gc.c: Resurrect this, so at least it compiles.
1443
1444         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
1445
1446 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
1447
1448         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
1449         create_event_list () so assembly filters can be used.
1450
1451         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
1452         from the LMF.
1453
1454 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
1455
1456         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
1457         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
1458         is disabled.
1459
1460         * aot-compiler.c (add_generic_instances): Emit instances of common generic
1461         classes for char/bool too.
1462
1463         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
1464
1465         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
1466         used.
1467
1468         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
1469         Fix warnings.
1470
1471 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
1472
1473         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
1474         
1475         Code contributed under MIT/X11 license.
1476
1477 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
1478
1479         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
1480         threads in native code work.
1481
1482         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
1483         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
1484         version.
1485
1486 2009-11-13 Jonathan Chambers <joncham@gmail.com>
1487
1488         * debugger-agent.c: Implementation for Windows platform.
1489
1490         * mini-x86.c: Add support for Windows. Use mono-* synchronization
1491         primitives. Use SEH to implement breakpoints and single stepping.
1492
1493         * mini-x86.h: Enable soft debugger on Windows.
1494
1495         Code contributed under MIT/X11 license.
1496
1497 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
1498
1499         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
1500         under XEN. Fixes #522894.
1501
1502         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
1503
1504         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
1505         interface calls in LLVM AOT code.
1506
1507         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
1508         is found.
1509
1510         * mini-llvm.c: Add support for OP_VPHI.
1511
1512         * objects.cs: Add a test.
1513
1514 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
1515
1516         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
1517         this is called on the debugger thread.
1518
1519 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
1520
1521         * mini-llvm.c: Add soft-float support.
1522
1523         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
1524         FCALL which returns an R4.
1525
1526         * driver.c (mono_main): Add a missing '\n'.
1527
1528         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
1529         platforms which doesn't support the LLVM IMT trampoline.
1530
1531 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
1532
1533         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
1534
1535         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
1536
1537         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
1538         virtual calls.
1539
1540         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
1541
1542 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
1543
1544         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
1545         Instead of emitting a method_order table, sort the contents of the code_offsets
1546         table and do a binary search in the sorted table. The previous approach doesn't
1547         work with LLVM which emits methods in a arbitrary order.
1548
1549         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
1550         in the .eh_frame section in ELF files.
1551
1552         * mini.h: Bump corlib file format version.
1553
1554         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
1555
1556         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
1557         LDMIA->LDM macro name change.
1558
1559 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
1560
1561         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
1562         x86.
1563
1564         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
1565         SVN.
1566
1567         * aot-compiler.c: Ditto.
1568
1569         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
1570         &align to mini_type_stack_size_full ().
1571
1572         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
1573
1574         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
1575
1576 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
1577
1578         * mini-arm.c: Compute the stack space used by arguments using
1579         mini_type_stack_size_full ().
1580
1581 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
1582
1583         * optflags-def.h: Remove dead TREEPROP optimization.
1584
1585 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
1586
1587         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
1588
1589         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
1590
1591 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
1592
1593         * driver.c (mono_jit_parse_options): New public API function to parse options
1594         as done by the runtime executable.
1595
1596         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
1597         when handling named arguments.
1598
1599 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
1600
1601         * mini-arm.c: Implement support for returning vtypes in registers, fix support
1602         for passing small vtypes in registers, make the CallInfo structures more
1603         similar to the code on the other platforms.
1604
1605         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
1606         the code in the prolog requires it.
1607
1608 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
1609
1610         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
1611         (koush@koushikdutta.com).
1612
1613         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
1614         where the thunk memory should be allocated from. Fixes appdomain unloading
1615         on arm.
1616
1617 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
1618
1619         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
1620         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
1621
1622 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1623
1624         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
1625         AOT, as it is not implemented yet.
1626
1627         * mini-x86.c (mono_arch_output_basic_block): Ditto.
1628
1629 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1630
1631         * debugger-agent.c: Fix windows build.
1632
1633 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1634
1635         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
1636         after the client connects/disconnects.
1637
1638         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
1639         when an exception of a given type is thrown.
1640
1641         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
1642         only on an uncaught exception.
1643
1644         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
1645
1646         * debugger-agent.c: Add a 'launch' option.
1647
1648 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1649
1650         * debugger-agent.c: Add a 'timeout' option.
1651
1652 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1653
1654         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
1655         the JDWP agent.
1656
1657 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1658
1659         * debugger-agent.c (set_breakpoint): Emit a log message.
1660
1661 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
1662
1663         * mini-arm.c: Fix the arm build.
1664
1665 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
1666
1667         * aot-compiler.c: don't leak the value returned from
1668         mono_type_full_name().
1669
1670 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
1671
1672         * debugger-agent.c: defer including mono-mutex.h until we know the
1673         agent is supported.
1674
1675 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1676
1677         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
1678         of pthreads directly.
1679
1680         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
1681         exception handlers. Pass info argument.
1682
1683         * mini.h: Adjust signatures of soft debugger functions to pass void*
1684         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
1685
1686         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
1687         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1688         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
1689         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1690
1691         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
1692
1693         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
1694         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1695         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
1696         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1697
1698         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
1699
1700         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
1701
1702         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
1703
1704         * mono-semaphore.h: Skeleton implementation for Windows.
1705
1706         Code contributed under MIT/X11 license.
1707
1708 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1709
1710         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
1711
1712         Code contributed under MIT/X11 license.
1713
1714 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1715
1716         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
1717
1718         Code contributed under MIT/X11 license.
1719
1720 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
1721
1722         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
1723         debug info to 100 because 10 still slows down gdb too much.
1724
1725         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
1726         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
1727         them in the wrappers.
1728
1729 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
1730
1731         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
1732
1733         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
1734
1735         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
1736         function mono_aot_get_array_helper_from_wrapper ().
1737
1738         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
1739         array helper methods.
1740
1741 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1742
1743         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
1744         the value was loaded from memory.
1745
1746         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
1747         the value was loader from there.
1748
1749         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
1750         without constant swizzle.
1751
1752 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1753
1754         * mini-amd64.c: Put soft debugger functions behind a
1755         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
1756
1757         * mini-amd64.h: disable the soft debugger in windows.
1758
1759         Code contributed under MIT/X11 license.
1760
1761 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1762
1763         * mini-x86.c: Put soft debugger functions behind a
1764         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
1765
1766         Code contributed under MIT/X11 license.
1767
1768 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1769
1770         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
1771         to mono_arch_find_jit_info_ext.
1772
1773         Code contributed under MIT/X11 license.
1774
1775 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
1776
1777         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
1778
1779         * debugger-agent.c: Add support for filtering events by assemblies.
1780
1781         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
1782         the agent is not enabled.
1783
1784 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1785
1786         * exceptions-x86.c: hopefully last change to fix the windows build.
1787         This one courtesy of Jonathan Chambers.
1788
1789 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1790
1791         * debugger-agent.c: remove unused function.
1792
1793 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1794
1795         * debugger-agent.c: add #ifdefs for a few header files.
1796         * mini-x86.h: disable the soft debugger in windows.
1797         Step 1 of 2 to make this compile on windows with gcc.
1798
1799 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
1800
1801         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
1802         as it breaks the build.
1803
1804 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
1805
1806         Merge the soft debugger branch.
1807
1808         * debugger-agent.h debugger-agent.c: New files containing the soft
1809         mode debugger module.
1810
1811         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
1812         at the appropriate locations.
1813
1814         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
1815         opcode.
1816
1817         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
1818         enable/disable single stepping.
1819
1820         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
1821         which returns all information in a StackFrameInfo structure, and can handle the
1822         LMF frames added by the debugger.
1823
1824         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
1825         about an LMF frame.
1826
1827         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
1828         walker function which works on a specific thread and passes a StackFrameInfo
1829         structure to its callback.
1830
1831         * mini.c (mini_init): Initialize the debugger agent.
1832
1833         * aot-compiler.c aot-runtime.c: Add soft-debug support.
1834
1835         * mini-ops.h: Add OP_SEQ_POINT opcode.
1836
1837         * driver.c (mono_main): Add new '--debugger-agent' option for passing
1838         arguments to the debugger agent.
1839
1840 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
1841
1842         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
1843         speed things up.
1844
1845         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
1846
1847         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
1848
1849         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
1850
1851         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
1852         if needed.
1853         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
1854         sets the IMT argument and makes a virtual call.
1855
1856         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
1857
1858 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
1859
1860         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
1861         the windows build.
1862
1863 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
1864
1865         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
1866         runtime. Fixes #551228.
1867
1868 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
1869
1870         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
1871
1872         * basic.cs: Add a test.
1873
1874         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
1875         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
1876         CONSTRAINED. Fixes #550964.
1877
1878         * generics.cs: Add a test.
1879
1880 2009-10-28  Mark Probst  <mark.probst@gmail.com>
1881
1882         * mini-posix.c (add_signal_handler): Use
1883         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
1884
1885 2009-10-28 Jerry Maine <crashfourit@gmail.com>
1886
1887         Contributed under the terms of the MIT/X11 license by
1888         Jerry Maine <crashfourit@gail.com>.
1889
1890         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
1891         sse4a for simd intrinsics.
1892
1893         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
1894         sse4a for simd intrinsics.
1895
1896 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
1897
1898         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
1899         instead of inst_p1 which is not the same on ILP32 platforms.
1900
1901 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
1902
1903         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
1904         not the mscorlib one before calling mono_get_lmf_addr.
1905
1906         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
1907         of the ip to the LMF.
1908
1909         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
1910         immediate in the op->op_imm optimization.
1911
1912         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
1913         understand. VTypes now work, but are not abi compliant, as they are
1914         split into 4 byte parts instead of 8.
1915         (emit_memcpy): Fix the unrolled case to work on the PS3.
1916
1917         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
1918
1919         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
1920         the default when static linking.
1921
1922         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
1923
1924         * aot-compiler.c: Add an autoreg option to automatically register
1925         statically linked aot modules using ELF .ctors.
1926
1927         * genmdesc.pl: Add __ppc64__ to allowed defines.
1928
1929 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
1930
1931         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
1932         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
1933
1934 2009-10-24  Mark Probst  <mark.probst@gmail.com>
1935
1936         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
1937
1938 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
1939
1940         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
1941         which will contain the domain where the method was found.
1942
1943         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
1944         mini_jit_info_table_find ().
1945
1946         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
1947
1948         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
1949
1950 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
1951
1952         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
1953         set, its not supported yet.
1954
1955 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
1956
1957         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
1958         iface wrapper is not found.
1959         (mono_aot_get_method): Ditto for GetGenericValueImpl.
1960
1961 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
1962
1963         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
1964         which have a different name.
1965
1966         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
1967         wrappers and Array.GetGenericValueImpl ().
1968
1969         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
1970         because of the change above.
1971
1972         * generics.cs: Add a test for full aot + generic array ifaces.
1973
1974 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
1975
1976         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
1977         that hides the previous one.
1978
1979 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
1980
1981         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
1982         marshalled. Fixes #541623.
1983
1984 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
1985
1986         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
1987
1988 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
1989
1990         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
1991
1992 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1993
1994         * mini-posix.c (sigprof_signal_handler):
1995         Implemented support for building stat call chans in different ways.
1996
1997 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1998
1999         * mini-exceptions.c (mono_find_jit_info):
2000         Also check that a jit info has been found (fixes a profiler crash).
2001
2002 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2003
2004         * mini.c (mono_codegen):
2005         Call mono_profiler_code_buffer_new with correct code address.
2006
2007 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
2008
2009         * driver.c (mono_main): Change the date in the copyright.
2010
2011 2009-10-14  Mark Probst  <mark.probst@gmail.com>
2012
2013         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
2014         allocator in shared generic code for open classes, because we
2015         can't get those classes' vtables.  We need to make managed
2016         allocators not depend on the vtable at compile-time to solve this.
2017
2018 2009-10-13  Martin Baulig  <martin@ximian.com>
2019
2020         * debug-mini.c (mono_debugger_trampoline_compiled): Add
2021         `const guint8 *trampoline' argument; send both the old and the new
2022         notification.
2023
2024 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
2025
2026         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
2027         mono_runtime_capture_context () without calling mono_runtime_invoke ().
2028         (can_marshal_struct): Skip structures with auto layout.
2029
2030         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
2031
2032 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
2033
2034         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
2035         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
2036         a variable to hold the stack slot used by the int<->float conversion opcodes.
2037
2038         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
2039
2040 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
2041
2042         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
2043         when using full-aot.
2044
2045 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
2046
2047         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
2048         each instance of Comparer<T>.
2049
2050         * generics.cs: Add a new test.
2051
2052 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
2053
2054         * driver.c (parse_debug_options): Add a 'gdb' option.
2055
2056         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
2057
2058         * image-writer.c: Add support for emitting the image into a memory buffer.
2059
2060         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
2061
2062         * aot-compiler.c: Add support for registering debug info with GDB using the
2063         new JIT debugging interface in GDB 7.0. It can be turned on by setting
2064         MONO_XDEBUG to 'gdb'.
2065
2066 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
2067
2068         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
2069         gdb mode.
2070
2071 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
2072
2073         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
2074         can be used to set breakpoints in gdb.
2075
2076         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
2077         segment to an absolute address.
2078
2079 2009-10-13  Mark Probst  <mark.probst@gmail.com>
2080
2081         * method-to-ir.c: Use the managed array allocator method if
2082         available.
2083
2084 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
2085
2086         * aot-compiler.c : Fix the MSVC builds
2087
2088         Code is contributed under MIT/X11 license.
2089
2090 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
2091
2092         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
2093         avoid registering 1 symbol file per method with gdb.
2094
2095 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
2096
2097         * mini-sparc.c: Fix the handling of enums with base type long.
2098
2099         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
2100
2101         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
2102         instead of using type->data.klass as the later doesn't work with generics.
2103
2104 2009-09-25  Mark Probst  <mark.probst@gmail.com>
2105
2106         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
2107         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
2108         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
2109         works differently now and we don't handle it in the JIT anymore.
2110
2111         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
2112         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
2113         the Thread class split.
2114
2115 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
2116
2117         * driver.c: Don't run tests with the obsolete treeprop optimization.
2118
2119         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
2120         variable volatile. Fixes #541577.
2121
2122         * basic-calls.cs: Add a new test.
2123
2124         * basic-long.cs: Remove tests which are now in basic-calls.cs.
2125
2126 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
2127
2128         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
2129         work/required with recent iphone sdk versions.
2130
2131         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
2132         structures.
2133
2134         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
2135         in the VCALL decomposition code.
2136
2137 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
2138
2139         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
2140
2141         * basic.cs: Add a test.
2142
2143         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
2144         generic invokes.
2145
2146         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
2147         searches all the domains of the current thread.
2148
2149         * exceptions-<ARCH>.c: Use it. Fixes #539394.
2150
2151 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
2152
2153         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
2154         so catching exceptions thrown in the same method works. Fixes exception17.exe.
2155
2156         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
2157         for non-jit trampolines.
2158
2159         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
2160
2161         * aot-compiler.c (add_wrappers): Ditto.
2162
2163         * mini-arm.c: Implement support for passing vtypes and floats, and increase
2164         the size of the param area used by dyn_call to 6 which covers the majority of
2165         methods.
2166
2167         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
2168
2169         * mini-arm.c: Implement support for passing/receiving
2170         longs and receiving floats in the dyn_call code.
2171
2172         * mini-amd64.c: Implement support for receiving vtypes in registers in
2173         the dyn_call code.
2174
2175         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
2176         the dyn_call code.
2177
2178 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
2179
2180         * mini-arm.c (get_call_info): Return more precise information in
2181         ArgInfo->regtype.
2182         (dyn_call_supported): Use the information in CallInfo.
2183
2184         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
2185
2186         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
2187         code.
2188
2189         * mini-arm.c: Update after the dyn_call api changes.
2190
2191         * mini.c (mini_create_jit_domain_info): Register a destructor function
2192         for the runtime_invoke_hash.
2193
2194         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
2195         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
2196         this function.
2197         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
2198         (dyn_call_supported): Simplify this by using get_call_info ().
2199         (mono_arch_dyn_call_free): New destructor function.
2200
2201         * generics.cs: Remove a printf.
2202
2203         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
2204
2205         * mini-arm.c: Add support for enum return values and passing a few arguments
2206         on the stack.
2207         
2208         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
2209         dyn invoke.
2210
2211         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
2212
2213         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
2214         the dynamic invoke wrappers.
2215
2216         * mini-arm.c: Implement OP_DYN_CALL for arm.
2217
2218         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
2219         supported by the dynamic runtime invoke wrapper.
2220
2221         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
2222         runtime invoke wrapper.
2223
2224         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
2225         if possible when running with full-aot.
2226
2227         * mini-ops.h: Add OP_DYN_CALL opcode.
2228
2229         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
2230         with dynamic arguments lists similar to libffi.
2231
2232 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
2233
2234         * method-to-ir.c: Fix the previous change on 64 bit platforms.
2235         
2236         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
2237         to NEWARR.
2238
2239         * iltests.il.in: Add a new test.
2240         
2241 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
2242
2243         * aot-compiler.c (add_generic_instances): Add more instances of
2244         GenericEqualityComparer.
2245
2246 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
2247
2248         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
2249
2250 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
2251
2252         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
2253         comments on some functions that now can fail.
2254
2255 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
2256
2257         * Makefile.am: Add Info.plist to EXTRA_DIST
2258
2259 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
2260
2261         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
2262         static synchronized wrappers. Fixes #539500.
2263
2264 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
2265
2266         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
2267         properly.
2268
2269 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
2270
2271         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
2272         lmf before calling filter clauses as well. Fixes #539550.
2273
2274         * exceptions.cs: Add a test.
2275         
2276 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
2277
2278         * aot-compiler.c (add_generic_class): Add instances of
2279         Array.GetGenericValueImpl as well.
2280
2281         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
2282         can be tested too.
2283
2284         * generics.cs: Add a fullaot linq test.
2285
2286 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
2287
2288         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
2289         reg r1 on arm.
2290
2291 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
2292
2293         * mini-trampolines.c (mono_delegate_trampoline) : Call
2294           mono_cominterop_get_invoke if the delegate target object
2295           is a COM object.
2296
2297         Code is contributed under MIT/X11 license.
2298
2299 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
2300
2301         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
2302         internal call is defined outside platform code. Reduce code 
2303         duplication with existing [Method|Field]AccessException
2304
2305 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
2306
2307         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
2308         if the return value is a small struct passed on regs.
2309
2310 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
2311
2312         * cpu-arm.md mini-arm.c: Remove unused opcodes.
2313
2314         * mini-codegen.c: Enable the cpu description validation for arm.
2315
2316 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
2317
2318         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
2319         test which depends on structs to objects.cs.
2320         
2321         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
2322         require object model related stuff working.
2323
2324         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
2325
2326         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
2327
2328         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
2329         against the instruction metadata in mini-ops.h. amd64 only for now.
2330
2331         * mini-ops.h: Fix some instruction descriptions.
2332
2333         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
2334         unused instructions.
2335
2336 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
2337
2338         * exceptions.cs: Add a new test.
2339
2340 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
2341
2342         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
2343
2344 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
2345
2346         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
2347         skip empty phi opcodes.
2348         
2349         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
2350         correctly by zero extending after loads. Skip methods containing calls
2351         to the monitor enter/exit trampolines.
2352
2353         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
2354         when calling mono_thread_force_interruption_checkpoint ().
2355
2356         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
2357
2358         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
2359         64 bit thunks.
2360         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
2361
2362         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
2363         bootstrap could run.
2364
2365 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
2366
2367         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
2368
2369 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
2370
2371         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
2372         of the method to
2373         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
2374         LLVM might be very short.
2375
2376         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
2377         in OP_THROW/RETHROW.
2378
2379         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
2380         alignment on osx.
2381
2382 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
2383
2384         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
2385         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
2386         LLVM might be very short.
2387
2388 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
2389
2390         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
2391         the alignment for the value of sp.
2392
2393 2009-09-01  Geoff Norton  <gnorton@novell.com>
2394
2395         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
2396         managed wrappers in full aot.
2397
2398 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
2399
2400         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
2401
2402 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
2403
2404         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
2405
2406 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
2407
2408         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
2409
2410         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
2411         saved info.
2412
2413         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2414
2415         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
2416         depend on the info MonoMethodHeader which could be missing in IL stripped
2417         assemblies.
2418
2419 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
2420
2421         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
2422         they are only 4 byte aligned.
2423
2424 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
2425
2426         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
2427         was done previously, since using SP causes too many problems.
2428
2429         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
2430         frames without a frame pointer works.
2431
2432         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
2433         global register in methods with calls, since the calls can go through
2434         a static rgctx trampoline which doesn't save it.
2435
2436 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
2437
2438         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
2439
2440 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
2441
2442         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
2443
2444 2009-08-18  Christian Hergert  <chris@dronelabs.com>
2445
2446         * method-to-ir.c: Fix warnings for uninitialized variables.
2447
2448 2009-08-18  Christian Hergert  <chris@dronelabs.com>
2449
2450         * mini-exceptions.c:
2451         * aot-compiler.c: Fix printf warnings.
2452
2453 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
2454
2455         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
2456         Add GetGenericValueImpl<string>.
2457         
2458         * aot-compiler.c (add_generic_instances): Add instances of
2459         GenericEqualityComparer<T> for primitive types. Only emit the array
2460         wrappers into the mscorlib image.
2461
2462 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
2463
2464         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
2465         the methods_loaded array using amodule->info->nmethods.
2466
2467         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
2468         (MONO_AOT_FILE_VERSION): Bump this.
2469
2470         * aot-compiler.c: Emit more generic instances allowing some parts of linq
2471         to work.
2472
2473         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
2474         MonoJitInfo doesn't belong to its methods aot image.
2475
2476 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
2477
2478         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
2479
2480         * mini-arm.c: Fix warnings.
2481         
2482         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
2483
2484         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
2485         supports it.
2486
2487 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
2488
2489         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
2490         avoid clobbering IP.
2491
2492         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
2493         hold the trampoline argument, so its initial value is available during
2494         debugging.
2495
2496 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
2497
2498         * exceptions-arm.c:
2499         * exceptions-hppa.c:
2500         * mini.c:
2501         * exceptions-s390x.c:
2502         * exceptions-mips.c:
2503         * exceptions-ppc.c:
2504         * exceptions-sparc.c:
2505         * exceptions-alpha.c:
2506         * aot-runtime.c:
2507         * mini-trampolines.c:
2508         * exceptions-x86.c:
2509         * exceptions-s390.c: add and use #define's instead of sizeof()
2510         for MonoJitInfo and MonoJitInfoTable.
2511
2512 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
2513
2514         * tramp-arm.c:
2515         * tramp-amd64.c:
2516         * tramp-ppc.c:
2517         * tramp-x86.c: use a #define instead of sizeof() for a few
2518         structures that use a zero-length array.
2519
2520 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
2521
2522         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
2523         case when the method is dynamic. Fixes #529238.
2524
2525 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
2526
2527         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
2528         of asserting when a method is JIT compiled in full-aot mode.
2529
2530 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
2531         
2532         Contributed under the terms of the MIT/X11 license by
2533         Jerry Maine <crashfourit@gail.com>.
2534         
2535         * fixed wrong dates in changelog.
2536
2537 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
2538         
2539         Contributed under the terms of the MIT/X11 license by
2540         Jerry Maine <crashfourit@gail.com>.
2541
2542         * basic-simd.cs: added test for packed double square root.
2543         * cpu-amd64.md: added opcode info for packed double square root.
2544         * cpu-x86.md: added opcode info for packed double square root.
2545         * mini-ops.h: added IR opcode for packed double square root.
2546         * mini-x86.c: added IR to native translation code for packed double square root.
2547         * mini-amd64.c: removed todo for packed double square root.
2548         * simd-intrinsics.c: added method to IR opcode converstion for
2549         packed double square root.
2550
2551 2009-08-03 Jerry Maine <crashfourit@gmail.com>
2552
2553         Contributed under the terms of the MIT/X11 license by
2554         Jerry Maine <crashfourit@gail.com>.
2555
2556         * mini-amd64.c: Added a change to help tell the difference as 
2557         to what perpose the xmm register is being used--mainly to help
2558         with debuging.
2559         * mini-amd64.h: Changed callee regs to use 15 out of 16 
2560         (one used for special cases) xmm registers for both fp
2561         and simd ops. Added define to turn on new feature in the regalloc
2562         that allows fp and simd ops to share the xmm regs happily.
2563         * codegen.c: Added code to detect for which perpose an xmm reg is
2564         being used (fp or simd) and to translate back and forth to the
2565         correct logical reg bank (fp or simd) for 'spill load's.
2566
2567 2009-08-03 Jerry Maine <crashfourit@gmail.com>
2568
2569         Contributed under the terms of the MIT/X11 license by
2570         Jerry Maine <crashfourit@gail.com>.
2571
2572         * basic-simd.cs: Added tests for stressing the regalloc when running with
2573         16 simd regs and when simd and fp ops share the same reg bank.
2574
2575 2009-08-01  Mark Probst  <mark.probst@gmail.com>
2576
2577         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
2578         in shared generic code, we might have to look up the class in the
2579         RGCTX.  If we use the class directly, compute its GC descriptor.
2580
2581 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
2582
2583         * mini.c (mono_jit_runtime_invoke): Fix a warning.
2584
2585 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
2586
2587         * mini.c (mono_jit_runtime_invoke): Initialize the class and
2588         check for errors. Fixed the case when the class with the Main
2589         method is broken.
2590
2591 2009-07-31 Jerry Maine <crashfourit@gmail.com>
2592
2593         Contributed under the terms of the MIT/X11 license by
2594         Jerry Maine <crashfourit@gail.com>.
2595
2596         * cpu-amd64.md: Fixed simple bug in machine discrition file.
2597
2598 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
2599
2600         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
2601
2602 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
2603
2604         * method-to-ir.c: Fix naming of stelem and ldelem.
2605
2606 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
2607
2608         * driver.c (main_thread_handler): Check that the assembly loaded
2609         matches the filename when doing AOT.
2610
2611 2009-07-30  Mark Probst  <mark.probst@gmail.com>
2612
2613         * mini.c: get_ip_from_sigctx installer has been removed, so don't
2614         call it anymore.
2615
2616         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
2617         utils/mono-sigcontext.h).
2618
2619         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
2620         #ifdef.
2621
2622 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
2623
2624         * mini.c (mono_codegen):
2625         Call profiler hook to keep track of method code buffers.
2626
2627 2009-07-27  Mark Probst  <mark.probst@gmail.com>
2628
2629         * method-to-ir.c: Invoke write barriers for the
2630         Interlocked.(Compare)Exchange JIT intrinsics.
2631
2632 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
2633
2634         * Makefile.am (version.h): Fix issues when built out of tree.
2635         Remove some redundant 'grep's piped through 'sed's.
2636
2637 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
2638
2639         This patch is contributed under the terms of the MIT/X11 license
2640
2641         * mini-ppc.c (mono_arch_output_basic_block):
2642         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
2643         for bits 32-47 with signed load/store diplacements for bits
2644         48-63.  Use prefered base/offset order for indexed form.
2645         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
2646         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
2647         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
2648         OP_LOADI2_MEMBASE): Same.
2649         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
2650         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
2651         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
2652         indexed form.
2653         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
2654         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
2655         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
2656         OP_LOADI1_MEMINDEX): Same
2657         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
2658         OP_STORER8_MEMINDEX): Same
2659         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
2660         computations.
2661         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
2662         for bits 32-47 with signed load/store diplacements for bits
2663         48-63.  Use prefered base/offset order for indexed form.
2664
2665 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
2666
2667 This patch is contributed under the terms of the MIT/X11 license
2668
2669         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
2670         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
2671         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
2672         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
2673         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
2674         cfg->stack_usage to avoid size warnings.
2675         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
2676         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
2677         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
2678         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
2679         to convert.
2680         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
2681         after code varible is initialized.
2682         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
2683         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
2684         (mono_arch_emit_epilog): 
2685         Move Use ppc_load32 for cfg->stack_usage to avoid size
2686         warnings.
2687
2688 2009-07-24  Mark Probst  <mark.probst@gmail.com>
2689
2690         * method-to-ir.c: The write barrier doesn't do the store anymore,
2691         so we have always to emit it.  Also, emit the wbarrier after the
2692         store.
2693
2694 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
2695
2696         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
2697         for argument count 3 too.
2698
2699 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
2700
2701         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
2702         the caller handle the exceptions.
2703         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
2704         method. Fixes #524498.
2705
2706 2009-07-22  Geoff Norton  <gnorton@novell.com>
2707
2708         * mini-exceptions.c: Fix build on ia64.
2709
2710 2009-07-22  Mark Probst  <mark.probst@gmail.com>
2711
2712         * mini-exceptions.c (ves_icall_get_frame_info): Use write
2713         barriers.
2714
2715 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
2716
2717         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
2718         code.
2719
2720 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
2721
2722         * basic-simd.cs (Main): Pass args to the test driver.
2723
2724 2009-07-20  Geoff Norton  <gnorton@novell.com>
2725
2726         * mini-x86.h: Fix the x86 version guards to use Apple's
2727         properly defined macros.
2728
2729 2009-07-20  Geoff Norton  <gnorton@novell.com>
2730
2731         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
2732         aligned access.
2733
2734 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
2735
2736         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
2737         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
2738         the information which is needed for invokes, so only one locking+hash table
2739         lookup is needed.
2740
2741         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
2742         
2743         * aot-compiler.c (add_generic_instances): Emit instances of 
2744         GenericComparer<T> for primitive types.
2745
2746 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
2747
2748         * mini-posix.c: Fix linux build.
2749
2750 2009-07-19  Geoff Norton  <gnorton@novell.com>
2751
2752         * mini.h: Add prototypes for mono_runtime_syscall_fork and
2753         mono_gdb_render_native_backtraces
2754         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
2755         so we implement the sane semantics to the runtime here
2756         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
2757         so we need to call it differently (mono_gdb_render_native_backtraces)
2758         * mini-posix.c: Move the old semantics from mini.c to the prototypes
2759         here for default implementations.
2760         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
2761         support Apple's weird syscall (SYS_fork) implementation and not busy
2762         loop in abort() on native crashes on OSX anymore.
2763
2764 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
2765
2766         * aot-runtime.c (load_method): Change the handling of the
2767         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
2768         are used.
2769
2770         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
2771
2772 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
2773
2774         * mini.c (mono_patch_info_equal): Revert the last change for now as it
2775         seems to break the aot tests.
2776         
2777         * mini.c (mono_patch_info_equal): Fix the handling of 
2778         MONO_PATCH_INFO_RGCTX_FETCH.
2779
2780 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
2781
2782         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
2783
2784         * mini.c (mono_patch_info_hash): Fix the handling of 
2785         MONO_PATCH_INFO_INTERNAL_METHOD.
2786         (mono_patch_info_equal): Ditto.
2787
2788 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
2789
2790         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
2791         in a few places.
2792         
2793         * mini-llvm.c: Add some infrastructure for AOT support.
2794
2795 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
2796
2797         * mini-llvm-cpp.c: Update to the latest llvm api.
2798         
2799         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
2800         option to false to prevent llvm from installing signal handlers which
2801         trip up the gc.
2802         
2803 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
2804
2805         * cpu-x86.md:
2806         * cpu-amd64.md: Revert previous change as those instructions
2807         take 2 separate arguments. Remember to read the arch docs more
2808         carefully next time.
2809
2810 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
2811
2812         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
2813
2814 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
2815
2816         * mini-ppc.c: exploit multiple load/store units if available (rest of
2817         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
2818         http://bugzilla.novell.com/show_bug.cgi?id=487846).
2819
2820 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
2821
2822         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
2823         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
2824
2825 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
2826
2827         * cpu-x86.md: Fix missing clobbering from trancendental simd
2828         ops.
2829
2830         * cpu-amd64.md: Same.
2831
2832 2009-07-14 Jerry Maine <crashfourit@gmail.com>
2833
2834         Contributed under the terms of the MIT/X11 license by
2835         Jerry Maine <crashfourit@gail.com>.
2836
2837         * basic-simd.cs: Added tests for single and doulble indexers.
2838
2839         * cpu-amd64.md: Added simd opcode information.
2840
2841         * mini-amd64.c: Added IR to native simd generation code.
2842         Added simd register names and function that returns them.
2843
2844         * mini-amd64.h: Added marcos to turn on simd code compilation in
2845         amd64. Added max simd register count marco. Added caller/callee
2846         register mask marcos. Added marcos to use simd register bank.
2847
2848         * mini.h: Added helper marco for shufling dwords and simple
2849         floats.
2850
2851 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
2852
2853         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
2854
2855         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
2856
2857         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
2858         the length of the native code as well.
2859
2860         * basic-simd.cs: Add a test for #521662.
2861
2862 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
2863
2864         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
2865
2866 2009-07-13  Mark Probst  <mark.probst@gmail.com>
2867
2868         * mini.c: Register function for getting the IP from a signal
2869         context with metadata.
2870
2871 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
2872
2873         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
2874         call a generic class init trampoline if needed. Fixes #519336.
2875
2876         * generics.cs: Add a test.
2877         
2878 2009-07-09  Mark Probst  <mark.probst@gmail.com>
2879
2880         * method-to-ir.c: When doing a call which might be remote from
2881         shared generic code to other shared code with open type arguments,
2882         get the remoting invoke wrapper from the RGCTX and do an indirect
2883         call to it.
2884
2885 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
2886
2887         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
2888         after the unbox trampoline in the full-aot case.
2889
2890 2009-07-02  jonas echterhoff <jonas@unity3d.com>
2891         
2892         * mini.c: Move initialization of jit_mutex before debugger initialization
2893         
2894         to avoid crashes.
2895         
2896         
2897         * Info.plist: added Info.plist and link flag to enable the mono executable
2898         to access other processes. Requires codesigning of the executable to work.
2899         
2900         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
2901         
2902         compile on OS X.
2903         
2904
2905 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
2906
2907         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
2908
2909 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
2910
2911         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
2912         when the generic instance is an instantiation of a subclass of the
2913         methods class. Fixes #517166.
2914
2915 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
2916
2917         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
2918         code.
2919
2920         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
2921         AOTed code.
2922
2923         * CMakeLists.txt: Add minimal support for installation.
2924
2925 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
2926
2927         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
2928         determine whenever a method is directly callable to a separate function.
2929
2930         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
2931         needed ones as a result of the previous change.
2932
2933         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
2934         type of register arrays.
2935
2936         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
2937         type of register arrays.
2938
2939 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
2940         
2941         Contributed under the terms of the MIT/X11 license by
2942         Jerry Maine <crashfourit@gail.com>.
2943
2944         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
2945
2946 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
2947
2948         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
2949
2950 2009-06-24  Neale Ferguson <neale@sinenomine.net>
2951
2952         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
2953         dump of structure return value. Fix some formatting.
2954         * cpu-s390x.md: Fix lengths of instruction sequences.
2955         * mini-s390.c: Minor formatting changes.
2956
2957 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
2958
2959         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
2960         Use sigaction on freebsd as well.
2961
2962 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
2963
2964         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
2965         uses #ifdef on it.
2966         
2967         * mini.c (mini_init): Revert a change which breaks cross-compilation.
2968
2969 2009-06-22  Mark Probst  <mark.probst@gmail.com>
2970
2971         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
2972
2973 2009-06-22  Mark Probst  <mark.probst@gmail.com>
2974
2975         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
2976
2977 2009-06-20  Martin Baulig  <martin@ximian.com>
2978
2979         * debug-mini.c
2980         (MonoDebuggerThreadFlags): New enum typedef.
2981         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
2982         (mono_debugger_thread_created): Added `gpointer func' argument;
2983         initialize the new `thread_flags' field.
2984
2985 2009-06-18  Martin Baulig  <martin@ximian.com>
2986
2987         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
2988         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
2989
2990         * debug-debugger.c
2991         (mini_debugger_set_attach_ok): New function; sets the attach-ok
2992         flag in `MONO_DEBUGGER__info.runtime_info'.
2993
2994         * driver.c
2995         (mono_main): Call mini_debugger_set_attach_ok() if generics
2996         sharing is disabled.
2997
2998 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
2999
3000         * aot-compiler.c (add_wrappers): Fix a warning.
3001
3002         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
3003         the ppc load/store macro changes.
3004
3005 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
3006
3007         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
3008
3009         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
3010         not just the got symbol.
3011
3012         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
3013         on ppc.
3014
3015         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
3016         ppc.
3017         
3018         * aot-compiler.c: Remove some fixmes.
3019
3020         * driver.c (mono_main): Print a helpful message when cross-compiling.
3021
3022         * mini.c (mini_init): Disable signal handlers when cross-compiling.
3023
3024         * method-to-ir.c (initialize_array_data): Do the optimization if the
3025         target byte order is little endian, instead of the host byte order.
3026
3027         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
3028         wrappers into the mscorlib image, Emit a unique plt symbol for each
3029         image, emit symbols for plt entries.
3030
3031         * image-writer.c (img_writer_emit_symbol_size): New function to emit
3032         a .size directive.
3033         
3034 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
3035
3036         * aot-compiler.c (add_wrappers): Avoid calling 
3037         mono_marshal_get_type_info () since it can assert for some types.
3038
3039         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
3040         ldtoken are used inside wrappers.
3041
3042         * helpers.c: Add support for prefixing tools with the arch name.
3043
3044         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
3045         quantities when using ilp32.
3046
3047         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
3048         spill slots. Use sizeof(mgreg_t) for the spill slot size.
3049
3050         * image-writer.c: Use .long on ilp32.
3051
3052         * aot-compiler.c: Use 32 bit loads on ilp32.
3053         
3054 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
3055
3056         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
3057
3058         * mini-ops.h: Use TARGET_POWERPC define for consistency.
3059
3060         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
3061
3062         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
3063         second got slot of every aot image.
3064         
3065         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
3066         aot on platforms with function pointers.
3067
3068         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
3069         support for aot/full aot on ppc/ppc64.
3070         
3071         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
3072         arguments which are needed on ppc.
3073
3074         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
3075         argument.
3076
3077         * mini-trampolines.c aot-runtime.c: Update after the above changes.
3078         
3079         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
3080
3081         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
3082
3083         * aot-compiler.c (emit_got_info): Fix reading unused memory.
3084
3085         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
3086
3087 2009-06-17  Geoff Norton  <gnorton@novell.com>
3088
3089         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
3090
3091 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
3092
3093         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
3094         to control whenever the dwarf writer is in xdebug or aot mode.
3095         (emit_class_dwarf_info): Use a separate abbrev for structures without
3096         children.
3097
3098         * aot-compiler.c: Pass the appending parameter to 
3099         mono_dwarf_writer_create ().
3100
3101         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
3102         falls through to its next bblock. Fixes #513931.
3103
3104         * iltests.il: Add a test.
3105
3106         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
3107         infor even if emit_line is FALSE, as the apple linker seems to require it.
3108
3109         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
3110
3111         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
3112         gcc does.
3113         (emit_fde): Ditto.
3114
3115 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
3116
3117         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
3118         mips build.
3119
3120 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
3121
3122         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
3123         'has_call_handler' fields.
3124
3125         * method-to-ir.c (mono_method_to_ir): Set them if needed.
3126
3127         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
3128         first bblock if not needed. Fixes #512790.
3129         
3130 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
3131
3132         * aot-compiler.c (mono_compile_assembly): Fix a warning.
3133         
3134         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
3135         wrappers.
3136
3137         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
3138         remoting-invoke-with-check wrappers, which are not needed when running with
3139         full-aot, since it doesn't support remoting.
3140         
3141 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
3142
3143         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
3144
3145         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
3146         method info, it is not used anymore.
3147
3148         * mini.h: Bump AOT file format version.
3149         
3150         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
3151         word smaller.
3152
3153         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
3154         change above.
3155         
3156         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
3157
3158         * mini.h: Bump AOT file format version.
3159         
3160 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
3161
3162         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
3163         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
3164         iphone.
3165
3166         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
3167         of CKFINITE and FBGE for VFP.
3168
3169 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
3170
3171         * aot-compiler.c: Don't align code to 16 bytes on arm.
3172         
3173         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
3174         before the methods they belong to.
3175
3176         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
3177         the full-aot case if possible, since the trampoline will be called right 
3178         away.
3179
3180         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
3181         trampolines to 1024 after the change above.
3182
3183         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
3184         trampoline to save 8 bytes per trampoline.
3185
3186         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
3187         change above.
3188
3189 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
3190
3191         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
3192
3193 2009-06-08  Martin Baulig  <martin@ximian.com>
3194
3195         * debug-mini.c
3196         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
3197         (_mono_debugger_throw_exception): Don't make this static.
3198         (_mono_debugger_unhandled_exception): Likewise.
3199         (mono_debugger_handle_exception): Moved to mini-exceptions.c
3200
3201         * debug-mini.c
3202         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
3203         (_mono_debugger_throw_exception): Add function prototype.
3204         (_mono_debugger_unhandled_exception): Likewise.
3205
3206         * mini-exceptions.c
3207         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
3208         arg; return the first exception handler if the exception is caught
3209         and we're running inside the debugger.
3210         (mono_debugger_handle_exception): Moved here from debug-mini.c;
3211         improve exception handle inside runtime-invoke, check whether the
3212         exception is actually caught in the method being invoked and not
3213         by the runtime-invoke-wrapper.
3214
3215 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
3216
3217         * image-writer.c: Improve support for the osx assembler.
3218
3219         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
3220         support them.
3221
3222 2009-06-08  Martin Baulig  <martin@ximian.com>
3223
3224         * debug-mini.c
3225         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
3226         (_mono_debugger_throw_exception): Don't make this static.
3227         (_mono_debugger_unhandled_exception): Likewise.
3228         (mono_debugger_handle_exception): Moved to mini-exceptions.c
3229
3230         * debug-mini.c
3231         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
3232         (_mono_debugger_throw_exception): Add function prototype.
3233         (_mono_debugger_unhandled_exception): Likewise.
3234
3235         * mini-exceptions.c
3236         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
3237         arg; return the first exception handler if the exception is caught
3238         and we're running inside the debugger.
3239         (mono_debugger_handle_exception): Moved here from debug-mini.c;
3240         improve exception handle inside runtime-invoke, check whether the
3241         exception is actually caught in the method being invoked and not
3242         by the runtime-invoke-wrapper.
3243
3244 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
3245
3246         * image-writer.c (append_subsection): Don't align subsections of the
3247         debug_line section as a workaround.
3248
3249         * dwarfwriter.c: Emit line number info in the AOT case as well.
3250
3251 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
3252
3253         This patch is contributed under the terms of the MIT/X11 license
3254
3255        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
3256        code_len <= code_size
3257
3258 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
3259
3260         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
3261
3262 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
3263
3264         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
3265         invoke wrappers, we now use trampolines instead.
3266
3267 2009-06-04  Mark Probst  <mark.probst@gmail.com>
3268
3269         * mini-darwin.c: The exception thread must not be registered with
3270         the GC.
3271
3272 2009-06-04  Mark Probst  <mark.probst@gmail.com>
3273
3274         * mini-gc.c: Disable the code because it makes SGen crash.
3275
3276 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
3277
3278         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
3279         instead of asserting.
3280
3281 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
3282
3283         * aot-compiler.c (mono_compile_assembly): Move the creation of the
3284         output file after the code has been compiled.
3285
3286 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
3287
3288         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
3289
3290 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
3291
3292         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
3293         entries distinction to simplify the code.
3294
3295         * mini.h: Bump AOT file format version.
3296         
3297 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
3298
3299         * objects.cs: Fix the signature of one of the tests.
3300
3301         * mini.c (mini_create_ftnptr): New helper function, moved here from
3302         object.c.
3303         (mini_get_addr_from_ftnptr): Ditto.
3304         (mini_init): Install the new helpers.
3305
3306 2009-05-28  Martin Baulig  <martin@ximian.com>
3307
3308         Correctly initialize the debugger when embedding Mono.
3309
3310         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
3311         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
3312         see documentation in mini_debug_running_inside_mdb().
3313
3314         * debug-debugger.c
3315         (mini_debug_running_inside_mdb): New function to check whether
3316         we're running inside mdb.
3317
3318         * mini.c (mini_init): Call mini_debugger_init() if we're running
3319         inside the debugger.
3320
3321         * driver.c (mono_main): Moved the call to mini_debugger_init()
3322         into mini_init() to make this work when embedding Mono.
3323
3324         * debug-debugger.c (mini_debugger_init): Warn about duplicate
3325         calls to mini_debugger_init().
3326
3327         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
3328         mono_debugger_main() -> mini_debugger_main() and put them inside a
3329         `MONO_DEBUGGER_SUPPORTED' conditional.
3330
3331 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
3332
3333         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
3334         this is no longer in use.
3335         * mini.h: Same.
3336
3337 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
3338
3339         * mini-sparc.c (add_outarg_load): Fix the sparc build.
3340
3341         * aot-compiler.c (emit_method_code): Always write out C style symbols for
3342         methods.
3343
3344 2009-05-27  Martin Baulig  <martin@ximian.com>
3345
3346 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3347
3348         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
3349         long_conv_to_r_un to 64 bits.
3350
3351         * cpu-x86.md: Increase the instruction size due to the changes.
3352
3353         * iltests.il.in: Add regression test.
3354
3355         Fixes #467201.
3356
3357 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3358
3359         * objects.cs: Move the previous test from basic.cs to here.
3360
3361 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3362
3363         * basic.cs: Add regression test for #506915.
3364
3365 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3366
3367         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
3368         optimization we must check the bb of the first byte of stobj as
3369         it's the only one set in cil_offset_to_bb.
3370
3371         Fixes #506915.  
3372
3373 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
3374
3375         * image-writer.c: Fix pointer directive on ppc64.
3376
3377 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
3378
3379         * image-writer.c (asm_writer_emit_section_change): Avoid using
3380         .bss subsections on ppc too.
3381
3382 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
3383
3384         * image-writer.c: Fix the definition of TARGET_ASM_....
3385         
3386         * image-writer.c: Fix the emission of assembler directives in the last
3387         change.
3388
3389         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
3390         exception throwing code to accomodate ppc64.
3391
3392         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
3393         size to work on ppc64 too.
3394
3395         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
3396         too.
3397
3398         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
3399         the assembler dialect instead of using platform specific defines.
3400
3401 2009-05-22  Geoff Norton  <gnorton@novell.com>
3402
3403         * mini-arm.c (get_call_info): If a structure is split between the stack
3404         and argument registers, we should not advance the stack pointer by the entire
3405         native size, but just by the amount that spilled.
3406
3407 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
3408
3409         * mini-arm.c (get_call_info): Handle structures with alignment requirements
3410         correctly.
3411
3412 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
3413
3414         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
3415         wrappers normally.
3416         
3417         * aot-compiler.c (add_extra_method): Fix up the collection of extra
3418         methods so wrapper don't get added twice.
3419         (add_generic_instances): Don't add methods of arrays.
3420
3421         * generics.cs: Mark one test as !FULLAOT.
3422
3423 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
3424
3425         * mini-x86.c (emit_move_return_value): Remove unused vars.
3426
3427 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
3428
3429         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
3430         decomposing 8 bytes structs into a LCALL.
3431
3432         * mini-x86.c (emit_move_return_value): We no longer push the vtype
3433         pointer for where to store the returned regs.
3434
3435         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
3436         state the concern.
3437
3438         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
3439
3440 2009-05-20  Miguel de Icaza  <miguel@novell.com>
3441
3442         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
3443         without getenv.
3444
3445 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
3446
3447         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
3448
3449         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
3450         generics.
3451
3452 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
3453
3454         * local-propagation.c (mono_local_cprop): Avoid local propagation
3455         across paired add/sub if the first instruction dest reg is it's
3456         source reg. For example:
3457
3458         int_add_imm R12 <- R12 [1] clobbers: 1
3459         int_sub_imm R42 <- R12 [1] clobbers: 1
3460
3461         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
3462         maintain the math identify.
3463
3464         Fixes #505375.
3465
3466 2009-05-20  Andreia Gaita  <avidigal@novell.com>
3467
3468         * Makefile.am: avoid going on the network just to get the revision,
3469         use git log instead
3470
3471 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
3472
3473         Fixed estimate for short branches on amd64 (they were off mark, and
3474         enabling call prolog-epilog instrumentations caused assertions).
3475         * mini.h (struct MonoBasicBlock): added max_length field to hold the
3476         estimate for the maximum length of this basic block.
3477         * mini-amd64.c:
3478         - mono_arch_emit_prolog: compute max_length for each basic block
3479           (instead of max_offset), and inflate size estimate also for entry bb
3480           in case of code instrumentation.
3481         - mono_arch_output_basic_block: get rid of "cpos" (the current
3482           estimated "position" in the code), and always use "offset" instead,
3483           which is accurate; at the beginning of the function quickly recompute
3484           max_offset for all the remaining blocks, starting from the current
3485           cfg->code_len (which is correct, and not estimated) and using the
3486           estimated block lengths computed previously.
3487
3488 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
3489
3490         * exceptions-ppc.c: Remove the caching from the trampoline creation 
3491         functions, it is already done in the caller.
3492
3493         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
3494
3495         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
3496         MONO_ARCH_GSHARED_SUPPORTED define.
3497
3498         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
3499
3500         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
3501         function.
3502
3503 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
3504
3505         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
3506         call to mono_marshal_get_rgctx_invoke ().
3507
3508         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
3509         mono_marshal_get_static_rgctx_invoke (), all platforms which support
3510         gshared use the static rgctx trampolines now.
3511         
3512         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
3513         platform supports it.
3514
3515 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3516
3517         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
3518
3519         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
3520
3521 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3522
3523         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
3524
3525         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
3526         for ppc.
3527
3528 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
3529
3530         Made it possible for mono_arch_instrument_epilog to preserve
3531         argument registers, otherwise instrumenting the "epilogue" before
3532         a tail call would clobber them.
3533         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
3534         if like mono_arch_instrument_epilog but with an additional parameter
3535         that states if argument registers must be preserved.
3536         * mini.c: implemented mono_arch_instrument_epilog as a call to
3537         mono_arch_instrument_epilog_full without asking to preserve argument
3538         registers (this makes the existing code work as usual).
3539         * mini-amd64.c:
3540         - mono_arch_instrument_epilog: add parameter to transform it into
3541         mono_arch_instrument_epilog_full, and preserve argument registers
3542         when required.
3543         - mono_arch_output_basic_block, OP_TAILCALL case: call
3544         mono_arch_instrument_epilog_full.
3545         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
3546         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
3547         only transformed mono_arch_instrument_epilog into
3548         mono_arch_instrument_epilog_full.
3549
3550 2009-05-15  Geoff Norton  <gnorton@novell.com>
3551
3552         * mini-darwin.c: This works on arm now.
3553
3554 2009-05-14  Geoff Norton  <gnorton@novell.com>
3555
3556         * jit.h, driver.c: Allow full-aot to be decided programatically by the
3557         embedding api.
3558
3559 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3560
3561         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
3562         label names.
3563
3564         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
3565         wrappers during full aot mode correctly.
3566
3567         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
3568         methods correctly.
3569
3570         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
3571         mono_metadata_type_hash ().
3572
3573 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
3574
3575         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
3576         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
3577         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
3578         Removed MONO_INST_BRLABEL from the instruction flags, and the
3579         remaining code that used it, because we do not support branches inside
3580         basic blocks (and branch target labels) anymore.
3581         * Makefile.am: As part of the above cleanup, remove reference to
3582         BURG files which don't exist anymore.
3583
3584 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
3585
3586         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
3587         osx.
3588
3589         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
3590         to use mono_arch_throw_corlib_exception.
3591
3592         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
3593         mono_arch_throw_corlib_exception for throwing corlib exceptions.
3594
3595         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
3596         domain mempool.
3597
3598         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
3599
3600         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
3601         for the got to make debugging easier and to avoid confusing it with the
3602         system got.
3603         
3604         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
3605         method so a breakpoint can be set when using gdb.
3606
3607 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
3608
3609         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
3610         on mono_method_get_imt_slot ().
3611
3612         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
3613         num_decodes variables.
3614
3615         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
3616         change as it doesn't seem to work.
3617         
3618         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
3619         wrappers.
3620
3621 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
3622
3623         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
3624         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
3625
3626         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
3627         builder when using full aot.
3628
3629         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
3630         here, it is already handled.
3631         
3632         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
3633         correctly for IMT.
3634
3635         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
3636
3637         * mini-arm.h: Enable IMT for full aot.
3638         
3639         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
3640         arch doesn't support it.
3641
3642         * mini.c (mini_init): Don't disable IMT for full aot if the
3643         architecture supports it.
3644
3645         * mini.h (MonoAotTrampoline): New enum containing the different types
3646         of 'numerous' trampolines.
3647         (MONO_AOT_FILE_VERSION): Bump this.
3648
3649         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
3650         static rgctx trampolines. Add support for full-aot IMT thunks.
3651
3652         * mini-amd64.h: Enable IMT for full aot.
3653
3654         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
3655         to exclude tests belonging to a category.
3656
3657         * generics.cs: Mark some tests with a !FULLAOT category.
3658
3659         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
3660         generics tests.
3661
3662 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
3663
3664         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
3665         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
3666         (emit_plt): Fix a warning.
3667
3668 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
3669
3670         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
3671         back into aot-compiler.c to a place where the other functions shared by
3672         the runtime and aot compiler are.
3673         
3674         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
3675         as done previously, instead of in MonoAotFileInfo, since pointers might have
3676         alignment requirements.
3677
3678         * mini.h: Bump AOT file format version.
3679
3680 2009-05-10  Miguel de Icaza  <miguel@novell.com>
3681
3682         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
3683         that is used at runtime from the aot-compiler.c, this makes it
3684         work on setups that remove the AOT compiler from the output
3685         image. 
3686
3687 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
3688
3689         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
3690         PPC.
3691
3692         * mini-ppc.h: Enable static rgctx trampolines for ppc.
3693
3694         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
3695
3696         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
3697         stuff to mono_arch_decompose_long_opts ().
3698         (mono_decompose_opcode): Remove some dead code.
3699
3700 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
3701
3702         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
3703         cmethod can be null for quite a some reasons.
3704
3705 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
3706
3707         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
3708
3709 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
3710
3711         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
3712
3713 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
3714
3715         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
3716         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
3717         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
3718         calls returning structures by addr on amd64.
3719
3720         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
3721
3722         * iltests.il.in: Restructure the tail call tests a bit.
3723         
3724 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
3725
3726         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
3727         for virtual methods too.
3728
3729 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
3730
3731         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
3732         due to regression in verifying System.dll.
3733
3734 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
3735
3736         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
3737         in dynamic methods.
3738
3739         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
3740         instances.
3741
3742         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
3743         g_str_hash () which can change.
3744
3745         * driver.c (mini_regression): Disable optimizations not supported by
3746         the cpu. Fixes #500019.
3747
3748         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
3749         build.
3750
3751 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
3752
3753         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
3754         to the latest LLVM code.
3755
3756 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
3757
3758         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
3759
3760 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
3761
3762         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
3763         x86/amd64.
3764
3765         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
3766         no longer saving offsets, so just save the patch types along with the other
3767         info.
3768         * aot-runtime.c (load_patch_info): Update after the changes to 
3769         encode_patch_list ().
3770         (decode_got_entry): Removed, merged into load_patch_info ().
3771         (is_shared_got_patch): Removed, call the same function from
3772         aot-compiler.c.
3773
3774         * mini.h: Bump aot file format version.
3775         
3776         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
3777         half-finished no-dlsym code.
3778
3779         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
3780         option.
3781
3782         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
3783         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
3784
3785 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
3786
3787         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
3788         buffer length to work with AOT code.
3789
3790         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
3791         ldfld/stfld opcodes.
3792
3793         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
3794         as it is not used.
3795
3796         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
3797
3798         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
3799
3800         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
3801         LLVM API.
3802
3803         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
3804         if needed. Don't decompose long operations when using llvm.
3805
3806 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
3807
3808         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
3809         PAGESIZE constant.
3810
3811         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
3812
3813 2009-05-03  Martin Baulig  <martin@ximian.com>
3814
3815         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
3816         mono_debugger_insert_method_breakpoint() since the class init
3817         handler we're inserting at the top of the method already gives us
3818         a notification.
3819
3820 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
3821
3822         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
3823         to mono_arch_decompose_long_opts () for x86 and arm.
3824
3825 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
3826
3827         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
3828         TARGET_AMD64 here.
3829
3830 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
3831
3832         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
3833         JIT code.
3834
3835 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
3836
3837         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
3838         number of trampolines used in full-aot mode.
3839
3840         * aot-compiler.c: Add an ntrampolines option to set the number of 
3841         trampolines emitted in full-aot mode.
3842
3843 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
3844
3845         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
3846         a volatile load. Get rid of get_tempname (), llvm assigns names
3847         automatically.
3848
3849         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
3850         builder function.
3851
3852         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
3853         a value.
3854
3855         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
3856         level 1.
3857
3858         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
3859         to the same register as a fixed sreg2. Fixes #497271.
3860
3861         * iltests.il.in: Add a new test.
3862
3863 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
3864
3865         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
3866         stack, since pushes complicate exception handling.
3867
3868         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
3869         the stack if they are passed using moves.
3870
3871         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3872
3873         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
3874         when using llvm.
3875
3876         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
3877         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
3878         of FMOVE if it is an R4.
3879
3880 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
3881
3882         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
3883
3884         * mini.h (LLVMCallInfo): New structure to store calling convention 
3885         information for the LLVM back end similar to the CallInfo structures in 
3886         the back-ends.
3887
3888         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
3889         call information in a format usable by LLVM.
3890         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
3891
3892         * method-to-ir.c (mono_emit_call_args): Emit calls using 
3893         mono_llvm_emit_call () when compiling using LLVM.
3894
3895         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
3896         comments to all functions. Fix memory leaks. Add a public init/cleanup
3897         function.
3898
3899         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
3900
3901         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
3902         mono_array_new_va () jit icall.
3903         
3904 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
3905
3906         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
3907         multiple machine description files to be specified.
3908         * mini-ops.h: fixes for cross-compilation.
3909
3910 2009-04-22  Miguel de Icaza  <miguel@novell.com>
3911
3912         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
3913         some porting work.
3914
3915 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
3916
3917         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
3918         to prevent asserts in various passes. Fixes #497220.
3919
3920 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
3921
3922         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
3923         a racy assert.
3924
3925         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
3926         table to avoid duplicates.
3927
3928         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3929         
3930         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
3931         option is used.
3932
3933 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
3934
3935         * mini.c (mini_method_verify): Fail fulltrust code if the exception
3936         is for method or field access.
3937
3938 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
3939
3940         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
3941         a Value to stdout.
3942
3943         * mini-llvm.c (mono_llvm_emit_method): Use it.
3944         
3945         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
3946         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
3947         on volatile values.
3948
3949         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
3950         synchronized methods.
3951
3952         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
3953
3954         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
3955
3956         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
3957         OP_LOADI8_MEM.
3958
3959         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
3960         allowing some options to be set dynamically.
3961
3962 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
3963
3964         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
3965         unconditional branch.
3966
3967         * mini.h (MonoTrampolineType): Add new trampoline type 
3968         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
3969         compiled code.
3970
3971         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
3972         function.
3973
3974         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
3975         creation function.
3976
3977         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
3978         is enabled. Instead, use the llvm vcall trampoline.
3979         
3980         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
3981
3982         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
3983         
3984         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
3985         functions.
3986
3987         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
3988         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
3989
3990         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
3991         OP_IA64_CSET opcode.
3992
3993         * mini.c: Fix a warning.
3994
3995         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
3996         THROW to the appropriate llvm type.
3997
3998 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
3999
4000         * mini.c (mini_method_compile): Add statistics for methods JITted
4001         with/without LLVM.
4002
4003 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4004
4005         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
4006         OP_IA64_CMP_<cond>_IMM opcodes.
4007
4008 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4009
4010         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
4011         corlib exceptions.
4012
4013         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
4014         correctly.
4015
4016         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
4017         GENERICINST.
4018
4019 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
4020
4021         * mini-exceptions.c : add thread id to EXCEPTION trace message.
4022
4023 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4024
4025         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
4026         support.
4027
4028         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
4029         rgctx invoke trampolines for x86.
4030
4031         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
4032         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
4033         (mono_arch_get_vcall_slot): Simplify this.
4034
4035 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
4036
4037         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
4038         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
4039
4040 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
4041
4042         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
4043         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
4044
4045         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
4046
4047         * liveness.c (visit_bb): Remove a needless assert.
4048
4049 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
4050
4051         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
4052         full aot support to the arch specific code.
4053
4054         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
4055
4056         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
4057
4058         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
4059         
4060         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
4061         collect information about the delegate invoke impl trampolines.
4062
4063         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
4064         to save trampolines during full-aot mode.
4065
4066         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
4067         creation function which returns a trampoline which sets the rgctx
4068         argument.
4069         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
4070         wrapper if possible.
4071         (mono_delegate_trampoline): Ditto.
4072
4073         * mini.c (mono_jit_runtime_invoke): Ditto.
4074
4075         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
4076         
4077         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
4078
4079         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4080         
4081 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
4082
4083         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
4084         just setting the opcode to OP_NOP.
4085
4086 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
4087
4088         * mini.c (mini_method_compile): Put the last change inside an 
4089         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
4090         
4091         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
4092         and extend live ranges to cover the whole method when using xdb.
4093
4094         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
4095         do it in the trampolines.
4096
4097         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
4098         needed.
4099
4100         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
4101         
4102         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
4103         call code in full-aot mode since IMT is disabled there.
4104         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
4105         new JIT no longer has that restriction.
4106
4107         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4108
4109         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
4110         a more compact format.
4111         (mono_aot_wrapper_name): New function to return a unique name for a
4112         wrapper method, also used by the AOT runtime.
4113
4114         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
4115         aot-compiler.c.
4116
4117         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
4118         when a ICollection<T> etc is encountered.
4119         (add_generic_instances): Process method arguments/locals too.
4120         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
4121         trampoline names.
4122
4123         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
4124         
4125 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
4126
4127         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
4128
4129         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
4130
4131         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
4132         representing the result of the decomposition. Nullify instructions
4133         instead of setting them to OP_NOP since nops can't have registers
4134         set.
4135
4136 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
4137
4138         * aot-compiler.c (mono_compile_assembly): Split this huge function into
4139         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
4140         info. Strip 'mapping symbols' on ARM.
4141
4142         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
4143         
4144         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
4145         this with the native genmdesc.
4146
4147 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
4148
4149         * aot-runtime.c:  Fixing the MSVC build.
4150
4151         Code is contributed under MIT/X11 license.
4152
4153 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
4154
4155         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
4156         JITted code depends on it.
4157
4158 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
4159
4160         * aot-compiler.c: Use new MonoGenericParam accessors.
4161
4162 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
4163
4164         Reduce memory usage and improve correctness wrt MonoGenericParam
4165         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
4166         handing.  Avoid allocating MonoGenericParams, but use the ones in
4167         the container itself.
4168
4169 2009-04-07  Miguel de Icaza  <miguel@novell.com>
4170
4171         * tasklets.c: Return exceptions in the out argument.
4172
4173 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
4174
4175         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
4176         opcode. Use pointer types in more places instead of casting them to 
4177         integers.
4178
4179         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
4180         optimizations.
4181         (mono_llvm_optimize_method): New helper function to optimize a method.
4182
4183         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
4184         widening code so it could be called from more places.
4185         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
4186         code paths in the call opcodes.
4187
4188 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
4189
4190         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
4191
4192 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
4193
4194         * dwarfwriter.c: Use _ to separate class name 
4195         components as gdb can't handle '.'. Represent reference variables
4196         as 'class <NAME>&'.
4197         
4198         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
4199
4200         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
4201         
4202         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
4203
4204         * gc-test.cs: New file with GC stack marking tests.
4205         
4206         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
4207         negative numbers for vfp.
4208
4209         * basic-float.cs: Add a test.
4210         
4211 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
4212
4213         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
4214
4215 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
4216
4217         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
4218         part of tasklet/continuation support.
4219
4220 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
4221
4222         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
4223         amd64 opcodes inside an ifdef.
4224
4225         * dwarfwriter.c: Emit inheritance information for classes, emit fields
4226         of complex types.
4227         
4228         * dwarfwriter.c (emit_type): Emit the class info for classes.
4229
4230 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
4231
4232         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
4233
4234         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
4235
4236         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
4237
4238         * ssa.c (mono_ssa_compute): Fix some memory leaks.
4239
4240 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
4241
4242         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
4243
4244         * mini-llvm.c: Update comments.
4245
4246         * mini.h (COMPILE_LLVM): New macro.
4247
4248         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
4249
4250         * ssa.c (mono_ssa_compute): Ditto.
4251         
4252         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
4253         the unwind ops from a DWARF FDE.
4254
4255         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
4256         methods by extracting the dwarf unwind ops from the unwind info generated
4257         by LLVM.
4258         
4259         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
4260         calls.
4261
4262         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
4263         addressing modes.
4264
4265 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
4266
4267         * Makefile.am (llvm_sources): Enable this.
4268
4269         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
4270         failing back to the JIT if something cannot be handled.
4271
4272         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
4273         compiling with LLVM.
4274
4275         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
4276         compiling with LLVM.
4277
4278         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
4279         compiling with LLVM.
4280
4281         * mini-ops.h: Add a few opcodes needed by LLVM.
4282
4283         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
4284         has no unwind info.
4285
4286         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
4287         backend.
4288
4289         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
4290
4291         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
4292
4293 2009-04-01  Mark Probst  <mark.probst@gmail.com>
4294
4295         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
4296         ridiculously large methods.
4297
4298 2009-03-31  Martin Baulig  <martin@ximian.com>
4299
4300         * debug-debugger.c (debugger_remove_breakpoint): Call
4301         mono_debugger_remove_class_init_callback ().
4302
4303 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
4304
4305         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
4306         right before emitting code, not at the start.
4307
4308         * mini.c (mono_postprocess_patches): Extract this into a separate function
4309         from mono_codegen ().
4310
4311         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
4312         byref types correctly.
4313
4314 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
4315
4316         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
4317         by the last change.
4318
4319 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
4320
4321         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
4322         indirect calls, this avoids problems where get_vcall_slot () would get
4323         confused by the native code for the instruction preceeding the call.
4324         (mono_arch_get_vcall_slot): Simplify this.
4325         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
4326
4327         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
4328         register allocator now seems to depend on them instead of the data in
4329         cpu-<ARCH>.md.
4330
4331         * mini.c (mini_method_compile): Throw the correct type of exception if
4332         mono_method_get_header () fails because of a loading error.
4333
4334 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
4335
4336         * mini.c (mini_method_compile): Clear the loader error if the method
4337         header cannot be decoded.
4338
4339         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
4340         interface methods on proxies correctly.
4341
4342         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
4343         this argument for vtype methods. Add precise liveness info for arguments.
4344
4345         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
4346         LIVERANGE_START/END opcodes.
4347
4348         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
4349         for arguments and values in registers.
4350
4351 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
4352
4353         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
4354         return a valuetype. Fixes #487518.
4355
4356         * iltests.il: Add a test.
4357         
4358         * aot-compiler.c: Use mono_thread_create () to create helper threads.
4359
4360         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
4361         closed over a null reference correctly.
4362
4363 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
4364
4365         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
4366
4367 2009-03-25  Mark Probst  <mark.probst@gmail.com>
4368
4369         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
4370         allocated to the same registers as fixed sregs.
4371
4372 2009-03-24  Mark Probst  <mark.probst@gmail.com>
4373
4374         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
4375         ATOMIC_CAS_IMM ops.
4376
4377         * method-to-ir.c: Handle more cases for
4378         Interlocked.CompareExchange.
4379
4380         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
4381         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
4382         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
4383
4384 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
4385
4386         * aot-runtime.c (decode_method_ref): Fix a warning.
4387
4388         * unwind.c (mono_unwind_frame): Ditto.  
4389
4390 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4391
4392         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
4393         (mono_compile_assembly): Enable the binary writer for full-aot as well.
4394
4395         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
4396         fix the handling of large values in the ALU_PC_G0_NC relocation.
4397
4398 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4399
4400         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
4401
4402 2009-03-22  Mark Probst  <mark.probst@gmail.com>
4403
4404         * method-to-ir.c (mono_spill_global_vars): Support for ternary
4405         ops.
4406
4407 2009-03-22  Mark Probst  <mark.probst@gmail.com>
4408
4409         * method-to-ir.c: MINI_OP3 needs a comma.
4410
4411         * method-to-ir.c, mini.h, mini.c: Remove
4412         mono_init_op_sreg_counts ().
4413
4414 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4415
4416         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
4417         OP_JMP.
4418         
4419         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
4420         assertion.
4421
4422         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
4423
4424         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
4425         code somewhat.
4426
4427 2009-03-21  Mark Probst  <mark.probst@gmail.com>
4428
4429         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
4430         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
4431         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
4432         operations.
4433
4434 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
4435
4436         * driver.c: Change location of gc_wrapper.h.
4437
4438         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
4439         inside finally clauses correctly. Fixes #485721.
4440
4441         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
4442         after the change above.
4443
4444         * exceptions.cs: Add a test.
4445         
4446 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
4447
4448         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
4449
4450         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
4451         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
4452         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
4453
4454         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
4455         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
4456
4457 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
4458
4459         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
4460         Simplify logic for ensure_method_is_allowed_to_call_method. 
4461         Handle wrappers on callers.
4462
4463 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
4464
4465         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
4466         them don't run yet.
4467
4468         * basic-simd.cs: Fix the names of some test methods.
4469
4470 2009-03-18  Geoff Norton  <gnorton@novell.com>
4471
4472         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
4473
4474 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
4475
4476         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
4477
4478 2009-03-17  Jb Evain  <jbevain@novell.com>
4479
4480         * driver.c: remove now uneeded call to mono_gc_base_init before
4481         mono_profiler_load.
4482
4483 2009-03-17  Jb Evain  <jbevain@novell.com>
4484
4485         * dwarfwriter.c (token_handler): handle more cases.
4486
4487 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
4488
4489         * method-to-ir.c: Remove more dead code (that was required only
4490         because of method_is_safe). Fix compiler warnings.
4491
4492 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
4493
4494         * method-to-ir.c: Remove unneeded/useless method_is_safe
4495         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
4496
4497 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
4498
4499         * mini.c (mini_method_compile): Print the method been compiled with
4500         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
4501         for people not familiar with the runtime.
4502
4503 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
4504
4505         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
4506         a managed object which is later put into a GList. Return its class instead.
4507
4508         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
4509         stack slots when using sgen.
4510
4511 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
4512
4513         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
4514
4515 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
4516
4517         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
4518         > so it works on the first vreg as well.
4519
4520 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
4521
4522         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
4523         trigger randomly.
4524
4525         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
4526         
4527         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
4528         implement GArray.
4529
4530 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
4531
4532         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
4533         native->IL offset mapping.
4534
4535 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
4536
4537         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
4538
4539         * basic.cs: Add a test.
4540
4541 2009-03-11  Mark Probst  <mark.probst@gmail.com>
4542
4543         * mini-x86.c (mono_arch_output_basic_block): Use different
4544         registers in case the ones we want to overwrite are used by the
4545         other operand.  Fixes regression in #480807.
4546
4547 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
4548
4549         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
4550
4551         * dwarfwriter.c (emit_line_number_info): The line number info for
4552         IL code was off by one. Fix that.
4553
4554         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
4555         stack.
4556
4557 2009-03-09  Mark Probst  <mark.probst@gmail.com>
4558
4559         Contributed under the terms of the MIT/X11 license by Steven
4560         Munroe <munroesj@us.ibm.com>.
4561
4562         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
4563         Fixes #483462.
4564
4565 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
4566
4567         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
4568         as well.
4569
4570 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
4571
4572         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
4573         the delegate ctor handling code. Fixes #482638.
4574         
4575         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
4576         #481458.
4577
4578         * iltests.il.in: Add a test.
4579         
4580         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
4581         mini-posix.c.
4582
4583 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4584
4585         * mini-trampolines.c (mono_create_jump_trampoline): If the method
4586         is shared generic code, return the trampoline, even if the method
4587         has already been compiled.  Fixes #479763.
4588
4589         * mini.c, mini.h: New function
4590         mono_jit_find_compiled_method_with_jit_info() which is the same as
4591         mono_jit_find_compiled_method() but also returns the jit info.
4592
4593 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4594
4595         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
4596         for methods which actually have one.  For all other methods, make
4597         sure the this argument var is live the whole method.
4598
4599         * mini.c (mini_method_compile): Every shared method has a
4600         this/vtable/mrgctx info.  Fixes #480807.
4601
4602 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4603
4604         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
4605         generic/imt thunks where some entries branch through the vtable,
4606         while other entries branch directly.
4607
4608 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
4609
4610         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
4611
4612         * mini-windows.c: Ditto.
4613         
4614         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
4615         ctors.
4616
4617 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
4618
4619         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
4620         down an assert.
4621
4622 2009-03-04  Mark Probst  <mark.probst@gmail.com>
4623
4624         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
4625         #481403.
4626
4627 2009-03-04  Mark Probst  <mark.probst@gmail.com>
4628
4629         * exceptions-x86.c: Include debug-mini.h - fixes build.
4630
4631 2009-03-04  Martin Baulig  <martin@ximian.com>
4632
4633         * debug-mini.c: Clean up the exception API and add documentation.
4634         (mono_debugger_handle_exception): New public method; this is
4635         called when throwing an exception or encountering an unhandled one.
4636         (mono_debugger_call_exception_handler): Formerly known as
4637         mono_debugger_handle_exception(); this is used to tell the
4638         debugger that we're about to invoke an exception handler.
4639
4640 2009-03-04  Martin Baulig  <martin@ximian.com>
4641
4642         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
4643         ../metadata/mono-debug-debugger.c; save and reset exception state.
4644
4645 2009-03-02  Martin Baulig  <martin@ximian.com>
4646
4647         * debug-mini.c: Moved the debugger exception handling here from
4648         ../metadata/mono-debug-debugger.c.
4649
4650         * debug-mini.h
4651         (MonoDebuggerExceptionAction): New exception typedef.
4652
4653         * debug-mini.c
4654         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
4655
4656         * exceptions-amd64.c
4657         (mono_amd64_throw_exception): Use the new debugger exception
4658         handling code.
4659
4660         * mini-exceptions.c
4661         (mono_handle_exception_internal): Don't call
4662         mono_debugger_unhandled_exception() here.
4663
4664 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
4665
4666         * mini.c aot-compiler.c: Update after the changes to 
4667         mono_marshal_get_runtime_invoke ().
4668
4669         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
4670         Virtual generic methods might not have method->slot set, work around
4671         that.
4672
4673         * generics.cs: Add a test.
4674
4675 2009-03-02  Geoff Norton  <gnorton@novell.com>
4676
4677         * mini.c:
4678         * driver.c: Allow signal chaining of SIGFPE as well.
4679
4680 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
4681
4682         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
4683         this since it now receives the method not its generic context in the
4684         IMT reg.
4685
4686         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
4687         generic/imt thunks where some entries branch through the vtable, while
4688         other entries branch directly.
4689
4690         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
4691
4692         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
4693         support for interface methods as well.
4694
4695         * mini-trampolines.c: Add support for virtual generic methods in interfaces
4696         using the normal IMT thunks.
4697
4698         generics.cs: Add new tests.
4699         
4700         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
4701         the generic inst to the generic imt thunks. This fixes AOT support, 
4702         improves consistency with the normal IMT thunks, and makes it easier to
4703         add support for interface generic virtual methods later.
4704
4705         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
4706         
4707 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
4708
4709         * driver.c (mono_set_signal_chaining): New public API function to enable
4710         signal chaining on POSIX platforms.
4711
4712         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
4713         (si@lindenlab.com) to implement signal chaining. The original patch was
4714         contributed under the MIT X/11 license:
4715         https://bugzilla.novell.com/show_bug.cgi?id=318894
4716
4717 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
4718
4719         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
4720         too until it can be made to run on amd64.
4721
4722 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
4723
4724         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
4725         to  get_generic_context_from_code () + get_call_info () if possible.
4726
4727 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
4728
4729         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
4730         suspend-on-sigsegv functionality.
4731
4732         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
4733         to suspend when a native SIGSEGV is received. This is useful for debugging
4734         crashes which don't happen under gdb, since a live process contains more
4735         information than a core file.
4736
4737         * mini-exceptions.c (mono_print_thread_dump): Use 
4738         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
4739
4740         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
4741
4742         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
4743         
4744         * basic-float.cs: Disable the tests which currently fail on amd64.
4745
4746         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
4747         value to mono_arch_patch_callsite () to fix crashes.
4748         
4749         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
4750
4751 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
4752
4753         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
4754         nop code by patching the call address to point to the nullified class init
4755         trampoline, as the former does not seem to be safe on SMP machines.
4756
4757 2009-02-23  Mark Probst  <mark.probst@gmail.com>
4758
4759         * mini-ops.h: Fix the argument types for a few x86 opcodes where
4760         they were wrong.
4761
4762 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
4763
4764         * basic-float.cs basic-calls.cs: Fix warnings.
4765
4766 2009-02-22  Mark Probst  <mark.probst@gmail.com>
4767
4768         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
4769         correct frame pointer in the LMF.  Should fix #478394.
4770
4771 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
4772
4773         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
4774
4775         * image-writer.c: Make the binary writer less verbose.
4776
4777 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
4778
4779         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
4780         are called from runtime invoke wrappers.
4781
4782 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
4783
4784         * cpu-ppc.md (store_memindex): Increase the size of this.
4785
4786 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4787
4788         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4789
4790         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
4791
4792         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
4793         OP_LCONV_TO_R_UN.
4794
4795         Last fix for of #467201.
4796
4797
4798 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4799
4800         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4801
4802         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
4803         and long_conv_to_r8_2:
4804
4805         Fixed part of #467201.
4806
4807 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4808
4809         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4810
4811         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
4812         conversion to 32 bits.
4813
4814         * cpu-x86.md: Increase the size of int_conv_to_r4.
4815
4816         * basic-float.cs: Add a test for this.
4817
4818         Fixed part of #467201.
4819
4820 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4821
4822         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4823
4824         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
4825         conversion to 64 bits.
4826
4827         * basic-float.cs: Add a test for this.
4828
4829         Fixed part of #467201.
4830
4831 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4832
4833         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4834
4835         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
4836         This behavior is compatible with MS.
4837
4838         * iltest.il.in: Add a test for this.
4839
4840         Fixed part of #467201.
4841
4842 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4843
4844         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4845
4846         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
4847         change the precision of the value.
4848
4849         * cpu-x86.md: Define len for float_conv_to_r4.
4850
4851         * basic-float.cs: Add a test for this.
4852
4853         Fixed part of #467201.
4854
4855 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
4856
4857         * mini.c: Adjust locking order to the new semantics where the loader lock
4858         comes first.
4859
4860 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
4861
4862         * aot-runtime.c:
4863         * mini-amd64.c:
4864         * mini-arm.c:
4865         * mini-ia64.c:
4866         * mini-mips.c:
4867         * mini-ppc.c:
4868         * mini-sparc.c:
4869         * mini-trampolines.c:
4870         * mini-x86.c:
4871         * mini.c:
4872         * tramp-alpha.c:
4873         * tramp-amd64.c:
4874         * tramp-arm.c:
4875         * tramp-hppa.c:
4876         * tramp-ia64.c:
4877         * tramp-mips.c:
4878         * tramp-ppc.c:
4879         * tramp-s390.c:
4880         * tramp-s390x.c:
4881         * tramp-sparc.c:
4882         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
4883
4884 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
4885
4886         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
4887         as it is incorrect.
4888
4889 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
4890
4891         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
4892         for cctors if needed.
4893
4894 2009-02-17  Mark Probst  <mark.probst@gmail.com>
4895
4896         * mini-ppc.c: Fix build on Darwin.
4897
4898 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
4899
4900         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
4901         version instead of 3 as valgrind doesn't like version 3.
4902
4903         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4904
4905         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
4906         usable for hashing methods.
4907         (emit_extra_methods): Use the new hash to avoid putting every method in the
4908         same hash bucket.
4909
4910         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
4911
4912         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
4913         whenever a method ref could match a method.
4914         
4915         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
4916         test to fail.
4917         
4918         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
4919         methods refs.
4920
4921         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
4922
4923         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
4924         the encoding buffer.
4925
4926         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
4927         mono_method_get_header () on inflated methods as an optimization.
4928
4929 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
4930
4931         * ssa.c (fold_ins): Fix another crash if the instruction following the
4932         switch was optimized away.
4933
4934 2009-02-16  Mark Probst  <mark.probst@gmail.com>
4935
4936         Contributed under the terms of the MIT/X11 license by Steven
4937         Munroe <munroesj@us.ibm.com>.
4938
4939         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
4940
4941 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
4942
4943         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
4944         around the mono_domain_alloc calls, it is now done by the functions
4945         themselves.
4946
4947         * aot-compiler.c (compile_method): Only add wrappers referenced by
4948         the method if compiling with full AOT.
4949         (mono_compile_assembly): Error out if --aot=full is specified on
4950         a platform where it is not supported.
4951
4952         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
4953         on ARM too.
4954
4955         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
4956         AOT support.
4957
4958         * aot-runtime.c (load_named_code): Handle 
4959         mono_arm_throw_exception_by_token.
4960
4961         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
4962
4963         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
4964         unaligned.
4965
4966         * Makefile.am (fullaotcheck): Exit if a test fails.
4967
4968         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
4969         on ARM.
4970         (mono_compile_assembly): Handle the assembler failing.
4971
4972         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
4973         accepting subsections of .bss.
4974
4975         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
4976         was optimized away.
4977
4978         * aot-compiler.c: Remove some unused includes.
4979         
4980         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
4981         now in MonoImageWriter.
4982
4983         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
4984         code sequence which matches a non-virtual call. Fixes #472654.
4985
4986 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
4987
4988         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
4989         xdebug code.
4990         
4991         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
4992         use the image/dwarf writers directly.
4993
4994         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
4995         field.
4996
4997         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
4998         MonoDwarfWriter.
4999
5000         * image-writer.h: Fix some typos.
5001
5002         * dwarfwriter.h dwarfwriter.c: New files.
5003         
5004         * aot-compiler.c: Extract the DWARF info writing functionality into a 
5005         separate module.
5006
5007         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
5008         argument to return unwind info.
5009
5010         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
5011
5012         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
5013         
5014         * aot-runtime.c (decode_method_ref): Add a case for 
5015         MONO_AOT_METHODREF_WRAPPER_NAME.
5016
5017         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
5018         for AOT.
5019
5020         * aot-compiler.c (encode_method_ref): Use the new constants.
5021
5022         * aot-runtime.c (decode_method_ref): Ditto.
5023
5024         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
5025         be compiled, not the icall itself.
5026
5027 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
5028
5029         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
5030         using decode_method_ref ().
5031
5032         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
5033         convert it to an in32. Fixes #475859.
5034
5035         * arrays.cs: Add a test.
5036
5037 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5038
5039         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
5040         OP_LCONV_TO_U2.
5041
5042         * basic-long.cs: Add a test.
5043
5044 2009-02-12  Mark Probst  <mark.probst@gmail.com>
5045
5046         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
5047         remove the frame pointer in leaf methods which don't receive any
5048         arguments, don't throw exceptions and don't do dynamic stack
5049         allocations.
5050
5051 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5052
5053         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
5054         the fail_tramp changes. Hopefully fixes #475132.
5055
5056 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
5057
5058         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
5059         instead of mono_metadata_signature_dup_full.
5060
5061 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5062
5063         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
5064         for processing jump tables. Fixes #473787.
5065
5066 2009-02-11  Mark Probst  <mark.probst@gmail.com>
5067
5068         * mini-generic-sharing.c: mini_method_get_context() just calls
5069         mono_method_get_context_general() now.
5070
5071         * mini.c, mini.h: Moved get_object_generic_inst(),
5072         construct_object_context_for_method() and
5073         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
5074
5075 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
5076
5077         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
5078         basic block fell through to its successor bblock without a branch. Fixes
5079         #474718.
5080
5081         * iltests.il.in: Add a test.
5082         
5083         * aot-compiler.c (encode_method_ref): Encode methods of array types.
5084         (can_encode_patch): We can now handle arrays of generic parameters and
5085         array methods.
5086
5087         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
5088
5089         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
5090         the AOT file to avoid some #ifdefs in aot-runtime.c
5091
5092         * mini.h: Bump AOT file format version.
5093
5094 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
5095
5096         * Makefile.am (fullaotcheck): Make this run the tests.
5097
5098         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
5099
5100 2009-02-10  Mark Probst  <mark.probst@gmail.com>
5101
5102         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
5103         individually.  Fixes #473482.
5104
5105 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
5106
5107         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
5108
5109 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
5110
5111         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
5112         (mono_compile_assembly): Hush compile warnings about
5113         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
5114         code path.
5115
5116 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
5117
5118         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
5119
5120         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
5121
5122         * aot-compiler.c: Fix arm support.
5123
5124         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
5125         img_writer_emit_unset_mode () function.
5126
5127         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
5128         (mono_unwind_get_dwarf_pc_reg): Ditto.
5129
5130         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
5131         Move almost all platform specific code to a set of arch_ functions, 
5132         and document them to ease porting.
5133         
5134         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
5135
5136         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
5137
5138         * aot-compiler.c: Extract the image writing functionality into a separate
5139         module to reduce the size of this file.
5140
5141 2009-02-09  Geoff Norton  <gnorton@novell.com>
5142
5143         * mini-s390.c: Fix the signature of emit_sig_cookie.
5144
5145 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
5146
5147         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
5148
5149         * aot-runtime.c (is_shared_got_patch): Ditto.
5150
5151         * aot-runtime.c (load_named_code): Cope with the fact that 
5152         decode_got_entry () won't decode the patch fully if its corresponding got
5153         entry is already filled.
5154         
5155         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
5156         Initialize *ji.
5157         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
5158
5159         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
5160         as the moving pointer instead of 'buf' for consistency with the rest of the
5161         codebase.
5162         (mono_arch_create_monitor_exit_trampoline): Ditto.
5163
5164         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
5165         generic_class_init trampolines.
5166         (add_generic_class): Extract some code from add_generic_instances () into a
5167         separate function so it can be called from other places too.
5168         (compile_method): Call add_generic_class () for the classes of inflated methods
5169         referenced by the method.
5170         (can_encode_patch): Allow references to generic parameters.
5171
5172         * aot-runtime.c: Add support the patches required by the new trampolines.
5173         
5174         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
5175         support.
5176
5177         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
5178         full-aot support.
5179
5180         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
5181         this from get_throw_pending_exception, make the signature full aot compatible.
5182
5183         * Makefile.am (fullaotcheck): New target to run full-aot tests.
5184
5185         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
5186
5187         * exceptions.cs: Add a test.
5188
5189 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
5190
5191         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
5192         use the DWARF_DATA_ALIGN constant instead.
5193
5194         * exception-<ARCH>.c: Update after the above change.
5195
5196         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
5197         dwarf unwinder.
5198
5199         * mini-arm.c: Enable the dwarf unwinder.
5200
5201         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
5202         instead of mono_class_setup_vtable ().
5203
5204 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
5205
5206         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
5207         dwarf unwinder.
5208
5209         * mini-x86.h: Enable the dwarf unwinder.
5210
5211 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
5212
5213         Fix mcs/tests/test-7.cs
5214         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
5215         2009-02-03.
5216
5217 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
5218
5219         * mini.c (print_jit_stats): Remove some unused statistics.
5220
5221 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
5222
5223         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
5224
5225 2009-02-05  Mark Probst  <mark.probst@gmail.com>
5226
5227         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
5228         the method we get from mono_object_get_virtual_method() because
5229         that function does it properly, now.
5230
5231 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
5232
5233         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
5234         opcodes. Fixes #472775.
5235
5236 2009-02-05  Mark Probst  <mark.probst@gmail.com>
5237
5238         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
5239         fact that mono_find_jit_info() sometimes returns the context
5240         corresponding to the jit info in new_ctx.  Fixes #472600.
5241
5242 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
5243
5244         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
5245         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
5246         klass->enum_basetype directly.
5247
5248         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
5249         enum subtypes.
5250
5251         * unwind.c: Avoid 0 sized arrays.
5252
5253 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
5254
5255         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
5256         size on systems with 64k pages. Fixes #471389.
5257
5258 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5259
5260         Contributed under the terms of the MIT/X11 license by Steven
5261         Munroe <munroesj@us.ibm.com>.
5262
5263         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
5264         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
5265         necessary.
5266
5267 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5268
5269         Contributed under the terms of the MIT/X11 license by Steven
5270         Munroe <munroesj@us.ibm.com>.
5271
5272         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
5273         comparison fix.
5274
5275         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
5276         The trampoline can be longer on PPC64.
5277
5278 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5279
5280         Contributed under the terms of the MIT/X11 license by Steven
5281         Munroe <munroesj@us.ibm.com>.
5282
5283         * mini-ppc.c: Compiler warning fixes and trivial code
5284         simplifications.
5285
5286 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
5287
5288         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
5289         ins->dreg which could be a hardware register, not a vreg.
5290
5291         * aot-compiler.c (emit_method_dwarf_info): Ditto.
5292         
5293         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
5294         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
5295
5296         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
5297         
5298         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
5299         ->dreg, that is not the vreg we are looking for.
5300
5301         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
5302
5303         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
5304         LIVERANGE_END.
5305
5306         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
5307         strange crashes.
5308
5309 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
5310
5311         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
5312
5313         * aot-compiler.c (emit_line_number_info): Fix line number emission when
5314         the line diff is 0.
5315
5316         * aot-compiler.c: Add xdebug support on x86.
5317
5318         * unwind.c: Add x86 support.
5319         
5320         * aot-compiler.c (emit_exception_debug_info): Control the emission of
5321         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
5322
5323         * mini.c (mini_method_compile): Ditto.
5324         
5325         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
5326         the variable index.
5327
5328         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
5329         which mimic .push_section/.pop_section in GAS.
5330         
5331         * aot-compiler.c: Emit precise live range information for variables.
5332
5333         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
5334
5335         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
5336         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
5337         them.
5338
5339         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
5340         the live ranges of variables.
5341
5342         * mini.h (struct MonoMethodVar): Add two fields containing the live range
5343         of the variable in terms of native offsets.
5344
5345 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
5346
5347         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
5348         
5349 2009-02-02  Mark Probst  <mark.probst@gmail.com>
5350
5351         Contributed under the terms of the MIT/X11 license by Steven
5352         Munroe <munroesj@us.ibm.com>.
5353
5354         * exceptions-ppc.c (restore_regs_from_context): Correct operand
5355         order (offset then base reg) for ppc_load_multiple_regs.
5356         (emit_save_saved_regs) Correct operand order for
5357         ppc_store_multiple_regs.
5358         (mono_arch_get_call_filter): Correct operand order for
5359         ppc_load_multiple_regs.
5360
5361         * mini-ppc.c (emit_memcpy): Fix operand order for
5362         ppc_load_reg_update and ppc_store_reg_update.
5363         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
5364         (mono_arch_emit_epilog): Correct operand order for
5365         ppc_load_multiple_regs.
5366
5367         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
5368         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
5369
5370 2009-02-02  Mark Probst  <mark.probst@gmail.com>
5371
5372         * cpu-ppc64.md: Fixed storer4_memindex length.
5373
5374 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
5375
5376         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
5377         line number info.
5378         
5379         * aot-compiler.c (emit_line_number_info): Optimize this.
5380
5381 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
5382
5383         * aot-compiler.c: Disassemble tokens in the IL disassembly.
5384         
5385         * aot-compiler.c: Add debug info for methods without debug info by
5386         emitting an IL file and having the line number info referencing that file.
5387
5388         * aot-compiler.c: Optimize the size of the generated line number info.
5389
5390         * aot-compiler.c: Emit line number info in xdebug mode.
5391
5392         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
5393         million arguments.
5394
5395 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
5396
5397         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
5398
5399         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
5400         is used.
5401
5402 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
5403
5404         * basic-calls.cs: Test for the weird crash found on arm.
5405         
5406 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
5407
5408         * cpu-arm.md: Increase the size of storer8_membase_reg and
5409         loadr8_membase_reg to 24 bytes to accomodate the extra add.
5410
5411         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
5412         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
5413         reg to LR otherwise we'll be loading/storing from just the offset.
5414
5415 2009-01-30  Miguel de Icaza  <miguel@novell.com>
5416
5417         Question: if we are storing gint32's inside the "*native_offset",
5418         should we change the signature to "gint32 *native_offset" to
5419         ensure that we do not have type definition problems?
5420         
5421         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
5422         an int * as this is what the other function expects, causes
5423         problems with Freescale's compiler that defined int32_t to be a
5424         long and makes int incompatible 
5425
5426 2009-01-30  Miguel de Icaza  <miguel@novell.com>
5427
5428         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
5429         filename conflict with bjam.
5430
5431 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5432
5433         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
5434         as it might use decomposed ops.
5435
5436 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5437
5438         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
5439
5440         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
5441         is defined.
5442
5443         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
5444
5445         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
5446         offsets.
5447
5448         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
5449         way registers are stored in MonoContext on arm.
5450
5451         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
5452         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
5453
5454         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
5455
5456         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
5457
5458         * mini.c (mini_init): Register mono_isfinite.
5459
5460         * jit-icalls.c (mono_isfinite): New jit icall.
5461
5462         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
5463         
5464         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
5465         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
5466         the parent frame.
5467
5468 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5469
5470         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
5471         separate frame and stack pointers, so we must use FP to find the register
5472         spill area.
5473         The FP reg is retrieved from the MonoContext::regs array.
5474
5475 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5476
5477         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
5478         as FPA requires it.
5479
5480 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5481
5482         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
5483         return R4 and R8 when not running under softfloat.
5484
5485         Fixes basic-calls.exe
5486
5487 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5488
5489         * mini-arm.c: Implement some overflow opcodes.
5490
5491 2009-01-29  Miguel de Icaza  <miguel@novell.com>
5492
5493         * ssa.c: handle another alloca.h
5494
5495         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
5496         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
5497         MONO_ARCH_USE_SIGACTION. 
5498
5499         * aot-runtime.c, mini-exceptions.c: Replace platform define with
5500         capability defines.
5501
5502         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
5503
5504         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
5505         PPC targets as sigaction does not exist on all platforms, define
5506         this on a per-platform basis.
5507
5508         Instead of erroring out if the platform is not defined, include
5509         mini-ppc-os.h, and expect that the OS specific setting provides
5510         the required information.   
5511
5512 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5513
5514         * aot-compiler.c: Fix --enable-minimal=aot.
5515
5516 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5517
5518         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
5519         previous change.
5520
5521 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
5522
5523         * exceptions-arm.c: Fix warnings.
5524
5525         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
5526         ARM.
5527
5528         * mini-x86.c: Fix --enable-minimal=jit build.
5529
5530         * mini.c: Really fix --enable-minimal=jit build.
5531         
5532         * mini.c (construct_object_context_for_method): Move this outside
5533         the DISABLE_JIT block to fix the --enable-minimal=jit build.
5534
5535         "Backported" of r124984 from 2.0 branch.
5536         
5537         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
5538
5539         "Backport" of r124977 + r124978 from 2.0 branch.
5540         
5541         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
5542         to avoid calling mono_exception_from_token () from the throw trampoline.
5543         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
5544         for throwing corlib exceptions, this fixes full-aot support for corlib
5545         exceptions.
5546
5547         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
5548
5549 2009-01-29  Miguel de Icaza  <miguel@novell.com>
5550
5551         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
5552         part of the changes to split the code in mini into operating
5553         system specific files.
5554
5555         This patch was done by copying mini.c to the respective files to
5556         preserve SVN history.
5557
5558 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
5559
5560         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
5561
5562 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
5563
5564         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
5565         remoting-invoke-with-check wrappers of shared methods.
5566
5567         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
5568
5569 2009-01-27  Mark Probst  <mark.probst@gmail.com>
5570
5571         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
5572         optimization if the top of stack is the last instruction in the
5573         bblock.  Otherwise it might have been used after its definition.
5574         Fixes #469742.
5575
5576 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
5577
5578         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
5579         method as well when get_vcall_slot () fails to match a code sequence.
5580
5581         * mini-arm.c: Fix the android build, which doesn't have
5582         __aeabi_read_tp.
5583
5584 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
5585
5586         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
5587         the s390x build.
5588
5589 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
5590
5591         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
5592
5593 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
5594
5595         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
5596         and put its id into jinfo->used_regs. This is only used on amd64,
5597         which is currently the only platform generating unwind info.
5598
5599         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
5600         the dwarf unwinder. This is required to correctly handle async exceptions
5601         like thread abort and stack overflows, which can happen while a method
5602         is in the middle of its prolog or epilog.
5603         
5604         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
5605         the unwind info belonging to an AOTed method.
5606
5607         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
5608         into cfg->unwind_ops.
5609         
5610         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
5611
5612         * mini.c (mini_init): Call mono_unwind_init ().
5613         (mini_cleanup): Call mono_unwind_cleanup ().
5614
5615         * unwind.c: Add functions for managing a set of unwind info entries, allowing
5616         unwind info to be shared between methods.
5617
5618         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
5619         saved in the LMF.
5620
5621         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
5622         get_throw_pending_exception () to avoid initialization races.
5623
5624         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
5625         mono_arch_exceptions_init () function.
5626
5627         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
5628
5629 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
5630
5631         * mini.c (mono_get_domain_intrinsic): New helper function.
5632         (mono_get_thread_intrinsic): Ditto.
5633
5634         * mini-arm.c mini-ia64.c: Use the new helper functions.
5635         
5636         * method-to-ir.c (mono_method_to_ir): Fix the comment for
5637         the last constrained_call change, since it is needed in the non-AOT
5638         case as well.
5639
5640         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
5641         
5642         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
5643         mono_get_lmf_addr () on arm eabi linux.
5644
5645 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
5646
5647         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
5648         code sequence which matches a non-virtual call.
5649
5650 2009-01-23  Mark Probst  <mark.probst@gmail.com>
5651
5652         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
5653         stack pointer (r1).
5654
5655 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
5656
5657         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
5658         runtime-invoke wrappers, since they are also shared based on signature.
5659
5660 2009-01-22  Mark Probst  <mark.probst@gmail.com>
5661
5662         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
5663         info from the (correct) context.
5664
5665 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
5666
5667         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
5668         
5669         * unwind.c (mono_unwind_frame): New function to unwind through a frame
5670         using dwarf unwinding info. Not yet used.
5671
5672         * mini.c (mini_init): When using xdebug, disable freeing of domains.
5673
5674 2009-01-21  Mark Probst  <mark.probst@gmail.com>
5675
5676         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
5677         descriptors.
5678
5679         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
5680         special case and handle mono_arch_delegate_invoke_impl() returning
5681         function descriptors.
5682
5683         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
5684         trampolines return function descriptors, too.
5685
5686 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
5687
5688         * method-to-ir.c (handle_alloc): Avoid generic instances in the
5689         out_of_line optimization.
5690
5691 2009-01-21  Martin Baulig  <martin@ximian.com>
5692
5693         * mini.h
5694         (MonoCompile): Added `disable_deadce_vars' to disable removing
5695         unused variables.
5696
5697         * mini.c
5698         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
5699         inside the debugger.
5700
5701         * liveness.c (mono_analyze_liveness): Don't remove any unused
5702         variables if `cfg->disable_deadce_vars' is set.
5703
5704 2009-01-21  Mark Probst  <mark.probst@gmail.com>
5705
5706         * method-to-ir.c: Only apply exception constructor optimization if
5707         the the method actually belongs to an exception class.  Fixes
5708         #467456.
5709
5710 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
5711
5712         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
5713         change inside a #ifdef __mono_ppc64__.
5714
5715         * aot-compiler.c (compile_method): Remove the previous limitation.
5716
5717         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
5718         on type variables in AOTed code.
5719         
5720         * aot-compiler.c (compile_method): Skip generic methods having type 
5721         constraints on their generic parameters.
5722
5723         * aot-compiler.c (compile_method): Check for methods which cannot be
5724         encoded inside RGCTX_FETCH patches as well.
5725
5726         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
5727         build.
5728
5729 2009-01-20  Mark Probst  <mark.probst@gmail.com>
5730
5731         * method-to-ir.c: Force the vtable variable in shared generic code
5732         for the case that they might show up on a stack trace where they
5733         are needed.
5734
5735         * mini-exceptions.c: Save and use generic sharing info as well as
5736         IP in stack traces to resolve shared generic instantiations.
5737
5738 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
5739
5740         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
5741         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
5742
5743 2009-01-20  Mark Probst  <mark.probst@gmail.com>
5744
5745         * method-to-ir.c: Do generic sharing for array constructors.
5746
5747 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
5748
5749         * mini-exceptions.c (mono_print_thread_dump): Add information
5750         about the thread state using wapi_current_thread_desc.
5751
5752 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
5753
5754         * basic-simd.cs: Tests for the new constructors. 
5755
5756 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
5757
5758         * mini-ops.h: Added OP_EXPAND_*
5759
5760         * cpu-x86.md: Same.
5761
5762         * mini-x86.c (mono_arch_output_basic_block): Same.
5763         
5764         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
5765
5766 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
5767
5768         * iltests.il.in: Add a test for #467385.
5769
5770 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
5771
5772         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
5773         thread been cleaned up is not the same currently in execution.
5774
5775         Fixes appdomain-unload crashes on windows, osx and linux variants
5776         without the __thread keyword.
5777
5778 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
5779
5780         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
5781         (koush@koushikdutta.com). Implement this for android.
5782
5783         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
5784         begins with a digit.
5785
5786         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
5787         mono_marshal_get_write_barrier ().
5788
5789 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
5790
5791         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
5792         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
5793         that pass them on a register pair.
5794
5795         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
5796         test was crashing due to that.
5797
5798 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
5799
5800         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
5801         trampoline code. Include ucontext.h only if available.
5802
5803 2009-01-15  Mark Probst  <mark.probst@gmail.com>
5804
5805         * mini.c: mono_domain_lookup_shared_generic() takes an open method
5806         and doesn't check whether it's sharable, like it was before
5807         removing the shared generics hash.  This brings IronPython
5808         performance back to what it was before that change.
5809
5810 2009-01-14  Mark Probst  <mark.probst@gmail.com>
5811
5812         * method-to-ir.c: Handle delegate invocation optimization earlier,
5813         otherwise it would be handled (much more slowly) by the
5814         final/sealed optimization.
5815
5816 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
5817
5818         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
5819         domain is not set. Fixes #465864.
5820
5821 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5822
5823         * method-to-ir.c: Don't stop sharing of generic methods with catch
5824         clauses - we already handle those.
5825
5826 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5827
5828         * mini.c, mini.h: lookup_generic_method() is now
5829         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
5830         making the shared_generics_hash obsolete.
5831
5832 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5833
5834         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
5835         use the red zone.  Make room on the stack first and then use it,
5836         not the other way around.
5837
5838 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
5839
5840         * mini.c (mini_init): Call mono_xdebug_init ().
5841
5842         * aot-compiler.c (mono_xdebug_init): Make this non-static.
5843
5844 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
5845
5846         * TestDriver.cs: Add an --iter argument to run tests multiple times.
5847
5848         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
5849         trampolines.
5850
5851         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
5852         debug+unwind info for trampolines.
5853
5854         * mini.c (mono_create_unwind_op): New helper function.
5855
5856         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
5857
5858 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
5859
5860         * aot-compiler.c: Fix the build.
5861
5862 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
5863
5864         * Makefile.am: Update dtrace-prelink.sh location.
5865
5866 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
5867
5868         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
5869         optimization. Fixes #464520.
5870
5871 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
5872
5873         * mini-amd64.c : Adding code to save/restore non-volatile registers
5874            on Winx64.
5875
5876         * exceptions-amd64.c : Adding code to save/restore non-volatile 
5877           registers on Winx64.
5878
5879         Contributed under MIT/X11 license.
5880
5881 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
5882
5883         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
5884         __GNUC_MINOR__ which can break when the major version changes.
5885
5886 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
5887
5888         * basic-simd.cs: Add tests for usage of the sizeof opcode.
5889
5890 2009-01-07  Geoff Norton  <gnorton@novell.com>
5891
5892         * helpers.c:  Allow mono -v -v -v to work on darwin.
5893
5894 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
5895
5896         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
5897           pattern. 
5898
5899         Contributed under MIT/X11 license.
5900
5901 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
5902
5903         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
5904         instead of directly accessing type->data.klass. Fixes #462016.
5905         (mono_allocate_stack_slots_full): Ditto.
5906
5907         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
5908         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
5909
5910         * aot-compiler.c (emit_plt): Fix ARM build.
5911
5912 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
5913
5914         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
5915         
5916         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
5917         change.
5918
5919         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
5920         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
5921         #463357.
5922
5923         * iltests.il.in: Add a regression test.
5924
5925 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5926
5927         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
5928
5929 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5930
5931         * basic-simd.cs: Add a regression test for #462457.
5932
5933 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5934
5935         * mini-ops.h: Add a definition of XPHI.
5936
5937         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
5938
5939         * ssa.c (op_phi_to_move): Handle XPHI.
5940
5941         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
5942
5943         Fixes #462457
5944
5945 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5946
5947         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
5948
5949 2008-12-31  Geoff Norton  <gnorton@novell.com>
5950
5951         * mini-ppc.c: The prolog size allocated can be too small for darwin
5952         ppc32 under certain circumstances.  Also fix a small logic bug.
5953
5954 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
5955
5956         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
5957         while loading AOT methods.
5958
5959         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
5960         since only the former is nulled out after a successful cast. This prevents
5961         crashes with rethrown exceptions when using --debug=casts.
5962
5963 2008-12-24  Mark Probst  <mark.probst@gmail.com>
5964
5965         * mini.h: New macro for checking whether a method is final,
5966         i.e. whether the method or its class is marked final.
5967
5968         * method-to-ir.c: Use the new macro for all final-checks
5969         consistently.  Fixes the crash in the System.ServiceModel tests.
5970
5971 2008-12-23  Mark Probst  <mark.probst@gmail.com>
5972
5973         * mini-exceptions.c (get_exception_catch_class): Corrected another
5974         overly strict assertion.
5975
5976 2008-12-23  Mark Probst  <mark.probst@gmail.com>
5977
5978         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
5979         Clobbering it is not allowed because the caller might use it as
5980         the vtable register in the interface call.
5981
5982 2008-12-19  Mark Probst  <mark.probst@gmail.com>
5983
5984         * mini-exceptions.c (get_exception_catch_class): Corrected an
5985         overly strict assertion.
5986
5987 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
5988         
5989         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
5990
5991         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
5992
5993         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
5994
5995         * cpu-mips.md: correct lengths for certain long_ opcodes.
5996
5997         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
5998
5999         * 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().
6000         
6001 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
6002
6003         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
6004         
6005 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
6006         
6007         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
6008         
6009 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
6010
6011         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
6012         next basic block.
6013         
6014 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
6015
6016         * 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
6017
6018         * 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)
6019         
6020 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
6021         
6022         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
6023         
6024 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
6025
6026         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
6027         gshared code. Fixes #458947.
6028
6029         * generics.cs: Add a test.
6030
6031 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
6032         
6033         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6034         
6035         * mini-mips.c: first pass n32 code generation.
6036
6037         * mini-mips.h: datatypes and defines for n32 support.
6038
6039         * exceptions-mips.c: first pass n32 code generation.
6040         
6041         * tramp-mips.c: first pass n32 code generation.
6042         
6043         * cpu-mips.md: add long_ opcodes.
6044         
6045 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
6046
6047         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6048
6049         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6050         
6051         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6052         
6053         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6054
6055         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6056
6057         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6058
6059         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6060
6061         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6062
6063         * helpers.c: for mips/n32, don't pass -mips32 to objdump
6064
6065 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
6066
6067         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
6068
6069 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
6070
6071         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
6072
6073 2008-12-12  Mark Probst  <mark.probst@gmail.com>
6074
6075         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
6076         descriptors for helper functions directly in front of the code.
6077
6078 2008-12-11  Mark Probst  <mark.probst@gmail.com>
6079
6080         * method-to-ir.c: Removed an unnecessary assertion.
6081
6082 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
6083
6084         * method-to-ir.c: Merge SGEN changes from the old JIT.
6085
6086 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
6087
6088         * driver.c (compile_all_methods_thread_main): Handle failure of
6089         mono_get_method ().
6090
6091 2008-12-10  Mark Probst  <mark.probst@gmail.com>
6092
6093         * mini-ppc.c: Merged with mini-ppc64.c.
6094
6095         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
6096
6097         * Makefile.am: Use the same sources for PPC and PPC64.
6098
6099         * mini-ppc64.c: Removed.
6100
6101 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
6102
6103         * branch-opts.c (remove_block_if_useless): Extract fall through detection
6104         code to mono_bb_is_fall_through.
6105         
6106         * branch-opts.c (mono_remove_critical_edges): Same.
6107
6108 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
6109
6110         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
6111         expect that an OP_BR_REG will be there.
6112
6113 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
6114
6115         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
6116         for the many branch ops. The original check miss OP_BR_REG.
6117
6118         Fixes #457574.
6119         
6120 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
6121
6122         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
6123
6124 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
6125
6126         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
6127         while holding the aot lock.
6128
6129 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
6130
6131         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
6132         
6133 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
6134
6135         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
6136           to release all runtime callable wrappers held by the runtime.
6137
6138         Contributed under MIT/X11 license.
6139
6140 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
6141
6142         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
6143           for Winx64.
6144
6145         Contributed under MIT/X11 license.
6146
6147 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
6148
6149         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
6150         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
6151
6152 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
6153
6154         * cpu-mips.md: fix ckfinite length
6155
6156         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
6157         (mono_arch_lowering_pass): cleanup, rearrange for clarity
6158         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
6159         
6160 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
6161
6162         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
6163         
6164 2008-12-08  Geoff Norton  <gnorton@novell.com>
6165
6166         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
6167         size by 8 bytes as well.
6168
6169 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6170
6171         * basic-simd.cs: Fix method names for Vector16b.
6172         
6173 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6174
6175         * basic-simd.cs: Fix method names for Vector16sb.
6176
6177 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6178
6179         * basic-simd.cs: Fix method names for Vector8us.
6180         
6181 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6182
6183         * basic-simd.cs: Fix method names for Vector8s.
6184         
6185 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6186
6187         * basic-simd.cs: Fix method names for Vector4ui.
6188
6189 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6190
6191         * basic-simd.cs: Fix method names for Vector2l.
6192
6193 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6194
6195         * basic-simd.cs: Fix method names for Vector2d.
6196
6197 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6198
6199         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
6200         that are extension methods.
6201
6202 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6203
6204         * basic-simd.cs: Fix method names for Vector4f.
6205
6206 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
6207
6208         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
6209         as such. Fixes #456669.
6210
6211 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
6212
6213         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
6214         
6215 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
6216
6217         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
6218         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
6219         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
6220         (mips_adjust_stackframe): handle FP spills
6221                 
6222         * mini-ops.h: add mips_mtc1_s2
6223         
6224         * cpu-mips.md: add mips_mtc1_s2
6225         
6226 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
6227
6228         * unwind.c: New file, move the unwind info encoding functions here from
6229         aot-compiler.c, so they could be used at runtime too.
6230
6231 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
6232
6233         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
6234         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
6235         
6236 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
6237
6238         * mini-mips.c: cleanup warnings
6239         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
6240         (mips_adjust_stackframe): handle case of taking the address of stack locals
6241         
6242 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6243
6244         * aot-compiler.c: Implement a few functions missing from the asm writer.
6245         (emit_method_code): Only write symbols for methods when using the bin
6246         writer, since the assembler can't deal with the characters in our method
6247         names.
6248
6249         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
6250
6251         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
6252         call.
6253
6254         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
6255         a bit to also restore %rax.
6256
6257 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6258
6259         * mini-ppc.c: Some simple merges from mini-ppc64.c.
6260
6261 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6262
6263         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
6264         arguments.
6265
6266 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6267
6268         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
6269
6270         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
6271         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
6272
6273         * exceptions-ppc64.c: Removed.
6274
6275         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
6276
6277 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6278
6279         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
6280         tramp-ppc64.c.
6281
6282         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
6283
6284         * tramp-ppc64.c: Removed.
6285
6286 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6287
6288         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
6289         the TYPESPEC table.
6290
6291 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6292
6293         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
6294
6295         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
6296         mini-ppc.h instead of mini-ppc64.h.
6297
6298         * mini-ppc64.h: Removed.
6299
6300 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6301
6302         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
6303         
6304         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
6305         
6306 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6307
6308         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
6309         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
6310         code easier.
6311
6312 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6313
6314         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
6315
6316 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6317
6318         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
6319
6320 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6321
6322         * basic-simd.cs: Tests for operator == and != on Vector4f.
6323
6324 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6325
6326         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
6327
6328         * simd-intrinsics.c: Kill useless enum.
6329
6330 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6331
6332         * cpu-mips.md: add long_conv_to_ovf_i4_2
6333         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
6334
6335 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6336
6337         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
6338         
6339         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
6340
6341 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6342
6343         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
6344         
6345 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6346
6347         * basic-simd.cs: Add tests for new methods.
6348
6349 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6350
6351         * simd-intrinsics.c: Add support for operator == and !=
6352         on Vector4(u)i.
6353
6354         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
6355
6356 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6357
6358         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
6359
6360 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
6361
6362         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
6363
6364         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
6365         MONO_PATCH_INFO_ICALL_ADDR.
6366
6367         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
6368
6369         * aot-compiler.c: Resurrect full-aot support.
6370
6371 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6372
6373         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
6374         
6375 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6376
6377         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
6378         
6379 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
6380
6381         * basic-simd.cs: Fix tests to work under ppc.
6382         Remove tests for methods that will be removed.
6383
6384 2008-12-03  Mark Probst  <mark.probst@gmail.com>
6385
6386         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
6387         generic type (via a typedef or typeref) correctly.
6388
6389 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
6390
6391         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
6392         diagnose an assertion failure.
6393
6394 2008-12-02  Mark Probst  <mark.probst@gmail.com>
6395
6396         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
6397         Fix trampoline size.
6398
6399         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
6400         conversion opcodes are implemented natively instead via emulation.
6401
6402 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6403
6404         * cpu-mips.md: remove mips_xori
6405
6406         * mini-ops.h:  remove mips_xori
6407
6408         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
6409
6410         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
6411         
6412         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
6413         
6414 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6415
6416         * cpu-mips.md: fix instruction lengths.
6417
6418         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
6419
6420         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
6421
6422         * mini-ops.h: fix slti / sltiu op profiles.
6423         
6424 2008-12-02  Martin Baulig  <martin@ximian.com>
6425
6426         * method-to-ir.c (mono_method_to_ir): Disable debugging
6427         information for the init locals block to make the debugger stop
6428         after all locals have been initalized.
6429
6430 2008-12-02  Martin Baulig  <martin@ximian.com>
6431
6432         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
6433         running inside the debugger.
6434
6435 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
6436
6437         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
6438         is enabled.
6439
6440         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
6441         alu->alu imm optimization which only shows if deadce is disabled.
6442
6443         * aot-compiler.c: Rename the function names for the binary and asm writers
6444         so they can coexist in the same process. Rework the xdebug code to use the
6445         asm writer. This avoids the need to call into the runtime to dump the
6446         debugging info. Add more debugging info for types.
6447
6448         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
6449
6450         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
6451         cpu description tables, they can't occur in cpu-<ARCH>.md.
6452
6453         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
6454         the stack in CEE_LDFLDA. Fixes #450542.
6455
6456         * generics.cs: Add a new test.
6457
6458 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6459
6460         * mini-ops.h: updated MIPS opcodes
6461         * mini-mips.c: decompose long opts
6462         * mini-mips.h: decompose long opts
6463         
6464 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
6465
6466         * cpu-mips.md: fix length on int_rem_un
6467         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
6468         
6469 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
6470
6471         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
6472
6473         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
6474
6475 2008-11-29  Martin Baulig  <martin@ximian.com>
6476
6477         * mini-exceptions.c (mono_handle_native_sigsegv): Check
6478         mono_debug_using_mono_debugger() in addition to the
6479         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
6480
6481 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6482
6483         * mini-ops.h: updated more MIPS opcodes
6484         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
6485         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
6486         
6487 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6488
6489         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
6490
6491 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6492
6493         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
6494         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
6495         * mini-ops.h: correct selected mips opcode entries
6496         
6497 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6498
6499         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
6500         make them work.
6501
6502 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6503
6504         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
6505
6506 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6507
6508         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
6509         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
6510         * mini-mips.h: disable IMT
6511         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
6512         
6513 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6514
6515         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
6516
6517 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6518
6519         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
6520
6521 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
6522
6523         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
6524         consistency.
6525
6526 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6527
6528         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
6529         for Set/GetVector aligned versions.
6530
6531 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6532
6533         * basic-simd.cs: Add tests for Get/SetVector.
6534
6535 2008-11-27  Mark Probst  <mark.probst@gmail.com>
6536
6537         * mini.c: Removed g_slist_append_mempool().  Now in
6538         metadata/mempool.c.
6539
6540 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6541
6542         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
6543         size properly and make the bounds check optional.
6544
6545         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
6546         for SetVector and IsAligned.
6547
6548 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
6549
6550         * mini.c: Remove unused mono_normalize_opcodes () function.
6551
6552 2008-11-26  Mark Probst  <mark.probst@gmail.com>
6553
6554         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
6555         using the new atomic add ops now.
6556
6557         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
6558         add.
6559
6560 2008-11-26  Mark Probst  <mark.probst@gmail.com>
6561
6562         * mini-ppc64.c: Several fixes.
6563
6564 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6565
6566         * cpu-mips.md: added jump_table
6567         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
6568
6569 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6570
6571         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
6572
6573 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6574
6575         * mini-ops.h: corrected a handful of MIPS opcodes.
6576
6577 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6578
6579         * aot-compiler.c: MIPS to use ELF writer
6580
6581 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6582
6583         * mini-codegen.c: remove MIPS specific assert.
6584
6585 2008-11-25  Mark Probst  <mark.probst@gmail.com>
6586
6587         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
6588         fixes.  PPC64 now passes most of the runtime regressions.
6589
6590 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
6591
6592         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
6593         volatile intervals a bit.
6594
6595 2008-11-24  Mark Probst  <mark.probst@gmail.com>
6596
6597         * basic-long.cs: New test case.
6598
6599 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
6600
6601         * mini.c (mini_method_compile): Disable globalra for large methods for 
6602         now.
6603
6604         * regalloc2.c (order_moves): Add fp support.
6605
6606         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
6607         source bblock ends with an OP_BR_REG.
6608
6609         * ratests.cs: Add a new test.
6610
6611 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6612
6613         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
6614         sharing.  PPC64 now passes generics.exe.
6615
6616 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6617
6618         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
6619
6620 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
6621
6622         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
6623         memory when mono_jit_info_table_find () can't find the method in the
6624         LMF case.
6625
6626         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
6627         AOTed code too.
6628         
6629         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
6630         writer too.
6631
6632 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6633
6634         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
6635         Several fixes.  PPC64 now runs exceptions.exe and
6636         devirtualization.exe.
6637
6638 2008-11-22  Mark Probst  <mark.probst@gmail.com>
6639
6640         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
6641         arrays.exe and basic-math.exe.
6642
6643 2008-11-22  Mark Probst  <mark.probst@gmail.com>
6644
6645         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
6646         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
6647
6648 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6649
6650         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
6651
6652 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6653
6654         * method-to-ir.c: Move bounds checking macros to ir-emit.h
6655
6656         * ir-emit.h: Move macros from method-to-ir.c to here.
6657
6658 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6659
6660         * mini-ops.h: Correct the long simd ops to use LREG.
6661
6662 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
6663
6664         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
6665         
6666         * mini-ops.h: Correct the dreg type of a few long opcodes.
6667
6668         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
6669         Add netbsd support.
6670
6671 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
6672
6673         * mini-ppc.c: remove negative stack references in epilog
6674         for platforms that don't support the red zone.
6675
6676 2008-11-21  Mark Probst  <mark.probst@gmail.com>
6677
6678         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
6679         point regs.  Now PPC64 passes basic-calls.exe.
6680
6681 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6682
6683         * basic-simd.cs: Add tests for accessors of Vector2l.
6684
6685 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6686
6687         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
6688
6689         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
6690         
6691         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
6692
6693 2008-11-21  Mark Probst  <mark.probst@gmail.com>
6694
6695         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
6696         PPC64 passes basic-long.exe.
6697
6698 2008-11-20  Mark Probst  <mark.probst@gmail.com>
6699
6700         * decompose.c: Decompose carry and overflow add on PPC64 like on
6701         other 64 bit archs.  Don't decompose sub at all on PPC64.
6702
6703         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
6704         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
6705         basic-long.exe.
6706
6707 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6708
6709         * basic-simd.cs: Add tests for accessors of Vector2d.
6710
6711 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6712
6713         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
6714
6715         * cpu-x86.md: Same.
6716
6717         * mini-x86.c (mono_arch_output_basic_block): Same.
6718         
6719         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
6720
6721 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6722
6723         * basic-simd.cs: Add tests for accessors of Vector4f.
6724
6725 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6726
6727         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
6728
6729         * cpu-x86.md: Same.
6730
6731         * mini-x86.c (mono_arch_output_basic_block): Same.
6732         
6733         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
6734
6735 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6736
6737         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
6738
6739 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6740
6741         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
6742
6743         * cpu-x86.md: Same.
6744
6745         * mini-x86.c (mono_arch_output_basic_block): Same.
6746         
6747         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
6748
6749 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6750
6751         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
6752
6753 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6754
6755         * simd-intrinsics.c: Enable setters for Vector16sb.
6756
6757 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6758
6759         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
6760
6761         * cpu-x86.md: Same.
6762
6763         * mini-x86.c (mono_arch_output_basic_block): Same.
6764         
6765         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
6766
6767 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
6768
6769         * simd-intrinsics.c: Implement setter for Vector8us.
6770
6771 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
6772
6773         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
6774         for dead variables.
6775
6776 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
6777
6778         * mini-ppc.c: remove references to the red zone in the prolog
6779         (for systems that don't support it).
6780
6781 2008-11-19  Mark Probst  <mark.probst@gmail.com>
6782
6783         * cpu-ppc64.md: Fixed a few instruction lengths.
6784
6785         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
6786         now.
6787
6788 2008-11-19  Mark Probst  <mark.probst@gmail.com>
6789
6790         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
6791         basic.exe now.
6792
6793 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
6794
6795         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
6796
6797 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
6798
6799         * mini-ops.h: Added OP_INSERT_I2.
6800
6801         * cpu-x86.md: Same.
6802
6803         * mini-x86.c (mono_arch_output_basic_block): Same.
6804         
6805         * simd-intrinsics.c: Implement setter for Vector8s.
6806
6807         * simd-methods.h: Add the names of get setters of Vector8s.
6808
6809 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
6810
6811         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
6812         
6813         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
6814         parameters.
6815
6816         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
6817
6818 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6819
6820         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
6821         for PPC64.  An empty program runs now.
6822
6823 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
6824
6825         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
6826
6827         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
6828         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
6829         info for JITted code is emitted into a shared library, loadable into gdb.
6830
6831 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6832
6833         * Makefile.am: Changes to build PPC64.
6834
6835         * mini-arch.h: Include mini-ppc64.h on PPC64.
6836
6837 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6838
6839         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
6840         in PPC code up to r119147.
6841
6842 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6843
6844         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
6845         cpu-ppc64.md: Changes for PPC64.
6846
6847         Based on code submitted by andreas.faerber@web.de at
6848         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
6849         X11/MIT license.
6850
6851 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6852
6853         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
6854         cpu-ppc64.md: Copied from the corresponding PPC files from
6855         r118846.
6856
6857 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
6858
6859         * mini-ops.h: Added OP_ROUND.
6860
6861         * cpu-x86.md: Added round.
6862
6863         * mini-x86.c: Added support for intrinsicing Math.Round (double).
6864
6865         * basic-math.cs: Added test_0_round to test rounding.
6866
6867         Contributed under MIT/X11 license.
6868
6869 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
6870
6871         * aot-compiler.c : Fix the Winx64 build.
6872
6873         Contributed under MIT/X11 license.
6874
6875 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6876
6877         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
6878         in OP_EXTRACT_R8 to avoid possible stack corruption.
6879
6880 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6881
6882         * mini-ops.h: Added OP_EXTRACT_R8/I8.
6883
6884         * cpu-x86.md: Added extract_r8.
6885
6886         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
6887         
6888         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
6889         a couple of OP_EXTRACT_I4.
6890
6891         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
6892
6893         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
6894
6895 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6896
6897         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
6898         and not 4.1. 
6899
6900 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
6901
6902         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
6903         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
6904
6905         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
6906         are not needed any more.
6907
6908         * mini.h: Remove the unused INS_LIST macros.
6909
6910         * mini.c (mini_method_compile): Remove a disable globalra case which is no
6911         longer needed.
6912
6913         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
6914         ir-emit.h.
6915
6916         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
6917         mono_alloc_ireg () instead.
6918
6919         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
6920         macros.
6921
6922         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
6923         on amd64.
6924
6925         * aot-runtime.c (load_aot_module): Disable AOT when running under
6926         CAS.
6927
6928         * mini-amd64.h: Change the monitor fastpath defines to check for
6929         !PLATFORM_WIN32 so they work on *bsd too.
6930
6931         * mini.h mini.c mini-hhpa.c: Remove more unused code.
6932
6933         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
6934
6935         * mini.h (MonoCompile): Remove new_ir flag.
6936
6937         * regalloc.h regalloc.c: Remove unused code.
6938
6939         * cpu-*.md: Remove more unused opcodes.
6940
6941         * simple-cee-ops.h simple-mini-ops.h: Removed.
6942
6943         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
6944         
6945 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
6946
6947         * aliasing.h: Removed.
6948
6949         * *.c: Remove references to aliasing.h and inssel.h.
6950
6951         * mini.c: Remove additional unused functions.
6952
6953         * mini-ops.h cpu-*.md: Remove unused opcodes.
6954
6955 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
6956
6957         Remove the old JIT code.
6958
6959         * inssel*.brg: Removed.
6960
6961         * ssa.c abcremoval.c aliasing.c: Removed.
6962
6963         * ssa2.c: Renamed to ssa.c.
6964
6965         * abcremoval2.c: Renamed to abcremoval.c.
6966
6967         * *.c: Removed all !cfg->new_ir code.
6968
6969         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
6970         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
6971
6972         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
6973         
6974 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
6975
6976         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
6977         to simplify the code and cut back on the number of global symbols in the AOT
6978         file.
6979         
6980         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
6981
6982 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
6983
6984         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
6985         with the got/got_info tables.
6986
6987         * mini.h: Bump AOT file format version.
6988         
6989         * unwind.h: New file, contains definitions for stack unwinding.
6990
6991         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
6992         to cfg->unwind_ops.
6993         
6994         * aot-compiler.c: Generalize the emitting of unwind information to use the
6995         information in cfg->unwind_ops.
6996
6997         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
6998
6999         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
7000         AOT method frames. Enable writing symbols for methods by default.
7001
7002 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
7003
7004         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
7005         and make it work with vectors of element sizes 1, 2 and 4.
7006
7007         * simd-intrinsics.c: Enable getter for all vectors with element size
7008         1, 2 or 4.
7009
7010         * simd-methods.h: Add the names of other getters.
7011
7012         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
7013
7014         * cpu-x86.md: Same.
7015
7016         * mini-x86.c: Same.
7017
7018 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
7019
7020         * mini-ppc.h: portability fix.
7021
7022 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
7023
7024         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
7025         buggy and will overwrite it.
7026
7027 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
7028
7029         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
7030         Use it to emit local symbols for all methods so AOTed methods show up with
7031         their full name in gdb/valgrind output.
7032
7033 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
7034
7035         * mini-ppc.c: portability fixes.
7036
7037 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
7038
7039         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
7040         entries out of the if (!generic_shared...) code so it is always done.
7041         (mono_class_init_trampoline): Do the patching when running under valgrind
7042         too, newer versions of valgrind have no problems with it.
7043
7044 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
7045
7046         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
7047         further sections.
7048
7049 2008-11-13  Mark Probst  <mark.probst@gmail.com>
7050
7051         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
7052         filters.
7053
7054 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7055
7056         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
7057
7058 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7059
7060         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
7061
7062         * cpu-x86.md: Same.
7063
7064         * mini-x86.c: Same.
7065
7066         * simd-intrinsics.c: Same.
7067
7068 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7069
7070         * simd-intrinsics.c: Enable constructor intrinsics for all types.
7071
7072 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7073
7074         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
7075         to work with more Vector types.
7076
7077 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7078
7079         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
7080         store the elemens directly instead of using and intermediate.
7081
7082 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
7083
7084         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
7085
7086         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
7087         to preserve %eax for aot plt trampolines.
7088
7089         * aot-compiler.c (compile_method): Don't skip synchronized methods.
7090         (encode_method_ref): Flag synchronized methods so they won't go through
7091         the AOT trampoline.
7092
7093         * aot-compiler.c: Additional work to support AOTing synchronized methods/
7094         wrappers.
7095
7096         * cpu-ia64.md (jmp): Increase max length.
7097
7098 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
7099
7100         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
7101         open generic classes.
7102
7103         * aot-compiler.c: Enable the ELF writer on ELF platforms.
7104
7105         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
7106         box+brtrue optimization since it causes test failures on x86.
7107
7108 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
7109
7110         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
7111
7112         * cpu-x86.md: Same.
7113
7114         * mini-x86.c: Same.
7115
7116         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
7117         for simd ctor values. 
7118
7119         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
7120         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
7121
7122 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
7123
7124         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
7125         LogicalRightShift.
7126
7127         * simd-instrincs.c: Same.
7128
7129         * basic-simd.cs: Same.
7130
7131 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
7132
7133         * ratests.cs: Add more tests.
7134
7135         * regalloc2.c (add_spill_code): Handle more corner cases.
7136
7137 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
7138
7139         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
7140         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
7141         both the source an destination of an instruction.
7142
7143 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
7144
7145         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
7146         wapihandles.c: more portability changes.
7147
7148 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
7149
7150         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
7151         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
7152         safe to execute in a signal handler and the kernel provides better
7153         the info in /proc/self/smaps. Avoid the assert on sigaction during
7154         cleanup.
7155
7156 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
7157
7158         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
7159         do the bblock linking hack if it is actually needed.
7160
7161         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
7162         up linking.
7163
7164         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
7165         crash problem is fixed.
7166
7167         * branch-opts.c (mono_remove_critical_edges): Link up newly added
7168         bblocks.
7169
7170         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
7171         for catch clauses.
7172         (mini_method_compile): Set the starting value of next_vreg to 
7173         MAX_IREGS + MAX_FREGS when using globalra.
7174
7175         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
7176         filter clauses with BB_EXCEPTION_HANDLER.
7177
7178         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
7179
7180 2008-11-10  Mark Probst  <mark.probst@gmail.com>
7181
7182         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
7183         space for stdcall.  Fixes regressions on Win32.
7184
7185 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
7186
7187         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
7188         bblocks.
7189         (linear_scan): Remove an assert which doesn't seem to be needed.
7190
7191         * local-propagation.c (mono_local_deadce): Avoid a call to
7192         MONO_DELETE_INS which would screw up the instruction linking.
7193
7194         * mini.c (mono_decompose_op_imm): Make this work with globalra.
7195
7196         * regalloc2.c: Upgrade to work the current JIT code.
7197
7198 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
7199
7200         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
7201         case.
7202
7203         * aot-runtime.c: Remove some dead code.
7204
7205         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
7206         consistency.
7207         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
7208
7209         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
7210         trampolines using sscanf since atoi doesn't work on large unsigned values.
7211
7212         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
7213         Initialize code_size.
7214
7215 2008-11-08  Mark Probst  <mark.probst@gmail.com>
7216
7217         * method-to-ir.c (mini_emit_inst_for_method): Make
7218         Interlocked.CompareExchange work for Int arguments on 32 bit
7219         archs, as well.
7220
7221 2008-11-07  Mark Probst  <mark.probst@gmail.com>
7222
7223         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
7224
7225 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
7226
7227         * main.c Fix MSVC build.
7228
7229         Contributed under MIT/X11 license.
7230
7231 2008-11-06  Mark Probst  <mark.probst@gmail.com>
7232
7233         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
7234         alignment larger than 8 bytes are aligned correctly, too.
7235
7236         * mini.c: Honor the min_align field of MonoClass when laying out
7237         the stack.
7238
7239 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
7240
7241         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
7242
7243         * aot-compiler.c (emit_plt): Fix a warning.
7244         
7245         * aot-compiler.c: Implement ARM support in the binary writer.
7246
7247 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7248
7249         * basic-simd.cs: Add test for getter with byref arg.
7250         Fix the naming of a few tests.
7251         Add missing checks to a test.
7252
7253 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
7254
7255         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
7256
7257         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
7258         most of the full-aot support for monitor enter/exit trampolines.
7259
7260         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
7261         enter/exit trampoline creation functions.
7262
7263         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
7264         make dist.
7265
7266 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
7267
7268         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
7269         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
7270         implement the needed functionality without adding crap to the runtime.
7271
7272 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
7273
7274         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
7275         non-x86 builds.
7276
7277         * mini.c (mono_build_date): New global version holding the build date in
7278         string format.
7279         
7280         * Makefile.am (buildver.c): Generate a file containing the build date.
7281
7282         * main.c: Set the build date from the generated file.
7283
7284         * mini.c (mono_get_runtime_build_info): New helper function returning build
7285         information in a string format.
7286         
7287         * driver.c (mono_main): Print the build date in --version.
7288
7289         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
7290         file when the bind-to-runtime-version option is used.
7291
7292 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7293
7294         * simd-intrinsics.c: Fix bug when using getters and byref args. 
7295
7296 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7297
7298         * simd-methods.h: Rename prefetch methods.
7299
7300         * simd-intrinsics.c: Same.      
7301
7302 2008-11-05  Mark Probst  <mark.probst@gmail.com>
7303
7304         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
7305         sizes.
7306
7307 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7308
7309         * aot-compiler.c: Use the bundled elf header files instead of depending on
7310         the system one.
7311         
7312         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
7313         mempool.
7314
7315         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
7316         on every call.
7317
7318 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
7319
7320         * cpu-x86.md: Add store nta ops.
7321
7322         * mini-ops.h: Same.
7323
7324         * mini-x86.c: Same.
7325
7326         * mini.h: Add an enum for simd prefetch modes.
7327
7328         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
7329         of store. Use the changed code to support store nta.
7330
7331         * simd-intrinsics.c: Add prefetch ops for all vector types.
7332
7333 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7334
7335         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
7336         threads.
7337         
7338         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
7339         names.
7340
7341         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
7342         trampolines.
7343
7344 2008-11-04  Mark Probst  <mark.probst@gmail.com>
7345
7346         * mini-x86.c: Fixed commit.
7347
7348 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7349
7350         * aot-compiler.c (emit_plt): Align the plt section only on x86.
7351
7352 2008-11-04  Mark Probst  <mark.probst@gmail.com>
7353
7354         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
7355         and MONITOR_EXIT, for the ASM fastpaths.
7356
7357         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
7358         available.
7359
7360         * mini.c, patch-info.h: Signature and patch infos for
7361         Monitor.Enter/Exit trampolines.
7362
7363         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
7364
7365         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
7366         Monitor.Enter/Exit ASM fastpath for Linux.
7367
7368 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7369
7370         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
7371
7372         * objects.cs: Add a new test.
7373         
7374         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
7375
7376         * aot-runtime.c (load_method): Run class initialization in the PLT case even
7377         if MONO_LOG_LEVEL is set.
7378
7379         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
7380
7381         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
7382
7383         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
7384         
7385         * aot-compiler.c: Change the relocation code to use virtual addresses instead
7386         of file offsets. Align the sections belonging to the data segment to 
7387         PAGESIZE.
7388
7389 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
7390
7391         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
7392         elf.h. Port it to amd64.
7393
7394 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
7395
7396         * driver.c: Enable SIMD by default.
7397
7398 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
7399
7400         * cpu-x86.md: Add prefetch op.
7401
7402         * mini-ops.h: Same.
7403
7404         * mini-x86.c: Same.
7405
7406         * mini.h: Add an enum for simd prefetch modes.
7407
7408         * simd-methods.h: Add prefetch function names.
7409
7410         * simd-intrinsics.c: Add prefetch ops for all vector types.
7411
7412 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
7413
7414         * aot-compiler.c (emit_bytes): Speed this up a little.
7415
7416 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
7417
7418         * aot-compiler.c: Add JIT time etc. statistics.
7419         
7420         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
7421
7422         * mini.h (MonoCompile): Add 'got_offset' field.
7423
7424         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
7425         method_got_offsets array.
7426
7427         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
7428         wrappers.
7429
7430         * aot-compiler.c (compile_method): Add generic method instances referenced
7431         by the method to the list of methods to be compiled, this is required so if
7432         A<T> references B<T>, and another assembly references A<int>, then it will
7433         also get a copy of B<int>.
7434
7435         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
7436         when checking for monitor enter/exit.
7437
7438 2008-10-30  Mark Probst  <mark.probst@gmail.com>
7439
7440         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
7441         for Monitor.Enter and Monitor.Exit if enabled.
7442
7443         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
7444         Solaris.
7445
7446 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
7447
7448         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
7449         of an OP_MOVE. Fixes #440046.
7450
7451         * basic-long.cs: Add a new test.
7452
7453 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
7454
7455         * mini.h: Add synchronization note for the managed counter-part.
7456
7457         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
7458         returns the simd caps of the current cpu.
7459
7460 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
7461
7462         * basic-simd.cs: Remove Console.WriteLine.
7463
7464 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7465
7466         * basic-simd.cs: New tests for Vector2ul.
7467
7468 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7469
7470         * simd-intrinsics.c: Add new vector type Vector2ul.
7471
7472 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7473
7474         * basic-simd.cs: New tests for Vector2l.
7475
7476 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7477
7478         * cpu-x86.md: Add long version of most packed int ops.
7479
7480         * mini-ops.h: Same.
7481
7482         * mini-x86.h: Same.
7483
7484         * simd-intrinsics.c: Add new vector type Vector2l.
7485
7486 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7487
7488         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
7489
7490         * simd-methods.h: Remove SN_op_BitwiseXor.
7491
7492 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
7493
7494         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
7495         alignment.
7496
7497 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7498
7499         * basic-simd.cs: Test for Vector2d.
7500
7501         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
7502         value.
7503
7504 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7505
7506         * cpu-x86.md: Add double version of all packed float ops.
7507
7508         * mini-ops.h: Same.
7509
7510         * mini-x86.h: Same.
7511
7512         * simd-intrinsics.c: Add new vector type Vector2d.
7513
7514         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
7515
7516         * simd-methods.h: Add Duplicate.
7517
7518 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7519
7520         * basic-simd.cs: Test for packing with signed saturation.
7521
7522 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
7523
7524         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
7525         found in the TYPESPEC table.
7526
7527 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
7528
7529         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
7530         too.
7531
7532         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
7533
7534         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
7535         instead of the RVA, since the RVA can be changed by tools like the cil 
7536         stripper.
7537
7538         * method-to-ir.c (mono_method_to_ir2): Ditto.
7539
7540         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
7541         (deserialize_variable): Ditto.
7542
7543 2008-10-25  Martin Baulig  <martin@ximian.com>
7544
7545         * debug-mini.c (write_variable): Use
7546         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
7547
7548 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7549
7550         * cpu-x86.md: Add unsigned variants of packd and packw.
7551
7552         * mini-ops.h: Same.
7553
7554         * mini-x86.h: Emit the right instruction for packd and packw.
7555         Add unsigned variants of packd and packw.
7556
7557         * simd-intrinsics.c: Packd and packw were used in place of their
7558         unsigned variants. Change that.
7559         Add intrinsics for (Signed)PackWithSignedSaturation.
7560
7561         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
7562
7563 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7564
7565         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
7566
7567 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7568
7569         * mini-ops.h: Remove dword packed add/sub with saturation ops.
7570
7571         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
7572
7573         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
7574         sse instructions.
7575
7576         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
7577
7578 2008-10-24  Mark Probst  <mark.probst@gmail.com>
7579
7580         * method-to-ir.c, mini.c: Special casing for the synchronized
7581         wrapper for the ldtoken+GetTypeFromHandle case.
7582
7583 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
7584
7585         * mini.c (mono_replace_ins): Move this to branch-opts.c.
7586
7587         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
7588         created/split bblocks.
7589
7590 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7591
7592         * mini-ops.h: Add packed signed mul high.
7593         
7594         * cpu-x86.md: Same.
7595
7596         * mini-x86.c (mono_arch_output_basic_block): Same.
7597
7598         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
7599
7600         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
7601
7602 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7603
7604         * basic-simd.cs: Tests for Vector16sb.
7605
7606 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
7607
7608         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
7609
7610 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
7611
7612         * mini-ops.h: Add packed signed min, max and compare greater.
7613         
7614         * cpu-x86.md: Same.
7615
7616         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
7617         saturation.
7618
7619         * simd-methods.h: Add CompareGreaterThan.
7620
7621         * simd-methods.h: Remove CompareEquals.
7622
7623         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
7624
7625         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
7626
7627         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
7628         CompareEqual.
7629
7630 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
7631
7632         * basic-simd.cs: Fix tests due to change in the API.
7633
7634 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7635
7636         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
7637
7638 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7639
7640         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
7641
7642         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
7643         inst_offset as this has invalid values for LDADDR.
7644
7645 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7646
7647         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
7648
7649         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
7650
7651 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7652
7653         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
7654         for accessing field->data.
7655
7656 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7657
7658         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
7659
7660 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7661
7662         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
7663
7664         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
7665
7666 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7667
7668         * dominators.c (mono_compute_natural_loops): Allocate GList enties
7669         from the cfg mempool.
7670
7671 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
7672
7673         * basic-simd.cs: Tests for new methods in Vector8us.
7674
7675 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
7676
7677         * mini-ops.h: Add multiply and store high.
7678         
7679         * cpu-x86.md: Same.
7680
7681         * mini-x86.c (mono_arch_output_basic_block): Same.
7682
7683         * simd-methods.h: Same.
7684
7685         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
7686         and CompareEqual.
7687
7688 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
7689
7690         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
7691         mono_class_setup_vtable ().
7692
7693         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
7694         mono_class_get_vtable_entry () for accessing klass->vtable.
7695
7696         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
7697
7698         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
7699         found.
7700
7701         * method-to-ir.c (mono_save_token_info): Don't save references made from
7702         wrappers.
7703
7704         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
7705         of generic instances.
7706
7707         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
7708
7709 2008-10-19  Mark Probst  <mark.probst@gmail.com>
7710
7711         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
7712         OP_JMP depends on the method signature.  Calculate it properly.
7713
7714 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
7715         
7716         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
7717         called directly.
7718
7719         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
7720         instances.
7721         (emit_extra_methods): Add another table mapping method indexes to 
7722         offsets in the extra_method_info table.
7723
7724         * mini.h: Bump AOT file format version.
7725         
7726         * aot-runtime.c: Merge most of the code from mono_aot_get_method
7727         and mono_aot_get_method_from_token () into one function.
7728
7729 2008-10-19  Mark Probst  <mark.probst@gmail.com>
7730
7731         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
7732         separate counter.
7733
7734 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
7735
7736         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
7737         methods.
7738
7739         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
7740         disable_aot.
7741
7742         * mini.c (mono_patch_info_equal): Compare the generic context as well.
7743
7744         * mini.h: Bump aot file format version.
7745
7746         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
7747         AOT file can contain native code for methods which are not in the METHOD
7748         table. Generate code for non-sharable generic instances of generic methods
7749         found in the METHODSPEC table.
7750         
7751         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
7752         encoding generic type handles.
7753
7754         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
7755         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
7756
7757         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
7758         macros + MONO_ADD_INS.
7759
7760         * mini.c (mono_jump_info_token_new2): New function which takes a generic
7761         context as well.
7762
7763         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
7764
7765         * mini.h: Bump aot file format version.
7766
7767         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
7768
7769 2008-10-17  Mark Probst  <mark.probst@gmail.com>
7770
7771         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
7772         platforms, with definable stack alignment value.  Set to 16 now
7773         for all platforms.
7774
7775         * mini.c, mini.h, driver.c: Command line option for disabling
7776         stack alignment.
7777
7778 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7779
7780         * basic-simd.cs: Tests for new methods in Vector4ui.
7781
7782 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7783
7784         * mini-ops.h: Add packed int shuffle.
7785         
7786         * cpu-x86.md: Same.
7787
7788         * mini-x86.c (mono_arch_output_basic_block): Same.
7789
7790         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
7791         extract mask, max, min, shuffle.
7792
7793         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
7794
7795 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7796
7797         * basic-simd.cs: Tests for new methods in Vector8us.
7798
7799 2008-10-17  Mark Probst  <mark.probst@gmail.com>
7800
7801         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
7802         RuntimeTypeHandle, not a TypedReference.
7803
7804 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
7805
7806         * simd-intrinsics.c: remove relocations.
7807
7808 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
7809
7810         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
7811         optimizations from the x86 backend.
7812
7813 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
7814
7815         * simd-methods.h, simd-intrinsics.c: debloat method names and
7816         prepare for no relocations.
7817
7818 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7819
7820         * mini-ops.h: Add packed min/equal and sum of absolute differences.
7821         
7822         * cpu-x86.md: Same.
7823
7824         * mini-x86.c (mono_arch_output_basic_block): Same.
7825
7826         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
7827         extract mask, max, min and sum of absolute differences.
7828
7829         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
7830         method name.
7831
7832 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7833
7834         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
7835         Renamed one test for consistency.
7836
7837 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7838
7839         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
7840         fix to the code that deal with other blocks.
7841
7842 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7843
7844         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
7845
7846 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7847
7848         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
7849         that deals with vreg interference. Explicitly check for OP_LDADDR to be
7850         able to process the source reg.
7851
7852 2008-10-16  Martin Baulig  <martin@ximian.com>
7853
7854         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
7855
7856         * inssel.brg: Add `OP_HARD_NOP'.
7857
7858         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
7859
7860         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
7861         `OP_HARD_NOP' instruction when running inside the debugger.
7862
7863         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
7864         `OP_HARD_NOP' instruction when running inside the debugger.
7865
7866 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7867
7868         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
7869         now works. The issue with the regalloc tripping up no longer
7870         happens.
7871
7872         * simd-intrinsics.c (load_simd_vreg): Same.
7873
7874 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7875         
7876         * basic-simd.cs: Tests for new Vector8ui methods.
7877
7878 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7879
7880         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
7881         only for type. This fixes crashes where MonoInst::klass is checked
7882         for ops of type != VTYPE or OBJ.
7883
7884         * simd-intrinsics.c (load_simd_vreg): Same.
7885
7886 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7887
7888         * mini-ops.h: Add ops for packed shuffle/max/avg and
7889         extract mask.
7890         
7891         * cpu-x86.md: Same.
7892
7893         * mini-x86.c (mono_arch_output_basic_block): Same.
7894
7895         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
7896         extract mask.
7897
7898         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
7899         to emit extract mask op.
7900
7901         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
7902         to emit word shuffles.
7903
7904 2008-10-15  Mark Probst  <mark.probst@gmail.com>
7905
7906         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
7907         the largest alignment needed by a variable, but at least
7908         sizeof(gpointer).
7909
7910 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7911
7912         * basic-simd.cs: Tests for the fixes in the last commit.
7913
7914 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7915
7916         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
7917         no longer handles STACK_PTR input.
7918
7919         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
7920
7921         * simd-intrinsics.c (load_simd_vreg): New function that works like 
7922         get_simd_vreg   but handles STACK_PTR input.
7923
7924         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
7925         as the input can be an arbitrary pointer.
7926
7927         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
7928         LDADDR local optimization directly otherwise use a store op.
7929
7930 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7931
7932         * basic-simd.cs: Tests for dup low and dup high.
7933
7934 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7935
7936         * mini-ops.h: Add dup low and dup high ops.
7937         
7938         * cpu-x86.md: Same.
7939
7940         * mini-x86.c (mono_arch_output_basic_block): Same.
7941
7942         * simd-intrinsics.c (vector4f_intrinsics): Same.
7943
7944 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7945
7946         * basic-simd.cs: Tests for recently added functionality.
7947
7948 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7949
7950         * mini-ops.h: Add remaining sse1 fp ops.
7951         
7952         * cpu-x86.md: Add remaining sse1 fp ops.
7953
7954         * mini-x86.c (mono_arch_output_basic_block): Same.
7955
7956         * mini.h: Add enum for simd FP compare conditions.
7957
7958         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
7959
7960         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
7961         so the backed can generate the appropriate op.
7962
7963 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7964         This patch squeese one more byte from the SimdIntrinsc struct.
7965
7966         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
7967         a a shift amount intead of simply or'ing it.
7968
7969         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
7970
7971         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
7972         byte so we can have an aditional flags field without increasing struct size.
7973
7974         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
7975         against the simd_supported_versions bitmask.
7976
7977         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
7978
7979 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
7980
7981         * mini.c: remove rawbuffer code (the only use here is unsafe because
7982         it takes locks during signal handling and the kernel now provides much
7983         better info in proc/pid/smaps these days).
7984
7985 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
7986
7987         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
7988         OP_X86_PUSH_OBJ. Fixes #434620.
7989
7990         * objects.cs: Add a test.
7991         
7992 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
7993
7994         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
7995         that the packuswb/packusdw don't work with unsigned numbers for what
7996         would be negative numbers in signed format.
7997
7998         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
7999         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
8000
8001         * mini-ops.h: Add doubleword forms of many ops and packing ones.
8002
8003         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
8004
8005         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
8006
8007         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
8008
8009         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
8010         add more ops.
8011
8012         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
8013         version as the enum in mini.h.
8014
8015         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
8016         for sse3 ops, check the simd_version field if present. This way the code
8017         works with all versions of sse.
8018
8019 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8020
8021         * simd-intrinsics.c: Fixed intrinsic name typo.
8022
8023         * mini.h: Added missing simd exported function.
8024
8025         * basic-simd.cs: Added tests for Vector4ui.
8026         Fixed broken test for Vector16b.
8027
8028 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
8029
8030         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
8031         the max length to 64.
8032
8033 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8034
8035         * method-to-ir.c: Only do the fast virtual generic method call for
8036         non-wrapper methods.
8037
8038         * mini.h, mini-trampolines.c: The new generic virtual remoting
8039         trampoline handles virtual method calls via the vtable (as done by
8040         the fast virtual generic method calls) to remoting proxies.
8041
8042         * mini.c (mono_jit_create_remoting_trampoline): For generic
8043         methods reate a generic virtual remoting trampoline.
8044
8045         * mini-amd64.h: Enable fast virtual generic method calls again.
8046
8047 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8048
8049         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
8050         restore registers when doing tail calls.
8051
8052 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8053
8054         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
8055         Vector4ui.
8056
8057 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8058
8059         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
8060
8061 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8062
8063         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
8064
8065 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8066
8067         * basic-simd.cs: Retrofit for API changes.
8068
8069 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8070
8071         * mini-ppc.c: Handle integer stack arguments for tail calls.
8072
8073 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8074
8075         * optflags-def.h: Removed sse3 optimization.
8076
8077         * driver.c: Same.
8078
8079         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
8080         sse3.
8081
8082         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
8083
8084         * mini.h: Added enumeration with simd versions.
8085
8086         * simd-intrinsics.c (emit_intrinsics): Use the new static var
8087         for detecting SSE3.
8088
8089         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
8090
8091         * mini.c (mini_init): Call mono_simd_intrinsics_init.
8092
8093 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8094
8095         * basic-simd.cs: Added tests for Vector8u and Vector16u.
8096
8097         * basic-simd.cs: Fixed test naming.
8098
8099 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8100
8101         * mini-ops.h: Added ops for packed and saturated math, shifts
8102         and packing/unpacking.
8103
8104         * cpu-x86.md: Added descriptors for the above ops.
8105
8106         * mini-x86.c: Added code to emmit the above ops.
8107
8108         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
8109
8110 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
8111
8112         * aot-compiler.c (compile_method): Enable AOT for generic code.
8113
8114         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
8115
8116 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
8117
8118         * mini.c: add a workaround for a common screwup that ends up blamed
8119         to mono (other processes blocking signal delivery).
8120
8121 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8122
8123         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
8124         in the LDFLD/STFLD opcodes. Fixes #432673.
8125
8126         * iltests.il.in: Add a new test.
8127
8128 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
8129
8130         * mini-arm.c: attach the thread in unmanaged->managed transitions
8131         using delegates (bug #433148).
8132
8133 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
8134
8135        * basic-simd.cs: Use new ShuffleSel constants.
8136
8137 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
8138
8139         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
8140
8141         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
8142         only disable simd intrinsics if no sse2 is detected.
8143
8144         * optflags-def.h: Added sse3.
8145
8146         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
8147         is disabled.
8148
8149 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8150
8151         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
8152         when adding delegate-invoke wrappers.
8153
8154 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8155
8156         * Makefile.am: Reenable the simd tests.
8157
8158 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
8159
8160         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
8161           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
8162           other vreg is allocated to that hreg.
8163
8164         Contributed under MIT/X11 license.
8165
8166 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8167
8168         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
8169         yet checked in.
8170
8171 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
8172
8173         * basic-simd.cs: New test suite for SIMD intrinsics.
8174
8175         * Makefile.am: Added new tests.
8176
8177 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
8178
8179         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
8180
8181         * mini-ops.h: Same.
8182
8183         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
8184
8185         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
8186         using SSE2 aware opcodes.
8187
8188         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
8189         is enabled, this code path is only reachable if conversion ops are emmited after
8190         mono_method_to_ir.
8191
8192         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
8193
8194         This optimization saves 6 bytes per conversion against the old version.
8195
8196 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8197
8198         * aot-compiler.c (compile_method): Don't skip methods referencing 
8199         generic methods without a corresponding entry in token_info_hash, since
8200         encode_method_ref () can handle all generic methods now.
8201
8202         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
8203         generic context is set.
8204         
8205         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
8206         generic sharing of LDTOKEN.
8207
8208 2008-10-06  Mark Probst  <mark.probst@gmail.com>
8209
8210         * mini-amd64.h: Temporarily disabled fast virtual generic method
8211         calls because it breaks the System.Runtime.Remoting tests.
8212
8213 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8214
8215         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
8216
8217         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
8218         so inlining actually works.
8219         (check_inline_caller_method_name_limit): Ditto.
8220
8221 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
8222
8223         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
8224         64 bit safety (from Olaf Hering and Andreas Farber).
8225
8226 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8227         
8228         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
8229         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
8230         unused virtual call support code.
8231
8232         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
8233         
8234         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
8235         which can't use aot trampolines.
8236         (decode_patch): Don't create aot trampolines for methods which can't use
8237         them.
8238
8239         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
8240         use aot trampolines.
8241
8242         * mini.h: Bump AOT image format version.
8243         
8244 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
8245
8246         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
8247         to save_token_info () since cmethod is inflated for constrained calls.
8248
8249         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
8250
8251 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
8252
8253         * Makefile.am: Add build rules for ppc64.
8254         This avoids the build failing at pedump with unresolved symbols
8255         due to lack of arch_sources. Instead it will now fail earlier
8256         due to lack of cpu-ppc64.md.
8257
8258         Contributed under MIT/X11 license.
8259
8260 2008-10-04  Mark Probst  <mark.probst@gmail.com>
8261
8262         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
8263         tail calls.
8264
8265         * iltests.il.in: Add test case for tail call with many arguments.
8266
8267 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
8268
8269         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
8270         to the fast virtual generic method code until the aot case is fixed.
8271
8272 2008-10-03  Mark Probst  <mark.probst@gmail.com>
8273
8274         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
8275
8276 2008-10-03  Mark Probst  <mark.probst@gmail.com>
8277
8278         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
8279         thunks.
8280
8281 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
8282         
8283         * simd-intrinsics.c: Forgot to add this one.
8284
8285         * mini-codegen.c: Fix macro in case SIMD is not supported.
8286
8287 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
8288         
8289         This patch land initial JIT support for simd intrinsics.
8290
8291         * mini-x86.h: Added new define to make --enable_minimal work on x86.
8292
8293         * Makefile.am: Added simd-intrinsics.c
8294
8295         * simd-intrinsics.c: New file with simd instrinsic related
8296         code.
8297
8298         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
8299
8300         * cpu-x86.md: Add simd related instructions.
8301
8302         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
8303
8304         * driver.c: Added two new --regression variants.
8305
8306         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
8307
8308         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
8309
8310         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
8311         extract some complicated logic to helper functions.
8312
8313         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
8314
8315         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
8316
8317         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
8318         the specialized simplification pass.
8319
8320         * method-to-ir.c (mono_spill_global_vars): Use new macro.
8321
8322         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
8323
8324         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
8325         table.
8326
8327         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
8328         if MONO_ARCH_NEED_SIMD_BANK is defined.
8329
8330         * mini-ops.h: Added the new simd ops.
8331
8332         * mini-x86.c: Added mono_arch_xregname.
8333
8334         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
8335
8336         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
8337
8338         * mini-x86.h: Define simd related MONO_ARCH macros.
8339
8340         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
8341
8342         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
8343
8344         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
8345         MONO_CLASS_IS_SIMD to deal with simd related IR.
8346
8347         * mini.h (MonoInst): Added spill_var to the backend union.
8348
8349         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
8350
8351         * mini.h: Added forward declarations of the new simd fuctions.
8352
8353         * optflags-def.h: Added new optimization names SIMD.
8354
8355         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
8356
8357         * regalloc.h: Added support for working with 3 register banks.
8358
8359         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
8360
8361         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
8362
8363 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
8364
8365         * mini-exceptions.c: remove 64 bit related ifdef clutter.
8366
8367 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
8368
8369         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
8370         instead of one on 64 bit systems.
8371
8372         * method-to-ir.c: Remove unused includes.
8373
8374 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
8375
8376         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
8377         cfg->used_int_regs, since the two are different on arm.
8378
8379 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8380
8381         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
8382         mono_method_get_vtable_index() to get the vtable index.
8383
8384 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8385
8386         * method-to-ir.c (mono_method_to_ir2): Don't create native
8387         wrappers for array methods, because they're never called (and if
8388         they were called they wouldn't work).
8389
8390 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8391
8392         * method-to-ir.c (mono_method_to_ir2): Array methods are
8393         special-cased and must not be invoked indirectly via the (M)RGCTX
8394         when generic sharing is turned on.  Fixes #431413.
8395
8396 2008-10-01  Mark Probst  <mark.probst@gmail.com>
8397
8398         * method-to-ir.c: When generic sharing is active, call
8399         non-interface virtual generic methods via the standard trampoline.
8400
8401         * mini-trampolines.c: Handle virtual generic shared methods.
8402
8403         * mini.h, mini-x86.c, mini-x86.h: New argument for
8404         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
8405         method thunks and which is the trampoline to call if the lookup
8406         fails.  Enable the virtual generic method thunk for x86.
8407
8408         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
8409         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
8410         argument but assert that it's NULL, because these archs don't yet
8411         implement the virtual generic method thunk.  Changes in the IMT
8412         thunk data structures.
8413
8414 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
8415
8416         * aot-compiler.c (emit_globals): Avoid invalid characters in
8417         the static linking symbol.
8418
8419         * objects.cs: Add a test for the range check optimization. Fix warnings.
8420
8421         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
8422         optimization from the current JIT.
8423
8424         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
8425         later in decompose_array_access_opts () to allow more optimizations.
8426
8427         * method-to-ir.c (mono_handle_soft_float): Rename this to 
8428         mono_decompose_soft_float () for consistency.
8429
8430         * mini-ops.h: Fix arguments of OP_STRLEN.
8431
8432         * method-to-ir.c (save_cast_details): Extract the cast details saving code
8433         into a separate function.
8434         (reset_cast_details): Ditto.
8435         (handle_unbox): Save cast details. Fixes #431254.
8436
8437         * method-to-ir.c: Remove some obsolete FIXMEs.
8438
8439 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8440
8441         * ir-emit.h (alloc_dreg): Write a warning before crashing.
8442
8443 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8444
8445         * mini-codegen.c: More work on macros to make them
8446         ready for multiple regbanks.
8447
8448 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8449
8450         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
8451
8452         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
8453
8454 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8455
8456         * mini-codegen.c (mono_spillvar_offset): Proper support for
8457         multiple regbanks.
8458
8459 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
8460
8461         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
8462         the stack overflow changes.
8463
8464 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8465
8466         * mini-codegen.c: Make all bank macros depend on reg_bank.
8467
8468         * mini-codegen.c (mono_local_regalloc): Make free mask
8469         initialization regbank aware.
8470
8471 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8472
8473         * mini-codegen.c (mono_local_regalloc): Extract callee
8474         mask selection to a function and make it regbank aware.
8475
8476 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8477
8478         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
8479         code to deal with many regbanks.
8480
8481 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
8482
8483         * mini-codegen.c: More fp->regbank changes.
8484
8485 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
8486
8487         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
8488         of a hardcoded constant.
8489
8490 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
8491
8492         * method-to-ir.c (type_from_stack_type): Fix typo.
8493
8494 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
8495
8496         * mini-ia64.c (emit_move_return_value): Convert float return values to
8497         double.
8498
8499         * objects.cs: Add a new test.
8500         
8501         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
8502         VARARG methods to fix an assert later.
8503
8504         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
8505         end so it at least compiles.
8506
8507 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
8508
8509         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
8510
8511 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
8512
8513         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
8514         optimization to a new function (emit_optimized_ldloca_ir) and enable
8515         it for both ldloca and ldloca_s.
8516
8517 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
8518
8519         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
8520         gshared CASTCLASS code.
8521
8522         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
8523         amd64, where the libc stack unwinder encounters stack frames referring to
8524         native code in unmapped memory.
8525
8526         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
8527         sharing.
8528
8529         * generics.cs: Add new test.
8530
8531 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
8532
8533         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
8534         add a check that one of the ARM_FPU_ constants is defined.
8535
8536         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
8537         
8538         * mini-exceptions.c: Fix build on non-altstack platforms.
8539
8540         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
8541         sharing of vtypes.
8542
8543         * ir-emit.h: Add a comment to NEW_PCONST.
8544
8545         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
8546
8547         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
8548
8549         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
8550         after the changes to MonoJitDomainInfo.
8551
8552 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8553
8554         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
8555
8556 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8557
8558         * mini-ppc.c: Compiler warning fixes.
8559
8560 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8561
8562         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
8563         for pinvokes.
8564
8565 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8566
8567         * exceptions-ppc.c, mini-ppc.h: Compile
8568         mono_arch_handle_altstack_exception() on Darwin, too.
8569
8570 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8571
8572         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
8573         work on archs which don't have generic sharing implemented, only
8574         without the vtable_arg.
8575
8576 2008-09-26  Mark Probst  <mark.probst@gmail.com>
8577
8578         * mini.c: Added comment explaining why delegate ctor icall
8579         wrappers are compiled.
8580
8581 2008-09-26  Mark Probst  <mark.probst@gmail.com>
8582
8583         * mini.c: Don't produce trampolines to delegate ctor icall
8584         wrappers but compile them upfront.
8585
8586 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
8587
8588         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
8589         runtime-set function when going back to managed code. Currently this
8590         is used to set back the protection on the soft ovf pages and/or to
8591         throw the stack overflow exception that happened in unmanaged code.
8592
8593 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
8594
8595         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
8596         runtime-set function when going back to managed code. Currently this
8597         is used to set back the protection on the soft ovf pages and/or to
8598         throw the stack overflow exception that happened in unmanaged code.
8599
8600 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
8601
8602         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
8603         the support code for restoring stack protection after stack overflows
8604         that happen in unmanaged code. Don't set the exec permission on the
8605         soft overflow area.
8606
8607 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
8608
8609         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
8610         delegate->method_ptr is set. Fixes #428054.
8611
8612 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
8613
8614         * tests.cs: Rename to ratests.cs.
8615
8616         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
8617         emit_get_rgctx_... functions.
8618
8619 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8620
8621         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
8622
8623 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8624
8625         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
8626         before asserting that method is sharable.
8627
8628 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8629
8630         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
8631         whether method needs a static RGCTX wrapper used instead of
8632         complex conditions.
8633
8634         * generic-sharing.c, mini.h: A few functions moved to
8635         metadata/generic-sharing.c.
8636
8637 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8638
8639         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
8640         Generic code sharing for value types, which essentially means
8641         treating value type methods like static methods.  The RGCTX is
8642         passed in the same way.
8643
8644 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
8645
8646         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
8647         opcode when creating multi-dimensional arrays of open types.
8648
8649         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
8650         open generic types.
8651
8652         * generics.cs: Add a test.
8653
8654         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
8655
8656 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
8657
8658         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
8659
8660         * mini.c (mini_method_compile): Set it when running under the debugger. 
8661
8662         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
8663         vreg optimization if the flag is set.
8664
8665         * driver.c (mono_main): Add --attach= option to pass options to
8666         the attach agent.
8667
8668         * mini.c (sigquit_signal_handler): Start the attach agent.
8669
8670         * ssapre.c: Disable this to save space since it is not yet ported to
8671         linear IR.
8672
8673         * regalloc2.c: Disable this to save space.
8674
8675         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
8676
8677 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
8678
8679         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
8680         the -v option useful again.
8681
8682 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
8683
8684         * mini-amd64.c (mono_arch_output_basic_block): Add support for
8685         --break-at-bb.
8686
8687         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
8688         arrays of arrays. Fixes #428406.
8689
8690         * method-to-ir.c (mini_emit_castclass): Ditto.
8691
8692         * objects.cs: Add new test.
8693         
8694 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
8695
8696         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
8697         was wrong at it choked against target_type_is_incompatible for byref types.
8698
8699 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
8700
8701         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
8702         places.
8703
8704 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
8705
8706         * mini-exceptions.c: update a few more exceptions-related counters.
8707
8708 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
8709
8710         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
8711         new functions to allocate from persistent mempools.
8712
8713 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
8714
8715         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
8716         multiple register banks in the future.
8717
8718         * mini-codegen.c (mono_local_regalloc): Fix a warning.
8719
8720 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
8721
8722         * mini.c (type_to_eval_stack_type): Remove duplicated function.
8723
8724         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
8725
8726         * mini.h: Export type_to_eval_stack_type.
8727
8728         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
8729         is only ins->klass of byref types.
8730
8731 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
8732
8733         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
8734         (mini_emit_memcpy2): Ditto.
8735
8736         * mini-amd64.c: Fix a warning.
8737
8738 2008-09-21  Mark Probst  <mark.probst@gmail.com>
8739
8740         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
8741         linking.
8742
8743 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
8744
8745         * method-to-ir.c: Extract stloc micro-optimization to a
8746         function and apply it to all cases.
8747
8748 2008-09-19  Mark Probst  <mark.probst@gmail.com>
8749
8750         * method-to-ir.c: Don't fail generic code sharing in cases we
8751         already support.
8752
8753 2008-09-18  Mark Probst  <mark.probst@gmail.com>
8754
8755         * mini-ppc.c: Handle structs in tailcalls on Darwin.
8756
8757 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
8758
8759         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
8760         implementation.
8761
8762 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
8763
8764         * trace.c: make tracing more useful and correct, with per-thread
8765         id and indent info.
8766
8767 2008-09-15  Mark Probst  <mark.probst@gmail.com>
8768
8769         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
8770         doing a method call and the argument is an R4.
8771
8772 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
8773
8774         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
8775         generic methods.
8776
8777 2008-09-13  Mark Probst  <mark.probst@gmail.com>
8778
8779         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
8780
8781 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
8782
8783         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
8784         (MONO_JUMP_TABLE_FROM_INS): Ditto.
8785
8786 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
8787
8788         * driver.c: Add a --agent argument (not supported yet) to load managed
8789         agent assemblies before loading the main assembly, similarly to how the
8790         Java VM handles agents.
8791
8792 2008-09-11  Mark Probst  <mark.probst@gmail.com>
8793
8794         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
8795         function to do stack layout of local variables.
8796
8797 2008-09-11  Mark Probst  <mark.probst@gmail.com>
8798
8799         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
8800         calculation.
8801
8802 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
8803
8804         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
8805         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
8806         JIT if DISABLE_JIT is defined.
8807
8808         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
8809         defined.
8810
8811 2008-09-10  Mark Probst  <mark.probst@gmail.com>
8812
8813         * iltests.il.in: Disable the fconv test on PPC (the result is
8814         undefined according to ECMA).
8815
8816 2008-09-10  Mark Probst  <mark.probst@gmail.com>
8817
8818         * iltests.il.in: Enable tail call tests for PPC.
8819
8820         * mini.h: Add variable for storing incoming valuetype argument
8821         addresses for tail calls.
8822
8823         * mini-ppc.c: Implement valuetype arguments and return values for
8824         tailcalls on Linux.
8825
8826 2008-09-09  Mark Probst  <mark.probst@gmail.com>
8827
8828         * mini-ppc.c: Partially implement tail calls (struct arguments and
8829         return values not supported).
8830
8831         * method-to-ir.c: Enable tail calls on PPC.
8832
8833 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
8834
8835         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
8836         runtime-invoke wrappers to work around the problem of them getting
8837         assigned to a random class.
8838
8839         * aot-runtime.c (mono_aot_get_method): Ditto.
8840         
8841 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
8842
8843         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
8844         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
8845
8846 2008-09-07  Mark Probst  <mark.probst@gmail.com>
8847
8848         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
8849         until they're implemented properly.
8850
8851         * exceptions-ppc.c: Use arch-independent exception-handling code
8852         instead of custom one.
8853
8854         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
8855         for Linear IR.
8856
8857         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
8858
8859         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
8860         applies when __powerpc__ is defined.
8861
8862 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
8863
8864         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
8865         methods to their code to avoid computing the full name of wrappers and
8866         doing a lookup in a string hash table.
8867
8868 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
8869
8870         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
8871         we identify bblocks before method_to_ir () is ran.
8872
8873         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
8874         Also avoid optimizing branches pointing to themselves.
8875
8876         * mini.c (mini_method_compile): Ditto. Fixes #422947.
8877
8878 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
8879
8880         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
8881
8882 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
8883
8884         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
8885         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
8886         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
8887         'buf'.
8888
8889         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
8890         jumped to the same entry in plt_jump_table.
8891
8892 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
8893
8894         * method-to-ir.c (initialize_array_data): Handle field with RVA from
8895         dynamic images.
8896
8897 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
8898
8899         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
8900         other assignment can be if converted. Saves 1.5% on corlib size and fixes
8901         #421807.
8902
8903 2008-08-29  Geoff Norton  <gnorton@novell.com>
8904
8905         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
8906         segment, and doesn't properly handle .space as .text.  Fixes
8907         AOT Mach/ARM
8908
8909 2008-08-29  Geoff Norton  <gnorton@novell.com>
8910
8911         * mini.c: Disable the mach exception handler when running on 
8912         ARM
8913
8914 2008-08-29  Geoff Norton  <gnorton@novell.com>
8915
8916         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
8917         globals on Darwin/ARM
8918
8919 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
8920
8921         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
8922         since too many things depend on it. Instead, call 
8923         mono_runtime_set_no_exec ().
8924         
8925         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
8926         the new JIT.
8927
8928         * aot-compiler.c: Add an 'asm-only' AOT option.
8929
8930         * mini.c: Avoid initializing the runtime when doing AOT compilation.
8931                 
8932         * aot-compiler.c (compile_method): Disable gshared support for now as it
8933         doesn't yet work.
8934
8935 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
8936
8937         * mini-amd64.h : Fix a compiler warning.
8938
8939         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
8940           Changed to use a callback function to retrieve the unwind info.
8941           This avoids problems observed when code blocks were removed by
8942           unloading an app domain.
8943
8944         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
8945           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
8946           to work properly.
8947
8948         Contributed under MIT/X11 license.
8949
8950 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
8951
8952         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
8953           case to keep the stack aligned to 8.
8954
8955         Contributed under MIT/X11 license.
8956
8957 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
8958
8959         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
8960         avoid repeated linear searches.
8961
8962 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
8963
8964         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
8965         methods it can't handle.
8966         
8967         * aot-compiler.c (add_method): Avoid adding a method twice.
8968         (add_wrappers): Add runtime invoke wrappers for all methods.
8969
8970         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
8971         function to create an aot-compatible version of this trampoline.
8972
8973         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
8974
8975 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
8976
8977         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
8978
8979         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
8980         with a generic sharing failure.
8981
8982         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
8983
8984         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
8985         CEE_RETHROW. Fixes #419634.
8986
8987         * mini.c (mono_method_to_ir): Ditto.
8988
8989         * exceptions.cs: Add a new test.
8990         
8991         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
8992         to mono_type_stack_size_internal () since some callers might not pass in
8993         an rgctx.
8994
8995         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
8996         instrument_prolog. Fixes #419878.
8997
8998         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
8999         doubles in soft float mode volatile.
9000
9001 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
9002
9003         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
9004
9005         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
9006         to handle soft float correctly.
9007
9008         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
9009         the fast path.
9010
9011         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
9012
9013         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
9014         to sp, since the generics catch code requires it.
9015
9016         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
9017         copying.
9018
9019         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
9020         mono_arch_emit_imt_argument ().
9021
9022         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
9023
9024         * mini-arm.c tramp-arm.c: Generic sharing updates.
9025
9026 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
9027
9028         * mini-arm.c: Fix the arm build.
9029
9030         * generic-sharing.c (mini_type_get_underlying_type): New helper function
9031         handling enums, generic instances and generic sharing.
9032         (mini_type_stack_size_full): Ditto.
9033
9034         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
9035         
9036         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
9037
9038         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
9039
9040         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
9041         trampolines.
9042
9043         * mini-arm.c: Various small generic sharing changes.
9044
9045         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
9046         this for x86.
9047         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
9048         custom code.
9049
9050         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
9051         helper function to return a generic class init trampoline.
9052
9053         * method-to-ir.c mini.c: Use it.
9054         
9055         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
9056         arch-specfic function to return a generic class init trampoline.
9057
9058         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
9059         the GENERIC_CLASS_INIT custom code.
9060
9061         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
9062         a fatal error, not a sharing failure.
9063
9064         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
9065         needed.
9066
9067         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
9068         trampoline argument from MONO_ARCH_VTABLE_REG.
9069
9070         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
9071         order of the arguments to the C trampoline: pass 'slot' as the trampoline
9072         argument, and pass the vtable in VTABLE_REG.
9073
9074         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
9075         order of the arguments to the C trampoline: pass 'slot' as the trampoline
9076         argument, and pass the vtable in VTABLE_REG.
9077         (mono_arch_create_trampoline_code_full): Remove some special casing for
9078         the rgctx fetch trampoline.
9079
9080         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
9081         Fixes #419273.
9082
9083         * iltests.il: Add a test for it.
9084
9085 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
9086
9087         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
9088
9089         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
9090         no longer needed.
9091
9092         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
9093         use mono_jit_info_table_find () to avoid recursion.
9094         (mono_delegate_trampoline): Add a sync wrapper here.
9095
9096         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
9097         here.
9098
9099         * mini.c (mono_method_to_ir): Ditto.
9100         
9101         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
9102         add_sync_wrapper argument. Don't add a sync wrapper here.
9103         (mono_create_jump_trampoline): Don't add a sync wrapper here.
9104
9105         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
9106         
9107 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
9108
9109         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
9110           of nonvolatile registers back from MonoContext to CONTEXT.
9111
9112         Contributed under MIT/X11 license.
9113
9114 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
9115
9116         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
9117           arguments on Winx64 there are only 4 argument registers.  For this
9118           logic to work the last argument must be pulled from the stack.  
9119
9120         Contributed under MIT/X11 license.
9121
9122 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
9123
9124         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
9125
9126         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
9127         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
9128         encode/decode_method_ref ().
9129
9130         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
9131
9132         * aot-runtime.c (decode_patch): Ditto.  
9133
9134         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
9135         MONO_PATCH_INFO_METHOD.
9136
9137         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
9138         MonoGenericJitInfo.
9139
9140         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
9141         MonoGenericJitInfo.
9142
9143         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
9144
9145         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
9146         one from the caller.
9147
9148         * aot-runtime.c (decode_generic_inst): New function to decode and
9149         return a interned generic inst.
9150         (decode_klass_ref): Use it.
9151         (decode_method_ref): Ditto.
9152
9153         * aot-compiler.c (emit_exception_debug_info): Save 
9154         jinfo->has_generic_jit_info too.
9155
9156 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
9157
9158         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
9159
9160         * iltests.il.in: Add a test for fconv_to_i.
9161
9162         * liveness.c: Disable the liveness2 pass for now to save space.
9163
9164         * regalloc2.c: Include mempool-internals.h to fix warnings.
9165
9166         * aot-compiler.c (encode_method_ref): Encode the context of generic
9167         instance methods.
9168
9169         * aot-runtime.c (decode_method_ref): Inflate generic methods using
9170         the context saved in the aot file.
9171
9172         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
9173
9174         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
9175
9176         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
9177         volatile so they won't be optimized away.
9178
9179 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
9180
9181         * ssa.c:
9182         * ssa2.c:
9183         * mini.c:
9184         * regalloc2.c:
9185         * dominators.c: Remove duplicated functions that now are in
9186         mempool-internals.h.
9187
9188 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
9189
9190         * aot-compiler.c: Fix warnings.
9191
9192         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
9193
9194         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
9195
9196         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
9197         as the patch type.
9198
9199         * mini.c (mono_resolve_patch_target): Ditto.
9200         
9201         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
9202         (encode_klass_ref): Add support for encoding VARs/MVARs.
9203
9204         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
9205
9206         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
9207         the handling of the got entries into a separate 'decode_got_entry' function.
9208         Add support for RGCTX_FETCH.
9209
9210         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
9211         clobbered by the trampoline code.
9212
9213         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
9214         not clobbered by the indirect calling code.
9215
9216 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
9217
9218         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
9219         to fix the build.
9220
9221 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
9222
9223         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
9224         signature using the compilation mempool otherwise we would leak it.
9225
9226 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
9227
9228         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
9229         mono_emit_abs_call ().
9230
9231         * patch-info.h: Add GENERIC_CLASS_INIT.
9232
9233         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
9234
9235         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
9236         as their target as a near call.
9237
9238         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
9239         ABS handling code.
9240         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
9241
9242         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
9243         call to a runtime function described by a patch.
9244
9245         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
9246         mono_emit_abs_call, this has the advantage that the ABS handling code in
9247         mono_codegen () can handle them both, and can handle other stuff in the
9248         future without additional code.
9249
9250         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
9251         entry.
9252         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
9253         abs addresses.
9254
9255         * mini.h: Add missing bblock related prototypes.
9256
9257         * mini.h (MonoCompile): Remove unused reverse_inst_list and
9258         reverse_inst_list_len fields.
9259
9260         * mini.c: Refactor this file a bit by moving branch optimizations to 
9261         branch-opts.c.
9262
9263         * method-to-ir.c: Merge generic sharing changes missed earlier.
9264
9265         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
9266
9267         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
9268         shared patches. Process METHODCONST as a shared patch.
9269
9270         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
9271         as it crashes on the 2.0 mscorlib.
9272
9273         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
9274         to cause crashes.
9275         
9276         * aot-compiler.c: Use is_plt_patch () in a few additional places.
9277         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
9278         by IMT.
9279
9280         * aot-compiler.c: Reorganize the got handling code to be a bit more
9281         understandable.
9282
9283 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
9284
9285         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
9286         mono_patch_info_equals/hash, and use it to massively simplify
9287         get_plt_index ().
9288
9289         * mini.c (mono_patch_info_hash): Simplify this and add support for
9290         more patch types.
9291
9292         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
9293
9294         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
9295         handling code, since an offset is not enough to identify a trampoline.
9296
9297         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
9298
9299 2008-08-17  Mark Probst  <mark.probst@gmail.com>
9300
9301         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
9302
9303         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
9304
9305         * mini-ops.h: Argument and result types for OVF_CARRY ops.
9306
9307         * decompose.c: PPC decompositions for various ops.
9308
9309         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
9310
9311 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
9312
9313         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
9314         call the generic trampoline code using a call, instead of a jump, to
9315         remove some special casing from the generic trampoline code.
9316
9317         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
9318         (mono_codegen): Ditto.
9319
9320         * aot-compiler.c aot-runtime.c: Ditto.
9321
9322         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
9323
9324         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
9325         helper function to find the offset corresponding to a lazy fetch trampoline.
9326
9327         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
9328         when doing generic sharing.
9329
9330         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
9331         places.
9332         
9333         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
9334         mini-trampolines.c to be with the other trampoline creation functions.
9335
9336         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
9337         as it is equal to method->signature in most cases, add a 
9338         mono_emit_method_call_full variant which takes a signature and an imt
9339         argument as well.
9340
9341 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
9342
9343         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
9344         to this function, since it could be computed easily from the method 
9345         argument.
9346         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
9347         more.
9348
9349         * method-to-ir.c mini.c: Remove references to 
9350         compile_generic_method_wo_context.
9351
9352         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
9353         generic method calls.
9354         
9355         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
9356         dimensional non-szarrays.
9357
9358         * mini.c (mini_init): Register mono_array_new_1.
9359
9360         * jit-icalls.c (mono_array_new_1): New jit icall.
9361
9362         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
9363         pointing to the method.
9364
9365         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
9366         method addresses belonging to METHOD_JUMP patches in the 
9367         jump_target_got_slot_hash.
9368         (mono_aot_load_method): Ditto.
9369
9370         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
9371         METHOD_JUMP patches.
9372
9373         * mini.c (mini_create_jit_domain_info): New helper function which 
9374         initializes/frees domain->runtime_info.
9375         (mini_free_jit_domain_info): Ditto.
9376         (mini_init): Install the domain hook functions with the runtime.
9377
9378         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
9379         information maintained by the JIT.
9380
9381         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
9382         insertion into jump_table_hash into mono_codegen (), also implement proper
9383         locking.
9384
9385         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
9386         tail calls, it is already done by the aot code.
9387         
9388         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
9389         mechanism on amd64.
9390
9391         * iltests.il.in: Make the jmp test a bit more complex.
9392
9393         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
9394         generic instances which doesn't have a token.
9395
9396         * aot-runtime.c (decode_method_ref): Ditto.
9397         
9398         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
9399         can handle this case now.
9400         (handle_box): Ditto.
9401
9402 2008-08-15  Geoff Norton  <gnorton@novell.com>
9403
9404         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
9405         debugging check.
9406
9407 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
9408
9409         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
9410         calling generic methods.
9411
9412         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
9413
9414         * aot-runtime.c (decode_patch_info): Ditto.
9415
9416         * mini.c (mono_resolve_patch_target): Ditto.
9417         
9418         * patch-info.h: Add METHOD_RGCTX.
9419
9420         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
9421
9422 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
9423
9424         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
9425         arguments in registers.
9426
9427         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
9428         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
9429
9430         * mini.c (mini_method_compile): Abort aot compilation for generic
9431         methods if generic sharing is disabled.
9432         
9433         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
9434         an mrgctx.
9435
9436         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
9437         requiring an mrgctx.
9438
9439         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
9440         store instructions when converting a vcall to a normal call.
9441
9442         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
9443         mono_arch_find_jit_info.
9444
9445 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
9446
9447         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
9448         avoid calling mono_method_full_name () for every method even if the
9449         env var is not set.
9450         (check_inline_caller_method_name_limit): Ditto.
9451
9452 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
9453
9454         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
9455         assemblies in one run.
9456
9457         * aot-compiler.c (mono_compile_assembly): Only print out a count of
9458         skipped methods if it is not 0.
9459
9460         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
9461
9462 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
9463
9464         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
9465           MONO_ARCH_HAVE_UNWIND_TABLE.
9466
9467         Contributed under MIT/X11 license.
9468
9469 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
9470
9471         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
9472           from default optimizaton list on Winx64.
9473
9474         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
9475
9476         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
9477           the LMF from the MonoJitTlsData structure.
9478
9479         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
9480
9481         Contributed under MIT/X11 license.
9482
9483 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
9484
9485         * mini.c (sigsegv_signal_handler): Fix the build.
9486
9487         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
9488         assembly->aot_module.
9489
9490         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
9491         hash table. This simplifies and speeds up a lot of code, and fixes support
9492         for .netmodules.
9493
9494         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
9495         with the runtime.
9496
9497         * mini-exceptions.c: Ditto.
9498         
9499         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
9500         'native_offset' argument, since these are computed in the 
9501         mono_find_jit_info () function.
9502
9503         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
9504         is used by exceptions-ppc.c.
9505
9506         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
9507         mono_arch_find_jit_info ().
9508         
9509         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
9510         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
9511         generic code in mini-exceptions.c.
9512
9513 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
9514
9515         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
9516
9517         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
9518         
9519         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
9520         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
9521         called while holding the loader lock. Fixes #415608.
9522         (mono_aot_get_method_from_token_inner): Ditto.
9523
9524 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
9525
9526         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
9527         to reduce differences between this and the generic implementation in
9528         mini-exceptions.c.
9529         (ves_icall_get_frame_info): Ditto.
9530
9531         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
9532
9533         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
9534         longer neccesarry.
9535
9536         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
9537         mono_arch_get_call_filter () and make it non-static, for consistency with the
9538         other architectures.
9539
9540 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
9541
9542         * mini.c:
9543         * local-propagation.c:
9544         * mini-x86.c: Correct the name of arch defines.
9545
9546 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
9547
9548         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
9549         NO_EMULATE_LONG_SHIFT_OPS define.
9550
9551 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
9552
9553         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
9554         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
9555
9556         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
9557         MACH fixes. Merged from the 2.0 branch.
9558
9559         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
9560
9561         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
9562         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
9563
9564         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
9565
9566         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
9567         mono_marshal_get_native_wrapper () signature changes.
9568
9569 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
9570
9571         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
9572         conversion bug under arm.
9573
9574 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
9575
9576         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
9577
9578         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
9579         with overflow checking.
9580
9581 2008-08-05  Marek Habersack  <mhabersack@novell.com>
9582
9583         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
9584         to the genmdesc.pl file
9585
9586 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
9587
9588         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
9589         arg_array in the soft-float versions of the LOAD/STORE macros.
9590
9591         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
9592         implementation.
9593
9594         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
9595
9596 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
9597
9598         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
9599         a float HFA. Fixes #413621.
9600
9601 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
9602
9603         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
9604         frame_size to args_size. Fixes build.
9605
9606 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
9607
9608         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
9609         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
9610
9611         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
9612         the stack are not unaligned. Fixes #413247.
9613         
9614 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
9615
9616         * mini.c: update jitted methods performance counters.
9617
9618 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
9619
9620         * mini-exceptions.c: increase the exceptions thrown performance
9621         counter in mono_handle_exception ().
9622
9623 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
9624
9625         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
9626         can work with netmodules.
9627
9628 2008-07-28  Geoff Norton  <gnorton@novell.com>
9629
9630         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
9631         regression tests.
9632
9633 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
9634
9635         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
9636         correct place.
9637
9638 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
9639
9640         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
9641           The float param registers and other param registers must be the 
9642           same index on Windows x64.
9643
9644         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
9645           ArgValuetypeAddrInIReg argument case.  Setting the argument
9646           op to OP_VTARG_ADDR (OP_REGOFFSET)).
9647
9648         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
9649           variable computed above as the copy length for arguments of storage
9650           type ArgValuetypeAddrInIReg.
9651
9652         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
9653           ArgValuetypeAddrInIReg argument case.  This case will rely on
9654           mono_arch_emit_outarg_vt to emit the correct code later in the process.
9655
9656         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
9657           a 32 byte stack allocation for all calls.  We will omit the adjustment for
9658           jump and tail call instructoins as they do not follow the typical call behavior.
9659
9660         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
9661           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
9662           local variable and pass the local variable by reference to the called method.
9663
9664         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
9665           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
9666           of a struct is passed in a register it must be saved with the other
9667           volatile argument on the stack.
9668
9669         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
9670           frame pointer the stack adjustment value must be saved to the unwind 
9671           info structure.
9672
9673         Contributed under MIT/X11 license.
9674
9675 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
9676
9677         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
9678         which got lost in the merge.
9679
9680 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
9681
9682         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
9683         build.
9684
9685         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
9686         
9687         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
9688         icalls, since they won't be patched.
9689
9690         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
9691         different code sequence when running under valgrind to prevent some valgrind
9692         errors.
9693
9694         * iltests.il.in: Add new regression test.
9695
9696         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
9697         end with a throw.
9698
9699         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
9700         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
9701
9702         * iltests.il.in: Add new test.
9703
9704         * aot-compiler.c: Fix some warnings.
9705
9706         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
9707         Fixes #412494.
9708
9709 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
9710
9711         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
9712         (mini_usage_jitdeveloper): Add a missing --wapi option.
9713
9714 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9715
9716         * mini-codegen.c: Simplify the is_fp macros.
9717         (free_up_ireg): Remove, use free_up_reg instead.
9718         (free_up_reg): Fix the fp case.
9719
9720 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
9721
9722         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
9723         lowered earlier.
9724
9725         * exceptions-x86.c: Merge some changes which seemed to have got lost
9726         in the linear-ir merge.
9727
9728         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
9729
9730         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
9731         long vreg volatile even if the variable was already created.
9732
9733         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
9734         volatile variables.
9735
9736 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
9737
9738         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
9739
9740         * mini.c (mono_jit_compile_method_inner): Add support for 
9741         MONO_EXCEPTION_BAD_IMAGE.
9742
9743         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
9744         mini_method_get_context () returns NULL. Fixes #356531.
9745
9746         * mini.c (mono_method_to_ir): Ditto.
9747         
9748         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
9749         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
9750
9751 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9752
9753         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
9754         in the LDFTN implementation.
9755
9756 2008-07-25  Mark Probst  <mark.probst@gmail.com>
9757
9758         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
9759         code, patch calls to icalls, too, even if they're not in the
9760         shared generic code hash.  Fixes #411962.
9761
9762 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9763
9764         * cpu-x86.md: Increase the length of the fcall opcodes.
9765
9766         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
9767         calls returning floats.
9768
9769         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
9770         on NEWARR.
9771         
9772         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
9773         missed earlier.
9774
9775         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
9776         into the domain->method_code_hash.
9777
9778         * aot-compiler.c: Fix win32 build.
9779
9780         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
9781         
9782         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
9783         gshared NEWARR implementation.
9784
9785         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
9786
9787         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
9788         can be used outside of method_to_ir.
9789
9790         * mini.h (MonoCompile): Add arg_types field.
9791
9792         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
9793         
9794         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
9795         the values of the local arg_array and param_types array.
9796
9797 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
9798
9799         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
9800         got accesses might only get generated later when NEWOBJ is decomposed.
9801         
9802         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
9803         looking up the native code of the target method when a delegate is called
9804         for the first time.
9805
9806         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
9807         optimization.
9808
9809         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
9810
9811         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
9812         AOT work on platforms without a working dlsym implementation.
9813
9814         * mini.h: Bump AOT image format version.
9815         
9816 2008-07-24  Mark Probst  <mark.probst@gmail.com>
9817
9818         * mini-exceptions.c: Free a MonoType with
9819         mono_metadata_free_type() instead of g_free().
9820
9821         * aot-runtime.c: Free a MonoType.
9822
9823 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
9824
9825         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
9826         optimization.
9827
9828         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
9829         fp stack on x86.
9830
9831 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
9832         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
9833         profiler hook.
9834
9835 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
9836
9837         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
9838         NEWOBJ calls on valuetypes.
9839
9840         * iltests.il.in: Add new test.
9841
9842         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
9843
9844 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
9845
9846         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
9847         is no longer needed.
9848
9849         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
9850         non register sized integer arguments.
9851         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
9852         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
9853         emit_memcpy2 ().
9854
9855         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
9856         CEE_MONO_RETOBJ.
9857         
9858         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
9859         two a binop with different sized arguments is emitted.
9860
9861         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
9862         instruction in the ins==NULL case.
9863
9864 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
9865
9866         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
9867
9868         * mini-x86.c: Fix osx build.
9869
9870         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
9871         opcodes as well.
9872
9873         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
9874         instruction for non int sized variables.
9875
9876         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
9877         implementation.
9878
9879 2008-07-23  Robert Jordan  <robertj@gmx.net>
9880
9881         * method-to-ir.c: Fix MSVC build.
9882
9883 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
9884
9885         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
9886         a non int sized type, widen it to an int since newer versions of gcc seem to
9887         generate code which needs this.
9888
9889         * ssa2.c abcremoval2.c: Fix warnings.
9890
9891         * *: Merge the Linear IR branch.
9892
9893         The original branch is at trunk/branches/vargaz/mini-linear-il, and
9894         the ChangeLog file there describes all the changes done over the years. 
9895         Further documentation can be found at www.mono-project.com/Linear_IL.
9896
9897 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
9898
9899         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
9900           The float param registers and other param registers must be the 
9901           same index on Windows x64.
9902
9903         Contributed under MIT/X11 license.
9904
9905 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
9906
9907         * mini.c: Make the previous fix GC safe.
9908
9909 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
9910
9911         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
9912
9913 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
9914
9915         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
9916           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
9917           ArgValuetypeAddrInIReg instead.
9918
9919         Contributed under MIT/X11 license.
9920
9921 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
9922
9923         * mini-codegen.c (get_register_spilling): Fix a warning.
9924
9925 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
9926
9927         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
9928         for types which the initialization fails. Raises the provided exception
9929         at the right stop after cleanup.
9930
9931 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
9932
9933         * aot-compiler.c: Free most of the memory allocated during compilation.
9934
9935         * mini.c (mini_parse_debug_options): Fix a leak.
9936         
9937         * mini.c (mini_method_compile): Don't add the method to the jit info tables
9938         during aot compilation.
9939
9940 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
9941
9942         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
9943         it has too much register pressure.
9944
9945 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
9946
9947         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
9948
9949 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
9950
9951         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
9952         on x86.
9953
9954         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
9955         on amd64 similar to the way it is done on arm.
9956
9957         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9958
9959         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
9960         consistency, normalize error messages, avoid loading aot-only modules in
9961         normal mode.
9962
9963         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
9964         for consistency.
9965
9966         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
9967
9968 2008-07-11  Martin Baulig  <martin@ximian.com>
9969
9970         * debug-debugger.h
9971         (MonoDebuggerInfo): Add `interruption_request'.
9972
9973 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
9974
9975         * aot-compiler.c (emit_plt): Remove some dead code.
9976
9977         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
9978
9979         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
9980         return the plt info offset belonging to a given plt entry.
9981
9982         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
9983         mono_aot_get_plt_info_offset.
9984         
9985         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
9986         similar to the amd64 code by makeing jumps through a separate jump table 
9987         instead of embedding the jump addresses into the code.
9988
9989 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
9990
9991         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
9992         method.
9993
9994 2008-07-10  Martin Baulig  <martin@ximian.com>
9995
9996         * mini.c (mini_method_compile): Disable generics sharing when
9997         running in the debugger.
9998
9999 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
10000
10001         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
10002
10003         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
10004         the local register allocator from running out of registers on x86 when 
10005         using aot.
10006
10007 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
10008
10009         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
10010         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
10011         C4146.
10012
10013         Contributed under MIT/X11 license.
10014
10015 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
10016
10017         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
10018         speed up the assembler.
10019
10020 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
10021
10022         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
10023         support.
10024
10025         * mini.c: Move the soft float handling macros a bit earlier, add 
10026         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
10027         place.
10028
10029         * mini.h: Add prototype for mono_arch_fixup_jinfo.
10030
10031         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
10032         read-only to help catch code allocation requests.
10033         
10034         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
10035         and turn it off when using --aot-only or when compiling with --aot=full.
10036
10037         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
10038         jump table for switches from the normal domain mempool, not the code
10039         manager.
10040
10041         * mini-trampolines.c (get_unbox_trampoline): New function to return an
10042         unbox trampoline which handles aot-only mode too.
10043
10044         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
10045         an AOTed unbox trampoline.
10046
10047         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
10048
10049 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
10050
10051         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
10052         ""
10053
10054         Contributed under MIT/X11 license.
10055
10056 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
10057
10058         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
10059           the unwind information for the method at the end of the allocated block.
10060           
10061         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
10062           MonoCompileArch to hold the unwind info for SEH on Winx64
10063         
10064         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
10065           frame pointer info for the method being compiled.
10066           
10067         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
10068           the call to mono_exception_from_token.
10069           
10070         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
10071           storing the method prolog information in a format that the Winx64 SEH can understand.  This
10072           information is stored a the end of the method block because it is all 32-bit offset based.
10073
10074         Contributed under MIT/X11 license.
10075
10076 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
10077
10078         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
10079
10080         * wapihandles.c: Fix warnings.
10081
10082         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
10083         mode.
10084
10085         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
10086         mono_jit_compile_method in aot-only mode since that calls the type 
10087         initializer.
10088         
10089         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
10090         get_delegate_invoke_impl in aot-only mode.
10091
10092         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
10093
10094 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
10095
10096         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
10097
10098         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
10099         is on by default.
10100
10101         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
10102
10103         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
10104         init trampoline from the AOT file as well.
10105
10106         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
10107         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
10108         code.
10109
10110         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
10111         mono_init.
10112
10113         * exceptions-amd64.c: Add _full variants for the remaining exception code
10114         creation functions as well, allow emission of relocatable code, remove
10115         caching since that is now done by the caller.
10116
10117         * mini-exceptions.c: Add _full variants for the remaining exception code
10118         creation functions as well, add aot-only support.
10119
10120         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
10121         if we can determine a proper token for them.
10122         (add_wrappers): Add a few more wrappers.
10123         (emit_method_code): Remove some dead code.
10124         (emit_trampolines): Emit exception code too.
10125
10126         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
10127
10128         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
10129         mono_array_new_va which avoids varargs.
10130
10131         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
10132
10133         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
10134         mono_arch_create_specific_trampoline () in all places.
10135
10136         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
10137         a bit so it can be used for other things as well.
10138         
10139         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
10140         on demand as well.
10141
10142         * exceptions-amd64.c: Rename the caching from the exception code creation
10143         functions, it is done by the caller instead.
10144         
10145         * exceptions-amd64.c: Change the signature of the exception code creation 
10146         functions to allow the creation of relocatable code later.
10147
10148         * mini-exceptions.c: Add a set of functions to query the various 
10149         runtime-generated exception functions.
10150
10151         * mini.c mini-exceptions.c: Use the newly added functions instead of the
10152         mono_arch_.. () functions.
10153         
10154 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
10155
10156         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
10157
10158         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
10159
10160         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
10161         (mini_get_vtable_trampoline): Ditto.
10162
10163         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
10164         code in the AOT case by returning the code size and a list of relocations to
10165         the caller.
10166
10167         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
10168
10169 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
10170
10171         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
10172           clean the stack.
10173
10174         Contributed under MIT/X11 license.
10175
10176 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
10177
10178         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
10179         so the buffer size can be computed correctly. Fixes #404735.
10180
10181         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
10182         normally as cfg->debug_info is already freed.
10183
10184 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
10185
10186         * mini-amd64.c: For calls returning vtypes in registers, don't store
10187         the return address on the stack, instead allocate a separate local for
10188         it. Fixes #404729.
10189
10190 2008-07-05  Mark Probst  <mark.probst@gmail.com>
10191
10192         * mini-trampolines.c, mini.h: Add an argument to
10193         mono_create_jit_trampoline_in_domain() for turning off the adding
10194         of the sync wrapper.
10195
10196         * mini.c: Use the JIT trampoline without sync instead of
10197         ldftn_nosync in static RGCTX invoke wrappers so that the call can
10198         be patched.
10199
10200 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10201
10202         * driver.c: Turn on GSHARED optimization by default.
10203
10204 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
10205
10206         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
10207         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
10208
10209         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
10210         create a variant of the generic trampoline code callable from AOTed trampolines.
10211
10212         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
10213         trampoline code callable from AOTed trampolines.
10214
10215         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
10216
10217 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10218
10219         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
10220         pass-through manner.
10221
10222         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
10223         and don't fail sharing for them anymore.
10224
10225         * mini-exceptions.c: Handle exceptions in shared generic methods.
10226
10227         * generic-sharing.c: When checking the context of a generic
10228         method, also check its class's context.  Don't treat wrappers as
10229         sharable.
10230
10231         * mini-trampolines.c: Some code factored out to
10232         metadata/generic-sharing.c.  Handle the MRGCTX case.
10233
10234         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
10235         we must deal with the method being of another instantiation of the
10236         class.  Add static rgctx invoke wrappers to generic methods.
10237
10238 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10239
10240         * mini.c: Provide all jit infos of generic shared methods with a
10241         generic jit info.
10242
10243         * mini-exceptions.c: Handle the new situation that a generic info
10244         might be available, but not info about the this/vtable/mrgctx
10245         variable.
10246
10247 2008-07-03  Mark Probst  <mark.probst@gmail.com>
10248
10249         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
10250         generic methods.
10251
10252 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
10253
10254         * dominators.c (check_dominance_frontier): Fix a warning.
10255
10256         * mini.h: Add some missing prototypes.
10257
10258         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
10259
10260         * driver.c (mono_jit_init_version): Correct the comments since the first
10261         argument should be the name of the root domain, not a filename.
10262
10263         * aot-runtime.c (make_writable): Error out if this is called while running
10264         with --aot-only.
10265         (load_aot_module): Ditto.
10266
10267         * aot-compiler.c: Really fix the computation of method indexes.
10268
10269         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
10270         optimizations as this is no longer called frequently.
10271
10272         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
10273         method and the invoke impl code and pass it to the delegate trampoline instead of
10274         just the delegate class.
10275
10276 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
10277
10278         * aot-compiler.c: Fixup the computation of method indexes.
10279         (add_wrappers): Create the base methods of the runtime invoke wrappers using
10280         the method builder infrastructure.
10281
10282         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
10283         has no header.
10284
10285         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
10286         mode, load the method right away instead of creating a trampoline.
10287
10288         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
10289
10290         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
10291         some checks a bit.
10292
10293 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
10294
10295         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
10296         (mono_aot_load_method): Use method_index instead of method->token.
10297
10298         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
10299         can handle icalls etc. properly.
10300
10301         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
10302
10303         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
10304
10305         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
10306         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
10307         JIT_ICALL_ADDR patch type.
10308
10309         * patch-info.h: Add JIT_ICALL_ADDR patch type.
10310
10311         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
10312         request flag.
10313         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
10314
10315         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
10316
10317 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
10318
10319         * mini.c: Use domain->jit_code_hash_lock for controlling access to
10320         domain->jit_code_hash.
10321
10322 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
10323
10324         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
10325
10326 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
10327
10328         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
10329         get_this_arg_from_call, let it compute it when needed.
10330
10331         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
10332         gsctx from code only when needed.
10333
10334         * mini-trampolines.c (get_generic_context): Rename this to 
10335         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
10336         it can be called by the arch backends.
10337
10338         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
10339
10340 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
10341
10342         * driver.c (mono_main): Add experimental --aot-only command line option.
10343
10344         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
10345         set.
10346
10347 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
10348
10349         * driver.c (DllMain): Remove mono_module_handle.
10350
10351         Contributed under MIT/X11 license.
10352
10353 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
10354
10355         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
10356         for emitting methods which are not in the source assembly. Detect and report
10357         failure of assembling+linking.
10358         
10359         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
10360
10361         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
10362
10363 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
10364
10365         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
10366
10367 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
10368
10369         * mini.h: Remove some obsolete prototypes.
10370
10371         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
10372
10373 2008-06-24  Mark Probst  <mark.probst@gmail.com>
10374
10375         * mini.c (get_object_generic_inst): Variable-sized arrays are not
10376         supported by Visual Studio, so use alloca().
10377
10378 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
10379
10380         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
10381         Fixes #402585.
10382
10383 2008-06-23  Mark Probst  <mark.probst@gmail.com>
10384
10385         * mini.c: Fail sharing of a generic method if it contains an open
10386         catch clause (because we don't pass MRGCTXs yet).
10387
10388 2008-06-23  Mark Probst  <mark.probst@gmail.com>
10389
10390         * mini.c: When compiling a method with generic sharing, insert the
10391         method instantiated with an all-Object generic context into the
10392         jit info table, instead of the context of the first instantiation
10393         of the method we happen to compile.
10394
10395 2008-06-18  Martin Baulig  <martin@ximian.com>
10396
10397         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
10398         `major_version' and `minor_version'.
10399
10400 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10401
10402         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
10403         mono_method_is_generic_sharable_impl() takes an additional
10404         argument specifying whether to treat type variables as reference
10405         types.
10406
10407 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10408
10409         * mini.h: Removed obsolete prototypes.
10410
10411 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10412
10413         * mini.c: Don't fail generic sharing for initobj and sizeof - we
10414         already handle them.
10415
10416 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10417
10418         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
10419         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
10420         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
10421         tramp-x86.c: Added a MonoGenericContext* argument to
10422         mono_arch_get_unbox_trampoline() so that it can call other
10423         functions which require it.
10424
10425 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10426
10427         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
10428         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
10429         mono_arch_get_this_arg_from_call() takes a
10430         MonoGenericSharingContext* as well.
10431
10432 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10433
10434         * mini.c: Factor out code for emitting unbox into emit_unbox() and
10435         implement generic sharing of unbox.
10436
10437 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10438
10439         * mini.c: Don't compute the vtable to determine whether a field is
10440         special static, because it might not work for open types.
10441
10442 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10443
10444         * mini.c: Removed the unused token_type and token_source arguments
10445         from get_runtime_generic_context_ptr().
10446
10447 2008-06-17  Marek Habersack  <mhabersack@novell.com>
10448
10449         * mini.c (ADD_BINOP): fix the build
10450
10451 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
10452
10453         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
10454         a widening op.
10455
10456 2008-06-16  Mark Probst  <mark.probst@gmail.com>
10457
10458         * mini.h: Removed class relations enum that's not used anymore.
10459
10460 2008-06-16  Mark Probst  <mark.probst@gmail.com>
10461
10462         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
10463
10464         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
10465         the lazy fetch trampoline access code.
10466
10467 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
10468
10469         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
10470
10471 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
10472
10473         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
10474
10475         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
10476
10477         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
10478
10479 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10480
10481         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
10482         intrinsics.
10483
10484         * mini-ops.h: Add MIN/MAX_UN opcodes.
10485
10486         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
10487         intrinsics.
10488
10489         * basic-math.cs: Add more min/max tests.
10490
10491         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
10492
10493 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10494
10495         * mini.c: Small fix in the prologue of emit_castclass.
10496
10497 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10498
10499         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
10500
10501         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
10502         do not work even for unsigned types. Fixes #400014.
10503
10504         * basic-math.cs: Add regression tests for unsigned Min/Max.
10505
10506 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10507
10508         * mini.c: Added additional context_used argument to several
10509         functions, which will be needed for sharing generic methods.  Use
10510         GET_RGCTX macro wherever appropriate.  Declare only one
10511         context_used in mono_method_to_ir().
10512
10513 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10514
10515         * mini.c, generic-sharing.c: Removed generic class relations.
10516
10517         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
10518         functions due to MRGCTX changes.
10519
10520 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10521
10522         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
10523         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
10524         with calculated IMT.
10525
10526         * mini.c: Generic sharing of calls via generic interfaces.
10527
10528         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
10529         generic method with non-constant MonoGenericContext*.  Instead,
10530         the context is taken out of the method itself.
10531
10532 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10533
10534         * mini.c: Generic sharing of ldvirtftn.
10535
10536 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10537
10538         * mini.c: Generic sharing of ldftn.
10539
10540 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10541
10542         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
10543
10544 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10545
10546         * mini.c: Generic sharing of the special case of ldtoken followed
10547         by a call to GetTypeFromHandle.
10548
10549 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10550
10551         * mini.c: Generic sharing of box for nullable types.
10552
10553 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10554
10555         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
10556         are passed on the stack. Fixes #324807.
10557
10558 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
10559
10560         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
10561         for the ArgValuetypeAddrInIReg case.
10562
10563         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
10564         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
10565
10566         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
10567         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
10568         local variable and pass the local variable by reference to the called method.
10569           
10570         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
10571         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
10572
10573         Contributed under MIT/X11 license.
10574
10575 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
10576
10577         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
10578
10579         * debug-mini.c (mono_debug_print_vars): Release memory after printing
10580         everything.
10581
10582 2008-06-10  Martin Baulig  <martin@ximian.com>
10583
10584         * debug-mini.c
10585         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
10586
10587 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
10588
10589         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
10590         possible error when no arguments are passed.
10591
10592         Contributed under MIT/X11 license.
10593
10594 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
10595
10596         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
10597         where the file name is NULL.
10598
10599 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
10600
10601         * mini.c: Fix s390 build.
10602
10603 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
10604
10605         * trace.c (mono_trace_parse_options): Fix warnings.
10606
10607         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
10608
10609 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
10610
10611         * mini.c (remove_block_if_useless): Avoid printing the method name.
10612         
10613         * mini.c: Remove needless setting of ins->cil_code which is now done by 
10614         MONO_INST_NEW.
10615
10616         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
10617         LMF. Not yet used.
10618
10619         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
10620         translated code after it has been patched.
10621
10622 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
10623
10624         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
10625         avoid problems during code patching on SMP systems.
10626         (emit_call): Avoid adding a patch info which is already added by 
10627         emit_call_body.
10628         (mono_arch_emit_exceptions): Ditto.
10629
10630 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
10631
10632         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
10633         MONO_TYPE_ISSTRUCT already checks for it.
10634
10635 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
10636
10637         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
10638           structs with floats on Winx64 the float registers are not used.  
10639           The integer registers are always used..
10640         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
10641           only one register will be used and only if the size of the struct 
10642           is 1,2,4, or 8 bytes.
10643
10644         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
10645           to work for Winx64.
10646
10647         Contributed under MIT/X11 license.
10648
10649 2008-06-05  Martin Baulig  <martin@ximian.com>
10650
10651         * debug-debugger.c (debugger_lookup_class): Also call
10652         mono_class_setup_methods() here; we're only called from RTI.
10653
10654 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
10655
10656         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
10657         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
10658         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
10659         Post-process object files and add dtrace-generated object, if necessary.
10660
10661         Contributed under MIT/X11 license.
10662
10663 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10664
10665         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
10666         element class.
10667
10668         * mini.c: Generic sharing for unbox.any and castclass.
10669
10670 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10671
10672         * mini.c: Ignore tailcall prefix in shared generic code and when
10673         doing calls which require a vtable/rgctx argument.
10674
10675 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10676
10677         * mini.c: Don't free the JIT info.
10678
10679         * driver.c: Changes in the JIT info table testing code.
10680
10681 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
10682
10683         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
10684         interruption. Fix some warnings.
10685
10686         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
10687         interruption_checkpoint.
10688
10689 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
10690
10691         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
10692         from embedding applications.
10693
10694 2008-06-02  William Holmes  <billholmes54@gmail.com>
10695
10696         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
10697           reserving 32 bytes on the stack when making calls. 
10698
10699         Contributed under MIT/X11 license.
10700
10701 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
10702
10703         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
10704         the linear IL branch.
10705
10706         * driver.c: Print out more information for --version on arm.
10707
10708 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
10709
10710         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
10711         bb_exit instead, since out of line bblocks might not actually be emitted
10712         out-of-line.
10713         
10714         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
10715         maximum epilog size for out of line bblocks if tracing is enabled.
10716
10717         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
10718
10719 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
10720
10721         * arrays.cs: Regression tests for allocating arrays with negative sizes.
10722
10723 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
10724
10725         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
10726         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
10727         opcodes.
10728
10729 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
10730
10731         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
10732         the 'value' to store is a constant.
10733
10734         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
10735
10736         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
10737         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
10738
10739 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
10740
10741         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
10742         for accessing method->generic_container.
10743
10744 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
10745
10746         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
10747         
10748         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
10749
10750         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
10751
10752         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
10753         fails.
10754
10755 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
10756
10757         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
10758
10759         * mini.c: Handle the case when mono_class_vtable () fails.
10760
10761 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
10762         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
10763         the stat profiler.
10764
10765 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10766
10767         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
10768         together with domain sharing.
10769
10770 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10771
10772         * mini.c: Treat callvirts to final methods like non-virtual calls
10773         when doing generic sharing, i.e. look them up in the runtime
10774         generic context.
10775
10776 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10777
10778         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
10779         with computed types (for generic sharing).
10780
10781         * mini.c: Generic sharing for mkrefany and refanyval.
10782
10783 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
10784
10785         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
10786         possible.
10787
10788         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
10789         the generic sharing code.
10790         
10791         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
10792         when needed.
10793
10794 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
10795
10796         * mini.h: Remove the declaration of mono_aot_init_vtable ().
10797
10798 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
10799
10800         * driver.c: updated copyright date
10801
10802 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
10803
10804         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
10805         needed.
10806
10807 2008-05-19  Martin Baulig  <martin@ximian.com>
10808
10809         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
10810         pointing to the new `_mono_debug_using_mono_debugger' variable.
10811
10812         * driver.c
10813         (mono_main): Check mono_debug_using_mono_debugger() rather than
10814         the `MONO_INSIDE_MDB' environment variable to check whether we're
10815         inside the debugger.
10816
10817 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
10818
10819         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
10820         argument.
10821
10822 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
10823
10824         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
10825
10826         * mini.c: Added mini_assembly_can_skip_verification. This
10827         function checks if the assembly requested to skip verification. 
10828         Fixes part of #387274.
10829
10830 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
10831
10832         * mini.c (mini_get_method): Disable the check for open generic classes when
10833         using generic sharing.
10834
10835         * generics.cs: Add a test for #387034.
10836
10837         * mini.c (mini_get_method): Check whenever the method class is an open generic
10838         type, and return NULL in that case, causing a verification error. Fixes
10839         #384123.
10840
10841 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10842
10843         * driver.c (mono_main): Revert r102623. The right
10844         thing to do is to enable the verifier under verifiable
10845         unless a --security flag was passed.
10846
10847         We need this non-trivial behavior for --verify-all otherwise
10848         mcs-compileall won't be able to use it. As it needs everything to
10849         be verified under validil.
10850
10851 2008-05-06  Martin Baulig  <martin@ximian.com>
10852
10853         Fix #383749.
10854
10855         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
10856         (mono_debugger_thread_cleanup): Likewise.
10857         (mono_debugger_extended_notification): Likewise.
10858
10859 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10860
10861         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
10862         against both inflated and non-inflated methods. We need to check against the
10863         generic definition for cases where the instantiated method is not visible.
10864         We need to check against the inflated types for cases where the instantiation
10865         changes any super type. This fixes #382986.
10866
10867         Note that this doesn't need to be applied to other parts of mono_method_to_ir
10868         that check for visibiliy as generic params only appears as the type subject
10869         of tokens on call opcodes. Field manipulation and ldftn must always
10870         target an exact type.
10871
10872 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10873
10874         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
10875         if no related --security flag is passed.
10876
10877 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10878
10879         * mini-arch.h: Prepare support for ppc64.
10880
10881         Contributed under MIT/X11 license.
10882
10883 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10884
10885         * aot-runtime.c: Prepare support for ppc64.
10886
10887         Contributed under MIT/X11 license.
10888
10889 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10890
10891         * mini-ops.h: Prepare support for ppc64.
10892
10893         Contributed under MIT/X11 license.
10894
10895 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
10896
10897         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
10898
10899         Contributed under MIT/X11 license.
10900
10901 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
10902
10903         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
10904         assemblies, since aot_name is not a full path, causing us to load MS.NET 
10905         assemblies on windows.
10906
10907 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
10908
10909         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
10910         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
10911         * main.c: Use UTF-8 encoded command line instead of Windows default code
10912         page on Windows to support Unicode.
10913         * driver.c (DllMain): New function for mixed-mode assembly support.
10914         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
10915         export __stdcall functions without decoration.
10916
10917         Contributed under MIT/X11 license.
10918
10919 2008-04-28  Mark Probst  <mark.probst@gmail.com>
10920
10921         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
10922         saving it very early.
10923
10924 2008-04-28  Mark Probst  <mark.probst@gmail.com>
10925
10926         * mini.h, mini.c: Lots of code for accessing the old RGCTX
10927         deleted.  The only way to access the new RGCTX is via the
10928         trampline.
10929
10930         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
10931         vtable instead of the RGCTX to static methods.
10932
10933         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
10934         accessing the new RGCTX.
10935
10936         * generic-sharing.c: There is no separation between self, type
10937         arguments and other types in the RGCTX anymore.
10938
10939 2008-04-25  Jonathan Chambers <joncham@gmail.com>
10940
10941         * mini-amd64.c (add_general): Remove previous stack adjustment.
10942         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
10943         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
10944         for 32 bytes of stack space reserved for all calls.
10945         
10946         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
10947         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
10948         adjustment.
10949         
10950         Code contributed under MIT/X11 license.
10951
10952 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
10953
10954         * mini.c (mini_method_verify): Only verify non-inflated methods, check
10955         against the root definition, peeling out method and type instantiations.
10956         Cache verify success results, code that fails verification is still
10957         checked multiple times.
10958
10959 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
10960
10961         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
10962
10963 2008-04-23  Jonathan Chambers <joncham@gmail.com>
10964
10965         * mini-amd64.c (add_general): Always increment stack on Win64.
10966         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
10967         on Win64.
10968         
10969         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
10970         stack based argument handling on Win64.
10971         
10972         Code contributed under MIT/X11 license.
10973
10974 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
10975
10976         * Makefile.am (version.h): Add support for git-svn.
10977
10978 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
10979
10980         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
10981         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
10982         avoiding allocations and libc functions which might deadlock.
10983         
10984         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
10985         'no-gdb-backtrace' option is set.
10986
10987         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
10988
10989         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
10990
10991 2008-04-21  Martin Baulig  <martin@ximian.com>
10992
10993         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
10994         and `get_lmf_addr'; `notification_address' is no longer a pointer.
10995
10996 2008-04-21  Martin Baulig  <martin@ximian.com>
10997
10998         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
10999         `thread_vtable', `event_handler_ptr' and `event_handler'.
11000
11001 2008-04-21  Martin Baulig  <martin@ximian.com>
11002
11003         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
11004         allows delayed initialization of the `executable_code_buffer' when
11005         attaching.
11006
11007 2008-04-21  Martin Baulig  <martin@ximian.com>
11008
11009         * mini.h (mono_debugger_create_notification_function): Removed.
11010         * tramp-*.c (mono_debugger_create_notification_function): Removed.
11011
11012         * mdb-debug-info64.s
11013         (MONO_DEBUGGER__notification_function): Added this in the .text section.
11014
11015         * mdb-debug-info32.s
11016         (MONO_DEBUGGER__notification_function): Added this in the .text section.
11017
11018         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
11019         currently only works on x86 and x86_64, so don't create it on ppc.
11020
11021 2008-04-21  Martin Baulig  <martin@ximian.com>
11022
11023         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
11024
11025         * mini.c
11026         (mini_method_compile): In the fp elimination check, check
11027         `debug_options.mdb_optimizations' in addition to
11028         mono_debug_using_mono_debugger().       
11029
11030         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
11031         disable some JIT optimizations which are only disabled when
11032         running inside the debugger.
11033         Added `--help-debug' option to describe the debugging options.
11034         (parse_debug_options): New static function to parse the `--debug'
11035         options, so we can easily add more stuff in future.
11036
11037 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
11038
11039         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
11040         the method has no body.
11041
11042 2008-04-19  Jonathan Chambers <joncham@gmail.com>
11043
11044         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
11045         assembly is not allowed in MSVC 64-bit compiler. 
11046         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
11047         as we get floating point exceptions everywhere.
11048         
11049         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
11050         correctly align arguments for call to throw_exception.
11051         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
11052         
11053         Code contributed under MIT/X11 license.
11054
11055 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
11056
11057         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
11058
11059 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
11060
11061         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
11062
11063         * mini-amd64.c (NEW_INS): Set cil_code.
11064
11065         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
11066         from mini-amd64.c so all debugger related logic is in one place.
11067
11068         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
11069         later won't have a random ip assigned to them.
11070
11071 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
11072
11073         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
11074         the arch specific function initializes code_size.
11075         (mono_create_delegate_trampoline): Ditto.
11076
11077         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
11078         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
11079         platforms.
11080
11081         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
11082         running under the debugger.
11083
11084         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
11085         debugger.
11086
11087         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
11088         debugger. Also move the disabling of optimizations here from driver.c.
11089         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
11090         debugger.
11091
11092         * mini.h (MonoCompile): Add a few new flags.
11093
11094 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
11095
11096         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
11097         so the cil_code field of created MonoInst's is properly set.
11098         (mini_select_instructions): Ditto.
11099
11100         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
11101         (MONO_INST_NEW_CALL): Ditto.
11102
11103         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
11104         in many places so the ins->cil_code field is properly initialized.
11105
11106         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
11107         place.
11108
11109 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
11110
11111         * mini.c (mini_method_compile): Print a different message when compiling a 
11112         shared method.
11113         
11114         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
11115         > 1.
11116
11117 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
11118
11119         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
11120         SSE2 instructions.
11121
11122         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
11123         
11124 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
11125
11126         * mini.c (handle_stack_args): Make this return void since its return value was
11127         never used. Also set cfg->unverifiable for invalid IL instead of calling
11128         G_BREAKPOINT ().
11129
11130 2008-04-10  Mark Probst  <mark.probst@gmail.com>
11131
11132         * mini.c: Make sure "this" is live in catch clauses with type
11133         variables in shared generic code.
11134
11135 2008-04-08  Mark Probst  <mark.probst@gmail.com>
11136
11137         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
11138         generic_class_is_reference_type() to ensure the proper behaviour
11139         when sharing generic code and the type in question is a type
11140         argument.
11141
11142 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
11143
11144         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
11145         race conditions when printing thread dumps. Fixes #377738.
11146
11147 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
11148         
11149         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
11150         shows up when both MonoInst arguments can cause aliasig.
11151         There is likely no way in the current JIT to trigger this problem, but
11152         it showed up in the development of generics sharing, when in a new
11153         opcode both args of an OP_GROUP can be aliases (addresses of a local).
11154         When the generics sharing code will be committed, its tests will be
11155         valid also for this bug.
11156
11157 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
11158
11159         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
11160         PATCH_INFO_METHOD.
11161
11162         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
11163         NULL.
11164
11165 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
11166
11167         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
11168         use a more detailed exception message for InvalidCastException.
11169
11170         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
11171
11172         * driver.c (mono_main): Add --debug=casts option to turn on better 
11173         InvalidCastException message details.
11174
11175         * mini.c (mini_get_debug_options): New helper function to return the address of
11176         the debug_options variable.
11177
11178         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
11179         the jit_tls TLS variable.
11180
11181         * mini.c (mono_jit_tls): New TLS variable.
11182
11183         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
11184         option is used.
11185
11186 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
11187
11188         * mini.h: Removed verifer related stuff. This code was moved to verify.c
11189
11190         * mini.c: Removed verifer related stuff, code moved to verify.c.
11191
11192         * driver.c: Using code from verify.c instead of mini.c.
11193
11194 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
11195
11196         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
11197         longer valid.
11198
11199 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
11200
11201         * mini.c (check_for_method_verify): Enabling verification of
11202         corlib if mono_verify_all is set. Bugs in the verifier preventing that
11203         have been fixed.
11204
11205 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
11206
11207         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
11208         caller saved registers as well.
11209         
11210         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
11211         saved registers as well.
11212
11213 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
11214
11215         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
11216
11217         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
11218         code.
11219
11220 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
11221
11222         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
11223         to get_call_info.
11224         (get_call_info): Take a gsctx argument instead of 'cfg'.
11225
11226 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
11227
11228         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
11229         mono_verify_all is set.
11230
11231         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
11232
11233         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
11234
11235 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
11236
11237         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
11238         an exception.
11239
11240         * driver.c mini.c mini.h: Add a --verify-all development option to test the
11241         verifier and the code generated by the compiler.
11242
11243 2008-03-25  Mark Probst  <mark.probst@gmail.com>
11244
11245         * mini.c: Generic sharing of the non-nullable case of the box
11246         instruction.
11247
11248 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
11249
11250         * inssel.brg: Fix the build.
11251
11252         * iltests.il.in: Add a test for lconv.ovf.u8.un.
11253
11254 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
11255
11256         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
11257         Array:Address. Fixes #372410.
11258
11259         * iltests.il.in: New tests for readonly prefix.
11260
11261 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
11262
11263         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
11264         mini-trampolines.c.
11265
11266         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
11267         mini-exceptions.c.
11268
11269         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
11270         
11271         * mini.c (mono_decompose_op_imm): New helper function.
11272
11273         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
11274         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
11275         return value.
11276
11277         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
11278         mono_arch_output_basic_block. Fix warnings.
11279
11280         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
11281         for now.
11282
11283 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
11284
11285         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
11286         since the extra frame is now detected automatically inside the loop.
11287
11288         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
11289         opts which are now in mono_peephole_ins ().
11290         
11291         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
11292
11293         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
11294         frames and skip duplicate managed-to-native frames. Fixes #367665.
11295
11296         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
11297         opts which are now in mono_peephole_ins ().
11298         (mono_arch_peephole_pass_2): Ditto.
11299
11300         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
11301
11302         * mini-codegen.c (mono_peephole_ins): New helper function containing the
11303         arch independent peephole optimizations.
11304
11305         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
11306         opts which are now in mono_peephole_ins ().
11307
11308         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
11309         
11310         * mini-s390.c (mono_arch_output_basic_block): Fix build.
11311
11312         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
11313         pattern.
11314
11315         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
11316         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
11317         opcode. 
11318
11319 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
11320
11321         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
11322         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
11323         return value.
11324
11325         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
11326         mono_arch_output_basic_block. Fix warnings.
11327
11328 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11329
11330         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
11331         conv.ovf.u.un.
11332
11333 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11334
11335         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
11336         conv.ovf.u.un.
11337
11338         * iltests.il: Add new tests.
11339
11340 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
11341
11342         * mini.c: Removed Windows version macros.
11343
11344 2008-03-20  Mark Probst  <mark.probst@gmail.com>
11345
11346         * generic-sharing.c: Put reflection types in the extensible part
11347         of the runtime generic context.
11348
11349         * mini.c: Generic sharing of the GetTypeHandle special case of the
11350         ldtoken instruction.
11351
11352 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11353
11354         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
11355
11356         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
11357         
11358         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
11359         consistency with the other version on the linear IR branch.
11360
11361         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
11362
11363         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
11364
11365         * iltests.il.in: Add new tests.
11366
11367 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
11368
11369         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
11370
11371         * iltests.il.in: Add new tests.
11372
11373 2008-03-19  Mark Probst  <mark.probst@gmail.com>
11374
11375         * mini.c: Two variables with the same name were declared in
11376         nesting contexts and one wasn't initialized.  Fixed.
11377
11378 2008-03-19  Mark Probst  <mark.probst@gmail.com>
11379
11380         * mini.c: Generic sharing of the initobj instruction.
11381
11382 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
11383
11384         * mini.c: make the test to optimize ldtoken from typeof() more
11385         precise.
11386
11387 2008-03-18  Mark Probst  <mark.probst@gmail.com>
11388
11389         * mini.c: Generic sharing of the initobj instruction for reference
11390         types.
11391
11392 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
11393
11394         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
11395         the mono_breakpoint_clean_code() code to perform bound checks.
11396
11397 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
11398
11399         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
11400         mono_arch_patch_callsite() to include the start of the managed method
11401         to be able to perform bound checks.
11402
11403 2008-03-17  Mark Probst  <mark.probst@gmail.com>
11404
11405         * mini.c: Generic sharing for the isinst instruction.
11406
11407 2008-03-17  Mark Probst  <mark.probst@gmail.com>
11408
11409         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
11410         inssel-long32-mips.brg: Added opcodes for doing indirect calls
11411         with the runtime generic context argument.
11412
11413         * mini.c: Share calls to several types of unsharable methods by
11414         putting the address of the method code in the runtime generic
11415         context and doing an indirect call.
11416
11417         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
11418         to switches.
11419
11420 2008-03-16  Mark Probst  <mark.probst@gmail.com>
11421
11422         * generic-sharing.c: Change due to a change in the runtime genric
11423         context API.
11424
11425 2008-03-15  Martin Baulig  <martin@ximian.com>
11426
11427         * tramp-x86.c
11428         (mono_arch_nullify_class_init_trampoline): Add call to
11429         mono_breakpoint_clean_code() to make things work when running
11430         inside the debugger.
11431
11432         * tramp-amd64.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 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
11438
11439         * inssel-long.brg (reg): Fix 64 bit build.
11440
11441 2008-03-14  Mark Probst  <mark.probst@gmail.com>
11442
11443         * mini.c, mini.h: Share static generic code by passing it an
11444         implicit argument pointing to the runtime generic context.
11445
11446         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
11447         inssel-long32-mips.brg: New opcodes for calling shared static,
11448         which need to be passed the runtime generic context.
11449
11450         * mini-amd64.c, mini-x86.c: Save the runtime generic context
11451         argument on the stack in the prologue if needed.  New function for
11452         finding the runtime generic context argument from the registers
11453         saved by the trampoline.
11454
11455         * mini-amd64.h, mini-x86.h: Specify which register to use for the
11456         runtime generic context argument.
11457
11458         * tramp-amd64.c: Also restore the register used for the runtime
11459         generic context argument.
11460
11461         * mini-trampoline.c: Resolve shared static calls by consulting the
11462         runtime generic context via the new argument.
11463
11464         * generic-sharing.c: Add an argument to sharability-checking
11465         functions that specifies whether type variables should be treated
11466         as sharable type arguments.
11467
11468         * inssel-x86.brg: Removed a superfluous, buggy rule.
11469
11470         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
11471         to switches.
11472
11473 2008-03-14  Martin Baulig  <martin@ximian.com>
11474
11475         * debug-debugger.c (main_thread_handler): Call
11476         mono_runtime_run_main() without sending any notifications.
11477
11478         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
11479
11480 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
11481
11482         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
11483
11484 2008-03-14  Mark Probst  <mark.probst@gmail.com>
11485
11486         * tramp-x86.c: Fixed register restore offsets in the trampoline
11487         code for ECX and EDX.
11488
11489 2008-03-12  Geoff Norton  <gnorton@novell.com>
11490
11491         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
11492         different ucontext_t implementations.
11493         * exceptions-arm.c: Use the above defines to get exceptions working on 
11494         iPhone (based on a patch by Luke Howard lukeh@padl.com)
11495         * mini-arm.c: Implement iPhone icache support (based on a patch by
11496         Luke Howard lukeh@padl.com)
11497
11498 2008-03-12  Mark Probst  <mark.probst@gmail.com>
11499
11500         * mini.c: Enable generic sharing of calls to non-static
11501         non-interface non-generic non-value-type methods.
11502
11503         * mini-trampolines.c: Resolve calls from shared generic code.
11504
11505 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
11506
11507         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
11508
11509         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
11510
11511 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
11512
11513         * mini.c: some fixes for the AOT compiler.
11514
11515 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
11516
11517         * cpu-amd64.md: Add clob:1 to some float opcodes.
11518
11519 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
11520
11521         * mini.h: Added MiniVerifierMode enumeration.
11522
11523         * mini.c: Added mini_verifier_set_mode to control
11524         the usage of the new verifier.
11525
11526         * mini.c (mono_method): Integrated the new verifier.
11527
11528         * driver.c: Extended --security option with validil and
11529         verifiable options to activate the new verifier.
11530
11531 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
11532
11533         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
11534         optimization to ctors taking 0 or 2 arguments too.
11535
11536         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
11537         a bit.
11538
11539         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
11540
11541         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
11542
11543 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
11544
11545         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
11546         non-aot case as well.
11547
11548         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
11549
11550         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
11551         changes.
11552
11553         * aot-compiler.c (encode_patch): Ditto.
11554
11555         * mini.h (G_MININT32): Fix the definition of this.
11556
11557 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
11558
11559         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
11560
11561         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
11562
11563 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
11564
11565         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
11566         methods returning vtypes in registers.
11567         (mono_arch_allocate_vars): Ditto.
11568
11569         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
11570
11571         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
11572
11573         * generics.cs: Add a test from the linear IR branch.
11574
11575         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
11576
11577         * mini.c (inline_method): Cache failed inline attempts.
11578
11579 2008-03-04  Mark Probst  <mark.probst@gmail.com>
11580
11581         * mini.c: For shared methods of generic classes put the location
11582         of "this" into the MonoGenericJitInfo.
11583
11584         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
11585         register out of a MonoContext by register number.  Add the generic
11586         sharing context as an argument to mono_arch_find_this_argument().
11587
11588         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
11589         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
11590         for new arch function.
11591
11592         * mini-exception.c: Handle open exception clauses in shared
11593         generic code.
11594
11595         * mini-trampolines.c: Supply additional argument to
11596         mono_arch_find_this_argument().
11597
11598 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
11599
11600         * Makefile.am (regtests): Run the bench.exe tests last.
11601
11602 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
11603
11604         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
11605         a bit.
11606
11607 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
11608
11609         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
11610         with MS.
11611
11612         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
11613         
11614         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
11615
11616         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
11617         whose class has no cctor.
11618
11619         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
11620
11621 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
11622
11623         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
11624         unverified.
11625
11626 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
11627
11628         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
11629         to be in sync with the code on the linear IR branch.
11630
11631         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
11632
11633         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
11634
11635 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
11636
11637         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
11638
11639         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
11640
11641         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
11642
11643         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
11644
11645         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
11646         
11647         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
11648         body.
11649
11650 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
11651
11652         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
11653         OP_LOADR4_MEMBASE emission.
11654
11655         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
11656         (mono_spillvar_offset_float): Ditto.
11657
11658         * mini-mips.c (mono_arch_emit_prolog): Ditto.
11659
11660         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
11661         emission.
11662
11663         * basic-long.cs: Add regression tests for them.
11664
11665         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
11666         use.
11667         (mono_arch_allocate_vars): Fix representation of single-precision float
11668         argument.
11669         (mono_arch_output_basic_block): Ditto.
11670
11671         * inssel-mips.brg: Ditto, remove duplicate items.
11672
11673         * mini-mips.c (emit_load_volatile_arguments): New function to handle
11674         arguments of tail calls as on other platforms.
11675         (mono_arch_output_basic_block): Handle tail calls.
11676
11677         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
11678         register.
11679
11680         * objects.cs (test_5_pass_static_struct): Add test for it.
11681
11682         Contributed under MIT/X11 license.
11683
11684 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
11685
11686         * Makefile.am: Use gmcs for compiling the regression tests.
11687
11688         * *.2.cs *.2.il: Rename to *.cs and *.il.
11689
11690 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
11691
11692         * regalloc.h: Make the vassign array smaller.
11693
11694         * mini.c (mini_method_compile): Remove an unused field in cfg.
11695
11696         * mini-codegen.c: Add a bunch of micro optimizations.
11697
11698 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
11699
11700         * regalloc.h: Remove some unused fields.
11701
11702 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
11703
11704         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
11705
11706         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
11707
11708 2008-02-22  Mark Probst  <mark.probst@gmail.com>
11709
11710         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
11711
11712         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
11713         trampoline: Fetch an entry from the runtime generic context.  If
11714         it's NULL, jump to the actual trampoline to fill the runtime
11715         generic context.  Otherwise, return it.
11716
11717         * mini.c: Call the lazy fetch trampoline to get entries out of the
11718         runtime generic context.
11719
11720         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
11721         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
11722         tramp-sparc.c: Stubs for the lazy fetch trampoline.
11723
11724 2008-02-21  Mark Probst  <mark.probst@gmail.com>
11725
11726         * mini.c: Fetch data out of the extensible part of the runtime
11727         generic context instead of calling a helper function.
11728
11729         * generic-sharing.c: Some functions moved into
11730         metadata/generic-sharing.c.  Helper function for fetching other
11731         types now checks and asserts against extensible rgctx (just for
11732         debugging purposes - the helper function isn't called anymore
11733         unless for debugging).
11734
11735 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
11736
11737         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
11738         for tail calls up to the point that the tests in iltests.exe run. Also add a
11739         dummy CKFINITE implementation.
11740         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
11741         needed for trampoline LMF frames.
11742
11743         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
11744         trampoline LMF frames.
11745
11746 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
11747
11748         * mini.c (inline_method): clean any pending loader error when inlining fail.
11749         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
11750
11751 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
11752
11753         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
11754
11755         * aot-runtime.c (decode_patch_info): Ditto.
11756
11757         * mini.c (mono_resolve_patch_target): Ditto.
11758         
11759         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
11760         icall wrappers.
11761
11762         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
11763         
11764         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
11765         if it references an icall address.
11766
11767 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
11768
11769         * cpu-s390x.md: Remove some more unused opcodes.
11770         
11771         * cpu-s390x.md: Remove some unused opcodes.
11772
11773         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
11774         mono_op_imm_to_op ().
11775
11776         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
11777         instead of a switch statement.
11778         
11779         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
11780         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
11781
11782         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
11783         
11784         * mini-codegen.c: Remove unused mono_regstate2_... functions.
11785
11786         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
11787         -1.
11788
11789 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
11790
11791         * driver.c (mono_main): Improve error reporting when an assembly cannot be
11792         opened. Fixes #362607.
11793
11794         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
11795
11796         * iltests.il.in: Add a test for static methods in interfaces.
11797
11798 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
11799
11800         * genmdesc.c (build_table): Fix a crash on older glib versions.
11801
11802         * cpu-sparc.md: Remove some unused opcodes.
11803         
11804         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
11805         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
11806
11807         * cpu-amd64.md: Remove some unused opcodes.
11808
11809         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
11810         like the other opcodes.
11811
11812 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
11813
11814         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
11815
11816         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
11817
11818         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
11819         variables 'cfg' instead of 'm' for consistency.
11820
11821         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
11822
11823         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
11824         argument holding the vtype return address, to avoid the ambigious use of
11825         cfg->ret for this purpose.
11826
11827         * mini.c (NEW_RETLOADA): Use vret_addr if set.
11828
11829         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
11830         
11831         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
11832         new mono_print_ins () function which only takes one argument.
11833
11834 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
11835
11836         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
11837         macro arguments.
11838
11839 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
11840
11841         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
11842
11843         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
11844
11845         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
11846         opcodes and other small changes.
11847
11848         * mini-ops.h: Add some new opcodes from the linear IR branch.
11849
11850         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
11851
11852         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
11853         opcodes, use the REG_MEMBASE opcodes instead.
11854         
11855         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
11856         opcodes, use the REG_MEMBASE opcodes instead.
11857         
11858         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
11859         linear IR branch.
11860
11861         * mini.c (mono_op_imm_to_op): New helper function.
11862
11863         * mini-ops.h: Add some opcodes from linear IR branch.
11864
11865 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
11866
11867         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
11868         <tsv@solvo.ru>.
11869
11870 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
11871
11872         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
11873         OP_ICONV_TO_R4/R8.
11874
11875         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
11876
11877 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
11878
11879         * aot-compiler.c (emit_method_code): Add an assert.
11880
11881         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
11882         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
11883         methods.
11884
11885 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
11886
11887         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
11888         some load/store opcodes so they are consistent. 
11889         (mono_arch_emit_prolog): Simplify some code.
11890
11891         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
11892
11893         * objects.cs: Add tests for large argument offsets on ARM.
11894
11895         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
11896         stack offsets. Fixes #359651.
11897
11898         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
11899
11900         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
11901
11902         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
11903
11904         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
11905
11906         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
11907
11908         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
11909         rid of CEE_CONV_R_UN.
11910
11911         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
11912
11913 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
11914
11915         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
11916
11917         * mini.c (mono_normalize_opcodes): Add some more opcodes.
11918
11919         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
11920
11921         * cpu-amd64.md: Remove some unused opcodes.
11922
11923         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
11924
11925         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
11926
11927         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
11928         arch specific functions for its parts. Call the peephole pass after local
11929         regalloc so the prolog can compute a more accurate max_offset.
11930         
11931         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
11932         the corresponding OP_I/OP_L opcodes.
11933
11934         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
11935
11936         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
11937
11938 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
11939
11940         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
11941         as they are handled in mini.c.
11942
11943         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
11944         
11945         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
11946         case since it is handled in mini.c.
11947
11948         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
11949
11950         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
11951
11952         * *.c: Use the new opcodes in the IR and back end code.
11953
11954         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
11955
11956         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
11957
11958 2008-02-06  Mark Probst  <mark.probst@gmail.com>
11959
11960         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
11961         an assert because it has a race condition.
11962
11963 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
11964
11965         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
11966
11967         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
11968
11969         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
11970
11971         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
11972         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
11973
11974 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
11975
11976         * cpu-amd64.md (move): Correct the maximum size of move.
11977
11978 2008-02-05  Mark Probst  <mark.probst@gmail.com>
11979
11980         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
11981         the generic class init trampoline to return quickly if the class
11982         is already inited.
11983
11984 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
11985
11986         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
11987         issues where an 32 bit callsite cannot be patched by a 64 bit address.
11988
11989 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
11990
11991         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
11992         branch.
11993
11994 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
11995
11996         * objects.cs: Add some soft-float tests.
11997
11998         * mini.c: Fix a couple more soft-float issues.
11999
12000         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
12001
12002         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
12003         avoid a REX prefix.
12004
12005 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
12006
12007         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
12008         exception happens while compiling a virtual method.
12009
12010 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
12011
12012         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
12013         
12014         * mini-sparc.c: Fix build.
12015
12016         * mini-sparc.c (get_call_info): Add support for generic sharing.
12017
12018         * mini-exceptions.c: Add a FIXME.
12019
12020 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
12021
12022         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
12023         altstack handling code.
12024
12025         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
12026         
12027         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
12028
12029         * mini-s390.c: Add support for generic sharing.
12030
12031         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
12032         Fix CAS on s390.
12033         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
12034
12035         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
12036
12037         * mini-s390x.c: Add support for generic sharing.
12038         
12039         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
12040         Fix CAS on ia64.
12041         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
12042
12043         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
12044         can be used since it takes a 16 bit signed immediate.
12045
12046         * inssel-s390x.brg: Fix OP_SETRET.
12047
12048         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
12049
12050         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
12051
12052         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
12053
12054         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
12055
12056         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
12057         in one place.
12058
12059         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
12060         stuff.
12061
12062         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
12063         of the unused mono_arch_patch_delegate_trampoline stuff.
12064
12065 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
12066
12067         * basic-long.cs: Move the fp related tests to basic-float.cs.
12068
12069         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
12070
12071         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
12072
12073         * basic-calls.cs: Add a test for proper float argument passing.
12074
12075         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
12076         if the context corresponds to an exception received through a signal.
12077
12078         * exceptions.cs: Add a test for nullref handling at the start of a try
12079         clause.
12080
12081         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
12082
12083         * jit-icalls.c (mono_break): New JIT icall.
12084
12085         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
12086
12087         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
12088
12089 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
12090
12091         * cpu-*.md: Get rid of unused opcodes.
12092
12093         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
12094
12095         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
12096         by all platforms.
12097
12098         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
12099         define.
12100
12101         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
12102         the arch independent trampoline code in mini-trampolines.c.
12103
12104         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
12105
12106         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
12107
12108         * mini-s390.h: Remove an unused define.
12109         
12110         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
12111         the arch independent trampoline code in mini-trampolines.c.
12112
12113         * mini-arm.c (mono_arch_emit_prolog): Fix build.
12114
12115 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
12116
12117         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
12118
12119         * mini-s390.c (mono_arch_emit_prolog): Fix build.
12120
12121         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
12122
12123         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
12124
12125         * cpu-amd64.md: Use smaller sizes for int opcodes.
12126
12127         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
12128
12129         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
12130         objects.cs.
12131
12132         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
12133         debugging.
12134
12135         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
12136         instead of though a pointer to save an indirection when accessing elements of
12137         the array.
12138
12139         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
12140         some typos.
12141         (NOT_IMPLEMENTED): New helper macro.
12142         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
12143         of a bb.
12144
12145         * *.c: Use the new helper macro.
12146
12147 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
12148
12149         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
12150
12151 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
12152
12153         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
12154         stack slots.
12155
12156 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
12157
12158         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
12159         profiling is enabled.
12160         
12161         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
12162         the end.
12163         (mono_arch_emit_prolog): Add more first bblock optimizations.
12164
12165         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
12166         in order if possible.
12167         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
12168         bblock, since the arguments are still in their original registers.
12169
12170         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
12171
12172 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
12173
12174         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
12175         as well.
12176
12177         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
12178         offset 0.
12179
12180         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
12181
12182         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
12183         process async exceptions received while in unmanaged code.
12184
12185         * mini.c (mini_init): Install a callback with the runtime which will be called
12186         when a thread receives an async exception while in unmanaged code.
12187
12188         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
12189
12190         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
12191
12192 2008-01-16  Wade Berrier  <wberrier@novell.com>
12193
12194         * cpu-g4.md:
12195         * cpu-arm.md:
12196         * cpu-s390x.md:
12197         fix build
12198
12199 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
12200
12201         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
12202         compilation with sun cc.
12203
12204         * cpu-*.md: Fix the build.
12205
12206         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
12207
12208         * mini-amd64.h: Add some comments to the MonoLMF structure.
12209
12210         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
12211         
12212         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
12213         in the LMF structure if possible. This saves two instructions in the
12214         managed->native wrappers.
12215
12216         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
12217
12218 2008-01-16  Mark Probst  <mark.probst@gmail.com>
12219
12220         * generic-sharing.c: New type argument lookup code which uses the
12221         runtime generic context template.
12222
12223 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
12224
12225         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
12226
12227         * mini-arm.c (add_general): Fix arm eabi parameter passing.
12228         (mono_arch_output_basic_block): Fix localloc implementation.
12229
12230         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
12231
12232         * mini-ia64.c (peephole_pass): Fix ia64 build.
12233
12234         * mini-amd64.c (peephole_pass): Fix a warning.
12235         
12236         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
12237         at a constant offset from sp/fp.
12238
12239         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
12240         instead of obtaining it from *lmf in the managed method case.
12241
12242 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
12243
12244         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
12245
12246 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
12247
12248         * mini.h (MonoInstList): New type.
12249         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
12250         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
12251         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
12252         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
12253         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
12254         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
12255         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
12256         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
12257         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
12258         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
12259         MONO_INST_LIST_FOR_EACH_ENTRY,
12260         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
12261         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
12262         mono_inst_list_first, mono_inst_list_last,
12263         mono_inst_list_next, mono_inst_list_prev): New instruction
12264         list handling interfaces.
12265         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
12266         list head 'ins_list'.
12267         (MonoInst): Replace next pointer with list head 'node'.
12268         (MonoCallInst): Make 'out_args' a MonoInstList.
12269         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
12270         (MonoCompile): Delete reverse_inst_list and
12271         reverse_inst_list_len.
12272         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
12273         mono_arch_lowering_pass, mono_arch_local_regalloc,
12274         mono_arch_output_basic_block, mono_arch_emit_prolog):
12275         Convert to new instruction lists.
12276         (insert_after_ins): Delete.
12277         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
12278         instruction lists.
12279         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
12280         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
12281         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
12282         mono_emulate_opcode, mono_emit_load_got_addr,
12283         inline_method, mono_method_to_ir, mono_print_bb_code,
12284         print_dfn, decompose_pass, nullify_basic_block,
12285         replace_out_block_in_code, remove_block_if_useless,
12286         merge_basic_blocks, move_basic_block_to_end,
12287         try_unsigned_compare, optimize_branches, mono_print_code,
12288         mini_select_instructions, remove_critical_edges): Likewise.
12289         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
12290         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
12291         mono_arch_output_basic_block, mono_arch_emit_prolog):
12292         Likewise.
12293         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
12294         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12295         mono_arch_output_basic_block): Likewise.
12296         (inst_list_prepend, insert_after_ins): Delete.
12297         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
12298         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
12299         instruction lists.
12300         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
12301         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
12302         mono_arch_emit_prolog): Likewise.
12303         * cfold.c (mono_constant_fold): Likewise.
12304         * liveness.c (visit_bb, mono_analyze_liveness,
12305         optimize_initlocals): Likewise.
12306         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
12307         * graph.c (mono_draw_code_cfg): Likewise.
12308         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
12309         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
12310         mono_ssa_cprop): Likewise.
12311         * abcremoval (get_relations_from_previous_bb, process_block):
12312         Likewise.
12313         * local-propagation (mono_cprop_invalidate_values,
12314         mono_local_cprop_bb): Likewise.
12315         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
12316         peephole_pass, mono_arch_output_basic_block,
12317         mono_arch_emit_prolog): Likewise.
12318         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
12319         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12320         mono_arch_emit_prolog): Likewise.
12321         (insert_after_ins): Delete.
12322         * aliasing.c (print_code_with_aliasing_information,
12323         mono_build_aliasing_information, mono_aliasing_deadce):
12324         Convert to new instruction lists.
12325         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
12326         peephole_pass, NEW_INS, mono_arch_lowering_pass,
12327         mono_arch_local_regalloc, mono_arch_output_basic_block):
12328         Likewise.
12329         (insert_after_ins): Delete.
12330         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
12331         peephole_pass, mono_arch_output_basic_block): Convert to
12332         new instruction lists.
12333         * mini-codegen (InstList, inst_list_prepend,
12334         insert_after_ins): Delete.
12335         (insert_before_ins, get_register_force_spilling,
12336         get_register_spilling, free_up_ireg, free_up_reg,
12337         create_copy_ins, create_spilled_store, alloc_int_reg,
12338         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
12339         to new instruction lists.
12340         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
12341         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12342         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
12343         (insert_after_ins): Delete.
12344         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
12345         mono_arch_local_regalloc, mono_arch_output_basic_block,
12346         mono_arch_call_opcode): Convert to new instruction lists.
12347         (insert_after_ins): Delete.
12348         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
12349         peephole_pass, mono_arch_output_basic_block,
12350         mono_arch_emit_prolog): Convert to new instruction lists.
12351
12352 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
12353
12354         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
12355
12356         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
12357         Fixes #353182.
12358
12359         * Makefile.am (version.h): Make this work with non-bash shells.
12360
12361 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
12362
12363         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
12364
12365 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
12366
12367         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
12368         the InitializeArray optimization.
12369
12370 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
12371
12372         * mini.c driver.c: Don't include os/gc_wrapper.h.
12373
12374 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
12375
12376         * mini.c (print_jit_stats): Print GC statistics if available.
12377
12378 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
12379
12380         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
12381
12382 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
12383
12384         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
12385
12386 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
12387
12388         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
12389         
12390         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
12391
12392         * driver.c (mono_main): Ditto.
12393
12394 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
12395
12396         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
12397
12398         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
12399         in the vtable can't be encoded.
12400         (compile_method): Ditto.
12401
12402 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
12403
12404         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
12405         defined.
12406
12407         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
12408         lmf->rbp.
12409
12410         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
12411         the top LMF entry belongs to the current method.
12412
12413         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
12414
12415 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
12416
12417         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
12418         
12419         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
12420
12421         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
12422
12423         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
12424
12425         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
12426
12427         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
12428         implementation.
12429
12430         * basic-float.cs: Add an ulong->double cast test.
12431
12432 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
12433
12434         * mini.c (mono_method_to_ir): Fix a warning.
12435
12436 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
12437
12438         * mini-ops.h: Add OP_SWITCH.
12439
12440         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
12441         CEE_SWITCH in back-end code, use OP_SWITCH instead.
12442
12443 2007-12-11  Geoff Norton  <gnorton@novell.com>
12444
12445         * mini-s390x.c: Minor change to the MAX() define to allow
12446         it to compile with other gcc versions.
12447
12448 2007-12-11  Geoff Norton  <gnorton@novell.com>
12449
12450         * cpu-s390x.md:
12451         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
12452
12453 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
12454
12455         exceptions-arm.c (mono_arch_get_restore_context): Restore
12456         the frame pointer.
12457
12458         exceptions-arm.c (throw_exception): Save the frame pointer.
12459         This is a partial fix for #323747. Only the client side is
12460         fixed.
12461
12462 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
12463
12464         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
12465         was using an unrelated variable to log the class which
12466         needed the cctor to be called. This was crashing on arm.
12467
12468 2007-12-09  Robert Jordan  <robertj@gmx.net>
12469
12470         * mini-x86.c (mono_arch_emit_epilog):
12471         Consider all kinds of 64-bit types. Fixes #323114.
12472
12473 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
12474
12475         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
12476
12477 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12478
12479         * mini-amd64.c (peephole_pass): Add a missing instruction check.
12480
12481 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
12482
12483         * mini.c: run type ctor before allocating an object, not only
12484         when running it's constructor method (fixes at least part of bug #342507).
12485
12486 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12487         
12488         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
12489         
12490         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
12491         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
12492         function.
12493
12494         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
12495         mono_generic_class_init_trampoline () the same as it is done with the other
12496         trampolines.
12497
12498         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
12499         aot-runtime.c aot-compiler.c: Implement AOT support.    
12500
12501 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12502
12503         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
12504         build for archs which don't have the vtable trampoline defined
12505         yet.
12506
12507 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12508
12509         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
12510
12511         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
12512
12513         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
12514
12515         * tramp-<ARCH>.c: Use the new helper function.
12516
12517 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12518
12519         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
12520         trampoline call, which takes a vtable argument.
12521
12522         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
12523         OP_TRAMPCALL_VTABLEs like other calls.
12524
12525         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
12526         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
12527         call.  Implemented a support function which fetches the vtable
12528         from a register set.
12529
12530         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
12531         Implemented a generic class init trampoline, using the
12532         OP_TRAMPCALL_VTABLE opcode.
12533
12534         * mini.c: Implemented static field access when sharing generic
12535         code.  This implies initing the class using the new
12536         OP_TRAMPCALL_VTABLE call.
12537
12538 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12539
12540         * mini.c: Don't compile methods with sharing enabled if their
12541         classes are disabled for sharing.
12542
12543 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
12544
12545         * inssel.brg: Add a missing sign extension to the GETCHR and array access
12546         opcodes. Fixes #346563.
12547
12548         * objects.cs: Add a new test.
12549
12550         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
12551
12552         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
12553         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
12554
12555 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
12556
12557         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
12558
12559 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
12560
12561         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
12562         code stream.
12563
12564 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
12565
12566         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
12567
12568         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
12569         optimization in the AOT case.
12570         
12571 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
12572
12573         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
12574         
12575         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
12576
12577         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
12578
12579         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
12580
12581         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
12582         is created by the inlined delegate ctor.
12583
12584         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
12585
12586         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
12587
12588 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
12589
12590         * cpu-x86.md: Fix the length of ckfinite.
12591
12592 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
12593
12594         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
12595         
12596         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
12597         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
12598
12599         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
12600
12601         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
12602         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
12603
12604 2007-11-28  Martin Baulig  <martin@ximian.com>
12605
12606         * mini-x86.c
12607         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
12608         after creating the trampoline.
12609
12610 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
12611
12612         * aot-runtime.c (load_aot_module): Check runtime version if needed.
12613
12614         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
12615         the same version.
12616
12617         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
12618         instead of the calling method to help AOT.
12619
12620         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
12621
12622 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
12623
12624         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
12625         is defined.
12626
12627 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
12628
12629         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
12630         
12631         * aot-compiler.c (compile_method): Correct check for generic method definitions.
12632         (encode_method_ref): No need to handle generic method definitions specially.
12633
12634         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
12635
12636         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
12637         decode_klass_info.
12638
12639         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
12640         encode_klass_info.
12641         (compile_method): Enable generic sharing.
12642
12643 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
12644
12645         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
12646         (mini_method_compile): Add preliminary support for AOTing shared generic code.
12647
12648         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
12649         generic code.
12650
12651         * mini-trampolines.c: Fix a warning.
12652
12653         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
12654         NEW_PCONST.
12655         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
12656         (generic_class_is_reference_type): Remove unused function.
12657
12658         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
12659         in the generic vtable trampoline case.
12660
12661         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
12662         
12663         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
12664         return an AOT method based on a vtable slot.
12665
12666         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
12667
12668         * mini.c (mini_get_vtable_trampoline): Export this.
12669
12670 2007-11-22  Martin Baulig  <martin@ximian.com>
12671
12672         * debug-debugger.h
12673         (MonoDebuggerInfo): Move `debugger_version' up.
12674
12675 2007-11-22  Martin Baulig  <martin@ximian.com>
12676
12677         * mini-amd64.c
12678         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
12679
12680         * mini-trampolines.c
12681         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
12682         after compiling the method.
12683
12684 2007-11-20  Martin Baulig  <martin@ximian.com>
12685
12686         * debug-mini.c
12687         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
12688         (mono_debugger_remove_breakpoint): Likewise.
12689         (mono_debugger_check_breakpoints): Likewise.
12690
12691         * debug-debugger.c: Implement the new breakpoint interface here.
12692
12693 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
12694
12695         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
12696         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
12697
12698         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
12699
12700 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
12701
12702         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
12703
12704         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
12705         mini.c.
12706
12707         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
12708         mini.c.
12709
12710         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
12711         returning a vtype in a register.
12712
12713         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
12714         here from the arch specific code.
12715
12716         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
12717         mini.c.
12718
12719         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
12720         (mono_arch_emit_prolog): Increment maximum prolog size.
12721
12722         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
12723         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
12724
12725         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
12726         MonoGenericSharingContext.
12727
12728         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
12729         MonoGenericSharingContext. Allocate memory from the cfg mempool.
12730
12731 2007-11-15  Mark Probst  <mark.probst@gmail.com>
12732
12733         * mini.c, mini.h, generic-sharing.c: Functions for producing code
12734         which extract fields out of the runtime generic context.  Full
12735         sharing of the NEWARR opcode.
12736
12737 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
12738
12739         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
12740         --enable-minimal=ssa.
12741
12742 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
12743
12744         * mini-trampolines.c (mono_delegate_trampoline): Update after 
12745         mono_marshal_get_delegate_invoke () signature change.
12746
12747 2007-11-13  Mark Probst  <mark.probst@gmail.com>
12748
12749         * mini.c: Removed the shared context in favor of the generic
12750         sharing context.  Allocate the MonoJitInfo structure with room for
12751         the generic sharing context if it's needed.
12752
12753         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
12754         domain-internals.h now.
12755
12756         * mini-x86.c: Pass the generic sharing context to get_call_info ().
12757
12758         * generic-sharing.c: Several changes for working without a shared
12759         context and instead operating on open types instead.
12760
12761 2007-11-12  David S. Miller  <davem@davemloft.net>
12762
12763        * inssel-sparc.brg: Fix double instruction emit.
12764
12765 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
12766
12767         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
12768         Get/Set/Address methods.
12769         
12770         * mini.c debug-debugger.c mini-trampolines.c: Update after 
12771         mono_marshal_get_delegate_invoke signature change.
12772
12773 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
12774
12775         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
12776         This can happens with dynamic methods. Fixes the other bug in #322722.
12777
12778 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
12779
12780         * tramp-arm.c (mono_arch_patch_callsite): Support patching
12781         BX call sequence.
12782
12783         * mini-arm.c (arm_patch): Implement patching of BX call
12784         sequence. Fixes one of the bugs in #322722.
12785
12786 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
12787
12788        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
12789        under Linux.  We only need to flush every 32-byte cache line.    
12790
12791 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
12792
12793         * mini.c:
12794         move_basic_block_to_end: Add branches when needed, eventually creating
12795         a new BB.
12796         optimize_branches: added a parameter that tells if it's ok to create
12797         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
12798         and avoid calling move_basic_block_to_end when it's not ok.
12799         Fixes bug 318677.
12800
12801 2007-11-07  Mark Probst  <mark.probst@gmail.com>
12802
12803         * mini.c: Abort inlining call to InitializeArray if something
12804         looks wrong.  Let the icall handle it, which now has proper safety
12805         checks.
12806
12807 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
12808
12809         * mini.c (mono_spill_call): add support for soft-float.
12810
12811         * mini.c (mono_method_to_ir): add support for soft-float
12812         to inlined functions that return float.
12813
12814         * mini.c (mono_method_to_ir): add support for soft-float
12815         to cee_stsfld opcode on float fields.
12816
12817 2007-11-05  Geoff Norton  <gnorton@novell.com>
12818
12819         * mini-x86.h: Fix the structure access for X86 Leopard.
12820
12821
12822 2007-11-05  Martin Baulig  <martin@ximian.com>
12823
12824         * mini-trampolines.c
12825         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
12826         after compiling the method to notify the debugger.
12827
12828 2007-11-05  Martin Baulig  <martin@ximian.com>
12829
12830         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
12831
12832 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
12833
12834         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
12835         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
12836
12837 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
12838
12839         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
12840         native-to-managed wrappers.
12841         
12842 2007-11-01  Geoff Norton  <gnorton@novell.com>
12843
12844         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
12845         members.
12846
12847 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
12848
12849         * mini.c, mini-x86.c: when getting back from unmanaged code
12850         to managed via a marshaled delegate we also need to set the
12851         right domain.
12852
12853 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
12854
12855         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
12856         for amd64.
12857
12858 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
12859
12860         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
12861         let the debugger or other external agents to tell the JIT when
12862         a sw breakpoint has been inserted in the code that the JIT needs
12863         to be able to inspect.
12864
12865 2007-10-31  Martin Baulig  <martin@ximian.com>
12866
12867         * debug-debugger.h
12868         (MonoDebuggerInfo): Remove `runtime_class_init'.
12869
12870 2007-10-30  Martin Baulig  <martin@ximian.com>
12871
12872         * debug-mini.h
12873         (mono_debugger_thread_created): Added `MonoThread *' argument.
12874         (mono_debugger_extended_notification): New public method.
12875         (mono_debugger_trampoline_compiled): New public method.
12876
12877         * debug-mini.c
12878         (MonoDebuggerThreadInfo): Added `thread' and
12879         `extended_notifications' fields.
12880
12881         * debug-debugger.c
12882         (debugger_executable_code_buffer): New static variable.
12883
12884         * debug-debugger.h
12885         (MonoDebuggerInfo): Added `executable_code_buffer',
12886         `executable_code_buffer_size', `breakpoint_info_area',
12887         `breakpoint_table' and `breakpoint_table_size'.
12888
12889 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
12890
12891         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
12892         that IP  either is an unused value or the vtable pointer. IMT 
12893         calls use vtable + offset now. Reduced by almost half the size
12894         of IMT entries.
12895
12896 2007-10-26  Jonathan Chambers <joncham@gmail.com>
12897
12898         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
12899         defines to access param registers. Replace long usage with
12900         gsize as sizeof(long) != sizeof(void*) on Win64.
12901
12902         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
12903         on Win64. Fix intrinsic, use _AddressOfReturnAddress
12904         instead of non-existant _GetAddressOfReturnAddress.
12905
12906         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
12907         param registers. Save/restore %rdi and %rsi in MonoLMF.
12908
12909         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
12910         param registers. Modify (throw_exception) signature to take 
12911         %rdi and %rsi on Win64. 
12912
12913         Code is contributed under MIT/X11 license.
12914
12915 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
12916
12917         * helpers.c: unlink debugging output files.
12918
12919 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
12920
12921         * mini.c: Move mono_create_ftnptr () to object.c.
12922
12923 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
12924
12925         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
12926         optional. This function can now be used to disassemble code generated
12927         outside the JIT such as trampolines and IMT thunks.
12928
12929         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
12930
12931         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
12932         vtable pointer from a ldr instruction.
12933
12934         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
12935         new IMT call sequence.
12936
12937         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
12938         call sequence for interface invocations.
12939
12940         * mini-arm.c (mono_arch_emit_imt_argument): added, required
12941         for imt support. This function is empty since IMT on ARM requires no
12942         special handling on the IR side.
12943
12944         * mini-arm.c (mono_arch_find_imt_method): added, required for
12945         imt support.
12946
12947         * mini-arm.c (mono_arch_find_this_argument): added, required
12948         for imt support.
12949
12950         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
12951         a ldr instruction to load a value stored in the code stream.
12952
12953         * mini-arm.c (mono_arch_build_imt_thunk):added, required
12954         for imt support.
12955
12956
12957 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
12958
12959         * mini.c (mini_init): Install the jump trampoline callback.
12960
12961 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12962
12963         * mini-trampolines.c: handle synchronized methods with the common
12964         vtable trampoline (bug #335601).
12965
12966 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
12967
12968         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
12969
12970         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
12971         64 bit platforms.
12972
12973         * mini-ia64.h mini-ia64.c: Add support for IMT.
12974
12975         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
12976         prolog. Fixes #331958.
12977
12978 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
12979
12980         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
12981
12982 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12983
12984         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
12985         trampoline.
12986
12987 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12988
12989         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
12990         trampoline.
12991
12992 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
12993
12994         * mini-x86.c, mini-x86.h: x86 support for the common vtable
12995         trampoline.
12996
12997 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
12998
12999         * mini-trampolines.c: changed the magic rampoline to understand
13000         the common vtable trampoline method: the method to invoke is
13001         determined by the vtable displacement of the call.
13002
13003 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13004
13005         * mini.c, mini.h: register the common vtable trampoline if the
13006         architecture supports it.
13007
13008 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13009
13010         * cpu-amd64.md: use the correct max length for tls_get.
13011
13012 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
13013
13014         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
13015         CEE_STELEM_ANY. Fixes #333696.
13016
13017 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
13018
13019         * exceptions-x86.c: provide more graceful handling of the case where
13020         we followed a bogus function pointer from managed code (bug #332866).
13021
13022 2007-10-11  Mark Probst  <mark.probst@gmail.com>
13023
13024         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
13025         replaces the generic_shared flag and will carry more information
13026         in the future.
13027
13028         * generic-sharing.c: Added mini_type_stack_size() which allows
13029         allows open types if given a generic sharing context.
13030         mini_get_basic_type_from_generic() takes a
13031         MonoGenericSharingContext* instead of a MonoCompile* now.
13032
13033         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
13034         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
13035         mini-sparc.c, mini-x86.c: Trivial changes required by the two
13036         changes above.  Just passing arguments through to the right
13037         places.
13038
13039 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
13040
13041         * mini-arm.c: unify the call emission to emit_code_seq().
13042
13043 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
13044
13045         * tramp-arm.c: reduced the trampoline size.
13046
13047 2007-10-10  Mark Probst  <mark.probst@gmail.com>
13048
13049         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
13050         variable handling out of arch-specific code.
13051
13052 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
13053
13054         * mini-arm.c: implemented fast delegate dispatch.
13055
13056 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
13057
13058         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
13059         that fp elimination is turned off if the space required by locals is too
13060         big. Fixes #331958.
13061
13062 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
13063
13064         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
13065         ARM to the new style trampoline.
13066
13067 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
13068
13069         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
13070
13071         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
13072
13073 2007-10-09  Martin Baulig  <martin@ximian.com>
13074
13075         * debug-debugger.h
13076         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
13077         `field_info_offset_offset'.     
13078
13079 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
13080
13081         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
13082         removed more internal usage of the r11 register and made it available
13083         to the register allocator.
13084
13085 2007-10-08  Mark Probst  <mark.probst@gmail.com>
13086
13087         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
13088         when sharing generics and treat type variables as references.
13089
13090 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
13091
13092         * mini-ppc.c: started removing the internal uses of register r11
13093         to eventually allow the register allocator to manage it as an
13094         additional available register.
13095
13096 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
13097
13098         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
13099
13100 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
13101
13102         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
13103         specific trampolines as they are not performance critical as a jump
13104         target (maybe align as before only for AOT code?). This saves about
13105         200 KB of native code on x86 for monodevelop startup.
13106
13107 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
13108
13109         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
13110         monodevelop startup.
13111
13112 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
13113
13114         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
13115
13116         * mini-sparc.h mini-sparc.c: Implement IMT support.
13117
13118         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
13119         its smaller and doesn't clobber sparc_g1.
13120
13121         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
13122
13123 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
13124
13125         * mini-ppc.c: optimized the size of the IMT thunks a bit.
13126
13127 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
13128
13129         * mini-ppc.c: implemented fast delegate invocation.
13130
13131 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
13132
13133         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
13134
13135 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
13136
13137         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
13138         code to the new style trampoline in preparation for IMT support.
13139
13140 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
13141
13142         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
13143         systems already. This also reduces the specific trampiline sizes and
13144         prepares for the use of r12 as the IMT identifier register.
13145
13146 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13147
13148         * mini-mips.h: endianess fix (simplified from a patch by
13149         Thomas Kunze <thommy@tabao.de>, bug #323737).
13150
13151 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
13152
13153         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
13154         to access ucontext fields and enable netbsd support
13155         (partially from Magnus Henoch <mange@freemail.hu>).
13156
13157 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13158
13159         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
13160         use the preprocessor from the CPP env var if it is set.
13161
13162 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
13163
13164         * mini-trampolines.c: fixed an assertion and moved it earlier in the
13165         code, before interface_offset gets used.
13166
13167 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
13168
13169         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
13170         mono_class_setup_vtable () before accessing klass->vtable.
13171
13172 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
13173
13174         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
13175         hackish.
13176
13177 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13178
13179         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
13180         IMT slots (this saves hundreds of KB of memory in programs like
13181         IronPython and Monodevelop).
13182
13183 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
13184
13185         * mini.c: print the delegate counter.
13186
13187 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
13188
13189         * mini-x86.c: make it easier to enable the debugging code for IMT
13190         slots.
13191
13192 2007-09-28  Martin Baulig  <martin@ximian.com>
13193
13194         * debug-debugger.h
13195         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
13196         `mono_method_klass_offset' and `mono_method_token_offset'.
13197
13198 2007-09-20  Mark Probst  <mark.probst@gmail.com>
13199
13200         * mini.c: First generics sharing implementation.  Can only share
13201         in very simple cases.  If sharing doesn't work it falls back to
13202         dedicated compilation.
13203
13204         * mini.h: Flag in MonoCompile to specify whether generic
13205         compilation is shared.  Flags enum for marking which generic inst
13206         of a context is used.  Prototypes for helper functions.
13207
13208         * generic-sharing.c: Helper functions for generic method sharing.
13209
13210         * optflags-def.h: Optimization flag (gshared) for enabling generic
13211         method sharing added.
13212
13213         * Makefile.am: generic-sharing.c added.
13214
13215 2007-09-19 Daniel Nauck <dna@mono-project.de>
13216
13217         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
13218
13219 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
13220         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
13221         fixes bug 325507.
13222
13223 2007-09-19  Martin Baulig  <martin@ximian.com>
13224
13225         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
13226         mono_debug_cleanup() is now part of mono_cleanup().
13227
13228 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
13229
13230         * driver.c (mono_main): Fix a warning.
13231
13232 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
13233
13234         * aot-compiler.c: Optimize various parts when processing large assemblies.
13235         Fixes ##325568.
13236
13237         * mini.c (mono_patch_info_hash): Improve hash function.
13238
13239 2007-09-14  Jonathan Chambers <joncham@gmail.com>
13240
13241         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
13242         
13243         Code is contributed under MIT/X11 license.
13244
13245 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
13246
13247         * mini.c (mini_init): Fix a leak.
13248
13249         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
13250
13251 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13252
13253         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
13254
13255 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
13256
13257         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
13258
13259 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
13260
13261         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
13262         variance tests.
13263
13264         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
13265
13266         * mini.c (handle_alloc): Enable managed allocators in AOT code.
13267
13268         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
13269
13270         * aot-runtime.c (decode_patch_info): Ditto.
13271
13272 2007-09-12  Jonathan Chambers <joncham@gmail.com>
13273
13274         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
13275         static case. Cache delegates in architecture specific code, 
13276         based on number of parameters.
13277         
13278         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
13279         in architecture specific code, based on number of parameters.
13280         
13281         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
13282         caching happen in architecture specific code now.
13283         
13284         Code is contributed under MIT/X11 license.
13285
13286 2007-09-12  Jonathan Chambers <joncham@gmail.com>
13287
13288         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
13289         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
13290         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
13291
13292         Code is contributed under MIT/X11 license.
13293
13294 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
13295         * mini.c: (mono_thread_abort) Fixed bug #82416.
13296
13297 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
13298
13299         * mini.: hook the new managed GC allocation feature into the JIT.
13300
13301 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
13302
13303         * mini.c: implementation for the new runtime tls opcode.
13304
13305 2007-09-11  Martin Baulig  <martin@ximian.com>
13306
13307         * debug-debugger.h
13308         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
13309         `mono_method_inflated_offset'.
13310
13311 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
13312
13313         * driver.c mini.h mini.c: Add a new devel command line option for injecting
13314         async exceptions into a method.
13315
13316         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
13317         purpose of testing whenever the unwinder works at every instruction.
13318
13319 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
13320
13321         * mini.c: check accessibility of method used in ldftn (fixes
13322         bug #82635).
13323
13324 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
13325
13326         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
13327
13328         * inssel.brg: Fix a warning.
13329
13330 2007-09-03  Martin Baulig  <martin@ximian.com>
13331
13332         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
13333         now takes the `main_method' as argument.
13334
13335 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
13336
13337         * cpu-sparc.md (endfilter): Add missing src1:i argument.
13338
13339 2007-08-30  Jonathan Chambers <joncham@gmail.com>
13340
13341         * driver.c: include the cil-coff.h header on Windows.
13342         
13343         Code is contributed under MIT/X11 license.
13344
13345 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
13346
13347         * mini.c, driver.c: don't include the cil-coff.h header.
13348
13349 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
13350
13351         * mini.c: flag places that needs fixes fo soft-float support.
13352
13353 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
13354
13355         * mini.h, inssel-float.brg: fix soft-float constant loads on big
13356         endian systems (partially from Dean Jenkins, bug #81924).
13357
13358 2007-08-28  Mark Probst  <mark.probst@gmail.com>
13359
13360         * mini.c (check_linkdemand): Remove embedded reference object in
13361         call to LinkDemandSecurityException.
13362         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
13363         with an IntPtr instead of a reference object.
13364
13365 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
13366
13367         * mini.c (handle_initobj): Handle alignment properly.
13368
13369         * inssel.brg (mini_emit_memset): Ditto. 
13370
13371         * inssel.brg (mini_emit_memcpy): Ditto. 
13372
13373         * inssel-sparc.brg: Ditto.              
13374
13375         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
13376
13377 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
13378
13379         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
13380         exceptions raised in unmanaged code. Fixes part of #82594.
13381
13382 2007-08-24  Mark Probst  <mark.probst@gmail.com>
13383
13384         * mini.c (mono_method_to_ir), declsec.c
13385         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
13386
13387 2007-08-22  Martin Baulig  <martin@ximian.com>
13388
13389         * debug-mini.h
13390         (MonoDebuggerThreadInfo): New typedef.
13391         (mono_debugger_thread_table): New global variable.
13392         (mono_debugger_thread_created): New public function.
13393         (mono_debugger_thread_cleanup): New public function.
13394
13395         * debug-debugger.h
13396         (MonoDebuggerInfo):
13397         - removed `get_current_thread' and `lookup_assembly'.
13398         - removed `data_table'.
13399         - added `thread_table'.
13400
13401         * mini.c
13402         (mono_thread_start_cb): Call mono_debugger_thread_created().
13403         (mono_thread_attach_cb): Likewise.
13404         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
13405         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
13406         initial domain.
13407
13408         * driver.c (mono_main): Move mono_debug_init() up, before calling
13409         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
13410
13411 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13412
13413         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
13414         together when passing several arguments of type double (gives a small
13415         speedup and saves a few bytes of generated code).
13416
13417 2007-08-20  Jb Evain  <jbevain@novell.com>
13418
13419         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
13420
13421 2007-08-20  Jb Evain  <jbevain@novell.com>
13422
13423         * mini.c (mono_method_to_ir): throw MethodAccessException
13424         and FieldAccessException instead of InvalidProgramException.
13425
13426 2007-08-20  Mark Probst  <mark.probst@gmail.com>
13427
13428         * mini.c: CoreCLR security checks.
13429
13430         * mini.h: Removed MonoSecurityMode (moved to
13431         metadata/security-manager.h) and mono_security_mode global var
13432         (replaced by set/get functions in security-manager.h).
13433
13434         * driver.c: Added "core-clr-test" security mode for testing.  Used
13435         set-function for setting security mode.
13436
13437 2007-08-17  Mark Probst  <mark.probst@gmail.com>
13438
13439         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
13440         the new jit_info_table.
13441
13442         * driver.c: Test code for the new jit_info_table (enabled by the
13443         define MONO_JIT_INFO_TABLE_TEST).
13444
13445 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
13446
13447         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
13448         detection of call <REG> instruction sequence. Fixes build on freebsd.
13449
13450 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
13451
13452         * mini-exceptions.c: Fix a warning.
13453
13454 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
13455
13456         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
13457         stack overflow handling code on amd64 too.
13458
13459         * mini-exceptions.c (mono_setup_altstack): Make this use 
13460         mono_thread_get_stack_bounds ().
13461
13462         * mini-x86.h: Disable sigaltstack on solaris x86.
13463
13464 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
13465
13466         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
13467
13468 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
13469
13470         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
13471
13472 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
13473
13474         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
13475
13476         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
13477
13478 2007-08-03  Neale Ferguson <neale@sinenomine.net>
13479
13480         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
13481         due to alignment.
13482
13483 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
13484
13485         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
13486         to be emitted (bug #82281).
13487
13488 2007-08-01  Martin Baulig  <martin@ximian.com>
13489
13490         Merged the `debugger-dublin' branch.
13491
13492         * debug-debugger.h (MonoDebuggerInfo):
13493         Removed the `old_*' compatibility entries.
13494         Added `debugger_version' and `data_table'.
13495         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
13496         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
13497
13498         * debug-mini.c
13499         (MiniDebugMethodBreakpointInfo): Add `address_list'.
13500         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
13501         instead of a `gconstpointer'.
13502         (mono_debugger_insert_method_breakpoint): Return a
13503         `MonoDebugMethodAddressList *'.
13504
13505 2007-06-28  Martin Baulig  <martin@ximian.com>
13506
13507         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
13508
13509 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
13510
13511         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
13512         __builtin_frame_address () since it is broken on older gcc versions.
13513
13514 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
13515
13516         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
13517         on the stack overflow handling and made the managed stack overflows
13518         catchable in most cases using soft guard pages.
13519         * exceptions-x86.c: added code to restore the protection in the soft
13520         guard pages at the end of exception handling.
13521
13522 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
13523
13524         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
13525
13526 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13527
13528         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
13529         exception handling.
13530
13531 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13532
13533         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
13534         signal handling support until it has been ported to the new mechanism.
13535         * mini.c: fixed stack overflow detection and use the new
13536         architecture code  to handle signals on the altstack.
13537
13538 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
13539
13540         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
13541         stack overflows on the alt stack.
13542
13543 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
13544
13545         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
13546         stack overflows on the alt stack.
13547
13548 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
13549
13550         * exceptions-ppc.c: cleanup preparing for altstack support.
13551
13552 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
13553
13554         * exceptions-arm.c: cleanup preparing for altstack support.
13555
13556 2007-07-27  Mark Probst  <mark.probst@gmail.com>
13557
13558         * mini.c (print_jit_stats): Output hazard pointer stats.
13559
13560 2007-07-26  Mark Probst  <mark.probst@gmail.com>
13561
13562         * driver.c, mini.c: Replaced security mode flags with a single
13563         enum variable.
13564
13565 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13566
13567         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
13568
13569 2007-07-25  Mark Probst  <mark.probst@gmail.com>
13570
13571         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
13572         (which doesn't do anything yet) for activating Core CLR
13573         (Silverlight) security.
13574
13575 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
13576
13577         * mini-codegen.c: work around a possible gcc bug on arm.
13578
13579 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
13580
13581         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
13582         message for platforms that don't support AOT compilation.
13583
13584 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
13585
13586         * mini.h, mini.c, driver.c: temporary smcs hack.
13587
13588 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
13589
13590         * mini-arm.h, mini-arm.c: arm EABI fixes.
13591
13592 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
13593
13594         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
13595         case.
13596
13597         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
13598         trampolines taking a method argument.
13599
13600         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
13601
13602         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
13603         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
13604
13605         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
13606         JIT compilation throws an exception. Fixes #82050.
13607
13608 2007-07-19  Mark Probst  <mark.probst@gmail.com>
13609
13610         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
13611         with the MONO_EXCEPTION_ defines.
13612
13613 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
13614
13615         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
13616         #82117.
13617         
13618         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
13619         the cause of an assertion.
13620
13621 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
13622
13623         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
13624         removed.
13625
13626 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
13627
13628         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
13629         assert. Should fix #82103.
13630
13631 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
13632
13633         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
13634         here too. Fixes #82095.
13635
13636         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
13637         addresses.
13638
13639         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
13640
13641         * mini-amd64.h: Enable IMT for amd64.
13642         
13643         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
13644
13645 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
13646
13647         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
13648
13649 2007-07-12  Mark Probst  <mark.probst@gmail.com>
13650
13651         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
13652         as soon as check_linkdemand sets an exception_type.
13653
13654 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
13655
13656         * mini-x86.c: fixed offsets for IMT call sequence.
13657         * mini-x86.h: enable IMT again.
13658
13659 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
13660
13661         * trace.c (mono_trace_enter_method): Decode MonoType too.
13662
13663         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
13664
13665         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
13666
13667         * mini-amd64.c: Add preliminary IMT implementation.
13668         
13669 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
13670
13671         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
13672         understand the new IMT-base interface invocation (thanks to
13673         Daniel Nauck for the report and the remote debugging session).
13674
13675 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
13676
13677         * mini-x86.c: size and speed optimizations for the IMT bsearch.
13678
13679 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
13680
13681         * Makefile.am (aotcheck): Make this actually use the AOTed code.
13682
13683 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
13684
13685         * mini-trampolines.c: implement AOT IMT support.
13686         * mini-x86.h: enable IMT support for wider testing.
13687
13688 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
13689
13690         * inssel.brg (emit_imt_argument): Add aot support here.
13691
13692         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
13693
13694 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
13695
13696         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
13697         of the IMT implementation, partially from massi, with my
13698         implementation of the bsearch sequence. Disabled by default until
13699         the AOT code is implemented.
13700
13701 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
13702
13703         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
13704
13705         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
13706
13707 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13708
13709         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
13710         arch-independent IMT JIT code from Massimiliano
13711         Mantione (massi@ximian.com) with small cleanups from me.
13712
13713 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
13714
13715         * Makefile.am: fix svn invocation to get the svn revision to be
13716         independent of the local language (build fix).
13717
13718 2007-07-09  Mark Probst  <mark.probst@gmail.com>
13719
13720         * mini.c (inline_method): Reset cfg->exception_type if the
13721         inlining is aborted.  Fixes: 82049.
13722
13723 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
13724
13725         * mini.c: remove assert from exception handling code when exception_ptr
13726         is not set.
13727
13728 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
13729
13730         * mini.c (mono_codegen): Add an assert.
13731
13732         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
13733         enter and leave code.
13734         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
13735
13736 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13737
13738         * mini-ppc.c: fixed memory corruption for localloc(0)
13739         (bug #81852).
13740
13741 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
13742         
13743         * mini.c: Fix warnings.
13744
13745 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
13746
13747         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
13748         to emit better double->int conversions.
13749
13750 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
13751
13752         * mini.c: the provided Min/Max optimizations are valid for unisgned
13753         ints.
13754
13755 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
13756
13757         * 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
13758
13759 2007-06-28  Miguel de Icaza  <miguel@novell.com>
13760
13761         * mini.c (mono_running_on_valgrind): Add support for reporting the
13762         method and  its boundaries to valgrind.
13763
13764 2007-06-28  Martin Baulig  <martin@ximian.com>
13765
13766         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
13767
13768 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
13769
13770         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
13771
13772         * generic.2.cs: Add new test case.
13773
13774 2007-06-25  Martin Baulig  <martin@ximian.com>
13775
13776         Merged the `debugger-dublin' branch.
13777
13778         * debug-mini.c
13779         (mono_debugger_insert_method_breakpoint): New public method.
13780         (mono_debugger_remove_method_breakpoint): Likewise.
13781         (mono_debugger_check_breakpoints): New static method.
13782         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
13783
13784         * debug-debugger.h (MonoDebuggerInfo):
13785         Renamed (to keep backward compatibility in the vtable):
13786         `insert_breakpoint' -> `old_insert_breakpoint'.
13787         `remove_breakpoint' -> `old_remove_breakpoint'.
13788         `create_string' -> `old_create_string'.
13789         `lookup_class' -> `old_lookup_class'.
13790         `lookup_type' -> removed; changed into a dummy field.
13791         `lookup_assembly' -> `old_lookup_assembly'.
13792         Added (same functionality, but different signature):
13793         `create_string', `lookup_class', `lookup_assembly'
13794         Added new:
13795         `get_method_addr_or_bpt', `remove_method_breakpoint',
13796         `runtime_class_init'.
13797
13798         * debug-debugger.c: Merged the `debugger-dublin' branch.
13799
13800 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
13801
13802         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
13803         well.
13804         (peephole_pass): Likewise.
13805
13806 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
13807
13808         * driver.c: hopefully make setaffinity work also for ancient
13809         versions of linux.
13810
13811 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
13812
13813         * driver.c : win32 build fix.
13814
13815 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
13816
13817         * driver.c: check for the MONO_NO_SMP env var and bind to a single
13818         processor if it is set.
13819
13820 2007-06-21  Martin Baulig  <martin@ximian.com>
13821
13822         * debug-mini.h: New file.
13823
13824         * debug-mini.c
13825         (mono_debugger_insert_breakpoint_full): Moved here from
13826         ../metadata/mono-debug-debugger.c.
13827         (mono_debugger_remove_breakpoint): Likewise.
13828         (mono_debugger_breakpoint_callback): Likewise.
13829
13830 2007-06-15  Raja R Harinath  <rharinath@novell.com>
13831
13832         * jit-icalls.c (mono_helper_compile_generic_method): Update to
13833         changes in MonoGenericClass.
13834
13835 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
13836
13837         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
13838
13839 2007-06-14  Raja R Harinath  <rharinath@novell.com>
13840
13841         * jit-icalls.c (mono_helper_compile_generic_method): Update to
13842         removal of MonoGenericMethod.
13843
13844 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13845
13846         * mini-exceptions.c: hooks for the exception events profiling API.
13847
13848 2007-06-14  Randolph Chung  <tausq@debian.org>
13849
13850         * Makefile.ma: Add hppa target.
13851         * mini-arch.h: Include mini-hppa.h
13852         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
13853         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
13854         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13855
13856 2007-06-14  Randolph Chung  <tausq@debian.org>
13857
13858         * inssel.brg: Add rules for "chained" compare-branch operations so that
13859         a single compare op can affect multiple branches.  Adjust cost for
13860         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
13861         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
13862         cost for some rules so that they can more easily be overridden by
13863         per-arch rules (with fixes from lupus).
13864         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13865
13866 2007-06-13  Randolph Chung  <tausq@debian.org>
13867
13868         * mini-ops.h: Reorder branch ops so that they match the order of the
13869         corresponding CEE_* ops.  The code expects them this way.
13870         Add new ops for HPPA target.
13871         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13872
13873 2007-06-13  Randolph Chung  <tausq@debian.org>
13874
13875         * mini-exceptions.c: Handle cases where the stack grows towards
13876         larger addresses.
13877         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13878
13879 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
13880
13881         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
13882         counter.
13883         * driver.c: explain where a non-matching corlib is found.
13884
13885 2007-06-13  Mark Probst  <mark.probst@gmail.com>
13886
13887         * mini.c (print_jit_stats): Output dynamic code allocation stats.
13888
13889 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
13890
13891         * mini-exceptions.c: Generate a method profile leave event during
13892         an exception to ensure that the profiler gets notified.
13893
13894 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
13895
13896         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
13897         branch.
13898
13899         * cpu-amd64.md: Add long_and/or/xor opcodes.
13900
13901 2007-06-06  Wade Berrier  <wberrier@novell.com>
13902
13903         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
13904         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
13905         length of instruction shr_imm (expected 8, got 10)
13906
13907 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
13908
13909         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
13910
13911 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13912
13913         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
13914         MonoInternalHashTable again (fixed bug in the internal hash table
13915         code).
13916
13917 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13918
13919         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
13920         Have to figure out what makes it crash the SWF regression.
13921
13922 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
13923
13924         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
13925
13926 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13927
13928         * mini.c: optimize out the type check when storing null in a
13929         reference array.
13930
13931 2007-06-04  Mark Probst  <mark.probst@gmail.com>
13932
13933         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
13934         MonoInternalHashTable.
13935
13936 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
13937
13938         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
13939         signed integer methods.
13940
13941 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
13942
13943         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
13944         permanently since the current approach doesn't work.
13945
13946 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
13947
13948         * inssel.brg (stmt): Only call delegate->invoke_impl if 
13949         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
13950
13951 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
13952
13953         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
13954         the sreg2==rdx case.
13955         
13956         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
13957         account if it contains a rex prefix.
13958         (peephole_pass): Handle OP_FMOVE as well.
13959
13960 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
13961
13962         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
13963         as it causes regressions.
13964
13965 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
13966
13967         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
13968         static case as well.
13969
13970         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
13971
13972         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
13973         (mono_arch_get_this_arg_from_call): Ditto.
13974
13975         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
13976
13977         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
13978         invoke_impl field.
13979
13980         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
13981         (mono_arch_get_this_arg_from_call): Ditto.
13982
13983         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
13984         
13985         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
13986         try to create optimized invoke code and use that for further invocations. 
13987         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
13988
13989         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
13990
13991 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
13992
13993         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
13994         sealed classes or methods.
13995         *devirtualization.cs: tests for the new optimization
13996
13997 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
13998
13999         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
14000         by the update_volatile () function.
14001
14002 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
14003
14004         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
14005         require it.
14006
14007         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
14008
14009 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
14010
14011         * mini.c: Add configure checks for header files.
14012         * mini-x86.c: Add configure checks for header files.
14013         * trace.c: Add configure checks for header files.
14014         * aot-runtime.c: Add configure checks for header files.
14015         * aot-compiler.c: Add configure checks for header files.
14016         * driver.c: Add configure checks for header files.
14017         * mini-codegen.c: Add configure checks for header files.
14018         
14019         Code is contributed under MIT/X11 license.
14020
14021 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
14022
14023         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
14024         icompare_imm -128 + op_iclt. Fixes #81703.
14025
14026 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
14027
14028         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
14029
14030 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14031
14032         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
14033         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
14034         so that all isinst checks now use "interface_bitmap".
14035
14036 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
14037
14038         * cpu-amd64.md (jmp): Fix a warning.
14039
14040         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
14041
14042         * basic.cs: Add new regression test.
14043
14044         * basic.cs: Remove test which is now in basic-long.cs.
14045
14046         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
14047
14048         * basic-long.cs: Add new test.
14049         
14050 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
14051
14052         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
14053
14054 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
14055
14056         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
14057
14058         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
14059         places.
14060         
14061         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
14062         throwing code a bit.
14063
14064         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
14065         the exception throwing code a bit.
14066
14067         * mini-x86.c (get_call_info): Allocate result from a mempool.
14068
14069 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
14070
14071         * aot-compiler.c (find_typespec_for_class): Fix the assert.
14072
14073         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
14074
14075         * mini.h (MonoCompile): Add 'token_info_hash' field.
14076
14077         * mini.c: Save token->method associations during compilation so the AOT 
14078         compiler can use it.
14079         
14080         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
14081         which reference generic classes and methods.
14082
14083 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
14084
14085         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
14086
14087         * aot-compiler.c (compile_method): Fix a typo in a comment.
14088
14089         * aot-runtime.c (decode_cached_class_info): Skip generic types.
14090
14091         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
14092         everything generic.
14093
14094         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
14095
14096 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
14097
14098         * mini.h (MonoCompile): Add 'args' field.
14099
14100         * mini.c (mono_compile_create_vars): Store variables representing the arguments
14101         into cfg->args.
14102
14103         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
14104
14105 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
14106
14107         * mini.c (mono_compile_get_interface_var): Remove this unused function.
14108
14109         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
14110
14111         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
14112         opcodes for some opcodes.
14113
14114         * mini.h *.brg *.c: Use the new opcodes.
14115
14116 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
14117
14118         * mini.h: Bumped aot revision.
14119
14120         * inssel.brg: modified code generation of type checks for interfaces
14121         to use the new "MonoClass.interface_bitmap" instead of the old
14122         "MonoClass.interface_offsets".
14123
14124 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
14125
14126         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
14127
14128 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
14129
14130         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
14131         64 bit platforms.
14132
14133 2007-04-27  Neale Ferguson <neale@sinenomine.net>
14134
14135         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
14136
14137 2007-04-27  Wade Berrier  <wberrier@novell.com>
14138
14139         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
14140         mini.h) to fix build.
14141
14142 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
14143
14144         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
14145         
14146         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
14147         causes the corlib unit tests to fail.
14148
14149 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
14150
14151         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
14152
14153         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
14154
14155         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
14156         opcodes to the comparison relations.
14157
14158         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
14159         opcodes to their types.
14160         
14161         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
14162
14163         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
14164         it in cfg->arch.cinfo.
14165
14166         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
14167
14168         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
14169         cfg->cil_offset_to_bb.
14170
14171 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
14172
14173         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
14174         created becase of initlocals.
14175
14176 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
14177
14178         * mini-alpha.c cpu-alpha.md: More alpha port work from 
14179         Sergey Tikhonov <tsv@solvo.ru>.
14180
14181 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
14182
14183         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
14184
14185 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
14186
14187         * cpu-s390.md (break): Correct the length of break instruction.
14188
14189 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14190
14191         * mini.c: fix a couple of soft-float issues and comments.
14192
14193 2007-04-15  Miguel de Icaza  <miguel@novell.com>
14194
14195         * trace.c (is_filenamechar): - is also a filename char.
14196
14197 2007-04-15  Neale Ferguson <neale@sinenomine.net>
14198
14199         * mini-s390.c: Correct checking for enum type in return value processing.
14200
14201 2007-04-14  Raja R Harinath  <rharinath@novell.com>
14202
14203         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
14204         (version.h): Makefile is in the build directory.
14205
14206 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
14207
14208         * mini-amd64.h: fix for assertion failure on Solaris/amd64
14209
14210 2007-04-11  Martin Baulig  <martin@ximian.com>
14211
14212         * mini.c (can_access_member): Fix handling of generic classes;
14213         fixes #81259.
14214
14215 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
14216
14217         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
14218
14219 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
14220
14221         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
14222
14223 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
14224
14225         * mini-codegen.c: make sure the right spill amount is
14226         used for fp or integer registers (fixes the float_sub_spill() on ppc).
14227
14228 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
14229
14230         * mini-ppc.c: fixes for the fp_branch_nan test.
14231
14232 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
14233
14234         * basic.cs: Comment out new test which still fails on ia64.
14235
14236 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14237
14238         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
14239
14240 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14241
14242         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
14243
14244 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
14245
14246         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
14247         on 64 bit machines. Fixes part of #80738.
14248
14249         * basic.cs: Add regression test.
14250
14251 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
14252
14253         * inssel.brg basic.cs: Revert previous change to fix build.
14254
14255         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
14256         platforms.
14257         
14258         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
14259
14260         * basic.cs: Add new regression test.
14261
14262 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
14263
14264         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
14265         many arguments.
14266
14267 2007-03-16  Neale Ferguson <neale@sinenomine.net>
14268
14269         * cpu-s390x.md: Correct length of break instruction.
14270
14271 2007-03-16  Neale Ferguson <neale@sinenomine.net>
14272
14273         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
14274         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
14275
14276 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
14277
14278         * *.c: Begin WIN64 port.
14279         * mini.c:  Use correct register in profiler.
14280         * mini-amd64.c: No inline assembly on Win64.
14281         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
14282         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
14283         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
14284         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
14285         mono_arch_ip_from_context for Win64.
14286         
14287         Contributed under MIT/X11 license.
14288
14289 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
14290
14291         * exceptions-amd64.c (seh_handler): Ditto.
14292
14293         * exceptions-x86.c (seh_handler): Fix a memory leak.
14294
14295 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
14296
14297         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
14298         mini-s390x.c: fixed peephole optimizations to deal
14299         correctly with 1 and 2 byte reload avoidance.
14300
14301 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
14302
14303         * cpu-s390.md, cpu-s390x.md: update localloc length.
14304
14305 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
14306
14307         * cpu-g4.md: added missing descriptions.
14308
14309 2007-03-14  Miguel de Icaza  <miguel@novell.com>
14310
14311         *  Makefile.am: Add support so the tail tests are not executed on
14312         PowerPC as that is a known limitation of the PowerPC port.
14313
14314 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
14315
14316         * runmdesc.bat:  Move to msvc directory.
14317         
14318 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
14319
14320         * runmdesc.bat:  Run executable that was produced by the current
14321         target and sent via an argument.
14322         
14323 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
14324
14325         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
14326         #81102.
14327
14328         * generics.2.cs: Add regression test.
14329
14330 2007-03-09  Wade berrier  <wberrier@novell.com>
14331
14332         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
14333
14334 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
14335
14336         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
14337         AOT code depends on this.
14338
14339 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
14340
14341         * mini.c: more precise tracking of types in the eval stack
14342         (part of fix for bug #81044).
14343
14344 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
14345
14346         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
14347
14348         * aot-compiler.c (encode_patch): Remove an obsolete comment.
14349
14350 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
14351
14352         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
14353
14354         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
14355
14356 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
14357
14358         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
14359         a pointer on 64 bit systems. Fixes #80190.
14360
14361         * iltests.il: Add new regression test.
14362
14363 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14364
14365         * mini.c: inline a constant for Environment.IsRunningOnWindows.
14366
14367 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
14368
14369         * trace.c: Remove an erroneous alignemnt check when tracing.
14370           Fixes --trace on OSX86.
14371
14372 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
14373
14374         * mini-$(arch).h: initialize SP in context for all the archs.
14375
14376 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
14377
14378         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
14379         regressions in the thread tests.
14380
14381 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
14382
14383         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
14384         - fixed implementation of LOCALLOC opcode
14385         - implemented non-un compare for floats
14386         - code cleanup
14387         - implementation of FDIV and CKFINITE opcodes
14388         - fixes for latest mono updates
14389         - additional arch opcodes
14390
14391 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
14392
14393         * Makefile.am: simplify and merge rules for cross-compilation.
14394
14395 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
14396
14397         * local-propagation.c: Actually *apply* the fix for bug 80591...
14398
14399 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
14400
14401         * mini-exceptions.c: backuot part of the last change
14402         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
14403
14404 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
14405         * inssel.brg: Fix bug 59286.
14406
14407
14408 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
14409
14410         * mini-exceptions.c: patch from Zoltan to correctly check for
14411         stack boundaries (using the stack register, not the frame register),
14412         fixes bugs #80724, #79717.
14413
14414 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
14415
14416         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
14417         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
14418
14419         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
14420         presence of frame pointer elimination.
14421
14422 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
14423         
14424         * mini-x86.h: NetBSD UCONTEX_REG defines.
14425
14426 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
14427
14428         * inssel-amd64.brg: Fix amd64 build.
14429
14430 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
14431
14432         * mini.h: remove extern to workaround what looks likes gcc bug 26905
14433         on amd64.
14434
14435 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
14436
14437         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
14438         ends.
14439
14440         * mini-<ARCH>.c: Use mono_is_regsize_var ().
14441
14442 2007-01-30 Mark Mason <mason@broadcom.com>
14443
14444            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
14445            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
14446            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
14447            beginning support for CEE_JMP [not quite working yet]
14448            * tramp-mips.c: LMF handling now works
14449         
14450 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
14451
14452         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
14453
14454         * mini.h (NULLIFY_INS): New macro.
14455
14456 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14457
14458         * mini.c: statistical profiler fix for windows, patch
14459         from Tor Lillqvist (tml@novell.com).
14460
14461 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
14462         * local-propagation.c: Fix bug 80591.
14463
14464 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
14465
14466         * Makefile.am: put back the --export-dynamic option as with
14467         the previous gmodule flags (thanks to Robert Jordan).
14468
14469 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
14470
14471         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
14472
14473         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
14474         simplify and speed up the local register allocator. Also rename some fields
14475         like iassign->vassign.
14476         
14477         * regalloc.c: Remove some functions which are no longer used since their
14478         inlined version is in mini-codegen.c.
14479         
14480         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
14481
14482         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
14483
14484 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
14485
14486         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
14487         narrowing. Fixes #80622.
14488
14489         * iltests.il: Add new regresssion test. 
14490
14491 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
14492
14493         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
14494         debug-debugger.c, debug-debugger.h: warning fixes.
14495         * driver.c: updated copyright year and made it fit in one line.
14496
14497 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
14498
14499         * aot-runtime.c: updated to use mono-dl instead of gmodule.
14500
14501 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
14502
14503         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
14504
14505         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
14506
14507         * iltests.il: Add new test for bug #80507.
14508
14509 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14510
14511         * mini-arm.h: use soft-float also on vfp for now.
14512
14513 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
14514
14515         * mini.c: fix some more soft-float issues.
14516
14517 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
14518
14519         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
14520
14521 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
14522         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
14523         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
14524         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
14525
14526 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
14527
14528         * mini-arm.c: typo fix.
14529
14530 2007-01-23  Neale Ferguson <neale@sinenomine.net>
14531
14532         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
14533
14534 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
14535
14536         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
14537         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
14538
14539         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
14540
14541         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
14542
14543         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
14544         
14545         * inssel.brg: Fix a warning.
14546
14547         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
14548
14549         * abcremoval.c ssa.c ssapre.c: Update after this change.
14550         
14551         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
14552
14553         * dominators.c (df_set): Use mono_bitset_union_fast.    
14554
14555 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
14556
14557         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
14558         mini-codegen.c: reduce relocations and memory usage for the cpu
14559         description.
14560
14561 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
14562
14563         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
14564
14565         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
14566         to reduce their size.
14567
14568 2007-01-19 Mark Mason <mason@broadcom.com>
14569
14570         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
14571         * mini-mips.c: more configuration macros, support long conditional branches, additional
14572         asserts, fix epilog instrumentation.
14573         * mini-mips.h: use standard stack walk
14574         * cpu-mips.md: increase size of div, rem and conditional branches
14575         
14576 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
14577
14578         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
14579         to cpu spec data.
14580
14581 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
14582
14583         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
14584         (compile_method): Ditto.
14585
14586         * aot-runtime.c (decode_klass_info): Ditto.
14587
14588         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
14589         needed by the code generated by inssel.brg. Also fix a warning.
14590
14591 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
14592
14593         * mini.c: deal with enums that become genericinsts by
14594         being nested in a generic class (bug #79956).
14595
14596 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
14597
14598         * mini.c: match the generic definition to check for
14599         private access with generic types (bug #78431).
14600
14601 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
14602
14603         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
14604         to make life easier for people cross-compiling that insist on not
14605         using scratchbox.
14606
14607 2007-01-17 Mark Mason <mason@broadcom.com>
14608
14609         * inssel-long.brg: patch to deal with mips missing flags
14610         * inssel-long32-mips.brg: implement overflow checks
14611         * insset-mips.brg: implement overflow checks
14612         * mini-mips.h: implement conditional exception handling
14613         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
14614           Remove unused code, minor cleanups.
14615         * exceptions-mips.c: minor cleanups
14616         * mini-ops.h: add mips conditional exception ops
14617         * cpu-mips.md: add mips conditional exception ops
14618
14619         
14620 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
14621
14622         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
14623         to deal with mips missing of flags.
14624
14625 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
14626
14627         * exceptions-ppc.c: execute fault handlers.
14628
14629 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
14630
14631         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
14632
14633 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
14634
14635         * mini.c: handle also floating point values in initialize_array.
14636
14637 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
14638
14639         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
14640         array initialization and make it conditional on the intrins option.
14641
14642 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
14643
14644         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
14645         relocations and put the patch info names close to the enum definition.
14646
14647 2007-01-15 Mark Mason <mason@broadcom.com>
14648
14649         * basic.cs, exceptions.cs: break up large tests to increase debugability.
14650
14651 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14652
14653         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
14654
14655 2007-01-12  Raja R Harinath  <rharinath@novell.com>
14656
14657         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
14658
14659 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
14660
14661         * Makefile.am: distribute the mips sources.
14662
14663 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14664
14665         * mini-codegen.h: handle bug #80489 here, by excluding ecx
14666         directly.
14667
14668 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
14669
14670         * cpu-x86.md: back out for now as this triggers other regressions.
14671
14672 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
14673
14674         * cpu-x86.md: force src1 and dest regpair for long shift instructions
14675         to eax:edx, so ecx can't get allocated to them (bug #80489).
14676
14677 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
14678
14679         * mini.c, mini-exceptions.c: enabled running fault handlers
14680         (bug #80469).
14681
14682 2007-01-03  Miguel de Icaza  <miguel@novell.com>
14683
14684         * driver.c: If nothing fail, do not use the string "failed",
14685         because it makes it very annoying to view test result logs on the
14686         web. 
14687
14688 2006-12-30  Miguel de Icaza  <miguel@novell.com>
14689
14690         * debug-debugger.c (mono_debugger_main): Rename "main" to
14691         "main_method" to prevent a warning.
14692
14693         Remove a warning for unused field.
14694
14695 2006-12-28  Martin Baulig  <martin@ximian.com>
14696
14697         * debug-debugger.c
14698         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
14699
14700 2006-12-22  Martin Baulig  <martin@ximian.com>
14701
14702         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
14703         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
14704         seperate `.mdb_debug_info' section, so we can access it from the
14705         debugger even if the binary is stripped.
14706
14707         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
14708         from the `.mdb_debug_info' here to prevent the linker from
14709         removing that section.
14710
14711         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
14712         mdb-debug-info64.s.
14713
14714 2006-12-19  Robert Jordan  <robertj@gmx.net>
14715
14716         * mini-x86: enable the code to return small structures in
14717         registers for FreeBSD as well. Fixes bug #80278.
14718         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
14719
14720 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14721
14722         * mini-x86.c: align the stack when calling the profiler
14723         function instrumenting the prolog (on OSX).
14724
14725 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
14726
14727         * mini.c: emit a break opcode where Debugger.Break () is called.
14728
14729 2006-12-13  Miguel de Icaza  <miguel@novell.com>
14730
14731         * mini.c (mono_method_to_ir): Provide useful information on this
14732         assert, to prevent others from debugging like I did.
14733
14734 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14735
14736         * mini.c: enable code which was incorrectly commented
14737         (bug #80235).
14738
14739 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
14740
14741         * mini-x86.c: enable on OSX, too, the code to return small
14742         structures in registers.
14743
14744 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14745
14746         * mini-x86.c: remove the use of the dynamic code manager here, too.
14747
14748 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
14749
14750         * mini.h, debug-debugger.c, tramp-*.c: fixed 
14751         mono_debugger_create_notification_function() to use
14752         mono_global_codeman_reserve () instead of a dynamic code manager.
14753
14754 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
14755
14756         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
14757         ves_array_element_address() jit icall and use a generated
14758         managed method instead (which is about 4 times faster for a rank 3
14759         array access).
14760
14761 2006-11-29  Mark Mason  <mason@broadcom.com>
14762
14763         * basic-calls.cs: additional tests for passing
14764         structures as function arguments.
14765
14766 2006-11-29  Mark Mason  <mason@broadcom.com>
14767
14768         * mini-mips.h: disable custom exception handling
14769         * mini-mips.c: throw/rethrow should use jalr to call
14770         exception stubs.  Fixed bug with passing structures
14771         by value. More support for tracing floating point
14772         functions.
14773
14774 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14775
14776         * mini.c: fixed typo in the soft-float ldind.r4 handling
14777         (bug #80086).
14778
14779 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
14780
14781         * mini.c, mini.h, driver.c: added --runtime command line
14782         option to select a different runtime than the autodetected one.
14783         * jit.h: added API for embedders to initialize with a specific
14784         runtime version.
14785
14786 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
14787
14788         * mini.c: handle also boxing of r4 values (bug #80024).
14789
14790 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14791
14792         * mini-ppc.c: force indirect calls until we reserve
14793         enough address space for all the generated code.
14794
14795 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
14796
14797         * exceptions-arm.c: workaround bugs in the libc definition
14798         of struct ucontext.
14799
14800 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14801
14802         * inssel.brg: fixes from me and Mark Mason.
14803
14804 2006-11-23  Dick Porter  <dick@ximian.com>
14805
14806         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
14807         semaphore display now we've fixed the initial value
14808
14809 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14810
14811         * inssel.brg: partially revert the last change to fix the build.
14812
14813 2006-11-21  Mark Mason  <mason@broadcom.com>
14814
14815         * inssel.brg: Add and use compare-and-branch macros to support
14816         architectures that do not have condition code registers (ie. MIPS).
14817         * *-mips.{c,brg,md}: Fix copyright statements
14818
14819 2006-11-20  Mark Mason  <mason@broadcom.com>
14820
14821         * Makefile.am: remove mini-codegen.c from list of MIPS sources
14822         * mini.c: Allow GET_CONTEXT to be specified by the arch port
14823         * mini.h: Added declaration for mono_print_ins()
14824         * mini-codegen.c: added ins_spec initializer for MIPS
14825         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
14826         vreg to be virtual and hreg to be non-virtual.
14827         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
14828         is not yet working/implemented correctly.
14829         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
14830         non-static, fixup calls to print_ins() from other parts in the file.
14831
14832 2006-11-20  Mark Mason  <mason@broadcom.com>
14833
14834         * basic-calls.cs: added tests for passing structures as arguments
14835         to calls.
14836
14837 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14838
14839         * inssel-long32.brg: optimize signed division by power of two.
14840
14841 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
14842
14843         * mini-arm.c: added support for interworking with thumb code
14844         (mono must be still be built using the ARM instruction encoding).
14845
14846 2006-11-19  Miguel de Icaza  <miguel@novell.com>
14847
14848         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
14849         verifier has different rules for it.   Fixes a few verifier issues
14850         in the test suite.
14851
14852         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
14853         at the end, so people know what happened.
14854
14855 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
14856
14857         * brach-opts.c: in optimize_exception_target() make sure we
14858         are in a catch clause (fixes bug #79871).
14859
14860 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14861
14862         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
14863         more soft-float support fixes.
14864
14865 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
14866
14867         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
14868         that are passed half on the stack and half in registers.
14869
14870 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
14871
14872         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
14873         more mips integration work from Mark E Mason 
14874         <mark.e.mason@broadcom.com>.
14875
14876 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
14877
14878         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
14879         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
14880         tramp-mips.c: added sources for the mips port, not
14881         integrated in the build yet. Contributed by
14882         Mark E Mason <mark.e.mason@broadcom.com>.
14883
14884 2006-11-14  Neale Ferguson <neale@sinenomine.net>
14885
14886         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
14887
14888 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14889
14890         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
14891         put the soft-float rules in its own file since it seems to
14892         break s390 compilation.
14893
14894 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14895
14896         * mini-arm.c: fixed wrnings.
14897
14898 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
14899
14900         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
14901         inssel-arm.brg: ARM support for soft-float.
14902
14903 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
14904
14905         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
14906         loads and stores of 32 bit fp values.
14907
14908 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
14909
14910         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
14911
14912         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
14913         works. Fixes #79852 and #79463.
14914
14915 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14916
14917         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
14918         more soft-float support WIP and fixes.
14919
14920 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
14921
14922         * mini-arm.c: some VFP updates.
14923
14924 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
14925
14926         * mini-exceptions.c: 0 is a valid local var offset in some
14927         architectures, don't assert (bug #78508).
14928
14929 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
14930
14931         * exceptions-arm.c: fixed off by one error in stack walk code.
14932
14933 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
14934
14935         * mini.h, mini.c: more precise tracking of type load exceptions.
14936
14937 2006-11-03  Robert Jordan  <robertj@gmx.net>
14938
14939         * Makefile.am: [WIN32] Add monow.exe target.
14940         * driver.c: [WIN32] Don't detach the console when debugging.
14941         Fixes bug #79797.
14942         
14943 2006-10-30  Miguel de Icaza  <miguel@novell.com>
14944
14945         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
14946
14947 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
14948
14949         * aot-compiler.c (emit_method_info): Add a case missed earlier.
14950
14951         * driver.c (mini_regression): Fix --regression with AOT.
14952
14953         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
14954
14955 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
14956
14957         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
14958
14959         * mini-sparc.h: Don't use sigaction on sparc/linux.
14960
14961         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
14962
14963         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
14964
14965         * mini-exceptions.c: Add proper include files for getpid ().
14966
14967 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
14968
14969         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
14970         address instead of a MonoJitInfo* to avoid decoding the exception info for the
14971         method.
14972
14973         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
14974         name cache to reduce its size.
14975
14976         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
14977
14978 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
14979
14980         * mini-x86.c: Save/restore the current LMF structure more efficiently using
14981         the mono_lmf TLS variable.
14982
14983         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
14984         trampoline lmf frames.  
14985
14986         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
14987
14988 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
14989
14990         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
14991         the mono_lmf TLS variable.
14992
14993         * mini-exceptions.c: Access the LMF structure through accessors.
14994
14995         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
14996         variable instead of in jit_tls->lmf.
14997
14998         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
14999         
15000         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
15001         trampoline lmf frames.
15002
15003         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
15004
15005 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
15006
15007        * mini.c trace.c mini-x86.c: Revert these too.
15008         
15009        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
15010        signature change.
15011
15012 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
15013
15014         * genmdesc.c: removed now dead code.
15015
15016 2006-10-09  Robert Jordan <robertj@gmx.net>
15017
15018         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
15019
15020 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
15021
15022         * mini.h: do not leave gaps in the opcode values.
15023
15024 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
15025
15026         * jit-icalls.h: flag functions as internal here, too.
15027
15028 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
15029
15030         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
15031         functions with the internal attribute.
15032
15033 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
15034
15035         * aot-compiler.c: fclose the file descriptor in the profile read loop.
15036
15037 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
15038
15039         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
15040         for soft-float.
15041
15042 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
15043
15044         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
15045         tail calls as on other platforms.
15046
15047         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
15048
15049         * iltests.il: Add a few tailcall tests.
15050
15051 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
15052
15053         * driver.c: fix loop for old compilers (bug #79521).
15054
15055 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
15056
15057         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
15058
15059         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
15060
15061         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
15062         metadata without any code.
15063
15064         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
15065         more precise debugging information using gdb.
15066
15067 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
15068
15069         * inssel-ia64.brg: Make the helper methods static.
15070
15071 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
15072
15073         * inssel-x86.brg: make the helper methods static.
15074
15075 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
15076
15077         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
15078
15079 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
15080
15081         * mini.c: updates for monoburg changes.
15082         * inssel.brg: make a few helper functions static as they should.
15083
15084 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
15085
15086         * Makefile.am: Move mini-codegen.c to common_sources.
15087
15088 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
15089
15090         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
15091         instructions.
15092         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
15093         mini-ppc.h: port to use the common local register allocator.
15094
15095 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
15096
15097         * mini.h: Remove the comment too then.
15098
15099 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
15100
15101         * mini.h: put back backend.data which is to be used shortly and
15102         doesn't increase the size of MonoInst. If any 64 bit arch aligned
15103         pointers on 4 byte boundaries it'd have much bigger issues running
15104         and you can ifdef it out anyway.
15105
15106 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
15107
15108         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
15109         MonoInst size by 4 bytes on 64 bit machines.
15110
15111 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
15112
15113         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
15114         replacement with more meaningful field names. Arch maintainers, please
15115         check the assigned names are good enough for your arch.
15116
15117 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
15118
15119         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
15120         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
15121
15122 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
15123
15124         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
15125         relocations and memory requirements, put the optimization flags
15126         definitions in their own file.
15127
15128 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
15129
15130         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
15131
15132         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
15133
15134 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
15135
15136         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
15137
15138 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
15139
15140         * inssel.brg: use the correct function to get the size of an item
15141         in an array, given an element class.
15142         * aot-compiler.c: do not access class->class_size directly.
15143
15144 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
15145
15146         * mini.h, debug-mini.c: added a debugging function to print
15147         info about local variables and arguments in a jitted method.
15148
15149 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
15150
15151         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
15152
15153         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
15154
15155 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
15156
15157         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
15158         inner and outer loops when passing vtypes.
15159
15160 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
15161
15162         * mini-ppc.c: take into account the cpu errata for cache flushing
15163         which caused some random errors (bug #79381).
15164
15165 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
15166
15167         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
15168         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
15169
15170 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
15171
15172         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
15173         loaded.
15174
15175         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
15176         freebsd ports tree.
15177
15178         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
15179         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
15180
15181         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
15182         displacement.
15183
15184 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
15185
15186         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
15187
15188 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
15189
15190         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
15191         macro does not have to be changed during debugging.
15192
15193         * 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>.
15194
15195         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
15196
15197         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
15198         
15199         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
15200         MONO_ARCH_NO_EMULATE_MUL is defined.
15201
15202         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
15203
15204         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
15205
15206         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
15207
15208         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
15209         
15210 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
15211
15212         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
15213         stuff to mini-exceptions.c where it is used.
15214
15215         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
15216         setup code, the real one is in mini-exceptions.c.
15217
15218         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
15219         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
15220         some changes from the freebsd ports tree.
15221
15222         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
15223         constants.
15224         
15225         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
15226
15227 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
15228
15229         * mini.c: on Linux, check for /proc to be mounted
15230         (bug# 79351, novell bug#201204).
15231
15232 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
15233
15234         * mini.c: handle cases where pthread_attr_getstack() behaves
15235         incorrectly (bug #78096).
15236
15237 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
15238
15239         * mini-arm.c: support larger stack frames (bug #79272).
15240
15241 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
15242
15243         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
15244
15245         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
15246         tokens.
15247
15248         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
15249         mono_class_from_name () to find a class from its name.
15250
15251         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
15252
15253 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
15254
15255         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
15256
15257 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
15258
15259         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
15260
15261 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
15262
15263         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
15264         callinfo->trampoline.
15265
15266         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
15267         fixes #79271.
15268         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
15269         future.
15270
15271 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
15272
15273         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
15274
15275 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
15276
15277         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
15278         stats.method_trampolines, it is already done by the generic trampoline code.
15279
15280         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
15281         
15282 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
15283
15284         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
15285
15286         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
15287
15288         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
15289
15290         * mini.c (print_jit_stats): Print mscorlib mempool size too.
15291         
15292         * mini.c (print_jit_stats): Print new stats.
15293
15294         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
15295
15296 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
15297
15298         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
15299         Address on two dimensional arrays. Fixes #78729.
15300
15301         * mini.h (MonoCompile): Add a 'skip_visibility' field.
15302
15303         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
15304         a method.
15305
15306         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
15307
15308         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
15309         #79130.
15310         
15311         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
15312         a race condition.
15313         (mini_get_ldelema_ins): Ditto.
15314
15315 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
15316
15317         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
15318         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
15319         Fixes #79213.
15320
15321 2006-08-29 Neale Ferguson <neale@sinenomine.net>
15322
15323         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
15324         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
15325
15326         * exceptions-s390x.c: Cosmetic change.
15327
15328         * tramp-s390.c: Fix warning.
15329
15330         * cpu-s390.md: Correct length of mul_imm.
15331
15332 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
15333
15334         * aot-compiler.c: added binary writer with ELF backend
15335         implementation (only on Linux/x86 for now).
15336
15337 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
15338
15339         * Makefile.am: Don't run net 2.0 AOT tests.
15340
15341         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
15342         (mono_compile_assembly): Skip net 2.0 assemblies as well.
15343
15344         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
15345
15346 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
15347
15348         * aot-compiler.c: simplified and refactored the asm-writing code
15349         to allow different backends.
15350
15351 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
15352
15353         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
15354
15355         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
15356         little. Share patches of type TYPE_FROM_HANDLE as well.
15357
15358         * mini.c (mono_patch_info_equal): New helper function.
15359         (mono_patch_info_hash): Ditto.
15360
15361         * aot-compiler.c (emit_method_code): Fix s390 build.
15362
15363         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
15364         is not handled because it is stored as a flag and not as a type ctor. Fixes
15365         #79016.
15366
15367 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
15368
15369         * aot-compiler.c: Fix computation of GOT slot statistics.
15370         
15371         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
15372         Also remove support for not PIC AOT.
15373
15374         * mini.h: Bump AOT file format version.
15375
15376         * objects.cs: Add a test for #78990.
15377
15378         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
15379         (peter.dettman@iinet.net.au). Fixes #79087.
15380
15381         * basic-long.cs: Add a test for the above.
15382
15383 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
15384
15385         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
15386         
15387         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
15388         code somewhat.
15389
15390 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
15391
15392         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
15393         exceptions.
15394
15395 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
15396
15397         * mini.c: Don't verify COM proxy invoke calls
15398         
15399
15400 2006-08-10  Dick Porter  <dick@ximian.com>
15401
15402         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
15403         which process is holding semaphores locked.
15404
15405 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
15406
15407         * mini-ia64.c mini-amd64.c: Fix #79027.
15408
15409         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
15410
15411         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
15412
15413         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
15414         implicit arguments in a vararg call. Fixes #79027.
15415
15416 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
15417
15418         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
15419         (mono_get_array_new_va_signature): Ditto.
15420
15421 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
15422
15423         * aot-runtime.c: Call init_plt lazily.
15424
15425         * inssel-long.brg: Fix unsigned long->int conversion.
15426
15427         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
15428
15429         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
15430         that most data is now in the .rss/.data section.
15431
15432 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
15433
15434         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
15435
15436         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
15437
15438         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
15439
15440         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
15441
15442         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
15443         virtual call. Fixes #79010.
15444
15445         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
15446         and use the result as the this argument in the real call.
15447
15448         * generics.2.cs: Add a new test for #79010.
15449         
15450 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
15451
15452         * mini-x86.c: Fix a warning.
15453
15454         * aot-compiler.c: Add a bunch of statistics.
15455
15456         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
15457
15458 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
15459
15460         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
15461
15462 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
15463
15464         * 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>.
15465
15466 2006-07-13  Miguel de Icaza  <miguel@novell.com>
15467
15468         * mini.c (mono_method_to_ir): Obtain the original method in the
15469         CIL stream and use this to perform validation.
15470
15471         Fixed: #78816
15472
15473 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
15474
15475         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
15476         (mono_arch_call_opcode): Ditto.
15477
15478         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
15479         #78826.
15480
15481         * mini.c (mono_patch_info_dup_mp): New helper function.
15482         
15483         * aot-compiler.c (compile_method): Fix some of the memory allocated during
15484         compilation. Fixes #78827.
15485
15486 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
15487
15488         * declsec.c: Use original security informations for
15489           MONO_WRAPPER_MANAGED_TO_MANAGED.
15490
15491 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
15492
15493         * mini.c: Allow Com Interop methods/classes and
15494         don't verify COM wrapper calls
15495         
15496
15497 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
15498
15499         * inssel-long32.brg: Fix long->i4 checked conversion.
15500
15501         * exceptions.cs: Add a test for the above.
15502
15503 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
15504
15505         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
15506
15507         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
15508         leaks.
15509
15510         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
15511         #78775.
15512
15513 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
15514
15515         * mini.c: Fix solaris/x86 exception handling.
15516
15517         * Makefile.am: Get rid of $(ICU_LIBS).
15518
15519 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
15520
15521         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
15522         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
15523         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
15524
15525         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
15526
15527         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
15528         this function causes a SIGSEGV.
15529
15530 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
15531
15532         * mini.c: Remove unused solaris/x86 includes.
15533
15534 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
15535
15536         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
15537
15538 2006-06-20  Jb Evain  <jbevain@gmail.com>
15539
15540         * cpu-g4.md: fix max length of start_handler instruction.
15541
15542 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
15543         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
15544
15545 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
15546         * ssa.c: Fixed bug 78653 for SSA based deadce.
15547         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
15548         MonoInst.flags, used in SSA based deadce.
15549         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
15550         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
15551
15552 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
15553
15554         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
15555         it can end up using non executable memory on ppc64 systems
15556         running ppc32 userspace (fix from Johannes Berg).
15557
15558 2006-06-14  Dick Porter  <dick@ximian.com>
15559
15560         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
15561         4.1.1
15562
15563 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
15564         * mini.c: Made so that inline is locally disabled if it would
15565         trigger a .cctor, because too many apps depend on this behavior
15566         (which seems to be also the one of the MS CLR).
15567
15568 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
15569
15570         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
15571         No idea why this worked before.
15572
15573         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
15574         which branch to outer exception clauses since they could skip the
15575         inner finally clauses. Fixes #78633.
15576
15577         * exceptions.cs: Add a test for the above.
15578
15579         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
15580         Fixes #78629.
15581
15582         * iltests.il: Add a test for the above.
15583
15584 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
15585
15586         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
15587         after the end of a try bblock, to prevent asserts in mini_method_compile ().
15588
15589         * iltests.il: Add a test for the above.
15590
15591 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
15592
15593         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
15594         
15595         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
15596         methods as instrinsics.
15597
15598 2006-06-09  Wade Berrier <wberrier@novell.com>
15599
15600         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
15601         (simple-cee-ops.h ssapre-mini-ops.h)
15602
15603 2006-06-09  Neale Ferguson <neale@sinenomine.net>
15604
15605         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
15606         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
15607         instruction).
15608         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
15609         * cpu-s390x.md: Fix max. length values for a couple of instructions.
15610
15611 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
15612
15613         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
15614
15615 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
15616
15617         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
15618         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
15619         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
15620         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
15621         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
15622         of opcodes, so that bug 78549 should not happen again.
15623         * ssapre.c: Updated to use the renamed files.
15624
15625 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
15626
15627         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
15628         in OP_ATOMIC_EXCHANGE_I4.
15629
15630 2006-06-07  Wade Berrier <wberrier@novell.com>
15631
15632         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
15633         in mono_debugger_create_notification_function)
15634
15635 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
15636
15637         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
15638         
15639         * mini.c (type_from_stack_type): Disable some changes which do not
15640         seem to work.
15641
15642         * driver.c: Reenable opts.
15643
15644         * mini.h (MonoStackSlot): New structure to keep track of the verification state
15645         of the evaluation stack.
15646         
15647         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
15648         evaluation stack trace at entry to the bblock.
15649
15650         * mini.c (merge_stacks): New function to perform verification of stack merges.
15651         Turned off by default.
15652
15653         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
15654         STACK_MP.
15655         
15656 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
15657
15658         * local-propagation.c: Fixed bug 78549.
15659
15660 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
15661
15662         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
15663
15664 2006-06-02  Miguel de Icaza  <miguel@novell.com>
15665
15666         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
15667         tramp-arm.c, tramp-ia64.c
15668         (mono_debugger_create_notification_function): Update signature to
15669         new signature and use new protocol for creating the notification
15670         function.  
15671
15672         Should fix the build.
15673
15674 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
15675
15676         * exceptions-ppc.c (mono_jit_walk_stack)
15677         (ves_icall_get_frame_info): Fix the build
15678
15679 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
15680
15681         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
15682
15683 2006-05-31  Raja R Harinath  <rharinath@novell.com>
15684
15685         * il2tests.2.il: New file for generics CIL tests.  Add test for
15686         #78019.
15687         * Makefile.am: Update.
15688
15689         Fix #78019
15690         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
15691         to nullable types.
15692
15693 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
15694
15695         * aliasing.c: Fixed bug 78311.
15696
15697 2006-05-29  Martin Baulig  <martin@ximian.com>
15698
15699         * mini-exceptions.c (mono_find_jit_info): When computing the
15700         native offset, check whether we're actually inside the method's
15701         code; call mono_debug_print_stack_frame() to format the frame.
15702         (ves_icall_System_Exception_get_trace): Call
15703         mono_debug_print_stack_frame() to format the stack frame.
15704         (ves_icall_get_trace): Update to the new debugging API.
15705         (mono_jit_walk_stack_from_ctx): Likewise.
15706         (ves_icall_get_frame_info): Likewise.
15707
15708         * mini.c (get_method_from_ip): Use the new debugging API.
15709         (mono_print_method_from_ip): Likewise.
15710
15711         * exceptions-ppc.c
15712         (mono_jit_walk_stack): Use the new debugging API.
15713         (ves_icall_get_frame_info): Likewise.   
15714
15715 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
15716
15717         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
15718
15719 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
15720
15721         * mini.c: Added "limitator" to inline for debugging.
15722
15723 2006-05-24  Martin Baulig  <martin@ximian.com>
15724
15725         * debug-debugger.c (mono_debugger_init): Create a private,
15726         malloc()-based code manager for the notification function and
15727         intentionally leak it on exit.  This fixes the crash-on-exit race
15728         condition.
15729
15730         * tramp-amd64.c
15731         (mono_debugger_create_notification_function): Added
15732         `MonoCodeManager *' argument.
15733
15734         * tramp-x86.c
15735         (mono_debugger_create_notification_function): Added
15736         `MonoCodeManager *' argument.
15737
15738 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
15739
15740         * aliasing.c: Fixed 64 bit issue.
15741         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
15742         default since all known bugs are fixed (one more time!).
15743
15744 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
15745
15746         * mini.c: write barrier support.
15747
15748 2006-05-23  Martin Baulig  <martin@ximian.com>
15749
15750         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
15751         check at the top of the file.
15752
15753 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
15754
15755         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
15756         reverting changes without reason and without changelog entries.
15757
15758 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
15759
15760         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
15761         to a few opcodes. Fixes #78439.
15762
15763         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
15764         consistency with other archs.
15765
15766         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
15767
15768 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
15769
15770         * debug-debugger.c: fix the build.
15771
15772 2006-05-17  Martin Baulig  <martin@ximian.com>
15773
15774         * debug-debugger.c
15775         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
15776         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
15777         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
15778         (debugger_attach): Call GC_mono_debugger_add_all_threads().
15779
15780 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
15781
15782         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
15783
15784 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
15785
15786         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
15787         MONO_TYPE_GENERICINST.
15788         
15789         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
15790         MONO_TYPE_GENERICINST.
15791
15792 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
15793
15794         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
15795         #78325.
15796
15797 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
15798
15799         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
15800         mempool.
15801         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
15802
15803 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
15804
15805         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
15806         mono_trace_cleanup ().
15807
15808         * iltests.il: Fix problem with the newly added test.
15809
15810         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
15811         due to register constraints, free up the previous hreg. Fixes #78314.
15812
15813         * iltests.il: Add new test for #78314.  
15814
15815         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
15816         Interlocked.Add. Fixes #78312.
15817
15818         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
15819         
15820 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
15821
15822         * inssel.brg (mini_emit_virtual_call): Fix a warning.
15823
15824 2006-05-05  Martin Baulig  <martin@ximian.com>
15825
15826         * debug-mini.c (mono_debug_open_block): New method.
15827
15828         * mini-amd64.c
15829         (mono_arch_output_basic_block): Call mono_debug_open_block() at
15830         the beginning of each basic block.
15831
15832         * mini-x86.c
15833         (mono_arch_output_basic_block): Call mono_debug_open_block() at
15834         the beginning of each basic block.
15835
15836 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
15837
15838         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
15839         default until I understand why they break the build on amd64.
15840
15841 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
15842
15843         * mini.c (mini_cleanup): Call mono_cleanup ().
15844
15845         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
15846         errors.
15847
15848 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
15849
15850         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
15851         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
15852         default since all known bugs are fixed, and I cannot reproduce bug
15853         77944... I'm asking Matt Hargett to test again after this commit.
15854
15855 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
15856
15857         * mini-codegen.c: Fixed typo that thrashed inline.
15858
15859 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
15860
15861         * dominators.c (compute_dominators): Avoid using a worklist since
15862         it is not correct in some cases. Instead, iterate over all bblocks as
15863         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
15864
15865 2006-04-28  Miguel de Icaza  <miguel@novell.com>
15866
15867         * mini.c (mono_jit_compile_method_inner): Use
15868         mono_prepare_exception_from_error that resets the value
15869         internally.
15870
15871 2006-04-27  Miguel de Icaza  <miguel@novell.com>
15872
15873         * mini.c: Move the mini_loader_error_to_exception to metadata. 
15874         
15875 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
15876
15877         * aliasing.c: Fixed bug 78210.
15878
15879 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
15880
15881         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
15882         default until all their problems (or the ones they trigger) are fixed.
15883
15884 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
15885
15886         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
15887         
15888         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
15889         as loaded only after resolving patches since that could invoke the same method.
15890
15891         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
15892
15893         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
15894         functions.
15895
15896         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
15897         AOT loader.
15898
15899         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
15900         stack.
15901
15902         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
15903         made from AOT code through the PLT table.
15904
15905         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
15906         holding the plt offset when a call is made to the aot plt trampoline.
15907         
15908 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
15909
15910         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
15911         amd64 AOT support.
15912
15913         * Makefile.am (common_sources): Fix build breakage.
15914
15915         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
15916         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
15917         intra-assembly calls if possible.
15918         
15919         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
15920
15921         * mini-trampolines.c: Handle PLT entries.
15922
15923         * mini.c: Avoid creating a GOT var for calls.
15924
15925         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
15926         from mscorlib code.
15927
15928         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
15929         from mscorlib code.
15930
15931         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
15932         AOT code.       
15933
15934         * mini.h: Bump AOT file format version.
15935         
15936         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
15937         covers more cases.
15938
15939 2006-04-25  Martin Baulig  <martin@ximian.com>
15940
15941         * driver.c: Disable copyprop, consprop and inline when running
15942         inside the debugger.
15943
15944 2006-04-25  Martin Baulig  <martin@ximian.com>
15945
15946         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
15947         with `get_current_thread' and added `detach'.
15948         (MonoDebuggerMetadataInfo): Added `thread_size',
15949         `thread_tid_offset', `thread_stack_ptr_offset' and
15950         `thread_end_stack_offset'.
15951
15952 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
15953
15954         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
15955         aot-runtime.c.
15956
15957         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
15958         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
15959
15960         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
15961
15962         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
15963
15964         * aot.c: Add support for ADJUSTED_IID.  
15965
15966 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
15967
15968         * aot.c (emit_method_order): Don't align method_order_end.
15969
15970         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
15971         the interface ID changes.
15972
15973 2006-04-21  Dick Porter  <dick@ximian.com>
15974
15975         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
15976         cleaning up a thread.  Fixes the new part of bug 77470.
15977
15978 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
15979
15980         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
15981         to managed wrapper.
15982                      
15983 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
15984
15985         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
15986         
15987         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
15988         SIGSEGV. Fixes #78072.
15989
15990         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
15991         unregister our SIGABRT handler.
15992
15993 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
15994
15995         * mini.c: Disabled inline where it can alter the call stack in a
15996         way visible from managed code.
15997         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
15998         default.
15999
16000 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
16001
16002         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
16003         on other platforms. Fixes #78089.
16004
16005 2006-04-13  Martin Baulig  <martin@ximian.com>
16006
16007         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
16008         determine whether we're inside the debugger.
16009
16010         * debug-debugger.h
16011         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
16012
16013 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
16014
16015         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
16016         handler clauses. Fixes #78024.
16017
16018         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
16019         in the CALL_MEMBASE opcodes. Fixes #78088.
16020         (mono_arch_get_vcall_slot_addr): Ditto.
16021
16022 2006-04-10  Martin Baulig  <martin@ximian.com>
16023
16024         * debug-debugger.c: The thread handling code has now been moved
16025         into ../metadata/threads.c.
16026
16027 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
16028
16029         * driver.c (mono_main): Fix --with-gc=none build.
16030
16031         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
16032         (mono_spillvar_offset_float): Ditto.
16033         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
16034         hreg, not when its !global, since on ia64, there is a third category: stacked
16035         registers.      
16036
16037 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
16038
16039         * mini.c: set MonoInst->klass for load field address and a few other
16040         places.
16041
16042 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
16043
16044         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
16045
16046 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
16047
16048         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
16049         the branch opt changes.
16050
16051 2006-04-06  Dick Porter  <dick@ximian.com>
16052
16053         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
16054         
16055         * wapihandles.c (mini_wapi_seminfo): 
16056         * driver.c (mono_main): Add semaphore info option
16057
16058 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
16059
16060         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
16061         branch optimization changes. Fixes #78009.
16062
16063 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
16064
16065         * mini.c: ignore accessibility of methods in managed->native wrappers.
16066
16067 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
16068
16069         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
16070         
16071         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
16072
16073 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
16074
16075         * mini.c: Modify the branch optimizations to preserve the invariant that
16076         the entries inside the in_bb and out_bb arrays are unique.
16077         (mono_unlink_bblock): Avoid creation of new arrays.
16078
16079 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
16080
16081         * mini.c (mono_unlink_bblock): Fix regression caused by previous
16082         change (#77992).
16083
16084 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
16085
16086         * mini.c (optimize_branches): Remove the "optimizations" in
16087         the cbranch1/cbranch2 -> branch cases which were causing several
16088         problems in the past. Fixes #77986.
16089
16090 2006-03-31  Chris Toshok  <toshok@ximian.com>
16091
16092         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
16093         default optimizations :(
16094
16095 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
16096
16097         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
16098         branch.
16099
16100 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
16101
16102         * local-propagation.c: Added comments to structs and removed
16103         "Mono" prefixes from local tree mover types.
16104
16105 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
16106
16107         * Makefile.am (arch_sources): Define this for each architecture so 
16108         libmono_la_SOURCES is defined in one place.
16109
16110 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
16111
16112         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
16113         from handles/.
16114
16115 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
16116
16117         * driver.c: print the GC name supplied by configure.
16118
16119 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
16120
16121         * local-propagation.c: Added tree mover, and moved here all the
16122         local propagation code from mini.c
16123         * mini.c: Added support for treeprop, and moved all the local
16124         propagation code to local-propagation.c
16125         * mini.h: Added support for treeprop
16126         * driver.c: Added support for treeprop, enabled consprop, copyprop,
16127         treeprop, inline and deadce by default
16128         * Makefile.am: Added local-propagation.c
16129
16130 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
16131
16132         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
16133
16134 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
16135
16136         * debug-debugger.c: make it compile without the Boehm GC.
16137
16138 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16139
16140         * mini.c: fixed issue with mismatch when an icall is registered
16141         with multiple names but same address.
16142
16143 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
16144
16145         * declsec.c, mini-exceptions.c: use write barrier to set reference
16146         fields of managed objects.
16147
16148 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
16149
16150         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
16151         (can_access_internals): Fix a warning.
16152
16153         * mini.c (print_method_from_ip): Rename this to 
16154         mono_print_method_from_ip so it gets exported.
16155
16156         * trace.c: Deal with strings inside StringBuilder's containing garbage
16157         and fix memory leaks. Fixes #77848.
16158
16159 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
16160
16161         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
16162         fixes #77787.
16163
16164 2006-03-16 Neale Ferguson <neale@sinenomine.net>
16165         
16166         * mini-s390.c: Remove OP_X86_TEST_NULL.
16167
16168 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
16169
16170         * mini.c: use the correct GetHashCode() for the moving collector.
16171
16172 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
16173
16174         * liveness.c: Regalloc spill cost tuning.
16175
16176 2006-03-15 Neale Ferguson <neale@sinenomine.net>
16177         
16178         * mini-s390x.h: Correct S390_LONG macro.
16179
16180         * mini-s390x.c: Cleanup unused code.
16181
16182 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
16183
16184         * jit-icalls.h: New file.
16185
16186         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
16187         icalls and include that instead of including jit-icalls.c.
16188
16189         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
16190         OP_X86 opcodes.
16191
16192 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
16193
16194         * mini.c: when checking for member accessibility, also check for
16195         friend assemblies and for explicit interface implementations.
16196
16197 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
16198
16199         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
16200
16201         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
16202
16203         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
16204         common cases are done first.    
16205
16206         * mini-ops.h: Only define platform specific opcodes on the given platform.
16207
16208         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
16209         branch.
16210         
16211 2006-03-14  Martin Baulig  <martin@ximian.com>
16212
16213         Revert Paolo's change from r57348:
16214
16215         * mini.h: don't use gboolean for bitfields.
16216         * mini.c: verifier changes for fields and methods accessibility.
16217
16218 2006-03-13  Neale Ferguson <neale@sinenomine.net>
16219
16220         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
16221
16222         * mini-s390x.c: Fix conv_r_un.
16223
16224         * cpu-s390, cpu-s390x.md: Fix lengths.
16225
16226 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
16227
16228         * mini.c: nested types have access to all the nesting
16229         levels, not just the enclosing types.
16230
16231 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16232
16233         * mini.c: added a few more verification checks.
16234
16235 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
16236
16237         * liveness.c: Merge optimizations from the linear-il branch.
16238
16239 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
16240
16241         * mini-ia64.c (emit_call): Add a comment.
16242
16243         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
16244
16245         * tramp-ia64.c: Fix some warnings.
16246
16247 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
16248
16249         * mini.h: don't use gboolean for bitfields.
16250         * mini.c: verifier changes for fields and methods accessibility.
16251
16252 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
16253
16254         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
16255         lazy icall wrapper changes.
16256
16257         * dominators.c: Replace all the dominator algorithms with faster
16258         ones from the linear-il branch.
16259
16260         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
16261         the mempool.
16262
16263         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
16264         common cases are done first.
16265
16266         * mini-amd64.c: Fix some warnings.
16267
16268         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
16269         from the mempool.
16270
16271         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
16272         added code.
16273
16274         * mini.h: Add a missing prototype.
16275
16276 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
16277
16278         * mini.c: Compile icall wrappers lazily.
16279
16280         * mini-codegen.c: Use printf instead of g_print since its much faster.
16281
16282         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
16283         function.
16284
16285         * mini.c (optimize_branches): Cache the negative result from 
16286         remove_block_if_useless ().
16287
16288         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
16289         Also fix some bblock linking issues.
16290
16291         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
16292         assembly files.
16293
16294         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
16295
16296         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
16297         accessed fields first, for better cache behavior.
16298         
16299 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16300
16301         * mini.c: speedup IList<T> array accesses.
16302
16303 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
16304
16305         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
16306         inline_costs counter. Fixes #77190.
16307
16308 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
16309
16310         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
16311         trace messages. Fixes #77706.
16312
16313 2006-03-04  Martin Baulig  <martin@ximian.com>
16314
16315         * tramp-amd64.c, tramp-x86.c
16316         (mono_debugger_create_notification_function): Use
16317         mono_global_codeman_reserve() to allocate a buffer at runtime and
16318         return it.
16319
16320         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
16321
16322         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
16323         notification function at runtime and then call `initialize' in the
16324         `MONO_DEBUGGER__debugger_info' vtable.
16325
16326 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
16327
16328         * iltests.il: Fix a visibility problem.
16329
16330 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
16331
16332         * driver.c, mini.c: add hooks for the counters API.
16333
16334 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
16335
16336         * driver.c: show disabled options.
16337
16338 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16339
16340         * linear-scan.c: always use cost-driven selection.
16341
16342 2006-02-28  Raja R Harinath  <rharinath@novell.com>
16343
16344         * jit-icalls.c (helper_compile_generic_method): Revert change from
16345         2006-02-24.
16346
16347 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
16348
16349         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
16350
16351 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
16352
16353         * inssel.brg: style fixes, mostly to force the updated monoburg
16354         to run for people using svn.
16355
16356 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
16357
16358         * mini.c: match monoburg changes.
16359
16360 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16361
16362         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
16363         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
16364         declaration in the header file.
16365
16366 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
16367
16368         * helpers.c: reduce relocations and mem usage.
16369
16370 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
16371
16372         * mini.h, mini-codegen.c: disable logging features if
16373         requested by configure.
16374
16375 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
16376
16377         * mini.c: tiny verifier changes.
16378
16379 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
16380
16381         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
16382         cpu-pentium.md: stack alignment changes for osx/x86,
16383         partially from Geoff Norton <gnorton@customerdna.com>.
16384
16385 2006-02-24  Raja R Harinath  <harinath@gmail.com>
16386
16387         * jit-icalls.c (helper_compile_generic_method): Update to changes
16388         in metadata/class.c.
16389
16390 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
16391         
16392         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
16393         
16394         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
16395         interface calls with large offsets.
16396
16397 2006-02-23  Raja R Harinath  <rharinath@novell.com>
16398
16399         * jit-icalls.c (helper_compile_generic_method): Document the
16400         special-case we depend on so that we can inflate the method twice
16401         with the same context with no bad side-effects.
16402
16403 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
16404
16405         * mini-x86.c, mini-amd64.c: fix for case when xen support
16406         is disabled.
16407
16408 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
16409
16410         * mini-x86.c, mini-amd64.c: generate code to access tls items
16411         in a faster way for Xen systems.
16412
16413 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
16414
16415         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
16416         updates and compilation fixes for the OSX/x86 port, mostly from
16417         Geoff Norton <gnorton@customerdna.com>.
16418
16419 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16420
16421         * inssel.brg: faster interface call implementation
16422         to sync with the interface_offsets MonoVTable changes.
16423
16424 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
16425
16426         * mini.c: more verification checks.
16427
16428 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
16429
16430         * mini.c: added a few more verification checks.
16431
16432 2006-02-17      Neale Ferguson <neale@sinenomine.net>
16433
16434         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
16435         facility on the processor and use it if available.
16436
16437 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
16438
16439         * driver.c, aot.c, mini.c: throw exception if the IL code is
16440         invalid or unverifiable.
16441
16442 2006-02-17  Raja R Harinath  <rharinath@novell.com>
16443
16444         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
16445         m.StructField.
16446
16447 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
16448
16449         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
16450
16451 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16452
16453         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
16454         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
16455         handling of instantiated generic valuetypes.
16456
16457 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
16458
16459         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
16460         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
16461         instead.
16462
16463         * generics.2.cs: Revert the nullable reftypes tests.
16464
16465 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
16466
16467         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
16468         using __builtin_frame_address (1) as it doesn't work in the presence
16469         of optimizations. Hopefully fixes #77273.
16470
16471         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
16472         -> generics.cs change as it doesn't work with some automake versions.
16473
16474 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16475
16476         * mini.c: handle systems that sue a different way to
16477         retrieve the stack address of the current thread.
16478
16479 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
16480
16481         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
16482         it specially in the makefile.
16483
16484         * generics.2.cs: Add tests for nullable reference types.
16485
16486 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16487
16488         * mini.c: always handle the case when mono_jit_init()
16489         is called in a thread different from the main thread,
16490         confusing libgc (bug #77309).
16491
16492 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
16493
16494         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
16495
16496 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16497
16498         * mini.c: change optimize_branches () to use a single loop
16499         and introduce a new optimization to simplify some range checks.
16500
16501 2006-02-03  Martin Baulig  <martin@ximian.com>
16502
16503         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
16504         and merged with debugger_thread_manager_add_thread().
16505         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
16506         inform the debugger about the main thread.
16507
16508 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
16509
16510         * basic.cs: Add test for div.un/rem.un constant folding.
16511
16512 2006-02-03  Neale Ferguson <neale@sinenomine.net>
16513
16514         * cpu-s390x.md: correct int_xor_imm length
16515
16516 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
16517
16518         * generics.2.cs: New test for #77442.
16519
16520         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
16521         #77442.
16522
16523 2006-02-02  Martin Baulig  <martin@ximian.com>
16524
16525         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
16526         <mono/metadata/mono-debug-debugger.h>   
16527
16528         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
16529
16530 2006-02-02  Martin Baulig  <martin@ximian.com>
16531
16532         * debug-debugger.h: New header file for debug-debugger.c.
16533
16534         * debug-debugger.c: Big API cleanup; don't run the managed Main()
16535         function is a separate thread anymore; add support for attaching.
16536
16537 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
16538
16539         * tramp-x86.c: Fix a warning.
16540
16541 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
16542
16543         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
16544         on very large methods.
16545
16546         * aot.c (load_patch_info): Fix a warning.
16547
16548 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
16549
16550         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
16551         mini-ops.h: alu membase optimizations.
16552
16553 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
16554
16555         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
16556         to speedup StringBuilder.
16557
16558 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
16559
16560         * dominators.c (mono_compute_natural_loops): Fix detection of
16561         loop body start blocks.
16562
16563         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
16564
16565 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
16566
16567         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
16568         #75145.
16569
16570 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
16571
16572         * aliasing.c: Fixed aliasing issue on 64 bit archs.
16573
16574 2006-01-25  Martin Baulig  <martin@ximian.com>
16575
16576         * debug-debugger.c: Moved the `MonoDebuggerManager' and
16577         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
16578         started to cleanup this file a little bit.
16579
16580 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
16581
16582         * mini.c: optimize a codepath frequently happening in generics code.
16583
16584 2006-01-23  Martin Baulig  <martin@ximian.com>
16585
16586         * Makefile.am: Only compile debug-debugger.c on supported platforms.
16587
16588         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
16589         functions directly.
16590
16591         * driver.c: debug-debugger.c is only available if
16592         `MONO_DEBUGGER_SUPPORTED' is defined.   
16593
16594 2006-01-23  Martin Baulig  <martin@ximian.com>
16595
16596         * debug-debugger.c: Only enable this on platforms where the Mono
16597         Debugger is working (x86 and x86_64).
16598
16599 2006-01-21  Martin Baulig  <martin@ximian.com>
16600
16601         The Mono Debugger is now using the normal `mono' instead of the
16602         `mono-debugger-mini-wrapper' when executing managed code.
16603
16604         * debug-debugger.c: New file; previously known as
16605         debugger/wrapper/wrapper.c.
16606
16607         * debug-mini.c (mono_init_debugger): Removed.
16608
16609         * driver.c (mono_main): Added new `--inside-mdb' command line
16610         argument which is used when running inside the debugger.
16611
16612 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
16613
16614         * liveness.c (mono_analyze_liveness): Remove some unused data
16615         structures.
16616
16617 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
16618
16619         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
16620
16621 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
16622
16623         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
16624         depends on implementation details of monobitset.
16625
16626         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
16627         Fixes #77271.
16628
16629 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
16630
16631         * liveness.c: Update after monobitset changes.
16632
16633 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
16634
16635         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
16636
16637 2006-01-11 Neale Ferguson <neale@sinenomine.net>
16638
16639         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
16640
16641         * mini-s390x.c: Remove warning messages.
16642
16643 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
16644
16645         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
16646
16647 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
16648
16649         * generics.2.cs: Add ldelem/stelem_any test.
16650
16651 2006-01-10 Neale Ferguson <neale@sinenomine.net>
16652
16653         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
16654
16655 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
16656
16657         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
16658         
16659 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
16660
16661         * generics.2.cs: Reenable vtype tests.
16662
16663         * inssel-x86.brg: Remove an icorrect valuetype rule.
16664
16665 2006-01-06 Neale Ferguson <neale@sinenomine.net>
16666
16667         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
16668         initial support for OP_ABS.
16669
16670 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16671
16672         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
16673
16674 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16675
16676         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
16677         conversion and implement LADD/LSUB.
16678
16679         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
16680         architectures.
16681
16682 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16683
16684         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
16685
16686         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
16687         architectures.
16688
16689 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16690
16691         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
16692         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
16693         (stack walk problem).
16694
16695 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
16696
16697         * aot.c (mono_aot_load_method): Fix a warning.
16698
16699 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16700
16701         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
16702
16703 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
16704
16705         * iltests.il: Add test for #77148.
16706
16707         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
16708         #77148.
16709
16710 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16711
16712         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
16713
16714 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16715
16716         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
16717         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
16718
16719         * basic-long.cs: Add lconv-to-r4/r8 tests.
16720
16721 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
16722
16723         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
16724
16725         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
16726         here as on other archs.
16727
16728 2005-12-29 Neale Ferguson <neale@sinenomine.net>
16729
16730         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
16731
16732 2005-12-29 Neale Ferguson <neale@sinenomine.net>
16733
16734         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
16735         
16736         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
16737
16738         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
16739         instrument_prolog; Add memory_barrier instruction.
16740
16741 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
16742
16743         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
16744
16745 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
16746
16747         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
16748
16749         * aliasing.c inssel.brg: Fix warnings.
16750
16751         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
16752         could skip initialization of some parts of memory.
16753
16754         * mini.c mini-ia64.c: Fix warnings.
16755
16756         * inssel-sparc.brg: Add an implementation of lneg which actually works.
16757
16758 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
16759
16760         * aliasing.c (mono_build_aliasing_information): Add a workaround for
16761         a crash seen on sparc.
16762
16763         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
16764         
16765         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
16766
16767 2005-12-21 Neale Ferguson <neale@sinenomine.net>
16768
16769         * mini-ops.h: Add s390_backchain instruction
16770
16771         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
16772
16773         * cpu-s390.md: Add s390_backchain instruction
16774
16775         * mini-s390.c: Significant ABI changes
16776
16777         * mini-s390.h: Cater for zero length structures
16778
16779 2005-12-20 Neale Ferguson <neale@sinenomine.net>
16780
16781         * mini-s390.c: ABI fixes
16782
16783         * inssel-s390.brg: Remove debug statements
16784
16785         * cpu-s390.md: Fix length of ATOMIC_xx operations
16786
16787 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
16788
16789         * basic-float.cs: Add float<->long conversion tests.
16790
16791 2005-12-16 Neale Ferguson <neale@sinenomine.net>
16792
16793         * mini-s390.c: Fix LOCALLOC processing.
16794
16795         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
16796
16797 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
16798
16799         * iltests.il: Add tests for some opcodes not covered by the other
16800         tests.
16801
16802 2005-12-15 Neale Ferguson <neale@sinenomine.net>
16803
16804         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
16805         register loading for Tail processing; Correct trace output.
16806
16807         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
16808
16809         * cpu-s390.md: Correct size of jmp instruction. 
16810
16811 2005-12-13 Neale Ferguson <neale@sinenomine.net>
16812
16813         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
16814
16815 2005-12-13 Neale Ferguson <neale@sinenomine.net>
16816
16817         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
16818           Bring s390 up to current level.
16819
16820 2005-12-12  Zltan Varga  <vargaz@gmail.com>
16821
16822         * generics.2.cs: Disable the newly added tests as they do not work yet.
16823         
16824         * generics.2.cs: Add valuetype tests.
16825
16826 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
16827
16828         * basic-long.cs: Add i4->u8 test.
16829
16830         * objects.cs: Add tests for JIT intrinsic.
16831
16832         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
16833         optimizations lost by a mistake.
16834
16835 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
16836
16837         * basic-long.cs: Remove a test moved to objects.cs.
16838
16839         * arrays.cs: Add more array tests.
16840
16841 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
16842
16843         * arrays.cs: Add new tests for multi-dimensional arrays.
16844
16845 2005-12-06  Raja R Harinath  <rharinath@novell.com>
16846
16847         * Makefile.am (test_sources2): Add generics.2.cs.
16848         (EXTRA_DIST): Add test_sources2.
16849
16850 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
16851
16852         Support for boxing and unboxing nullable types as well as the
16853         isinst operation on nullables, per the CLI ammendment.
16854
16855         * inssel.brg (CEE_ISINST): Special case for nullable
16856
16857         * mini.c (handle_unbox_nullable): new method
16858         (handle_box): Special case for nullable types
16859         (mono_method_to_ir): Call handle_unbox_nullable in correct
16860         places.
16861
16862         * generics.2.cs: New test suite
16863
16864         * Makefile.am: Support for regression tests with generics.
16865
16866 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
16867
16868         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
16869         allocated to registers. Fixes #76800.
16870
16871 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
16872
16873         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
16874
16875 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
16876
16877         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
16878         of platforms.
16879
16880 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
16881
16882         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
16883         objects.cs.
16884
16885         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
16886         
16887         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
16888 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
16889
16890         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
16891         single precision before storing to a single precision location.
16892
16893 2005-11-28  Raja R Harinath  <rharinath@novell.com>
16894
16895         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
16896
16897 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
16898
16899         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
16900         correct files.
16901
16902         * basic.cs: Remove test_0_byte_compares test which was moved to
16903         objects.cs a long time ago.
16904
16905 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
16906
16907         * aliasing.c: Fixed aliasing issue on 64 bit archs.
16908
16909 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
16910
16911         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
16912         handlers are called.
16913
16914         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
16915         throwing code.
16916
16917          * mini-ia64.c: Add support for the throw->branch exception 
16918         optimization.   
16919
16920         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
16921
16922 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
16923
16924         * mini.c: Enabled "fastpath" deadce :-)
16925         
16926 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
16927
16928         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
16929         alias analysis pass to support it.
16930         * mini.h: Likewise.
16931         * ssa.c: Likewise.
16932         * liveness.c: Likewise (liveness computation can use aliasing
16933         information to be more accurate).
16934         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
16935         moreover made so that "--compile-all" uses the given optimization
16936         flags and not the default ones.
16937         * aliasing.c: Alias analysis (new file).
16938         * aliasing.h: Likewise.
16939         * Makefile.am: added "aliasing.c" and "aliasing.h".
16940         
16941 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
16942
16943         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
16944         OP_L opcodes.
16945
16946 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
16947
16948         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
16949         fp >= end_of_stack exit condition, as it is not needed, and it might
16950         become true for fp eliminated frames.
16951
16952 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
16953
16954         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
16955         coded offsets.
16956
16957 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
16958
16959         * mini-arm.c: fixed alignment of doubles/longs to match
16960         the C ABI (bug #76635).
16961
16962 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
16963
16964         * aot.c: fix compilation with --enable-minimal=aot.
16965
16966 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
16967
16968         * mini-arm.c: fixed compatibility with the new
16969         floating point emulator package for compares.
16970
16971 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
16972
16973         * mini.c : reverted sig->pinvoke changes (r51396-51397).
16974
16975 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
16976
16977         * mini-exceptions.c (print_stack_frame): Output to stderr.
16978         (mono_handle_native_sigsegv): Ditto.
16979
16980 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
16981
16982         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
16983         OP_LCONV_TO_OVF_I implementation.
16984
16985         * mini-amd64.c: Add support for the throw->branch exception 
16986         optimization.
16987
16988         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
16989         when the catch clause catches a more general exception, i.e. Object.
16990
16991 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
16992
16993         * cpu-ia64.md: Remove unused opcodes.
16994
16995         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
16996         specific defines for architectures defining USE_SIGACTION.
16997
16998         * mini-ia64.c: Fix some warnings.
16999
17000         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
17001         version seemed to skip a frame.
17002
17003 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
17004
17005         * mini.c: Clean up the usage of sig->pinvoke flag. Now
17006         only calls which are made to native code use this flag.
17007
17008 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
17009
17010         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
17011         varargs methods as well.
17012         
17013         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
17014         which have save_lmf set. Reorganize methods prologs a bit.
17015
17016         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
17017         debugger to the proper place.
17018
17019 2005-10-29  Martin Baulig  <martin@ximian.com>
17020
17021         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
17022         when running inside the debugger until the debugger has support
17023         for it.
17024
17025 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
17026
17027         * mini.h: Fix a warning.
17028
17029 2005-10-24  Miguel de Icaza  <miguel@novell.com>
17030
17031         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
17032         we expose publicly, this returns the string.
17033
17034 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
17035
17036         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
17037         with fp elimination.
17038
17039 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
17040
17041         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
17042         native stacktrace using the glibc 'backtrace' function if available.
17043
17044 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
17045
17046         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
17047
17048         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
17049         handle SIGSEGVs received while in native code.
17050
17051         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
17052         code, call mono_handle_native_sigsegv which will abort the runtime
17053         after printing some diagnostics, instead of converting it into a
17054         confusing NullReferenceException.
17055
17056 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
17057
17058         * cpu-pentium.md: Remove unused opcodes.
17059
17060 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
17061
17062         * mini-amd64.h (MonoLMF): Add rsp field.
17063
17064         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
17065         the lmf too.
17066
17067 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
17068
17069         * mini-codegen.c (get_register_spilling): Fix some warnings.
17070
17071 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
17072
17073         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
17074         elimination during exception handling. Enable fp elimination by
17075         default.
17076
17077         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
17078         elimination.
17079
17080 2005-10-16  Martin Baulig  <martin@ximian.com>
17081
17082         * mini-exceptions.c
17083         (mono_debugger_run_finally): New public method for the debugger.
17084
17085 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
17086
17087         * debug-mini.c (mono_debug_init_method): Fix warning.
17088
17089         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
17090         the 'exname' parameter const to fix some warnings.
17091
17092 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
17093
17094         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
17095         introduced by the previous patch.
17096
17097 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
17098
17099         * basic-float.cs: Add test for precision of float arithmetic.
17100
17101         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
17102         when loading/storing single values from/to memory.
17103
17104         * mini.c (mono_jit_compile_method_with_opt): Create the function
17105         pointers in the correct domain.
17106
17107 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
17108
17109         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
17110         introduced by previous patch.
17111         
17112         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
17113         when out_filter_idx is NULL.
17114
17115         * mini-exceptions.c: Don't run filter clauses twice during exception
17116         handling. Fixes #75755.
17117
17118 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
17119
17120         * aot.c: Add support for ldflda wrappers.
17121
17122         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
17123         #75902.
17124
17125 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
17126
17127         * mini.c, mini.h: do not consider exception handlers blocks when
17128         setting up interface variables.
17129
17130 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
17131
17132         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
17133
17134 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
17135
17136         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
17137         causes a regression.
17138
17139         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
17140
17141 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
17142
17143         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
17144         of the OP_P definitions.
17145
17146         * TODO: Add a proposal for dealing with the CEE/OP mess.
17147
17148         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
17149         optimizations from the x86 port.
17150
17151         * cpu-amd64.md: Ditto.
17152
17153         * basic.cs basic-long.cs: Add tests.
17154
17155 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
17156
17157         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
17158         Patrik Torstensson's implementation of my exception-handling
17159         optimization idea, when the exception object is not used
17160         (bug #62150).
17161
17162 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
17163
17164         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
17165         of the mul_imm optimizations from the old jit.
17166
17167 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
17168
17169         * mini.c, liveness.c: patch by Patrik Torstensson and
17170         Zoltan Varga to improve performance in methods with
17171         exception clauses.
17172
17173 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
17174
17175         * driver.c: Remove 'Globalization' entry from --version.
17176
17177 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
17178
17179         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
17180         there is a profiler interested in JIT events.
17181
17182         * aot.c: Load profile files produced by the AOT profiling module, and
17183         reorder methods based on the profiling info. Add a 'method_order' table
17184         to the AOT file to make mono_aot_find_jit_info work with the reordered
17185         methods.
17186
17187         * mini.h: Bump AOT file version info.
17188
17189 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
17190
17191         * mini-arm.h: work around what looks like a gcc bug when optimizations
17192         are enabled.
17193
17194 2005-09-28  Raja R Harinath  <rharinath@novell.com>
17195
17196         * Makefile.am (AM_CFLAGS): Don't use += to append inside
17197         conditionals.  Use ...
17198         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
17199
17200 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
17201
17202         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
17203         to determine the amount of memory to copy when passing valuetypes.
17204
17205         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
17206         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
17207
17208 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
17209
17210         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
17211         information about aot.
17212
17213 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
17214
17215         * *.c: Replace the use of {Enter,Leave}CriticalSection with
17216         macros. This will allow a deadlock debugger to easily be plugged
17217         in.
17218
17219 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
17220
17221         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
17222
17223 2005-09-27  Raja R Harinath  <rharinath@novell.com>
17224
17225         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
17226         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
17227         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
17228         ($(arch_built)) [CROSS_COMPILING]: Error out.
17229
17230 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
17231
17232         * aot.c: Add support for the no_special_static flag for classes.
17233
17234 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
17235
17236         * Reapply reverted patches.
17237
17238         * *: Revert r50174 as well.
17239
17240         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
17241
17242 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
17243
17244         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
17245
17246 2005-09-23  Miguel de Icaza  <miguel@novell.com>
17247
17248         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
17249         part of the SIG_HANDLER_SIGNATURE.  
17250
17251 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
17252
17253         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
17254         statistics.
17255
17256         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
17257         introduced by previous patch.
17258
17259 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
17260
17261         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
17262         saved registers too.
17263
17264         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
17265         upon the information returned by get_call_info ().
17266         
17267         * mini-x86.c (add_float): Fix stack size calculation.
17268         (mono_arch_call_opcode): Rewrite this so it works based up the
17269         information returned by get_call_info ().
17270         (mono_arch_get_this_vret_args): Ditto.
17271
17272 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
17273
17274         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
17275         in cinfo to determine the registers which need to be used.
17276
17277 2005-09-20  Miguel de Icaza  <miguel@novell.com>
17278
17279         * driver.c (mono_main): Add --server and --desktop flags. 
17280
17281 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
17282
17283         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
17284         registers as global registers.
17285
17286         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
17287         longer needed with the new register allocator.
17288
17289         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
17290
17291         * cpu-ia64.md: Remove unused opcodes.
17292         
17293         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
17294         
17295 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
17296
17297         * cpu-amd64.md: Remove unused opcodes.
17298
17299         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
17300         needed with the new register allocator.
17301
17302         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
17303         reg-reg moves.
17304
17305 2005-09-16  Raja R Harinath  <rharinath@novell.com>
17306
17307         * Makefile.am (check-local): Don't invoke semdel-wrapper.
17308
17309 2005-09-16  Martin Baulig  <martin@ximian.com>
17310
17311         * exceptions-amd64.c
17312         (throw_exception): Don't call mono_debugger_throw_exception() if
17313         we're a rethrow - see the FIXME in the code.
17314
17315 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
17316
17317         * mini.c (mono_init_exceptions): This only works on some architectures.
17318         
17319 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
17320
17321         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
17322         on ia64.
17323
17324         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
17325
17326         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
17327         now in mini-exceptions.c.
17328
17329 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
17330
17331         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
17332         now in mini-exceptions.c.
17333
17334 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
17335
17336         * exceptions-x86.c: Applied patch from Patrik Torstensson 
17337         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
17338
17339         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
17340         code into mini-exceptions.c. Add some assertions to it.
17341
17342 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
17343
17344         * aot.c (emit_section_change): Applied patch from "The Software Team" 
17345         (<software@solmersa.com>). Fix as errors on windows.
17346
17347 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
17348
17349         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
17350         method info into the LMF.
17351
17352 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
17353         
17354         * mini-ia64.c: Add proper unwind info for method epilogs.
17355
17356         * exceptions-ia64.c: Add some code to help debugging.
17357         
17358         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
17359
17360         * mini-exceptions.c: Fix warning.
17361
17362 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
17363
17364         * mini.c: Really fix build.
17365
17366         * mini-x86.c mini-amd64.c: Fix build.
17367
17368 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
17369
17370         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
17371
17372         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
17373         some Interlocked methods as intrinsics.
17374
17375         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
17376         for Thread methods as well.
17377
17378         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
17379
17380         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
17381
17382         * mini-ia64.c mini-x86.c mini-amd64.c 
17383         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
17384         OP_MEMORY_BARRIER.
17385         
17386         * mini.c (mono_init_exceptions): Fix build breakage.
17387
17388 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
17389
17390         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
17391         of instructions. Use the new ia64_unw_op macros for emitting unwind
17392         info.
17393
17394         * mini.c (mono_init_exceptions): Initialize exception handling
17395         related trampolines at startup.
17396
17397 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
17398
17399         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
17400
17401 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
17402
17403         * mini.c: Handle type loading errors gracefully during compilation and
17404         throw the appropriate exception.
17405
17406 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
17407
17408         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
17409         for the mono binary.
17410
17411 2005-09-09  Martin Baulig  <martin@ximian.com>
17412
17413         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
17414         the release.
17415
17416 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
17417
17418         * mini-arm.h: use emulation for conv.r.un for the release.
17419
17420 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
17421
17422         * mini-arm.c, objects.cs: more fixes and tests for them.
17423
17424 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
17425
17426         * mini-arm.c: align structures to at least 4 bytes to be able
17427         to keep our current optimized memcpy.
17428
17429 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
17430
17431         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
17432
17433 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17434
17435         * mini.c: ignore SIGPIPE.
17436
17437 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
17438
17439         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
17440
17441         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
17442
17443 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
17444
17445         * mini.h: Add prototype for mono_allocate_stack_slots_full.
17446
17447 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
17448
17449         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
17450         exception handling support.
17451         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
17452         patch by Brian Koropoff <briank@marakicorp.com>).
17453
17454 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
17455
17456         * mini.c: revert another 'optimization' which breaks when
17457         items on the eval stack need to be saved at a basic block end
17458         (bug #75940).
17459
17460 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
17461
17462         * jit-icalls.c: for arrays, ensure we always provide
17463         lower bounds.
17464
17465 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
17466
17467         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
17468         
17469         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
17470
17471 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
17472
17473         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
17474         arguments in their original register.
17475
17476 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
17477
17478         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
17479         memset/memcpy.
17480
17481         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
17482         when ssapre is enabled.
17483
17484         * inssel-long.brg: Fix bug in previous patch.
17485
17486         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
17487         multiplication by a constant.
17488
17489 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
17490
17491         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
17492         icc.
17493
17494         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
17495         saving registers.
17496
17497 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
17498
17499         * inssel-arm.brg: apply changes tested by Brian Koropoff
17500         <briank@marakicorp.com>.
17501
17502 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
17503
17504         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
17505         
17506 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
17507
17508         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
17509         to the same register if dreg is just a base register.
17510         (print_ins): Improve printing of membase opcodes.
17511
17512         * inssel-x86.brg: Add optimized ldind(reg) rules.
17513
17514         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
17515
17516 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
17517
17518         * mini.c: when running under valgrind, set the stack bottom for
17519         the GC at the actual approximate stack for the app (fixes running
17520         mono with valgrind).
17521
17522 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
17523
17524         * mini.c: do no break at the first valuetype to init found
17525         (fixes bug #75791).
17526
17527 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
17528
17529         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
17530
17531 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
17532
17533         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
17534
17535 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
17536
17537         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
17538
17539 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17540
17541         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
17542
17543         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
17544         code.
17545
17546         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
17547         code.
17548
17549         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
17550         methods.
17551
17552 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
17553
17554         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
17555
17556 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17557
17558         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
17559         in the tail recursion optimization.
17560
17561         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
17562         debug info into the assembly file.
17563
17564         * iltests.il: Add test for filter regions.
17565
17566         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
17567         initial stack of filter regions. Fixes #75755.
17568
17569 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
17570
17571         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
17572         stack requirements.
17573
17574 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17575
17576         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
17577         the check for an already compiled method on non-ia64 platforms.
17578         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
17579         proper domain.
17580
17581         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
17582
17583         * inssel-x86.brg: Add some optimized call rules.
17584
17585 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
17586
17587         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
17588         method here.
17589
17590         * mini.h mini-trampolines.c: Pass the trampoline argument to 
17591         mono_arch_patch_delegate_trampoline.
17592
17593         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
17594
17595         * mini-trampolines.c: Fix build.
17596
17597         * mini-amd64.h: Add delegate trampolines.
17598
17599         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
17600
17601         * inssel-amd64.brg: Add optimized call rules.
17602         
17603         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
17604
17605         * inssel-ia64.brg: Add optimized ldind(reg) rules.
17606
17607 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
17608
17609         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
17610         change.
17611
17612         * mini-ia64.c: Remove LMF fixmes.
17613
17614         * mini-ia64.h: Remove most fields from LMF.
17615
17616         * inssel-ia64.brg (stmt): Fix unaligned access errors.
17617
17618         * mini-trampolines.c: Add support for IA64 function descriptors.
17619
17620         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
17621         for IA64 function descriptors.
17622
17623 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
17624
17625         * tramp-arm.c: patch the vtable for virtual calls. Added
17626         support code to register/unregister the LMF.
17627         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
17628         more LMF work.
17629
17630 2005-08-19  Dick Porter  <dick@ximian.com>
17631
17632         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
17633         bit value if needed.
17634
17635 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
17636
17637         * mini.c (mini_get_method): Move handling of wrapper data here.
17638
17639         * mini.c (mono_method_to_ir): Add support for dynamic methods.
17640
17641         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
17642         virtual.
17643
17644         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
17645         bblock->code does not remain empty.
17646
17647 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
17648
17649         * arrays.cs: Add regression test for #75832.
17650
17651         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
17652         rules. Fixes #75832.
17653
17654         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
17655         instruction scheduling.
17656
17657 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
17658
17659         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
17660
17661 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
17662
17663         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
17664
17665         * mini-codegen.c: Fix VC build.
17666
17667         * cpu-pentium.md: Increase length of atomic_exhange_i4.
17668
17669 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17670
17671         * mini.h: fix signature for mono_register_opcode_emulation.
17672
17673 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
17674
17675         * mini.c: Get rid of most of the helper_sig_... constants using
17676         mono_create_icall_signature ().
17677
17678 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
17679
17680         * jit-icalls.c (helper_ldstr): New helper function.
17681
17682         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
17683
17684         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
17685         throw, load the string using a helper call instead of creating a string object.
17686
17687         * aot.c: Update after LDSTR changes.
17688
17689         * mini.h: Bump AOT file version.
17690         
17691         * aot.c: Save class size info into the AOT file. Print more statistics during
17692         compilation.
17693
17694         * mini.h: Bump AOT file version.
17695
17696         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
17697         ordering of disasm cases. Fixes #74957.
17698
17699 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
17700
17701         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
17702         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
17703         the generic code needed for the ARM port.
17704
17705 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
17706
17707         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
17708         inssel-arm.brg: more ARM features and fixes.
17709
17710 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
17711
17712         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
17713         ARM port work in progress.
17714
17715 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
17716
17717         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
17718
17719         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
17720
17721         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
17722
17723         * inssel.brg (mini_emit_memset): Add support for unaligned access.
17724
17725         * *-ia64.*: Ongoing IA64 work.
17726         
17727         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
17728
17729 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
17730
17731         * TODO: Remove out-of-data todo stuff.
17732
17733         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
17734         dead code.
17735
17736         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
17737
17738         * mini.h: Bump corlib version.
17739
17740 2005-07-27  Martin Baulig  <martin@ximian.com>
17741
17742         * mini-codegen.c
17743         (create_copy_ins): Added `const unsigned char *ip' argument; set
17744         `copy->cil_code' from it.
17745
17746 2005-07-27  Martin Baulig  <martin@ximian.com>
17747
17748         * mini-exceptions.c (mono_handle_exception): Don't call
17749         mono_debugger_handle_exception() for filters.
17750
17751 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
17752
17753         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
17754         as well.
17755
17756 2005-07-26  Martin Baulig  <martin@ximian.com>
17757
17758         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
17759
17760         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
17761         helper_compile_generic_method() if the method is actually virtual
17762         and non-final.
17763
17764 2005-07-26  Martin Baulig  <martin@ximian.com>
17765
17766         * mini.c
17767         (trampoline_code): Renamed to `mono_trampoline_code' and made it
17768         public; this is now accessed directly by the debugger.
17769         (mono_generic_trampoline_code): Removed.
17770
17771         * debug-mini.c
17772         (mono_debug_init_method): Also add interncalls and wrappers.
17773
17774 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
17775
17776         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
17777
17778 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
17779
17780         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
17781
17782 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
17783
17784         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
17785
17786 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
17787
17788         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
17789         getting TLS offsets on AMD64 too.
17790
17791 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
17792
17793         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
17794
17795 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
17796
17797         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
17798         inssel-arm.brg, mini-arm.h: ARM port work in progress.
17799
17800 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
17801
17802         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
17803
17804         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
17805         to mini.c.
17806
17807         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
17808         mono_sparc_is_virtual_call ().
17809         
17810         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
17811
17812         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
17813         trampoline parameters.
17814
17815         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
17816         
17817         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
17818         to mono_arch_get_vcall_slot_addr.
17819
17820         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
17821         trampoline code.
17822
17823         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
17824
17825 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
17826
17827         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
17828
17829 2005-07-19  Martin Baulig  <martin@ximian.com>
17830
17831         * exceptions-amd64.c (throw_exception): Call
17832         mono_debugger_throw_exception() here like we're doing it on i386.
17833
17834 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
17835
17836         * mini-ia64.c: Add optimized TLS access support.
17837
17838 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
17839
17840         * mini-exceptions.c: Ongoing IA64 work.
17841
17842         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
17843
17844         * mini.c: Use the default optimization set when embedding. Fixes
17845         #75194.
17846
17847 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
17848
17849         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
17850         of trampolines to a separate file.
17851
17852         * mini-trampolines.c: New file.
17853
17854         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
17855         separate file.
17856         
17857         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
17858         amd64/ia64 code.
17859
17860         * mini-codegen.c: Fix cygwin build.
17861
17862 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
17863
17864         * mini.c: Add some minor changes needed by the IA64 port.
17865
17866         * *-ia64.*: Ongoing IA64 work.
17867
17868 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
17869
17870         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
17871         trampolines into arch-independent and arch-dependent parts.
17872
17873         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
17874
17875 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
17876
17877         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
17878
17879         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
17880         the xp-regalloc-branch for amd64.
17881
17882         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
17883         xp-regalloc-branch for x86.
17884
17885 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
17886
17887         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
17888
17889 2005-07-06  Martin Baulig  <martin@ximian.com>
17890
17891         * mini.c
17892         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
17893         (mono_jit_runtime_invoke): Likewise.
17894
17895 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
17896
17897         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
17898         on x86 too.
17899         
17900         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
17901         without loading their metadata. Reorganize the file format so exception handling+
17902         debug info is kept separate from normal method info. Create MonoJitInfo 
17903         structures for methods lazily.
17904
17905         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
17906         loading metadata.
17907         (x86_class_init_trampoline): Patch AOT class init trampolines too.
17908
17909         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
17910
17911         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
17912         in AOT code.
17913
17914         * mini.h: Bump AOT file version.
17915
17916 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
17917
17918         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
17919
17920 2005-07-01  Raja R Harinath  <rharinath@novell.com>
17921
17922         * Makefile.am (check-local): Call semdel-wrapper.
17923
17924 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
17925
17926         * mini-x86.c: Revert the last change as it seems to break the build..
17927
17928 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
17929
17930         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
17931         
17932         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
17933
17934 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
17935
17936         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
17937         outside of the macro, so strange stuff doesn't happen with gcc4
17938         (NEW_AOTCONST_TOKEN): Likewise.
17939
17940 2005-06-28  Martin Baulig  <martin@ximian.com>
17941
17942         * mini.c (mini_class_is_system_array): New static method; use this
17943         instead of `klass->parent == mono_defaults.array_class' everywhere
17944         since this also works for the new generic array class.
17945
17946 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
17947
17948         * inssel.brg: Remove warnings.
17949
17950 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
17951
17952         * mini-ia64.c: Ongoing IA64 work.
17953
17954         * basic-float.cs: Add float->i1 conversion test.
17955
17956         * iltests.il: Add conv.u4 test.
17957
17958 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
17959
17960         * inssel-long.brg: Fix bug caused by last change.
17961
17962 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
17963
17964         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
17965         BSDs.  Allows the x86 JIT to work on OSX86
17966
17967 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
17968
17969         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
17970         u4->i8 conversion.
17971
17972         * mini-ia64.c: Ongoing IA64 work.
17973
17974 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
17975
17976         * mini-ia64.c: Ongoing IA64 work.
17977
17978         * driver.c: Clean up jit_code_hash as well when using --regression.
17979
17980         * inssel-long.brg: Fix long->i4/u4 conversion rules.
17981
17982         * basic-long.cs: Add tests for long->u4 conversion.
17983
17984 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
17985
17986         * mini.c: Take mono_get_domainvar out of macros. This makes sure
17987         that we do not depend on undefined C behavior: the order stuff
17988         gets evaluated within an expression. Fixes mono when compiled on
17989         GCC 4.
17990
17991 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
17992
17993         * *-ia64.*: Ongoing IA64 work.
17994
17995         * aot.c: Lower memory usage while loading AOT methods.
17996
17997         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
17998
17999         * mini.h: Bump AOT file format version.
18000
18001 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
18002
18003         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
18004
18005 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
18006
18007         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
18008         not on callee assembly). Fixed some comments.
18009
18010 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
18011
18012         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
18013         it gets proper disassembly.
18014         (emit_method_info): Remove some dead code.
18015
18016         * mini.c (mini_method_compile): Allways allocate the GOT var in
18017         mono_method_to_ir for emulating opcodes.
18018
18019 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
18020
18021         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
18022         before freeing the code memory. Fixes #74990.
18023
18024         * objects.cs: Add regression test for #74992.
18025
18026         * liveness.c: Extend live ranges of arguments to the beginning of the
18027         method. Fixes #74992.
18028
18029         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
18030         so it points into the faulting instruction.
18031
18032 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
18033
18034         * jit-icalls.c (mono_imul_ovf): Add exception handling.
18035
18036         * *-ia64.*: Ongoing IA64 work.
18037
18038         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
18039
18040 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
18041
18042         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
18043
18044         * *-ia64.*: Ongoing IA64 work.
18045
18046 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
18047
18048         * basic-long.cs: Add tests for add/sub.ovf.
18049
18050         * basic.cs: Add tests for sub.ovf.
18051
18052         * *-ia64.*: Ongoing IA64 work.
18053
18054 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
18055
18056         * *-ia64.*: Ongoing IA64 work.
18057
18058         * basic.cs: Add conv.ovf.i4.un test.
18059
18060 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
18061
18062         * mini.c: (remove_block_if_useless) Fixed bug 75061.
18063         
18064 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18065
18066         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
18067
18068 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
18069
18070         * *-ia64.*: Ongoing IA64 work.
18071
18072 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18073
18074         * trace.[ch]:
18075         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
18076
18077 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
18078
18079         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
18080
18081 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
18082
18083         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
18084
18085         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
18086         of a call is callable by a near call.
18087
18088 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
18089
18090         * mini-ia64.c: Ongoing IA64 work.
18091
18092 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
18093
18094         * genmdesc.c: Make the generated array non-static.
18095
18096         * inssel-long.brg: Fix LSHR_IMM rule.
18097
18098         * *-ia64.*: Ongoing IA64 work.
18099
18100         * *-ia64.*: Ongoing IA64 work.
18101
18102 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
18103
18104         * *-ia64.*: Ongoing IA64 work.
18105
18106         * *-ia64.*: Ongoing IA64 work.
18107         
18108         * mini-ia64.c: Ongoing IA64 work.
18109
18110         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
18111
18112 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
18113
18114         * objects.cs basic-calls.cs: Move some tests to objects.cs.
18115         
18116         * objects.cs basic-long.cs: Move some tests to objects.cs.
18117
18118 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
18119
18120         * *-ia64.*: Ongoing IA64 work.
18121
18122         * iltests.il: Add a new test.
18123
18124         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
18125         newobj. Fixes #75042.
18126
18127 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
18128
18129         * *-ia64.*: Ongoing IA64 work.
18130         
18131         * *-ia64.*: Ongoing IA64 work.
18132         
18133         * *-ia64.*: Ongoing IA64 work.
18134
18135         * basic.cs objects.cs: Move tests accessing static variables as well.
18136
18137         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
18138
18139 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
18140
18141         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
18142
18143         * driver.c: Always print failed tests.
18144
18145         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
18146         frame pointer.
18147
18148         * *ia64*: Ongoing IA64 work.
18149
18150 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
18151
18152         * basic.cs: Add tests for add.ovf. Fix warnings.
18153
18154 2005-05-18  Miguel de Icaza  <miguel@novell.com>
18155
18156         * driver.c (mono_main): Avoid crash if no argument is passed to
18157         --break;  Do not use g_error, but f_printf.   And fix all other
18158         ocurrences of the same crash.
18159
18160 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
18161
18162         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
18163         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
18164         Fixes #74742.
18165
18166 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
18167
18168         * *-ia64.*: Add beginnings of IA64 backend.
18169
18170         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
18171
18172 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
18173
18174         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
18175         Fixes #74925.
18176
18177         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
18178
18179         * mini-amd64.c: Fix a warning.
18180
18181 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
18182
18183         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
18184         in float_neg. Fixes #74897.
18185
18186         * mini-amd64.c (emit_call): Fix another near call bug.
18187
18188 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
18189
18190         * declsec.c: Keep the appdomain information in the structure. Added a 
18191         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
18192         value gets overwritten).
18193         * declsec.h: Set the default MonoArray for the the stack to 6. Added
18194         an MonoAppDomain member to MonoSecurityFrame.
18195         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
18196         used in the stack walk. Now use a MonoArray which grow (double) when
18197         it gets full.
18198
18199 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
18200
18201         * mini.c: Re-enabled runtime cleanup, since running threads should
18202         now properly stop when exiting.
18203
18204 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
18205
18206         * mini-codegen.c: New file contaning the arch-independent local
18207         register allocator. Not used by any architectures yet.
18208
18209         * mini.h linear-scan.c: Merge some changes from the 
18210         mini-xp-local-regalloc branch.
18211
18212 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
18213
18214         * mini-amd64.c (emit_call): Fix calls to native functions when the
18215         runtime is compiled as a shared library. Fixes #74756.
18216
18217         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
18218         on a literal field. Fixes #74751.
18219
18220 2005-04-25  Raja R Harinath  <rharinath@novell.com>
18221
18222         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
18223
18224 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
18225
18226         * objects.cs: Add missing null casting test.
18227
18228 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
18229
18230         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
18231         in wrapper methods. Also rename 'address' variable to 'offset'.
18232
18233 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
18234
18235         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
18236         warnings.
18237         
18238         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
18239
18240         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
18241         work on windows.
18242
18243 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
18244
18245         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
18246
18247 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
18248
18249         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
18250         just the last bytes.
18251
18252 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
18253
18254         * aot.c (mono_compile_assembly): Fix warning.
18255
18256         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
18257         by the _MSC_VER stuff.
18258
18259 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
18260
18261         * inssel-long.brg: Fix #74588.
18262
18263         * cpu-amd64.md: Fix #74591.
18264
18265         * iltests.il: Add new regression tests.
18266
18267 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
18268
18269         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
18270         valuetype.
18271
18272 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
18273
18274         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
18275
18276         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
18277         from Bill Middleton <flashdict@gmail.com>.
18278
18279 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
18280
18281         * arrays.cs: Add new regression test. Fix warnings.
18282
18283 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
18284
18285         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
18286         and leakage in CKFINITE.
18287
18288         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
18289         this to a null op since it is called on amd64 too.
18290
18291         * exceptions-amd64.c (get_throw_trampoline): Align stack.
18292
18293         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
18294         body since this is not used on amd64.
18295         
18296         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
18297
18298         * mini-amd64.c: Remove obsolete fixmes.
18299
18300         * mini.c (print_method_from_ip): Fix debugging support.
18301
18302 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18303
18304         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
18305         so that expressions that don't give much gain are not reduced.
18306         * ssapre.h: Likewise.
18307
18308 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
18309
18310         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
18311
18312         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
18313
18314         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
18315
18316 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
18317
18318         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
18319
18320         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
18321
18322 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
18323
18324         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
18325         stack touching.
18326
18327         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
18328
18329         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
18330
18331         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
18332
18333         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
18334         MONO_ARCH_USE_SIGACTION. Fixes #74252.
18335
18336         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
18337
18338         * mini-x86.c: Fix up stack overflow handling.   
18339
18340         * exceptions.cs: Add new regression test.
18341
18342 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
18343
18344         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
18345         mono_jit_thread_attach.
18346
18347         * mini.c (mono_method_to_ir): Verify called method is not abstract.
18348
18349 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
18350
18351         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
18352         avoid calling constructors using callvirt.
18353
18354         * inssel.brg: Fix #74073.
18355
18356 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
18357
18358         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
18359         compilation with non-GCC compilers.
18360         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
18361         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
18362
18363 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
18364
18365         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
18366         klass->interface_offsets (will likely fix bug#74073).
18367
18368 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
18369
18370         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
18371
18372 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
18373
18374         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
18375         to amd64_div_reg_size ().
18376         
18377         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
18378
18379 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
18380
18381         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
18382
18383 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
18384
18385         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
18386
18387 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
18388
18389         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
18390         
18391         * mini.c (mono_precompile_assembly): Load and precompile referenced
18392         assemblies as well. Fixes #74015.
18393
18394 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
18395
18396         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
18397
18398 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
18399
18400         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
18401         a lot of checks and (anyway) permissions cannot work until corlib is 
18402         loaded.
18403
18404 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
18405
18406         * mini-ppc.c: fixed ABI issue on sysv/ppc.
18407
18408 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
18409
18410         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
18411         calls (fixes bug#72824).
18412
18413 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18414
18415         * mini.c: fix tail recursion elimination (see test in bug#73936).
18416
18417 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
18418
18419         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
18420         some fp functions in sse2 mode.
18421
18422 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
18423
18424         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
18425
18426 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
18427
18428         * mini.h mini.c: Add mono_get_jit_tls_key ().
18429
18430         * mini-x86.c: Enable fast TLS support on windows.
18431
18432 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
18433
18434         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
18435         * mini.c: Check for p/invoke method when generating code. If a
18436         p/invoke method, or it's class, isn't decorated with [Suppress
18437         UnmanagedCodeSecurity] then generate code to call System.Security.
18438         UnmanagedDemand (only if the security manager is active).
18439
18440 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
18441
18442         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
18443         last change as it seems to cause strange crashes.
18444         
18445 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18446
18447         * *.c: handle unsafe function pointers where needed.
18448
18449 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
18450
18451         * mini.c (mono_jit_free_method): Remove the fixme too.
18452
18453 2005-03-15  Miguel de Icaza  <miguel@novell.com>
18454
18455         * mini.c: As discussed, make the code actually free the delegate
18456         thunk now, to enable the debugging of delegate problems, use
18457         MONO_DEBUG=1 when running Mono. 
18458
18459         This takes also care of parts of the leaks as seen by Joe.
18460
18461 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
18462
18463         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
18464         thread_tls_offset calculation.
18465
18466 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
18467
18468         * declsec.c: Reworked linkdemand checks for icall. The previous code
18469         was using the declaration code (untrusted) and didn't work as expected
18470         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
18471         specific case.
18472
18473 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
18474
18475         * iltests.il: Add new localloc test.
18476
18477         * mini-amd64.c: Handle large stack allocations the same way as on
18478         windows if stack overflow handling is working.
18479         
18480         * mini-amd64.c: Allocate the signal stack using mmap.
18481
18482         * mini.c (sigsegv_signal_handler): Fix reading of context.
18483
18484         * mini-exceptions.c: Fix up stack overflow handling.
18485
18486         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
18487
18488         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
18489
18490         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
18491
18492         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
18493
18494         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
18495         tramp_init functions as they are no longer needed.
18496
18497 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
18498
18499         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
18500         
18501         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
18502
18503         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
18504         
18505         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
18506         support that now.
18507
18508         * mini-ops.h: Add OP_LMUL_IMM.
18509
18510         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
18511         long mul/div opcodes as intrinsic.
18512
18513         * mini-amd64.c (emit_call): Handle the case when the callee might be
18514         an AOT method.
18515
18516 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
18517
18518         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
18519         extra safe.
18520         
18521         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
18522
18523         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
18524
18525 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
18526
18527         * mini.c (mono_codegen): Don't leak here, to help people running
18528         monogrind.
18529
18530 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
18531
18532         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
18533         conversions in sse2 mode.
18534
18535         * basic-float.cs: Add regression test.
18536         
18537         * mini-amd64.c: Reenable sse2.
18538
18539 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
18540
18541         * mini-amd64.c: Disable sse2 until some regressions are fixed.
18542
18543 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
18544
18545         * driver.c: Copyright text should include 2005.
18546         
18547 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
18548
18549         * cpu-amd64.md (load_membase): Fix more max lengths.
18550
18551 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
18552
18553         * cpu-amd64.md (load_membase): Fix max length.
18554
18555         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
18556
18557         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
18558
18559         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
18560         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
18561
18562         * basic-float.cs: Add rounding regression test.
18563
18564         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
18565
18566 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
18567
18568         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
18569         structures in registers for pinvoke wrappers.
18570
18571 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
18572
18573         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
18574
18575 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
18576
18577         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
18578         wrapper to mono_jit_thread_attach.
18579
18580         * mini.c (mini_jit_thread_attach): New jit icall.
18581
18582         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
18583         native->managed wrappers.
18584
18585         * exceptions.cs: Add new regression test.
18586
18587         * mini.c (optimize_branches): Check regions in the cbranch to throw
18588         block case as well. Fixes #73242.
18589
18590 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18591
18592         * mini.c: thread safety fixes.
18593
18594 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
18595
18596         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
18597         patching stuff, since delegates use jump trampolines so there is
18598         no caller.
18599
18600         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
18601         jump trampolines.
18602         
18603         * tramp-amd64.c: Fix build.
18604
18605         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
18606         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
18607
18608         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
18609         Rename this to mono_arch....
18610         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
18611
18612         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
18613
18614         * mini-amd64.c (emit_call): If both the caller and the callee is
18615         guaranteed to have 32 bit addresses, emit a normal call.
18616
18617         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
18618
18619         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
18620         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
18621         method_ptr inside delegates.
18622
18623 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
18624
18625         * mini.c (mono_jit_free_method): Free the method info even if the native code is
18626         invalidated. Fixes #73001.
18627
18628         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
18629
18630         * mini-x86.c: Only use stdcall for pinvokes on windows.
18631
18632 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
18633
18634         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
18635         * mini-x86.c: remove unreliable __thread var offset detection,
18636         use the correct accessors and enable by default.
18637
18638 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
18639
18640         * mini.c (mono_jit_free_method): Fix memory leak.
18641
18642 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
18643
18644         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
18645
18646 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
18647
18648         * cpu-amd64.md: Fix lengths of atomic opcodes.
18649
18650 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
18651
18652         * driver.c: try to not imply using ICU is any good.
18653
18654 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
18655
18656         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
18657         functions as inline ops.
18658
18659         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
18660         some Interlocked functions as inline ops.
18661
18662         * mini.c (move_basic_block_to_end): Fix bug in last patch.
18663
18664         * mini.h (MonoBasicBlock): Reorganize fields a bit.
18665
18666         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
18667
18668         * mini.c: Add support for OP_NOT_TAKEN.
18669
18670         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
18671         structures in registers for pinvoke wrappers.
18672
18673         * mini-amd64.c: Fix warnings.
18674
18675 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
18676
18677         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
18678
18679         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
18680
18681         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
18682         address instead of loading the address from it.
18683
18684         * mini-x86.c: Add support for returning small structs in registers
18685         on Win32. Fixes part of #70864.
18686         
18687 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
18688
18689         * trace.c (get_token): Improve error checking.
18690
18691 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
18692
18693         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
18694
18695 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
18696  
18697         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
18698         it can be reused for MonoClass.
18699         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
18700         _LINKDEMAND.
18701
18702 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
18703
18704         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
18705         instead of a MonoReflectionMethod. The method information wasn't used
18706         when displaying SecurityException details (but will be now).
18707
18708 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
18709
18710         * Makefile.am : windows build fix.
18711
18712 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
18713
18714         * iltests.il: Add new regression test.
18715
18716         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
18717         #72522.
18718
18719 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
18720  
18721         * mini.c: Moved linkdemand check into helper function check_linkdemand
18722         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
18723         LDFTN, LDVIRTFTN).
18724
18725 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
18726
18727         * declsec.c: Added statistics counter for different kinds of 
18728         LinkDemands.
18729         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
18730         (and commented) declaration.
18731         * mini.c: Added statistics counter for security Demand code 
18732         generation. Added display of security statistics.
18733
18734 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
18735
18736         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
18737         Fix compilation errors under gcc-2.95.
18738
18739 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
18740
18741         * mini.c, driver.c: Use the new jit trampoline hashtable
18742
18743 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18744
18745         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
18746
18747 2005-02-11  Martin Baulig  <martin@ximian.com>
18748
18749         * debug-mini.c (mono_debug_close_method): Free the line number array.
18750
18751 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
18752
18753         * aot.c: Break up large methods into smaller ones. Share GOT slots for
18754         icalls.
18755
18756         * mini.h: Bump AOT file format version. 
18757
18758 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
18759
18760         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
18761         APTC and P/Invoke.
18762         * declsec.h: Added macros to get/set lazyly initialized security 
18763         informations about assemblies. Added new enum for different type of
18764         possible LinkDemand violation. Added function to check LinkDemands.
18765         * mini.h: Added a field to MonoCompile to hold any security violation
18766         detected when JITting a method (so it can be thrown later).
18767         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
18768         and CEE_CALLVIRT. Added code to throw exception at the end of
18769         mini_method_compile (note: the exception is unhandled right now).
18770
18771 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
18772
18773         * mini.c, jit-icalls.c: use the managed implementation of
18774         memset for initobj and memset, to avoid managed <-> unmanaged
18775         transitions.
18776
18777 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
18778
18779         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
18780         optimization if it would need a GOT var.
18781
18782         * basic.cs: Add tests for constant propagation and switch statements.
18783
18784         * ssa.c: Fix out-of-range constant propagation and switch statements.
18785
18786 2005-02-09    <vargaz@freemail.hu>
18787
18788         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
18789
18790 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
18791
18792         * cpu-amd64.md (load_membase): Fix max length of load_membase.
18793
18794 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18795
18796         * mini.c: update to new signature of mono_class_get_allocation_ftn().
18797
18798 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
18799
18800         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
18801         arithmetic operations.
18802
18803 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
18804
18805         * mini-ppc.c: add a workaround for broken user code that
18806         DllImports vararg functions with non-vararg signatures.
18807
18808 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18809
18810         * mini.c (mono_jit_compile_method_inner): Add detection and a 
18811         meaningfull error message for assemblies written in Managed C++.
18812
18813         * tramp-amd64.c mini-amd64.h: Add support for 
18814         create_trampoline_from_token ().
18815
18816         * aot.c mini-x86.c abcremoval.c: Applied patch from
18817         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
18818
18819 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
18820
18821         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
18822         which takes a MonoImage/token as parameter instead of a MonoMethod.
18823
18824         * aot.c: Use the new trampoline for initializing vtables.
18825
18826         * aot.c: Add support for ldfld/stfld_remote wrappers.
18827
18828         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
18829         rules for compare <MEM>, IMM.
18830
18831         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
18832
18833         * aot.c: Handle inherited finalizers correctly.
18834
18835 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
18836
18837         * inssel.brg (stmt): Add a missing _setup_... ().
18838
18839         * aot.c: Save some parts of the class state to the AOT file and use it
18840         to recompute that state when a class is initialized.
18841
18842         * mini.c: Install AOT hooks into the runtime.
18843
18844         * mini.h: Bump AOT file format version.
18845         
18846         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
18847         Fixes #72148.
18848
18849         * iltests.il: Add new test.
18850
18851 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
18852
18853         * mini.c: fix typo.
18854
18855 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
18856
18857         * mini.c: setup the statistical profiler in the thread attach
18858         callback to cope with the new single thread code.
18859
18860 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
18861
18862         * mini-ppc.c: ensure we have enough room for the profiler
18863         calls (fixed bug#72084).
18864
18865 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
18866
18867         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
18868         it.
18869
18870 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18871
18872         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
18873
18874 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18875
18876         * ssapre.c: Fixed an issue with down safety (this allows IronPython
18877         to succesfully execute parrotbench).
18878         * ssapre.h: Likewise.
18879
18880 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18881
18882         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
18883         variable for stores to method arguments (fixes a SSAPRE issue).
18884
18885 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18886
18887         * mini.c: handle value types in dup, fixes gen-112.cs.
18888
18889 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
18890
18891         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
18892         sequence for calls in dynamic methods to avoid thunks.
18893
18894 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18895
18896         * mini.c: correctly remove dynamic methods from the hashtable.
18897
18898 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18899
18900         * driver.c: Disabled SSAPRE until fix the bug that appears
18901         in IronPython's parrotbench.
18902
18903 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
18904
18905         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
18906
18907         * mini.c (mono_method_to_ir): Revert the previous change.
18908         
18909         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
18910         when AOT compiling.
18911
18912         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
18913         mono_jit_info_table_find () etc. when running under valgrind.
18914
18915         * inssel.brg: Fix warnings.
18916
18917         * mini-exceptions.c: Fix warnings.
18918
18919 2005-01-31  Martin Baulig  <martin@ximian.com>
18920
18921         * driver.c (compile_all_methods_thread_main): Don't try to compile
18922         generic methods or anything which has type parameters.
18923
18924 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
18925
18926         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
18927
18928         * TestDriver.cs: Add --verbose flags.
18929
18930         * graph.c ssa.c: Fix 64 bit warnings.
18931         
18932         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
18933         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
18934         Fix 64 bit warnings.
18935
18936         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
18937         variable not spotted by gcc.
18938         
18939         * mini-amd64.c inssel-amd64.brg: Applied patch from  
18940         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
18941         X86_COMPARE_MEMBASE opcodes.
18942
18943         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
18944
18945 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
18946
18947         * *: MonoMethod->signature might be NULL now. You *MUST* use
18948         mono_method_signature.
18949
18950 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18951
18952         * driver.c (compile_all_methods_thread_main): Compile the methods
18953         without invoking cctors.
18954
18955 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18956
18957         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
18958         * basic-calls.cs: test for the above.
18959
18960 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18961
18962         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
18963         MonoJitInfo changes.
18964
18965 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
18966
18967         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
18968         eagerly if it contains dynamic methods.
18969         
18970         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
18971
18972         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
18973         trace, it is now computed by an icall from trace_ips.
18974         
18975         * mini-exceptions.c: Fix a warning.
18976
18977 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
18978
18979         * mini-exceptions.c: don't bother getting stack trace info if
18980         it's not going to be used.
18981
18982 2005-01-27  Raja R Harinath  <rharinath@novell.com>
18983
18984         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
18985         ssapre-mini-ops.h.
18986
18987 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
18988
18989         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
18990
18991         * aot.c: Avoid calling mono_method_get_header () if not needed.
18992
18993         * mini.h: Bump AOT file format version.
18994         
18995         * mini.c (mono_emit_native_call): Allocate a GOT var here.
18996
18997         * mini.c (mono_print_tree): Print more info for calls.
18998
18999 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
19000
19001         * declsec.h: Remove warning by adding missing include for marshal.h
19002
19003 2005-01-26  Martin Baulig  <martin@ximian.com>
19004
19005         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
19006         `ip' twice.
19007
19008 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
19009
19010         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
19011         flags.
19012
19013         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
19014
19015         * aot.c (mono_compile_assembly): Fix a warning.
19016
19017 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
19018
19019         * declsec.c: Look for security attributes on the original MonoMethod 
19020         (and not the wrapped one). This fix permissions on icalls.
19021
19022 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
19023
19024         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
19025
19026         * mini.c (mono_allocate_stack_slots): Add a fixme.
19027
19028         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
19029
19030 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19031
19032         * inssel.brg: optimize casts of sealed types (more
19033         optimizations waiting for fixes in remoting).
19034
19035 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
19036
19037         * inssel.brg (stmt): Add another dummy rule.
19038
19039         * driver.c: Fix warnings.
19040
19041         * driver.c (mono_main): If running under valgrind, instruct glib to use
19042         the system allocation functions so valgrind can track the memory
19043         allocated by the g_... functions.
19044
19045         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
19046
19047         * mini-ops.h: Add OP_DUMMY_STORE opcode.
19048
19049         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
19050
19051         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
19052         variables in try regions.
19053
19054         * mini.c (mini_method_compile): Don't disable optimizations on large
19055         methods when AOT compiling.
19056
19057         * mini.c (mono_allocate_stack_slots): New arch independent method to 
19058         allocate stack slots. Not yet used.
19059
19060 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
19061
19062         * debug-mini.c (mono_debug_close_method): Plug some leaks.
19063
19064 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
19065
19066         * mini-ppc.c: make the branch info relative as the code
19067         buffer can be reallocated.
19068
19069 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
19070
19071         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
19072         * driver.c: Removed the AOT/security restriction. Now initialize the
19073         security manager (in metadata) if --security is used.
19074         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
19075         rather than the pointer to declarative security, when AOT is used.
19076
19077 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
19078
19079         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
19080         basic blocks, reduced intrinsic exception throwing code size.
19081
19082 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
19083
19084         * driver.c (mini_usage): Reorder the usage screen.
19085
19086 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
19087
19088         * mini.c (mono_resolve_patch_target): Fix warning.
19089
19090 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
19091
19092         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
19093         previous patch.
19094
19095         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
19096
19097         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
19098         breaks the amd64 build.
19099
19100         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
19101         register allocation. Fixes #71454.
19102
19103         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
19104
19105         * arrays.cs: Add new regression test.   
19106
19107 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19108
19109         * ssapre.c: Turned usage of snprintf to GString.
19110         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
19111         (I left it on by mistake in my previous commit).
19112
19113 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
19114
19115         * mini.c, cfold.c, basic-calls.cs: preserve side effects
19116         on cond branch optimization (fixes bug# 71515).
19117
19118 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19119
19120         * abcremoval.c: Fixed bug 71062.
19121         * abcremoval.h: Likewise.
19122
19123 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19124
19125         * mini.c: Added a new functionality to optimize_branches, the removal
19126         of useless basic blocks, and fixed some problem in the removal of
19127         critical edges; some utility functions added for both purposes.
19128         * ssapre.c: Added complex expression support, and fixed bug 70637.
19129         * ssapre.h: Likewise.
19130         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
19131         enabled in SSAPRE.
19132         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
19133         * driver.c: Re-enabled SSAPRE.
19134
19135 2005-01-19  Martin Baulig  <martin@ximian.com>
19136
19137         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
19138         the result of mono_get_method_constrained().
19139
19140 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
19141
19142         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
19143         manager.
19144
19145 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
19146
19147         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
19148         be detected.  Fixes #59296.
19149
19150 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
19151
19152         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
19153         which can happen. Fixes #71361.
19154
19155 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
19156
19157         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
19158         manager.
19159
19160 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
19161
19162         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
19163         appdomain-unload.exe to fail.
19164         
19165         * mini.c: Fix some memory leaks.
19166
19167 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
19168
19169         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
19170         Fixed bug and sped up some codepaths.
19171
19172 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
19173
19174         * mini.c: Fix some memory leaks.
19175
19176         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
19177         conversion.
19178
19179         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
19180
19181         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
19182         #71320.
19183
19184         * iltests.il: Add regression test for #71320.
19185
19186 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
19187
19188         * mini.c (mono_codegen): Fix installation of profiler hooks.
19189
19190         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
19191
19192 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
19193
19194         * mini.h, mini.c, cfold.c: optimize access to enum
19195         readonly fields, too. Eval conditional branches if possible
19196         to perform unreachable code removal in more cases.
19197
19198 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
19199
19200         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
19201
19202         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
19203         code manager.
19204
19205         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
19206         WinXP DEP. Fixes #71244.
19207
19208 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
19209
19210         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
19211
19212 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
19213
19214         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
19215
19216 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
19217
19218         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
19219         changes.
19220
19221         * mini.h: Bump AOT version.
19222
19223         * mini.h (MonoCompile): Change exvar to a hash table.
19224
19225         * mini.c: Allocate a separate exvar for each handler block.
19226
19227         * mini.c: Get rid of the computation of filter_lengths, its not needed.
19228
19229         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
19230         ex var with the pending exception and only throw if the two are equal.
19231         Fixes #68552.
19232         
19233         * exceptions.cs: Add tests for rethrow and nested catch clauses.
19234
19235         * mini-x86.c: Fix warnings.
19236
19237         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
19238         used by all the ports now.
19239
19240         * aot.c: Add write-symbols and save-temps options.
19241
19242 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
19243
19244         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
19245
19246 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
19247
19248         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
19249         operations.
19250
19251         * tramp-s390.c: Check vtable slot belongs to the domain.
19252
19253         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
19254         as per other platforms.
19255
19256         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
19257
19258 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
19259
19260         * driver.c: we don't run the Main() code in a subthread anymore.
19261
19262 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
19263
19264         * mini.c: added experimental rtc support in the statistical
19265         profiler: if the user has the permission, more accurate statistics
19266         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
19267         The MONO_RTC value must be restricted to what the linux rtc allows:
19268         power of two from 64 to 8192 Hz.
19269
19270 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
19271
19272         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
19273
19274 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
19275
19276         * mini-ppc.c: better icache flush for smp.
19277
19278 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
19279
19280         * mini-amd64.c (emit_move_return_value): Fix memory leak.
19281
19282         * mini-x86.c (get_call_info): Add the get_call_info () code from the
19283         amd64 port, not yet used.
19284
19285 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
19286
19287         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
19288         a struct type.
19289
19290 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
19291
19292         * driver.c: Added --security option to activate the security manager.
19293         Right now this will allow code generation for declarative demands and
19294         is disabled when AOT is specified.
19295         * mini.c: Add code generation for declarative security demands.
19296         * mini.h: Add mono_use_security_manager as an extern gboolean.
19297
19298 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
19299
19300         * aot.c (mono_compile_assembly): Speed up compilation a bit by
19301         emitting more dense assembly code.
19302
19303         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
19304         exception throwing stuff.
19305
19306 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
19307
19308         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
19309         dead code.
19310
19311         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
19312         left in by mistake.
19313
19314         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
19315         fixed.
19316
19317         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
19318
19319         * tramp-*.c: Only patch vtable slots if the object is in the current
19320         domain. Fixes appdomain-unload.exe.
19321
19322         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
19323         
19324         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
19325         x86 branch.
19326
19327 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
19328
19329         * mini.c (reverse_branch_op): New helper function.
19330
19331         * mini.c (optimize_branches): Run the new optimization only on 
19332         platforms which support it. Also reverse all kinds of branches.
19333
19334         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
19335
19336         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
19337         a throw statement.
19338
19339         * mini.c (optimize_branches): Reverse not-equals branches if the false
19340         bblock is a throw. This happens a lot of time with argument checking in
19341         corlib.
19342
19343         * mini.c (mono_codegen): Add support for placing basic blocks after
19344         the function epilogue.
19345
19346         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
19347         function epilogue.
19348         
19349 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
19350
19351         * mini.c (setup_stat_profiler): Only set this up if the platform
19352         supports ITIMER_PROF.
19353
19354 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
19355
19356         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
19357         previous patch.
19358
19359         * inssel.brg: Fix a warning.
19360
19361 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
19362
19363         * mini.c: added support for statistical profiler 
19364         (run with: --profile=default:stat).
19365
19366 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
19367
19368         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
19369
19370         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
19371
19372         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
19373         related to global registers from the amd64 port.
19374
19375 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
19376
19377         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
19378
19379         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
19380         with global registers.
19381         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
19382
19383         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
19384
19385 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
19386
19387         * debug-mini.c (encode_value): Fix off-by-one.
19388
19389         * aot.c (encode_value): Likewise.
19390
19391         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
19392
19393 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
19394
19395         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
19396         AOT.
19397
19398         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
19399         
19400         * aot.c (emit_method_info): Increase size of temp buffer.
19401
19402         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
19403         the AOT case.
19404
19405 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
19406
19407         * aot.c (emit_method_info): Fix build.
19408         
19409         * aot.c: Further rework of the AOT file format to reduce the size of
19410         the method info data.
19411
19412         * mini.h: Bump AOT file format version.
19413
19414 2004-12-27  Martin Baulig  <martin@ximian.com>
19415
19416         * mini.c (mini_get_method): New static method; call
19417         mono_get_method_full() and mono_get_inflated_method().
19418         (mono_method_to_ir): Use mini_get_method() instead of
19419         mono_get_method_full(). 
19420
19421 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
19422
19423         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
19424
19425 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
19426
19427         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
19428
19429         * inssel-amd64.brg: Add some optimization rules.
19430
19431 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
19432
19433         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
19434         standard not GC'd stuff is fine.
19435
19436 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
19437
19438         * aot.c: Rework the AOT file format to get rid of most of the global
19439         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
19440
19441         * mini.h: Bump AOT file format version.
19442         
19443 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
19444
19445         * mini.h: Bump AOT file format version.
19446
19447         * aot.c (mono_aot_is_got_entry): New function to determine if an 
19448         address is inside a GOT.
19449
19450         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
19451
19452         * cpu-pentium.md: Increase the maximum size of some instructions which
19453         might involve a got access.
19454         
19455         * mini.c (get_method_from_ip): Another debug helper function.
19456
19457         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
19458         when got var accesses are created during the decompose phase.
19459
19460         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
19461
19462         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
19463         argument mini_compile_method and to MonoCompile, and use this to
19464         determine whenever a given method is compiled for AOT. This allows the
19465         other methods compiled during AOT compilation to be free of AOT stuff,
19466         so the backends does not need to add special support for them by
19467         creating a fake GOT etc.
19468
19469         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
19470         longer needed.
19471
19472 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
19473
19474         * mini.c (mono_method_to_ir): It turns out that some of the
19475         x-appdomain wrappers are lax with types, so just ignore this for
19476         all wrappers.
19477
19478         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
19479         at the vtable->klass. If it is non-shared code we can just use the
19480         vtable.
19481
19482 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
19483
19484         * mini-ppc.c: access MonoDomain from tls, too.
19485
19486 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
19487
19488         * declsec.c: Removed unused variable (and related warning ;-)
19489
19490 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
19491
19492         * iltests.il: New test for LDELEMA on an array of ref types.
19493
19494         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
19495         all ldelema's on reftypes.
19496         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
19497         it was the wrong place to put it.
19498
19499         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
19500         register to pop to make this cleaner, at the request of Paolo.
19501
19502 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
19503
19504         * mini-ops.h (OP_GETHASHCODE): New op.
19505
19506         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
19507
19508         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
19509         operation.
19510
19511         For a microbenchmark, this reduces the cost of Hashtable.get_Item
19512         by 25%.
19513         
19514         * mini-x86.c (mono_arch_output_basic_block): Rather than
19515
19516         add ebp, 4
19517
19518         Emit
19519
19520         pop edx
19521
19522         The first is 3 bytes while the second is 1. This saves 36 kb on
19523         mscorlib, quite a big saving. When bootstraping mcs, I was able to
19524         see a small boost because of icache locality.
19525
19526         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
19527
19528 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
19529
19530         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
19531         started code sharing with the generic code.
19532
19533 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
19534
19535         * mini-ppc.c, cpu-g4.md: added code for direct access to
19536         tls data slots.
19537
19538 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
19539
19540         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
19541          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
19542         to OP_TLS_GET.
19543
19544 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
19545
19546         * declsec.c|h: Added functions to cache the declarative stack modifiers
19547         in MonoJitInfo and to create a security frame from a MonoJitInfo 
19548         structure.
19549         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
19550         created. Register internal calls for System.Security.SecurityFrame::
19551         _GetSecurityFrame and _GetSecurityStack.
19552         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
19553         the definitions for the new stack walk/callback mechanism.
19554         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
19555         first security frame for LinkDemands and InheritanceDemands) and
19556         GetSecurityStack for Demands. Both use the new mono_walk_stack code
19557         from lupus.
19558         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
19559         walk initialization (lupus).
19560
19561 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
19562
19563         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
19564         idiom.
19565         (handle_loaded_temps): Do not create a temporary variable for
19566         things that we know are temps. They will never be modified.
19567         (mono_spill_call): Set MONO_INST_IS_TEMP
19568         (mono_emulate_opcode): ditto
19569         (emit_tree): ditto
19570         (mono_method_to_ir.CEE_DUP): ditto
19571
19572 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
19573
19574         * mini.c (type_to_eval_stack_type): Make this handle the void type
19575         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
19576         (emit_tree): use ip_in_bb to special case some common idioms
19577         Update all callers to pass in the IP.
19578         (mono_method_to_ir): Make CEE_CALL* do the above as well.
19579
19580         This gives us a nice 2% speedup in mcs bootstrap.
19581
19582         * mini-x86.c (peephole_pass): Peephole pass to make
19583         mov  [foo], eax
19584         push [foo]
19585
19586         into
19587
19588         mov [foo], eax
19589         push eax
19590
19591         * mini.c (ip_in_bb): new method.
19592         (mono_method_to_ir): use this method rather than doing the hash
19593         lookup ourselves.
19594
19595         * linear-scan.c (mono_linear_scan): When expiring actives, you
19596         don't need to keep around variables that expire on this
19597         instruction. This makes it so that:
19598              a = b + 1
19599         will turn into:
19600              store (ebx add (ebx, 1))
19601         which will become
19602              add ebx, 1
19603
19604 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
19605
19606         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
19607         combination to avoid doing two copies. Fix up problems with previous
19608         patch.
19609
19610         * mini.c: Fix 64 bit warnings.
19611
19612         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
19613
19614 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
19615
19616         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
19617         changes from the x86 code.
19618
19619         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
19620
19621 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
19622
19623         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
19624         throwing code to reduce its size, unify the AOT and non-aot code and 
19625         get rid of relocations in the AOT case.
19626
19627         * mini-x86.h mini.c exceptions-x86.c 
19628         (mono_arch_get_throw_corlib_exception): New arch specific function to 
19629         raise corlib exceptions which doesn't require relocations in the 
19630         caller.
19631
19632         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
19633
19634 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
19635
19636         * mini.c (mono_emit_method_call): Only allocate the got var when it is
19637         needed.
19638
19639         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
19640         in the AOT case.
19641
19642 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19643
19644         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
19645         with add function when used from Inc/dec atomic 
19646         functions. Re-enabled optimization on x86.
19647         * mini-ops.h: renamed atomic_add functions to
19648         allow _add to match the Interlocked::Add and
19649         _add_next to match Interlocked::Inc/Dec.
19650
19651 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
19652
19653         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
19654         linking of BBs to the end BB, and enabled SSAPRE also with
19655         consprop and copyprop (which was prevented by that bug).
19656
19657 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19658
19659         * mini-x86.c: disabling the Interlocked optimizing code. 
19660
19661 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
19662
19663         * aot.c (load_aot_module): Move reading of got_addr after the AOT
19664         file version check.
19665         
19666 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19667
19668         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
19669         interlocked optimization due lack of support on x86, rewrote 
19670         exchange to take into account that base may be in eax.
19671         
19672         xsp works again; activated Interlocked optimizing code.
19673         
19674 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
19675
19676         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
19677
19678 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
19679
19680         * mini-ops.h: Add new opcodes.
19681
19682         * mini.h: Add new patch types. Add got_var to MonoCompile.
19683
19684         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
19685         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
19686         make it work with all kinds of patchable code.
19687
19688         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
19689         address of the GOT, and referencing entries in the GOT.
19690
19691         * mini.c: Add code to load the GOT address if needed by an opcode.
19692
19693         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
19694         independent AOT code on the x86 using an elf-style Global Offset Table.
19695
19696 2004-12-14  Raja R Harinath  <rharinath@novell.com>
19697
19698         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
19699
19700 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19701
19702         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
19703         when running xsp.
19704
19705 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
19706
19707         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
19708         of Interlocked:Increment/Decrement/Add as inline ops.
19709         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
19710
19711 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
19712
19713         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
19714         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
19715
19716 2004-12-12  Duncan Mak  <duncan@ximian.com>
19717
19718         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
19719         again. `patch_info->table_size' is no longer valid after Zoltan's
19720         commit #37636.
19721
19722 2004-12-12  Martin Baulig  <martin@ximian.com>
19723
19724         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
19725         if we are the "real" method, ie. not an inlined method inside it.
19726
19727 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
19728
19729         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
19730         before we look in the special fields table. This fixes
19731         ../tests/thread-static-init.cs.
19732
19733 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19734
19735         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
19736         for Array get_Rank and get_Length. Fixes bug #70465.
19737
19738 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
19739
19740         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
19741         separate structure to reduce the size of MonoJumpInfo.
19742
19743 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
19744
19745         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
19746
19747 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
19748
19749         * mini.c (mini_get_inst_for_method): Changed to allow ports
19750         to return a MonoInst instead of opcode 
19751         (renamed mini_get_opcode_for_method to better reflect the new functionality)
19752         
19753         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
19754         Allow ports to return a created MonoInst instead of op-code, will enable
19755         new optimizations.
19756         (renamed mini_get_opcode_for_method to better reflected the functionality)
19757
19758 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
19759
19760         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
19761
19762 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19763
19764         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
19765         Fixes #69985.
19766
19767 2004-12-08  Martin Baulig  <martin@ximian.com>
19768
19769         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
19770         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
19771
19772 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19773
19774         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
19775         correctly.
19776
19777         * exceptions.cs: Disable some tests which depend on properties of x86 fp
19778         arithmetic.
19779
19780 2004-12-08  Raja R Harinath  <rharinath@novell.com>
19781
19782         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
19783
19784 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
19785
19786         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
19787         bug introduced by the previous patch.
19788
19789 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
19790
19791         * mini-ppc.c, objectc.cs: handle large structs passed by value
19792         (fixes bug #69972).
19793
19794 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
19795
19796         * mini-ppc.c: OP_ARGLIST implementation from
19797         Geoff Norton  <gnorton@customerdna.com>.
19798
19799 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
19800
19801         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
19802         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
19803
19804 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
19805
19806         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
19807
19808 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19809
19810         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
19811         support.
19812
19813 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
19814
19815         * mini-sparc.c: Zero out localled-ed memory.
19816
19817         * iltests.il: Add tests for zeroing out localloc-ed memory.
19818
19819 2004-12-04  Martin Baulig  <martin@ximian.com>
19820
19821         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
19822         mono_method_get_signature_full().       
19823
19824 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
19825
19826         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
19827         and some utility functions (always for SSAPRE), integrated SSAPRE.
19828         * mini.h: Likewise.
19829         * driver.c: Added ssapre option.
19830         * ssa.c: Small fix on OP_ARG handling.
19831         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
19832         * Makefile.am: Likewise.
19833
19834 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
19835
19836         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
19837         now in the xp code.
19838
19839         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
19840         icall.
19841
19842 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19843
19844         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
19845         
19846         * cpu-s390.md : Increase instruction length of oparglist.
19847
19848         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
19849
19850 2004-11-30  Martin Baulig  <martin@ximian.com>
19851
19852         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
19853         virtual generic methods.  We call a special helper_compile_generic_method()
19854         icall to retrieve the method from the vtable, inflate and compile
19855         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
19856
19857         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
19858
19859 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
19860
19861         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
19862
19863 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
19864
19865         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
19866         Fixes #69929.
19867
19868 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
19869
19870         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
19871         platforms with PIC aot.
19872
19873 2004-11-28  Martin Baulig  <martin@ximian.com>
19874
19875         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
19876         Fixes gen-112.cs.
19877
19878 2004-11-28  Martin Baulig  <martin@ximian.com>
19879
19880         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
19881         the result of mono_type_get_underlying_type() to check whether
19882         we're byref.
19883
19884 2004-11-26  Martin Baulig  <martin@ximian.com>
19885
19886         * mini.c
19887         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
19888         in the g_assert().
19889
19890 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
19891
19892         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
19893         the same way as the other arguments so they won't get clobbered.
19894
19895         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
19896         calls through R11 since it is clobbered by the trampoline code.
19897
19898 2004-11-26  Raja R Harinath  <rharinath@novell.com>
19899
19900         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
19901         pick up in-tree mscorlib.dll.
19902
19903 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
19904
19905         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
19906
19907         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
19908         runtime data/code are now stored in a table similar to the GOT in ELF. 
19909         This allows the code itself to be position independent.
19910
19911         * aot.c: Fix loading of referenced assemblies after the lazy assembly
19912         loading changes.
19913
19914         * aot.c: Attach ELF type (object/function) directives to all global
19915         symbols.
19916
19917         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
19918
19919         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
19920
19921         * mini-amd64.h: Turn on PIC AOT code.
19922
19923         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
19924         returning the offset within an OP_AOTCONST instruction where the GOT
19925         offset needs to be added.
19926
19927         * mini.h: Bump AOT file format version.
19928
19929 2004-11-25  Martin Baulig  <martin@ximian.com>
19930
19931         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
19932         uninflated generic methods.
19933
19934 2004-11-25  Martin Baulig  <martin@ximian.com>
19935
19936         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
19937
19938 2004-11-24  Martin Baulig  <martin@ximian.com>
19939
19940         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
19941         original klass (this only applies for generic instances).
19942
19943 2004-11-24  Martin Baulig  <martin@ximian.com>
19944
19945         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
19946         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
19947         that array).
19948
19949 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
19950
19951         * mini.c (mono_method_to_ir): Disable inlining for methods containing
19952         localloc. Fixes #69678.
19953
19954         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
19955         
19956 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
19957
19958         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
19959         used SSE registers on pinvoke calls. Fixes #69774.
19960
19961 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
19962
19963         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
19964         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
19965
19966 2004-11-23  Raja R Harinath  <rharinath@novell.com>
19967
19968         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
19969         Refer directly to the mcs/ tree.
19970
19971 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19972
19973         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
19974         Check if a trampoline for a synchronized method is required. 
19975
19976 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
19977
19978         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
19979         with localloc if needed. Throe arithmetric exception in
19980         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
19981         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
19982
19983 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
19984
19985         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
19986         types before switching on type.  Fixes #69622.
19987
19988 2004-11-19  Raja R Harinath  <rharinath@novell.com>
19989
19990         * Makefile.am (check-local): New.  Integrate into 'make check'.
19991         (MCS,RUNTIME): Define using in-tree mono and mcs.
19992         (ILASM): New.
19993         (%.exe): Use $(ILASM).
19994
19995 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
19996
19997         * mini-ppc.c: adjust initial prolog size (bug #69691).
19998
19999 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
20000
20001         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
20002         #69664.
20003
20004 2004-11-17  Raja R Harinath  <rharinath@novell.com>
20005
20006         * Makefile.am (clean-local): Rename from 'clean'.
20007
20008 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20009
20010         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
20011         to mono_arch_is_int_overflow. 
20012         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
20013         SIGFPE events.
20014
20015 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
20016
20017         * declsec.c|h: New files to support declarative security attributes.
20018         Added function to check if a method has (applicable) security.
20019         * mini.c|h: Add check for declarative security attributes in
20020         mono_method_check_inlining.
20021         * Makefile.am: Added declsec.c and declsec.h to the build.
20022
20023 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
20024
20025         * mini.c, mini.h: update to keep dynamic code info per-domain.
20026
20027 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
20028
20029         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
20030         (mini_init): Get rid of it from here too.
20031
20032 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
20033
20034         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
20035         implemented OP_RETHROW (patch by Geoff Norton
20036         <gnorton@customerdna.com>).
20037
20038 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
20039
20040         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
20041         between appdomains.  Fixes appdomain-unload on PPC.
20042
20043 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
20044
20045         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20046         mini-exceptions.c: handle the new wrapper types.
20047         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
20048         token value as a MonoClass* when compiling a wrapper.
20049         mono_jit_create_remoting_trampoline now takes an additional
20050         MonoRemotingTarget parameter.
20051         
20052 2004-11-10  Martin Baulig  <martin@localhost>
20053
20054         * mini.c (mono_method_to_ir): Use `generic_container->context'
20055         rather than creating a new one.
20056
20057 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20058
20059         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
20060
20061         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
20062
20063 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
20064
20065         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
20066         the experimental aot cache stuff.
20067
20068 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
20069
20070         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20071         mini-exceptions.c: update to exception clause structure changes.
20072
20073 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
20074
20075         * exceptions-x86.c (throw_exception): Fix warnings.
20076
20077         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
20078         for OP_RETHROW.
20079
20080 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
20081
20082         * exceptions-sparc.c (get_throw_exception): Really fix this.
20083
20084 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
20085
20086         * tramp-*.c: we no longer support icalls without wrappers, so
20087         a bit of code can be removed here
20088
20089 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
20090
20091         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
20092         patch.
20093
20094         * cpu-sparc.md: Add op_rethrow.
20095
20096         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
20097
20098         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
20099
20100         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
20101         * mini-ops.h: Add OP_RETHROW.
20102
20103         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
20104
20105         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
20106
20107 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
20108         
20109         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
20110         Makes the output much easier to read
20111
20112 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
20113
20114         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
20115         prevents another huge leak when compiling with ssa. Secondly, the
20116         performance of doing this rather than freeing the lists is much
20117         better. GList does a lock every time you allocate a list link,
20118         so that it can use a memory pool. So, it is better to just use
20119         a memory pool of our own.
20120         
20121         * ssa.c, linear-scan.c: replace g_list_remove_link with
20122         g_list_delete.  The remove one does not free the GList, so we were
20123         leaking memory. On -O=all --compile-all with corlib, this cut down
20124         3 MB of allocations.
20125
20126 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
20127
20128         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
20129
20130         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
20131
20132         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
20133         into a new function mono_create_jit_trampoline ().
20134
20135 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
20136
20137         * trace.c (get_spec): Allow tracing of classes without a namespace.
20138
20139 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
20140
20141         * mini.c: Fix pointer overwrite in mini_method_compile.
20142
20143 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
20144
20145         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
20146         The darwin ABI needs some special handling for 1 and 2 byte structs
20147         Lets use lbz/lhz instead of lwz everywhere.
20148         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
20149         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
20150         Use stb/sth for the former, and put the latter always on stack instead of in
20151         argument registers.
20152
20153 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
20154
20155         * trace.c (is_filenamechar): Add '_'.
20156
20157 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
20158
20159         * mini-s390.c: Fix prolog length to allow for large trace requirements.
20160
20161         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
20162
20163 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
20164
20165         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
20166         depends on libmonogc. Fixes #68805.
20167
20168 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
20169
20170         * mini.c (mono_jit_free_method): Provide extra information for
20171         this error.  Currently this leaks, but will be turned into a
20172         developer option in the future.
20173
20174 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
20175
20176         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
20177
20178 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
20179
20180         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
20181         boundary. Fixes reading of PATCH_INFO_R4 and R8.
20182         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
20183
20184 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
20185
20186         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
20187         trampolines for AOT code.
20188
20189 2004-10-22    <vargaz@freemail.hu>
20190
20191         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
20192         constructed types. Fixes #68136.
20193
20194 2004-10-21  Martin Baulig  <martin@ximian.com>
20195
20196         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
20197         if it returns true, unwind the stack to the call instruction.
20198
20199 2004-10-21    <vargaz@freemail.hu>
20200
20201         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
20202
20203         * mini.h: Bump AOT version number.
20204
20205         * objects.cs: Add another test for unbox trampolines.
20206
20207         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
20208         valuetype methods.
20209
20210 2004-10-20    <vargaz@freemail.hu>
20211
20212         * driver.c: Add SHARED to the set of optimizations tested.
20213
20214         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
20215
20216         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
20217         used by CEE_NEWARR.
20218
20219         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
20220
20221 2004-10-20  Martin Baulig  <martin@ximian.com>
20222
20223         * mini-exceptions.c (mono_handle_exception): Call
20224         mono_debugger_handle_exception() to tell the debugger about
20225         catch/finally clauses.
20226
20227 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
20228
20229         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
20230
20231         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
20232         #68447.
20233
20234 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
20235
20236         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
20237         methods as their native size, fixed bug #57543, #57545.
20238         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
20239         This saves a temporary register and mullw call down into 1 (minor perf
20240         increase for cases like sum = sum * 5;  This use to translate into:
20241             li r11,5
20242             mullw r28,r28,r11
20243         It now translates to
20244             mulli r28,r28,5
20245
20246 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
20247
20248         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
20249         #68388.
20250
20251 2004-10-11  Martin Baulig  <martin@ximian.com>
20252
20253         * mini.c (mono_method_to_ir): If we're a generic method, get the
20254         MonoGenericContainer from our MonoMethodNormal and create a
20255         MonoGenericContext from it.
20256
20257 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
20258
20259         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
20260
20261         * basic-long.cs: Add test for checked i8->i2 cast.
20262
20263 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20264
20265         * inssel-ppc.brg: added a couple of speedup rules.
20266
20267 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
20268
20269         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
20270         to speed up rebuilds.
20271
20272 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20273
20274         * mini-s390.c: Minor fix to OP_OR_IMM.
20275
20276 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
20277
20278         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
20279         better. Fixes appdomain-unload.exe on sparc.
20280
20281 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
20282
20283         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
20284         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
20285         see bug 67324.
20286
20287 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
20288
20289         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
20290
20291 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
20292
20293         * mini.c: Always generate a field read/write wrapper for members
20294         of the class MarshalByRefObject since the actual instance could
20295         be a CBO.
20296
20297 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
20298
20299         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
20300
20301 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
20302
20303         * driver.c mini.h trace.c: Move the setting of the main assembly into
20304         a separate function called mono_trace_set_assembly () and call it after
20305         actually loading the main assembly. Fixes #66872.
20306
20307 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
20308
20309         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
20310         using the code manager.
20311
20312 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
20313
20314         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
20315
20316 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
20317
20318         * cpu-amd64.md: Fix bug in previous patch.
20319         
20320         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
20321         #66650.
20322
20323 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
20324
20325         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20326         mini-exceptions.c: updates for changed stack walk interface.
20327
20328 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20329
20330         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
20331
20332 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
20333
20334         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
20335
20336 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
20337
20338         * driver.c (mini_regression_list): Do not call mono_assembly_close 
20339         since assemblies can't be unloaded.
20340         
20341 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20342
20343         * cpu-amd64.md: Fix more instruction lengths.
20344
20345         * cpu-amd64.md: Fix lengths of some instructions.
20346
20347 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
20348
20349         * inssel.brg: Make the array ldelema check aot friendly.
20350
20351 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20352
20353         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
20354
20355         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
20356
20357 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
20358
20359         * mini-x86.c: Fix build.
20360
20361         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
20362         mono_type_get_underlying_type () helper function to simplify code.
20363         
20364 2004-09-09  Martin Baulig  <martin@ximian.com>
20365
20366         * mini-amd64.c: Don't access `type->data.klass' directly, call
20367         mono_class_from_mono_type() instead since the type may be a
20368         generic instance.
20369
20370 2004-09-09  Martin Baulig  <martin@ximian.com>
20371
20372         * mini-amd64.c (get_call_info): Fix support for generic instances.
20373         (add_valuetype): Use mono_class_from_mono_type() to get the class
20374         since we can be a generic instance.
20375
20376 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
20377
20378         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
20379
20380 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
20381
20382         * liveness.c: reset spill costs on each scan: bug 62107
20383
20384 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
20385
20386         * exceptions-sparc.c (mono_arch_find_jit_info): remove
20387         unnecessary line that doesn't compile
20388
20389 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20390
20391         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
20392         trampolines, make them call an error function so people can fix their
20393         code.
20394
20395 2004-09-06  Martin Baulig  <martin@ximian.com>
20396
20397         * mini.c (mono_method_to_ir): When initializing locals, handle a
20398         generic instances like a valuetype if it's a valuetype and like a
20399         class if it's a class.
20400
20401 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20402
20403         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
20404         stack. Fixes #64674.
20405
20406         * exceptions.cs: Add test for unwinding of call arguments.
20407
20408 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
20409
20410         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
20411         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
20412         set the carry/borrow flag). The sparc and s390 implementations
20413         can now use optimized versions (and simplify the code). ppc bugfixes.
20414
20415 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20416
20417         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
20418
20419 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
20420
20421         * inssel-amd64.brg: Remove leftover 32 bit rule.
20422
20423         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
20424
20425 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
20426
20427         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
20428         mono_arch_find_jit_info functions into a new function. Fix a memory
20429         leak.
20430
20431         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
20432         refactored code.
20433         
20434 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20435
20436         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
20437         as well.
20438         
20439         * exceptions.cs: Add array size tests.
20440
20441         * mini.c: Allocate a separate icall wrapper for each arity of 
20442         mono_array_new_va. Fixes #59509.
20443
20444         * exceptions.cs: Add testcase for 64578.
20445
20446         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
20447
20448         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
20449         
20450 2004-09-02  Martin Baulig  <martin@ximian.com>
20451
20452         * mini.c (mono_method_to_ir): When initializing the locals, call
20453         handle_initobj() on the generic instance itself, not its
20454         underlying type.
20455
20456 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20457
20458         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
20459         MonoJitInfo for dynamic methods.
20460
20461         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
20462
20463         * mini.c: Add support for freeing JIT data for dynamic methods.
20464         
20465 2004-09-01  Martin Baulig  <martin@ximian.com>
20466
20467         * mini-x86.c (is_regsize_var): Added support for generic
20468         instances.
20469         (mono_arch_emit_prolog): Make this compile again, use
20470         `x86_push_imm_template (code)'.
20471
20472 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
20473
20474         * mini-x86.c: make all push_imm instructions that get
20475         patched always emit the long form
20476
20477 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
20478
20479         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
20480         in a per-domain hash.
20481
20482         * mini-amd64.c (merge_argument_class_from_type): Handle generic
20483         types.
20484
20485 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
20486
20487         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
20488         work.
20489         
20490         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
20491         work.
20492
20493         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
20494         Beginnings of SSE2 support.
20495
20496         * exceptions.cs: Add more tests for checked int<->uint casts.
20497
20498 2004-08-28  Martin Baulig  <martin@ximian.com>
20499
20500         * mini-x86.c (mono_arch_instrument_epilog): Added support for
20501         generic instances.
20502
20503         * mini.c
20504         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
20505         Handle generic instances recursively.
20506
20507 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20508
20509         * iltests.il: test for conv.u8 on a constant
20510
20511 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20512
20513         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
20514         LCONV_x4 (shrun_32 (membase)).
20515
20516 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20517
20518         * inssel-x86.brg: c&p rules for push/setret of long
20519
20520 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
20521
20522         * inssel-x86.brg: c&p rules for compare (base, regvar) and
20523         compare (regvar, base)
20524
20525         * inssel-x86.brg: more burg love
20526
20527         * inssel.brg: more cleanup
20528
20529         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
20530
20531 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
20532
20533         * basic-long.cs, basic-calls.cs: new tests for optimization.
20534
20535 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
20536
20537         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
20538         patch.
20539
20540 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20541
20542         * mini-amd64.c (read_tls_offset_from_method): Add another case.
20543         
20544 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
20545
20546         * inssel.brg (mini_emit_memcpy): use 
20547         NO_UNALIGNED_ACCESS to disable memcpy optimization
20548
20549 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20550
20551         * mini-amd64.c: Handle generic types in various places.
20552
20553         * mini.c (mono_method_to_ir): Handle generic types in init locals.
20554
20555 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
20556
20557         * mini.c (handle_box): Fix warning.
20558
20559         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
20560
20561         * mini-amd64.h: Enable the emit_state optimization.
20562
20563         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
20564
20565         * mini-amd64.c: Add some new 64 bit peephole opts.
20566
20567         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
20568
20569         * cpu-amd64.md: sreg1 of div instructions must be %rax.
20570
20571         * mini-amd64.c: Register allocator fixes.
20572
20573         * mini.c: Add an optimization to emit_state to avoid allocation of new
20574         registers on some platforms.
20575
20576 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
20577
20578         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
20579
20580         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
20581         allocation. Fixes #63085.
20582
20583         * basic-long.cs: Add new regression test.
20584
20585         * mini-amd64.c: Register allocator improvements.
20586
20587 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
20588
20589         * mini-amd64.c (read_tls_offset_from_method): Add another code
20590         sequence.
20591
20592         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
20593         instruction sequence for nullifying class init trampolines.
20594
20595         * objects.cs: Add new regalloc test.
20596
20597         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
20598
20599 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20600
20601         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
20602         
20603         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
20604         arguments.
20605
20606         * driver.c: Fix profiling after TLS changes.
20607         
20608         * driver.c (mono_main): Set mono_stats.enabled if needed.
20609
20610         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
20611         CEE_BOX.
20612
20613 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
20614
20615         * mini-x86.c: use a 1 op rather than a 2 op tls access
20616         instruction -> faster.
20617
20618 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20619
20620         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
20621         x86 backend.
20622
20623 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
20624
20625         * exceptions-sparc.c (throw_exception): fix typo
20626
20627 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
20628
20629         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
20630         set tree->dreg correctly with tls. Allow any
20631         register to be used.
20632
20633         * mini-x86.c (read_tls_offset_from_method): add new code
20634         generation pattern seen with GCC.
20635
20636
20637 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
20638
20639         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
20640         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20641         exceptions-sparc.c: fix some performance issues in exception
20642         handling and setting of the stack trace for exceptions that were
20643         already thrown.
20644
20645 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20646
20647         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
20648         x86 backend.
20649         
20650         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
20651         registers.
20652
20653 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20654
20655         This patch inlines tls access, when possible.
20656         
20657         * mini.h: new arch functions for TLS intrinsics.
20658         All platforms updated with a stub.
20659
20660         * mini.c: use the new intrinsics
20661
20662         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
20663         arch specific intrinsic for tls variables
20664
20665 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20666
20667         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
20668         under windows.
20669
20670 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20671
20672         * mini.c: thread local allocation
20673
20674 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
20675
20676         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
20677
20678         * Makefile.am: Link against the static version of libmonogc.
20679         
20680         * Makefile.am: Link the static versions of the convenience libraries
20681         into the mono executable.
20682
20683         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
20684
20685 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
20686
20687         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
20688         on integer overflow.
20689
20690         * mini-amd64.c: Reorganize function call code.
20691
20692         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
20693
20694 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20695
20696         * inssel-x86.brg: use xor eax,eax.
20697         
20698         * basic.cs: new tests
20699
20700 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20701
20702         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
20703         in exception throwing code.
20704         
20705 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20706
20707         * inssel-x86.brg: use xor esi,esi.
20708
20709 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20710
20711         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
20712         can trace methods compiled during mini_init () too.
20713
20714         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
20715         CEE_CONV_U4.
20716
20717 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20718
20719         * Makefile.am: static link on x86 (r=zoltan)
20720
20721 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20722
20723         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
20724         code since it causes some programs to fail.
20725
20726 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
20727
20728         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
20729
20730 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
20731
20732         * mini.c: ovfops_op_map - add STACK_OBJ case for
20733         CONV_I 
20734         * basic.cs: add test_0_pin_string as test
20735         case for above.
20736
20737 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
20738
20739         * Makefile.am: build C# if srcdir != builddir
20740
20741 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
20742
20743         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
20744         fall-through blocks.
20745
20746 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20747
20748         * driver.c: enable loop by default again and include abcrem in -O=all.
20749
20750 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
20751
20752         * iltests.il: Add some localloc tests.
20753
20754         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
20755
20756         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
20757         Fixes #62574.
20758
20759         * inssel-amd64.brg: Add some optimizations.
20760
20761         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
20762         for gcc-3.4.
20763
20764         * Makefile.am: Statically link mono against libmono on AMD64.
20765         
20766         * mini-amd64.c inssel-amd64.brg: Optimizations.
20767
20768 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
20769
20770         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
20771
20772         * tramp-amd64.c: Patch calling code in trampolines.
20773
20774 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
20775
20776         * mini-amd64.c: pinvoke struct passing fixes.
20777
20778 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
20779
20780         * mini-sparc.c: redo change, make mono_arch_cpu_init call
20781         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
20782
20783 2004-08-05  Duncan Mak  <duncan@ximian.com>
20784
20785         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
20786         CEE_LDELEM_ANY.
20787
20788 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20789
20790         * mini-amd64.c (emit_move_return_value): Move return value for normal
20791         calls too.
20792
20793 2004-08-05  Martin Baulig  <martin@ximian.com>
20794
20795         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
20796         `type->type'; just modify `type' itself when dealing with enums
20797         and generic instances.
20798         (check_call_signature): Make `simple_type' a `MonoType *'.
20799
20800 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20801
20802         * mini.c: Use OP_PADD to add offsets to addresses.
20803
20804         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
20805
20806 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
20807
20808         * mini-sparc.c (mono_arch_emit_epilog): fix check
20809         for folding last op into restore instruction
20810
20811 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20812
20813         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
20814         helper methods using the code manager.
20815         
20816         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
20817
20818         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
20819
20820 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20821         
20822         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
20823           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
20824
20825         * mini-s390.c: fix tail processing
20826
20827 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
20828
20829         * mini-ppc.c: mul.ovf.un exception name fix.
20830
20831 2004-08-03  Martin Baulig  <martin@ximian.com>
20832
20833         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
20834         instances; before jumping to `handle_enum', also modify `ptype'.
20835
20836 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
20837
20838         * cpu-sparc.md: fcall maximal length too small.
20839
20840 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
20841
20842         * mini-amd64.c mini.h: Add initial support for passing/returning 
20843         structures to/from pinvoked methods.
20844
20845 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
20846
20847         * mini-ppc.c: reg allocator fix.
20848
20849 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
20850
20851         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
20852
20853         * inssel.brg: Optimize memset on 64 bit machines.
20854
20855         * mini-amd64.c: Fix some vararg cases.
20856
20857 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20858
20859         * mini-s390.c: Corrected macro in emit_float_to_int
20860
20861         * s390-abi.cs: Tests to exercise the s390 ABI
20862
20863 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20864
20865         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
20866         caller saved regs.
20867
20868         * basic.cs: Add a test for add.ovf.un.
20869
20870 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
20871
20872         * mini-sparc.c: add case for OP_IDIV_UN
20873
20874 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20875
20876         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
20877         
20878         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
20879
20880 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
20881
20882         * basic.cs: regression tests.
20883
20884         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
20885         regressions.
20886
20887 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20888
20889         * basic.cs: Add a new test.
20890
20891         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
20892         and AOT. Various fixes and optimizations.
20893
20894         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
20895
20896 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20897
20898         * mini-ppc.c: make sure temp regs are not used for global reg
20899         allocation.
20900
20901 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
20902
20903         * cpu-sparc.md: conv_i8 fix for 64bits
20904
20905         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
20906
20907 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
20908         
20909         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
20910         add opcode for cmp BYTE PTR [eax], imm.
20911
20912         * inssel.brg: Make memcpy and memset takes bases.
20913
20914 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
20915
20916         * *-amd64.*: More AMD64 work.
20917         
20918 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
20919
20920         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
20921         add a compare-not-equal opcode.
20922         
20923 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
20924
20925         * mini.c: Use mono_init_from_assembly instead of mono_init.
20926         
20927 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
20928
20929         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
20930
20931         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
20932
20933         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
20934
20935         * inssel.brg: 64 bit fixes.
20936
20937         * mini.h (MonoCallInst): Add some AMD64 specific data.
20938
20939         * mini.h: Add some OP_P opcodes.
20940
20941 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
20942
20943         * basic.cs: tests for 61797 and 61740
20944
20945 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
20946
20947         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
20948         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
20949
20950 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
20951
20952         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
20953
20954         * *-amd64*.*: Ongoing AMD64 work.
20955
20956 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
20957
20958         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
20959
20960         * *-amd64*: Ongoing AMD64 work.
20961
20962         * mini-arch.h: Add AMD64 support.
20963
20964         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
20965
20966         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
20967
20968         * mini-ops.h: Add new opcodes.
20969
20970         * Makefile.am: Add AMD64 support.
20971
20972         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
20973         rules into the inssel-long*.brg files.
20974
20975         * *-amd64.*: Add beginnings of AMD64 backend.
20976
20977 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
20978
20979         * mini.c (print_dfn): commenting out the code that prints
20980         the cil. With -O=deadce, this makes -v -v crash.
20981         
20982         * cpu-pentium.md: make checkthis have a length of 2
20983
20984 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
20985
20986         * mini-sparc.h: fix implementations of __builtin
20987         functions for Sun compiler for V9.
20988
20989 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
20990
20991         * mini.c: use the new stelem.ref wrapper
20992         * exceptions.cs, arrays.cs: new stelem.ref tests
20993
20994 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20995
20996         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
20997         new XSP should work with these changes).
20998
20999 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
21000         
21001         * inssel-{long32,x86,}.brg: trivial optimizations.
21002         
21003 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
21004
21005         * mini.c: load value when emitting box operation in
21006         constrained calls.
21007
21008 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
21009
21010         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
21011         is one byte shorter than cmp DWORD PTR [eax], 0.
21012
21013 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
21014
21015         * inssel-ppc.brg: arguments on the stack are always
21016         relative to the stack pointer (spotted by Neale Ferguson).
21017
21018 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21019
21020         * exceptions-x86.c: delay appending the method name to the trace until
21021         after mono_jit_info_table_find is called, as this gets the real
21022         MonoMethod.
21023
21024 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
21025
21026         * aot.c: register roots
21027
21028 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21029
21030         * aot.c : I could just use PLATFORM_WIN32 flag.
21031
21032 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21033
21034         * aot.c : Reverting the previous fix. This time it broke linux build.
21035
21036 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21037
21038         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
21039
21040 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
21041
21042         * mini.c (handle_stack_args): Remove some more debugging code.
21043         
21044         * mini.c (handle_stack_args): Remove debug output left in by mistake.
21045
21046         * driver.c mini.h aot.c: Allow additional options to be specified with
21047         --aot and pass them to mono_compile_assembly.
21048
21049         * aot.c: Add experimental code to AOT compile all loaded assemblies
21050         on demand and save the code into a cache in the filesystem.
21051
21052         * aot.c: Add support for more wrapper methods.
21053         
21054         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
21055         58863.
21056
21057         * cpu-*.md: Remove removed opcodes.
21058
21059         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
21060         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
21061         related icalls to marshal.c.
21062
21063 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
21064
21065         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
21066
21067         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
21068
21069         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
21070
21071 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
21072         * liveness.c: If liveness is recomputated we need to reset the information
21073         for each variable. This way, if the liveness range has been narrowed
21074         by optimizations that happened after the last computation, we can return
21075         a smaller range.
21076         
21077         For example, if you have
21078         
21079         {
21080                 int i = 0;
21081                 
21082                 // Tons of code that does not affect i
21083                 
21084                 i = foo ();
21085                 ...
21086         }
21087         
21088         i = 0 is dead code and will be removed by SSA. However, when
21089         linear scan gets to the code, i will still appear to be live
21090         throughout the entire block. This prevents good register allocation.
21091
21092 2004-07-06  Martin Baulig  <martin@ximian.com>
21093
21094         * debug-mini.c (mono_debug_init_method): Allow
21095         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
21096         (mono_debug_add_icall_wrapper): New method.
21097
21098         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
21099
21100 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
21101
21102         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
21103         optimization.
21104
21105 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
21106
21107         * aot.c (mono_aot_load_method): Fix loading of debug info.
21108
21109 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
21110
21111         * aot.c: Add logging support.
21112
21113 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
21114
21115         * mini.h: Add prototype for mono_print_method_from_ip.
21116
21117         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
21118
21119         * inssel.brg: 64 bit fixes.
21120
21121         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
21122         inssel-long32.brg.
21123
21124         * Makefile.am: Add SPARC64 support.
21125
21126 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
21127
21128         * aot.c: Fix alignment problems on 32 bit platforms.
21129
21130 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
21131
21132         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
21133         SPARC64.
21134
21135         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
21136         problems.
21137
21138         * mini.h: Bump AOT file version. Some 64 bit fixes.
21139
21140 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
21141
21142         * inssel-sparc.brg: Add new rule to avoid register moves.
21143
21144         * inssel.brg: Add ldind_to_load_membase helper function.
21145
21146 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
21147
21148         * mini.c: OffsetToStringData intrinsic.
21149         
21150 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
21151
21152         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
21153
21154         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
21155         regression tests.
21156
21157         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
21158 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21159
21160         * mini.c: reinstated mono_compile_get_interface_var()
21161         on x86, too, since the change breaks the Gtk# build there as well.
21162
21163 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21164
21165         * driver.c: remove loop from the default optimizations: it seems to
21166         interact badly with some of the other options (see bug #60613).
21167
21168 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
21169
21170         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
21171         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
21172
21173 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
21174
21175         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
21176         vararg-using methods.
21177
21178 2004-06-21  Martin Baulig  <martin@ximian.com>
21179
21180         * mini/mini-exceptions.c
21181         (mono_handle_exception): Added `gpointer original_ip' argument.
21182         After calling mono_unhandled_exception(), call
21183         mono_debugger_unhandled_exception() and if that returns true,
21184         restore the context and return.
21185
21186 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
21187
21188         * mini-ppc.c: prefer the use of relative branches so
21189         they won't need to be patched in aot code (patch from Patrick Beard).
21190
21191 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
21192
21193         * aot.c: patch from Patrick Beard to make the output assembly
21194         more correct for the MacOSX assembler. Small tweak to
21195         generate sane images on Linux/PPC, too.
21196
21197 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21198
21199         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
21200         case until bug #59509 is fixed (shows up in #60332).
21201
21202 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21203
21204         * mini.c: make sure the needed wrappers are compiled, too, with
21205         precomp.
21206
21207 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
21208
21209         * driver.c: remove NPTL reference in --version output.
21210
21211 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21212
21213         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
21214         generate valid assembly for the Mach-O assembler.
21215
21216 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
21217
21218         * driver.c: don't include abcrem in the all optimization specifier
21219         since it slows down jit compilation too much for now.
21220
21221 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
21222
21223         * mini.c: use BIGMUL only if both operands have the same signage.
21224         * iltests.il: Test for bug 60056. (errors related to signage in
21225         BIGMUL).
21226
21227         r=lupus.
21228
21229 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
21230
21231         * mini.c, aot.c: memory leak fixes.
21232
21233 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21234
21235         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
21236
21237 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
21238
21239         * Makefile.am: remove the -static hack completely, it links in
21240         statically glib as well.
21241
21242 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
21243
21244         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
21245         * exceptions.cs: make it compile with new mcs/csc.
21246
21247 2004-06-03 Massimiliano Mantione <massi@ximian.com>
21248         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
21249         and added relevant test case.
21250
21251 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
21252
21253         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
21254         regressions in gtk-sharp.
21255
21256 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
21257
21258         * exceptions.cs: New regression tests.
21259
21260         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
21261
21262 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
21263
21264         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
21265
21266 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
21267
21268         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
21269
21270         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
21271
21272 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
21273
21274         * mini.c (mono_jit_runtime_invoke): Init class in this
21275         method instead of trusting mono_jit_compile_method to
21276         do the work (because wrappers can be in object class)
21277
21278 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
21279
21280         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
21281
21282         * basic-long.cs: New regression test.
21283
21284 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
21285
21286         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
21287         and div/rem checks.
21288
21289 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
21290
21291         * Makefile.am: fix miguel's change to build mono statically against
21292         libmono (track build dependencies).
21293
21294 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21295
21296         * cfold.c: Some glib versions do not have G_MININT32.
21297
21298 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
21299
21300         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
21301         with precision of tan, atan, sin and cos, and implemented related
21302         regressions tests (fixes bug 54467, but one new problem appeared and
21303         is not fixed yet).
21304
21305 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21306
21307         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
21308
21309         * exceptions.cs: Add test for constant folding && division by zero.
21310
21311         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
21312         since driver.c is in libmono too, so the optimization was useless.
21313
21314         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
21315         variable to driver.c so the compiler can emit more efficient code to
21316         access them.
21317
21318 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21319
21320         * Makefile.am: don't distribute generated inssel.[ch] files.
21321
21322 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21323
21324         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
21325         into the default appdomain. Fixes #58707.
21326
21327         * jit-icalls.c: Remove the broken approximation for truncl, doing
21328         no conversion is better.
21329
21330         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
21331         Fixes #58863.
21332
21333 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
21334
21335         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
21336         of the mcrxr instruction which is not available on some processors
21337         even if it's documented to be. Implement add and sub overflow correctly
21338         (still not complete for long unsigned). Speed up icalls a bit.
21339
21340 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
21341
21342         * mini.c (mono_jit_compile_method_with_opt): Make sure that
21343         we run .cctor in the current domain instead of target_domain.
21344         
21345         Fixes bug #58558, .cctor not being called in -O=shared.
21346
21347 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21348
21349         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
21350
21351 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
21352
21353         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
21354         which can be done with an imm8, do it that way.
21355         (mono_arch_output_basic_block): ditto for a jmp
21356         (mono_arch_emit_prolog): Computate maximum offset of a label.
21357
21358 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
21359
21360         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
21361         now tries to allocate prefered physical reg's for virtual
21362         regs. This reduces the number of emited spills/loads with
21363         20-30% on our core assemblies.
21364
21365 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21366
21367         * jit-icalls.c: truncl() is not needed and trunc() is
21368         the correct thing to do anyway (bug #58287).
21369
21370 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
21371
21372         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
21373         if available.
21374
21375 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
21376
21377         * driver.c: enable loop optimizations by default.
21378
21379 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
21380
21381         * mini-x86.c: fix calc of max loop size when aligning loops start.
21382
21383 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
21384
21385         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
21386         the stack.
21387
21388 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
21389
21390         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
21391         should set carry.
21392
21393         * basic-long.cs: Add tests for add/subtract of immediates with carry.
21394
21395         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
21396         
21397         * mini.c (inline_method): Allways inline some wrappers even if the cost
21398         is too large. Fixes #58785.
21399
21400         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
21401         
21402 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
21403
21404         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
21405         (crichton@gimp.org). Beginning of support for sparc/linux.
21406
21407         * mini-sparc.c: Optimize retrieval of LMF address.
21408
21409 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
21410
21411         * exceptions-ppc.c:  handle alloca in methods with clauses.
21412
21413 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
21414
21415         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
21416
21417 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
21418
21419         * mini.c: Delegate most of the abort signal work to 
21420           mono_thread_request_interruption, which also handles Stop and Suspend
21421           states.
21422
21423 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
21424
21425         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
21426         supports the save/restore lmf opcodes.
21427
21428 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
21429
21430         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
21431         by gcc-3.4 as well.
21432
21433         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
21434
21435 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21436
21437         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
21438         methods which contain array accesses.
21439
21440         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
21441         boundaries. Fixes #58537.
21442
21443         * iltests.il: Add regression test for #58537.
21444
21445 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
21446
21447         * mini-x86.c (mono_arch_local_regalloc): Last part of
21448         fix for bug #58633 (releasing register to early).
21449
21450 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
21451
21452         * basic-long.cs: Add new regression test.
21453
21454 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
21455
21456         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
21457         register too early on the chain.
21458
21459 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21460
21461         * mini.c (create_helper_signature): Use a helper function to reduce
21462         the code which needs to be written. Also set the calling convention of
21463         icalls on windows. Fixes #57840.
21464
21465 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
21466
21467         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
21468         exceptions-ppc.c: added helper function to get the instruction address
21469         from a signal handler context.
21470
21471 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21472
21473         * helpers.c: use g_get_tmp_dir. Invokes happyness 
21474         from gonzalo.
21475
21476 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21477
21478         * helpers.c: Add new env variable to pass args to objdump.
21479         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
21480
21481 2004-05-17  Radek Doulik  <rodo@ximian.com>
21482
21483         * Makefile.am (common_sources): added abcremoval.h so it get
21484         disted and daily mono packages on go-mono.com will build again
21485
21486 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
21487
21488         * abcremoval.c: Fixed coding style, added copyright header.
21489
21490         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
21491
21492         * mini.h: Added prototype for abc removal main function.
21493
21494         * build_relations_propagation_table.pl: Added copyright header.
21495
21496 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
21497
21498         * basic-long.cs: reg test for complex ceq_long bug.
21499
21500 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
21501
21502         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
21503         reg in long and clob case (bug #58343). Fixed/added comments.
21504
21505 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
21506
21507         * mini.c (mono_jit_runtime_invoke): Follow new convention
21508         of calling the invoke method with an function pointer.
21509
21510 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
21511
21512         * ChangeLog: Fix author of memory leak patch.
21513
21514 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
21515
21516         * Makefile.am: fix make dist as well...
21517
21518
21519 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
21520
21521         * cfold.c: Made so that conversions from pointer to int4 are no-ops
21522         on archs where pointers are 4 bytes long.
21523
21524         * Makefile.am: Added abcremoval.c source file.
21525
21526         * abcremoval.c: Added abcremoval.c.
21527
21528         * abcremoval.h: Added abcremoval.h.
21529
21530         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
21531
21532         * inssel.brg: Enabled bounds check removal.
21533
21534         * mini.c: Added support for abcrem optimization.
21535
21536         * mini.h: Added abcrem optimization label.
21537
21538         * driver.c: Added support for abcrem optimization.
21539
21540         * propagated_relations_table.def: Added propagated_relations_table.def.
21541
21542 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
21543
21544         * mini.c, cfold.c: fix style.
21545
21546 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21547
21548         * mini.c: handle issue with the low-level implementation of
21549         some long opcodes (bug #54209).
21550
21551 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
21552
21553         * basic.cs: test for my new cmov stuff.
21554
21555 2004-05-13      Patrik Torstensson
21556
21557         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
21558         opt and added peephole documentation.
21559
21560 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
21561
21562         * tramp-ppc.c: rewrote the generic trampoline code.
21563
21564 2004-05-11      Patrik Torstensson
21565
21566         * mini-x86.c: optimize long shl/shr asm code (one less branch)
21567
21568 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
21569
21570         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
21571
21572         * mini.h mini.c dominators.c: Applied patch from Derek Woo
21573         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
21574
21575         * mini.c: Add new icalls for AsAny marshalling.
21576
21577 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
21578
21579         * tramp-ppc.c, mini-ppc.c: more cleanups.
21580
21581 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21582
21583         * mini.c: no warnings.
21584
21585 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21586
21587         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
21588
21589 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
21590
21591         * mini.c: In the thread abort signal handler, if the thread is in the
21592         process of being stoped, don't throw the Abort exception, just stop the
21593         thread.
21594
21595 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
21596
21597         * tramp-ppc.c: removed old code.
21598
21599 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21600
21601         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
21602         do some simple speed optimizations on ppc.
21603
21604 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
21605
21606         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
21607         and large offsets in load/store.
21608
21609 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
21610
21611         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
21612         it causes regressions.
21613
21614 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
21615
21616         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
21617         support.
21618
21619 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21620
21621         * jit-icalls.c: remove warnings.
21622         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
21623         speedups for unsafe code.
21624
21625 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21626
21627         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
21628
21629 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
21630
21631         * basic-calls.cs: Add new regression test.
21632
21633         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
21634         more portable.
21635
21636         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
21637
21638         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
21639         is no longer used.
21640
21641 2004-05-06      Patrik Torstensson
21642
21643         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
21644         long reg allocation in any reg (not only eax:edx) and implemented 
21645         long shl/shr ops in asm instead of helpers.
21646
21647 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
21648
21649         * mini-sparc.h: Fix warnings.
21650
21651         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
21652         stack.
21653
21654         * mini-exceptions.c (mono_handle_exception): Call the filter in a
21655         separate statement for clarity.
21656
21657         * mini-sparc.c: Update status.
21658
21659 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
21660
21661         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
21662         here.
21663
21664 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21665
21666         * inssel-ppc.brg: another small pre-release workaround:
21667         we don't do overflow detection for long_sub_un.
21668
21669 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21670
21671         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
21672         (also works around a weird ppc bug: 57957).
21673
21674 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
21675
21676         * tramp-ppc.c: trampoline fixes.
21677
21678 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
21679
21680         * mini-ppc.c: fixed typos.
21681
21682 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21683
21684         * mini-ppc.c, exceptions-ppc.c: more code saves registers
21685         at the top of the stack. Fixed typos. Use a frame registers
21686         for all the methods with exception clauses.
21687
21688 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21689
21690         * exceptions-ppc.c: restore fp registers.
21691
21692 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
21693
21694         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
21695         order from the stack top (moved the stack room to save the
21696         return value for trace after the param area). Fixed corruption
21697         in restoring registers on unwind.
21698
21699 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21700
21701         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
21702
21703 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21704
21705         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
21706         and prolog/epilog for methods that use it. Allow
21707         enough param area room for varargs methods. Fix miguel's
21708         breakage in exception handling.
21709
21710 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21711
21712         * Makefile.am: run genmdesc only on current arch.
21713
21714 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21715
21716         * exceptions-x86.c:
21717         * mini-x86.h: fix the build on windows.
21718
21719 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
21720
21721         * 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.
21722
21723         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
21724
21725         * mini-exceptions.c: New file.
21726         
21727         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
21728         Move some parts of the x86 exception handling code to an 
21729         arch-independent file so it can be shared with other ports.
21730
21731 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
21732
21733         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
21734
21735 2004-04-26  David Waite  <mass@akuma.org>
21736
21737         * driver.c: remove comma from end of enumeration declaration
21738
21739 2004-04-26  Jackson Harper  <jackson@ximian.com>
21740
21741         * driver.c: parse config file before loading first assembly. This
21742         allows the user gac to be enabled/disabled. 
21743         
21744 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
21745
21746         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
21747         simpler mechanism: we do not care what is encoded initially
21748         (branch absolute or relative), we care about the code and its
21749         target.  I kept the old code for reference for now.
21750
21751         The new code tries first to determine if the jump is anywhere in
21752         the -/+32 absolute meg range, if it succeeds, it encodes using the
21753         absolute branch;  If not, it tried to find something in the
21754         relative range, if not, it uses the handle_thunk code. 
21755
21756 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
21757
21758         * exceptions-ppc.c: use the correct ip register on macosx.
21759
21760 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
21761
21762         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
21763
21764 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
21765
21766         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
21767         Raise exception on integer divide by zero by hand since the hw
21768         doesn't support it. Handle NaNs in FP compares.
21769
21770 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
21771
21772         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
21773         code reducing duplication between the platforms and enabled
21774         signal exception handling (on linux for now).
21775
21776 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
21777
21778         * exceptions-ppc.c: more macosx support.
21779
21780 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21781
21782         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
21783
21784 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
21785
21786         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
21787
21788 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
21789
21790         * iltests.il: more tests.
21791
21792 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21793
21794         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
21795         vars as well.
21796
21797 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21798
21799         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
21800
21801 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21802
21803         * liveness.c: Mark variables as volatile in all basic blocks reachable
21804         from exception clauses.
21805
21806 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
21807
21808         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
21809         inlining.
21810
21811 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
21812
21813         * iltests.il, basic.cs: more tests for regalloc.
21814
21815 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21816
21817         * iltests.il: Some tests for register allocation modifications
21818         I have locally.
21819
21820 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
21821
21822         * exceptions.cs: Add regression test for bug #56782.
21823
21824         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
21825         original stack trace if an exception is rethrown. Fixes #56782. Oh,
21826         the beauty of fixing the same thing in 5 different files...
21827
21828 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
21829
21830         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
21831         methods.
21832
21833 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
21834
21835         * mini.c: Add support for STRWLPARRAY marshalling convention.
21836
21837 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
21838
21839         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
21840         to init the context to setup the regs pointer).
21841
21842 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21843
21844         * exceptions-ppc.c: more exceptions work.
21845
21846 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21847
21848         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
21849         not allowed.
21850
21851 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
21852
21853         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
21854         can use the memory directly.
21855
21856         * cpu-pentium.md: Update documentation from a post from Zoltan. 
21857
21858         add x86_add_membase, x86_sub_membase, x86_mul_membase
21859
21860 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
21861
21862         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
21863         GENERAL_REGS they were also hardcoded for all PPC ports.
21864
21865         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
21866
21867         Remove hard-coded limit for floating point registers, use
21868         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
21869
21870         Notice that in MacOS X calling conventions you can fit a lot more
21871         floating point values in registers, so I should update the PInvoke
21872         test to excercise the passing of floating point values on the
21873         stack (currently broken).
21874         
21875 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
21876
21877         * tramp-ppc.c (create_trampoline_code): Added
21878         JUMP_TRAMPOLINE_SIZE. 
21879         (ppc_magic_trampoline): Follow the pattern from
21880         x86_magic_trampoline: if code is set to zero, return. 
21881         (create_trampoline_code): Always pass MonoMethod to the jump
21882         trampoline, before it was passing a null.
21883         (mono_arch_create_jump_trampoline): Implement the jump stub, could
21884         share the code with mono_arch_create_jit_trampoline. 
21885
21886         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
21887         implemented.
21888         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
21889         implemented.  
21890
21891         * cpu-g4.md: Added length for jmp instruction, the worst case
21892         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
21893         for save_lmf).
21894
21895 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
21896
21897         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
21898
21899 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
21900
21901         * mini.c: Only set bblock->real_offset when adding a new bblock, and
21902         before each IL instruction.
21903
21904         * mini.c (CEE_BOX): Fix warnings.
21905
21906 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21907
21908         * mini.c: removed a few unused vars and extra whitespace.
21909
21910 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
21911
21912         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
21913         checks.
21914         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
21915         index.
21916         (OP_GETCHR): use the above
21917         (CEE_LDELEMA): use the above.
21918
21919         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
21920         version of the generic impl.
21921         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
21922         (CEE_LDELEMA): use the above.
21923
21924 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
21925
21926         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
21927         Fixes #56317.
21928
21929         * iltests.il: Added new regression test for #56317.
21930
21931 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
21932
21933         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
21934         under NetBSD. Fixes #56450.
21935
21936         * liveness.c (update_gen_kill_set): Fix previous patch.
21937
21938 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21939
21940         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
21941
21942 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
21943
21944         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
21945         ldsfld and ldsflda.
21946
21947         * inssel-sparc.brg: Add more optimizations.
21948
21949         * mini-sparc.c: Replace multiply/divide with shifts if possible.
21950
21951 2004-04-01  Martin Baulig  <martin@ximian.com>
21952
21953         * mini.c (handle_box): New static function; moved the
21954         implementation of CEE_BOX here.
21955         (mono_method_to_ir): Added `constrained_call' variable.
21956         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
21957         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
21958         mono_method_get_constrained() to get the method.
21959
21960 2004-04-01  Martin Baulig  <martin@ximian.com>
21961
21962         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
21963         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
21964         (mono_method_to_ir): We don't need these macros anymore since
21965         mono_class_get_full() already takes care of it. 
21966
21967 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21968
21969         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
21970         use @function (as doesn't accept #function here) and check the return
21971         value of system and stop if fails.
21972
21973 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21974
21975         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
21976
21977 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
21978
21979         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
21980
21981         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
21982
21983         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
21984         #56223.
21985
21986         * basic-long.cs: Add test for negation of Int64.MinValue.
21987
21988 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
21989
21990         * mini-sparc.c: Update status.
21991
21992         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
21993
21994         * exceptions-sparc.c: Fix return value in filters.
21995
21996         * inssel-sparc.brg: Fix register allocation in some rules.
21997
21998 2004-03-28  Martin Baulig  <martin@ximian.com>
21999
22000         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
22001         if neccessary.  
22002
22003 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
22004
22005         * mini-x86.c (mono_arch_patch_code): Fix warnings.
22006         
22007         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
22008         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
22009         remove unused conv_u4 opcode.
22010
22011         * mini-x86.c: Remove valgrind workaround since it slows down things
22012         even when mono is not run under valgrind.
22013
22014 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
22015
22016         * mini-sparc.c: Update status.
22017
22018         * inssel-sparc.brg: Add some optimizations.
22019
22020         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
22021         future delay slot filling. Add support for varargs, tail calls and JMP.
22022
22023         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
22024         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
22025
22026         * inssel.brg: Fix register allocation in OP_ARGLIST.
22027
22028         * inssel.brg: Fix warnings.
22029
22030 2004-03-25  Martin Baulig  <martin@ximian.com>
22031
22032         * mini.c (inflate_generic_field): Removed.
22033         (mini_get_method): Removed, use mono_get_method_full(),
22034         (mini_get_class): Removed, use mono_class_get_full().
22035         (mono_method_to_ir): Pass our generic context to
22036         mono_field_from_token().        
22037
22038 2004-03-25  Martin Baulig  <martin@ximian.com>
22039
22040         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
22041         of a `MonoMethod *'.
22042         (mini_get_method): Take a `MonoGenericContext *' instead
22043         of a `MonoMethod *'.
22044         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
22045         a new local variable called `generic_context' which holds the
22046         current `MonoGenericContext *'; use it to lookup things.
22047
22048 2004-03-24  Martin Baulig  <martin@ximian.com>
22049
22050         * mini.c (mini_get_class): New static method; if we're inside a
22051         generic instance, inflate the class if neccessary.
22052         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
22053
22054 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
22055
22056         * iltests.il: New regression test for #55976.
22057
22058         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
22059         #55976.
22060
22061 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
22062
22063         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
22064         output.
22065
22066 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
22067
22068         * liveness.c: Consider SSA stores as well as loads when making vars
22069         volatile.
22070
22071         * exceptions.cs: New regression tests for register allocation.
22072         
22073 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
22074
22075         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
22076         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
22077           domain lock only to protect puntual access to data structures.
22078           Added access lock for sighash, jit_icall_hash_name, 
22079           jit_icall_hash_addr and domain->code_mp.
22080
22081 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
22082
22083         * driver.c: Print SIGSEGV handling method.
22084
22085         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
22086
22087         * mini.c (setup_jit_tls_data): Handle case when this is called
22088         multiple times for a thread.
22089
22090         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
22091         is different from fbxx_un. Fixes #54303. Also use constants instead of
22092         magic numbers in a lot of places.
22093
22094 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
22095
22096         * exceptions.cs: Fix cctor test when --regression is used.
22097
22098 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
22099
22100         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
22101         for Linux/ppc.
22102
22103 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
22104
22105         * inssel-ppc.brg: fixed register assignments for some rules.
22106
22107 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22108
22109         * exceptions.cs: Add test for exceptions in static constructors.
22110
22111         * mini.c (mono_jit_compile_method_with_out): Move the calling of
22112         static constructors outside the domain lock. Fixes #55720.
22113
22114 2004-03-17  Martin Baulig  <martin@ximian.com>
22115
22116         * mini.c (get_generic_field_inst): Removed, this'll never happen.
22117         (inflate_generic_field): Take the `MonoMethod *' instead of the
22118         `MonoClass *' and added support for generic method.
22119         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
22120         have a `field->parent->gen_params', only inflate the field if it's
22121         an open constructed type.
22122
22123 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22124
22125         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
22126         exception object instead of the preconstructed ones.
22127
22128 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22129
22130         * mini.c: reverted changed to sigsegv_signal_handler commited
22131         accidentally in the previous patch.
22132
22133 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22134
22135         * mini.c:
22136         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
22137         running --aot with an old assembly.
22138
22139 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
22140
22141         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
22142         point values.
22143
22144         * mini-sparc.c: Add support for v9 branches with prediction.
22145
22146 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
22147
22148         * mini.c (mini_init): #warning is GNUC only
22149
22150         * mini-sparc.h: implement __builtin_frame_address
22151         and __builtin_return_address for Sun C compiler
22152
22153 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
22154
22155         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
22156
22157 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
22158
22159         * basic-calls.cs: Add test for unaligned byref long argument passing.
22160
22161         * mini-ops.h: Add sparcv9 compare and branch instructions.
22162
22163         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
22164         v9 instructions if we have a v9 cpu.
22165
22166         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
22167         registers for global allocation.
22168
22169         * exceptions-sparc.c: Fixes.
22170         
22171 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
22172
22173         * liveness.c (mono_analyze_liveness): Optimized version.
22174
22175         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
22176
22177         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
22178         sparc work.
22179
22180         * basic-float.cs basic-calls.cs: New regression tests.
22181
22182 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
22183
22184         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
22185         sigaltstack implementation.
22186
22187         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
22188         
22189         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
22190         stuff if SIGSEGV_ON_ALTSTACK is not defined.
22191
22192 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
22193
22194         * mini.c: Fix warnings.
22195         
22196         * mini.c (mono_resolve_patch_target): New function which contains the
22197         arch independent part of the patching process.
22198
22199         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
22200         patching code to a separate function.
22201
22202 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
22203
22204         * mini.c (add_signal_handler): ifdef out on Windows
22205
22206 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
22207
22208         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
22209         cpu-sparc.md: Add exception handling support + other fixes.
22210
22211         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
22212         typed GC detection in --version.
22213
22214         * basic.cs exceptions.cs: New regression tests.
22215
22216         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
22217         the arch specific code can store data during a compilation.
22218
22219         * mini-ops.h: Add OP_SETFRET.
22220
22221         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
22222         function, register a separate icall for each arity, so the icalls can
22223         get a wrapper.
22224         
22225         * mini.c (mono_print_tree): Print negative offsets in a more readable
22226         form.
22227         
22228         * mini.c: Make signal handling work on sparc.
22229         
22230         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
22231
22232         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
22233
22234         * jit-icalls.c: Emulate truncl by aintl on solaris.
22235
22236         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
22237
22238 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
22239
22240         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
22241
22242 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
22243
22244         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
22245         a MarshalByRef type, inline a method that performs the check, taking into
22246         account that the object can be a proxy. Also implemented tow new opcodes:
22247         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
22248         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
22249         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
22250
22251 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
22252
22253         * mini-ppc.c: if a relative branch displacement is too big
22254         but it points to and area reachable with an absolute branch, 
22255         avoid the thunks.
22256
22257 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
22258
22259         * mini.c: optimize small copies in cpblk.
22260
22261 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
22262
22263         * basic-calls.cs basic-float.cs: New regression tests.
22264
22265         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
22266         negative offsets from %fp. Implement localloc. Fix local register 
22267         allocation. Fix the case when the this argument needs to be saved to
22268         the stack. Implement some missing opcodes.
22269
22270 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
22271
22272         * mini.c (mini_method_compile): Reenable global regalloc in methods
22273         with exception handlers.
22274
22275         * linear-scan.c (mono_varlist_sort): Fix warning.
22276
22277         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
22278
22279         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
22280         regalloc costs.
22281
22282         * liveness.c: Make all variables uses in exception clauses volatile, to
22283         prevent them from being allocated to registers. Fixes #42136.
22284
22285 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
22286
22287         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
22288         causes regressions.
22289
22290         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
22291         argument to mono_arch_regalloc_cost.
22292
22293         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
22294         precisely.
22295
22296 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
22297
22298         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
22299         Make the cost of allocating a variable to a register arch dependent.
22300
22301         * basic-calls.cs: Fix compilation of tests.
22302         
22303         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
22304         helper function to cut back on the number of #ifdefs needed.
22305
22306         * mini-ppc.c: Fix compilation.
22307
22308         * basic-calls.cs: New regression tests.
22309
22310         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
22311
22312         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
22313         of l0 since that is callee saved.
22314
22315         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
22316         to virtual calls.
22317
22318         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
22319         of delay instruction.
22320
22321         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
22322
22323         * mini.h (MonoCallInst): Add 'virtual' flag.
22324
22325         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
22326
22327 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
22328
22329         * *.cs: New regression tests.
22330
22331         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
22332         work.
22333
22334         * mini.c (mono_runtime_install_handlers): Fix build.
22335
22336         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
22337         'signal_stack_size' members.
22338
22339         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
22340         alternate signal stack.
22341
22342         * exceptions-x86.c: Add stack overflow handling.
22343
22344         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
22345         functions to arch independent code.
22346
22347         * mini.c (mono_print_tree): Print more detailed info for load_membase
22348         opcodes.
22349         
22350 2004-02-23  Martin Baulig  <martin@ximian.com>
22351
22352         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
22353
22354 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
22355
22356         * mini-x86.c: fixed reg allocation for div/rem.
22357
22358 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
22359
22360         * driver.c (mono_main): Report some configuratio options on --version.
22361
22362 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
22363
22364         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
22365         low in the address space. Correctly flush memory in thunks where we
22366         output native code.
22367
22368 2004-02-20  Martin Baulig  <martin@ximian.com>
22369
22370         * mini.c (mini_get_method): New static method; inflate all generic
22371         methods and methods in open generic instances.
22372         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
22373         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
22374
22375 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
22376
22377         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
22378
22379         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
22380
22381 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
22382
22383         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
22384
22385         * mini-sparc.c (flushi mono_arch_output_basic_block): make
22386         it compile using Sun's compiler.
22387
22388 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
22389
22390         * 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.
22391
22392         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
22393
22394 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
22395
22396         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
22397         code.
22398         * mini-ppc.c: handle calls outside of the allowed range with thunks
22399         allocated using the code manager.
22400         * tramp-ppc.c: use the code manager to hold generated native code.
22401         Fixed the magic trampoline to just patch vtable entries.
22402
22403 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
22404
22405         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
22406         independent file.
22407
22408 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
22409
22410         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
22411         PPC.
22412
22413         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
22414         if we have a working __thread implementation.
22415
22416         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
22417         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
22418
22419 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
22420
22421         * mini-x86.c: Fix compilation under gcc 2.
22422         
22423 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
22424
22425         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
22426         contains a call to the wrapped function.
22427
22428         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
22429         OP_<CALL>_IMM opcodes, and use them under X86.
22430         
22431         * mini.c (mono_jit_find_compiled_method): Fix warning.
22432
22433         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
22434
22435         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
22436
22437         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
22438         functionality to mini.c.
22439
22440         * mini.c (mono_create_jump_trampoline): New function to create a jump
22441         trampoline. Return a compiled method instead of a trampoline if it
22442         exists. Add a cache for jump trampolines.
22443
22444         * mini.c (mono_jit_find_compiled_method): New function to return a
22445         compiled method if it exists.
22446
22447         * mini-x86.c: Call mono_create_jump_trampoline instead of 
22448         mono_arch_create_jit_trampoline.
22449
22450         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
22451         a jump trampoline. Fixes #52092.
22452         
22453 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
22454
22455         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
22456         which is not up-to-date. Add check_corlib_version () instead.
22457
22458         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
22459         have to call it.
22460         
22461         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
22462         since newer valgrind versions do not need it.
22463
22464         * mini.c (mono_jit_compile_method_with_opt): New helper function to
22465         compile a method with a given set of optimizations.
22466
22467         * mini.c: Compile icall wrappers on-demand instead of at startup.
22468
22469         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
22470         wrapper for an icall.
22471
22472 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
22473
22474         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
22475         #54063.
22476
22477         * iltests.il: Add test for non-empty stack before switch instruction.
22478
22479 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
22480
22481         * mini.c: Add support for new stringbuilder marshalling conventions.
22482
22483         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
22484
22485 2004-02-01  Martin Baulig  <martin@ximian.com>
22486
22487         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
22488         in `ginst->mtype_argv'.
22489
22490 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
22491
22492         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
22493         facilitate grepping.
22494
22495 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
22496
22497         * mini.c: fixed buglet in initobj generic implementation for references.
22498
22499 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
22500
22501         * Makefile.am: make the version script conditional.
22502         * jit-icalls.c: handle missing truncl().
22503
22504 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
22505
22506         * exceptions.cs: Add more tests for double->int conversion.
22507
22508         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
22509         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
22510
22511 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
22512
22513         * driver.c: make --verbose --version emit an error
22514         if the loaded corlib doesn't match the runtime version.
22515
22516 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
22517
22518         * mini-ppc.h: export ppc_patch().
22519         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
22520         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
22521         on par or better than on MacOSX.
22522
22523 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
22524
22525         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
22526         mono_lookup_pinvoke_call.
22527
22528         * mini-x86.c: Under windows, the default pinvoke calling convention is
22529         stdcall. Fixes #52834.
22530
22531         * mini.c (optimize_branches): Add an upper bound to the number of
22532         iterations to prevent infinite loops on strange loops. Fixes #53003.
22533
22534 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
22535
22536         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
22537         and ISINST. Fixes #52093.
22538
22539         * objects.cs (test_0_vector_array_cast): New tests.
22540         
22541 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
22542
22543         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
22544         checking in Array.Set ().
22545
22546         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
22547         #52590.
22548
22549         * object.cs (test_0_multi_array_cast): New regression test.
22550
22551 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
22552
22553         * exceptions-ppc.c: fix build on Linux/PPC.
22554
22555 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
22556
22557         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
22558         running under valgrind.
22559         (x86_magic_trampoline): Fix build bustage.
22560
22561         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
22562         negative values as well. This is needed for the encoding of the line number
22563         info, since sometimes the line numbers are not in increasing order.
22564
22565 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
22566
22567         * cpu-pentium.md (localloc): Increase the size of the localloc 
22568         instruction since it is a loop under Win32.
22569
22570         * debug-mini.c (record_line_number): Get rid of unneccesary memory
22571         allocation.
22572
22573 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
22574
22575         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
22576         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
22577         Max Horn (max@quendi.de). Fix file names in comments.
22578
22579 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
22580
22581         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
22582         avoid stack overflow.
22583         (replace_usage): Avoid uninitialized variable warnings.
22584
22585         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
22586         and taking the address of valuetype variables.
22587
22588 2004-01-03  Patrik Torstensson
22589
22590         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
22591         for other purposes than FP later on.
22592
22593 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
22594
22595         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
22596         of tail calls.
22597
22598 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
22599
22600         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
22601
22602 2003-12-30  Patrik Torstensson <p@rxc.se>
22603
22604         * mini-x86.h: Decreased number of availiable fp regs.
22605         Solves corner cases with FP spilling.
22606
22607 2003-12-23  Patrik Torstensson <p@rxc.se>
22608
22609         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
22610         for floating point stack tracking / spilling on x86. 
22611         Fixes bug #49012.
22612         
22613         * basic-float.cs: added float mul overflow test.
22614
22615 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
22616
22617         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
22618
22619 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
22620
22621         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
22622         supports for cond branches that overflow the immediate
22623         overflow offset. mcs can compile simple programs.
22624
22625 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
22626
22627         * exceptions-ppc.c: exception handling support wip:
22628         finally handlers get run on exception.
22629
22630 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
22631
22632         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
22633         profiling.
22634
22635 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
22636
22637         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
22638         initial support for stack walking and unwinding.
22639
22640 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
22641
22642         * driver.c (mono_main): Make corlib-out-of-sync message more 
22643         descriptive. Also remove verify_corlib call.
22644
22645 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
22646
22647         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
22648         not overlap with other call's arguments, too.
22649
22650 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
22651
22652         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
22653         move to arch-specific code the choice of arch-specific
22654         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
22655         * mini.c: ensure emulation calls will not interleave
22656         with other calls.
22657
22658 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
22659
22660         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
22661         the magic trampoline stack frame is dropped before executing
22662         the new method.
22663
22664 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
22665
22666         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
22667         and integer to fp conversions. Added support for overflowing
22668         arguments on the stack. Reserve a couple more registers as temps.
22669         Added support for aot compilation (as output still needs to be
22670         tweaked, though).
22671
22672 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22673
22674         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
22675         Don't overwrite return register in some corner cases.
22676
22677 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
22678
22679         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
22680         static constructors when AOT compiling.
22681
22682         * driver.c (mono_main): Call mono_check_corlib_version.
22683
22684 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
22685
22686         * cpu-g4.md, basic.cs: fixed div target register.
22687
22688 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
22689
22690         * mini-ppc.c, basic.cs: shl_imm fix with test.
22691
22692 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
22693
22694         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
22695         structures by value. Misc fixes.
22696         * objects.cs: more tests.
22697
22698 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
22699
22700         * mini-ppc.c: lconv.ovf.i implemented.
22701
22702 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22703
22704         * mini.c:
22705         (mini_init): don't error out if someone already called g_thread_init.
22706
22707 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
22708
22709         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
22710         to be any type per the spec. Fix abnormal memory usage when
22711         the same object is repeatedly thrown.
22712
22713 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
22714
22715         * mini.c: check for overruns in IL code.
22716
22717 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
22718
22719         * TODO: Add/remove some todo entries.
22720
22721 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
22722
22723         * driver.c (mono_main): Call mono_verify_corlib.
22724
22725 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
22726
22727         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
22728         This has been moved to mini.c
22729         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
22730         type being casted is marshalbyref it could be a proxy, so instead of
22731         emitting the type check code, emit a call to a runtime method that will
22732         perform the check by calling CanCastTo if needed.
22733
22734 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
22735
22736         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
22737         methods with large stack frames under Win32.
22738
22739 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
22740
22741         * Makefile.am: Distribute regression tests.
22742
22743         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
22744         at the end instead of inserting each variable into the sorted list.
22745
22746         * linear-scan.c (mono_varlist_sort): New helper function.
22747         
22748 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
22749
22750         * mini.c: ensure arguments and locals are within bounds.
22751
22752 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22753
22754         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
22755         related fixes.
22756
22757 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
22758
22759         * mini.c (mono_cprop_copy_values): Fix crash.
22760
22761         * aot.c: Set verbosity back to 0.
22762         
22763 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22764
22765         * regalloc.c: complete memory leak fix by Laurent Morichetti
22766         (l_m@pacbell.net).
22767
22768 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
22769
22770         * driver.c (main_thread_handler): Revert the previous patch.
22771
22772         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
22773         under valgrind.
22774
22775         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
22776         memory from the memory pool.
22777
22778         * driver.c (main_thread_handler): Turn on all optimizations when
22779         --aot is used.
22780
22781         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
22782         an array for better performance.
22783
22784         * regalloc.c (mono_regstate_assign): Fix memory leak.
22785
22786         * debug-mini.c (mono_debug_serialize_debug_info): New function to
22787         serialize the debug info.
22788
22789         * debug-mini.c (mono_debug_add_aot_method): New function to load the
22790         debug info from the serialized representation.
22791
22792         * aot.c: Save debug info into the generated file and load it when 
22793         loading a method.
22794
22795         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
22796
22797 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
22798
22799         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
22800         More FP-related fixes.
22801
22802 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
22803
22804         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
22805         and register allocation buglet. Hello world now runs.
22806
22807 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
22808
22809         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
22810         * tramp-ppc.c: fixed class init trampoline.
22811         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
22812
22813 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
22814
22815         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
22816         mini.c: more ppc changes/fixes.
22817
22818 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
22819
22820         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
22821         Also optimize the case when the arguments are the same in the caller 
22822         and in the callee.
22823
22824         * iltests.il: Add tests for tail calls with valuetype arguments.
22825
22826 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
22827
22828         * mini-ppc.c: fixes for struct return type.
22829
22830 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
22831
22832         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
22833         mono_spillvar_offset() to arch-specific code.
22834
22835 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
22836
22837         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
22838
22839 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
22840
22841         * exceptions-x86.c: Fix stack space leaks.
22842         
22843         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
22844         registers from the lmf if the method has save_lmf set.
22845
22846 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
22847
22848         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
22849         of icall wrappers into InvokeInDomain, since these are now per-domain.
22850
22851 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
22852
22853         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
22854         make some opcode emulation and intrinsic ops enabled/disabled 
22855         according to the architecture. More fixes.
22856
22857 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
22858
22859         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
22860
22861 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
22862
22863         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
22864         arch-specific handling for 'this' and struct return type to
22865         arch-specific code.
22866
22867 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22868
22869         * aot.c: prevent divide by zero error when reporting (it happened with
22870         Accessibility.dll).
22871
22872 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
22873
22874         * mini.h (inst_switch): Remove unused macro.
22875
22876 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22877
22878         * aot.c:
22879         (load_aot_module): free 'info->methods' and 'info' properly. No more
22880         "free(): invalid pointer blah" messages when you have an old aot
22881         compiled assembly.
22882
22883 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
22884
22885         * jit-icalls.c, mini.c: Added support for context static fields.
22886
22887 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
22888
22889         * mini.c (mono_method_blittable): Methods which set LastError are not 
22890         blittable either. Fixes #51108.
22891         
22892 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
22893
22894         * mini.c: flush icache.
22895         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
22896
22897 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
22898
22899         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
22900
22901 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
22902
22903         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
22904         safe on IA32.
22905
22906         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
22907         vararg calls.
22908
22909         * inssel.brg (CEE_MKREFANY): Fix AOT case.
22910
22911 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
22912
22913         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
22914         instruction when the result is discarded.
22915
22916         * iltests.il (test_0_div_regalloc): New regression test.
22917
22918         * arrays.cs: Fix compilation error.
22919
22920 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
22921
22922         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
22923         float rules to inssel-x86.brg: sane architectures with FP registers
22924         don't need to implement these rules.
22925
22926 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
22927
22928         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
22929
22930 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22931
22932         * mini.h, inssel-long32.brg: fixed endianess issues in int64
22933         implementation of 32 bit systems.
22934
22935 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
22936
22937         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
22938         (Jeroen Zwartepoorte).
22939
22940 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
22941
22942         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
22943         the caller and the callee matches.
22944         
22945         * mini.c (mono_method_to_ir): Add comment.
22946
22947         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
22948         signbit is missing on some platforms.
22949
22950 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
22951
22952         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
22953
22954         * mini.c (setup_jit_tls_data): Call the new function.
22955         
22956         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
22957
22958         * mini-x86.c: Add experimental support for fast access to the lmf
22959         structure under NPTL/Linux 2.6.x.
22960
22961 2003-11-06  Martin Baulig  <martin@ximian.com>
22962
22963         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
22964         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
22965         the debugger.
22966
22967 2003-11-02  Martin Baulig  <martin@ximian.com>
22968
22969         * mini.c (inflate_generic_field): New static method.
22970         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
22971         generic instance and the field is declared in a generic type, call
22972         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
22973
22974 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
22975
22976         * mini.h mini.c (mono_method_same_domain): New function to return
22977         whenever the caller and the callee are in the same domain.
22978
22979         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
22980
22981 2003-10-30  Martin Baulig  <martin@ximian.com>
22982
22983         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
22984         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
22985         method parameters.
22986         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
22987         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
22988
22989 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
22990
22991         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
22992         propagation.
22993
22994         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
22995         object here, so it is in the correct appdomain etc.
22996
22997 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
22998
22999         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
23000         already done.
23001         (mono_method_to_ir): Avoid freeing the type created returned from
23002         mono_type_create_from_typespec, since it is put into an internal cache
23003         by the function. Fixes pointer.exe.
23004
23005         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
23006         trampolines for icalls and pinvokes as well. Fixes #33569.
23007
23008 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
23009
23010         * mini.c: Update after appdomain changes.
23011
23012         * mini.c (mono_jit_compile_method_inner): Allways compile native
23013         method wrappers in the root domain, since there can only be one
23014         instance of them, whose address is stored in method->info.
23015
23016 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
23017
23018         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
23019         environment variable. Instead detect automatically whenever running
23020         under valgrind using the magic macro RUNNING_ON_VALGRIND from
23021         valgrind.h.
23022
23023 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
23024
23025         * trace.c, trace.h: New files that implement the new trace option
23026         parsing. 
23027
23028         * driver.c: Document new --trace options.
23029
23030         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
23031         mini-x86.c: Apply:
23032
23033         -       if (mono_jit_trace_calls)
23034         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
23035
23036         * mini.h: prototypes.
23037         
23038 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
23039
23040         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
23041
23042         * mini.c inssel.brg: Implement typedefbyref opcodes.
23043
23044         * mini.c (mono_jit_compile_method): Remove unused local variable.
23045
23046         * mini.c (mono_jit_compile_method_inner): Ditto.
23047         
23048 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
23049
23050         * tramp-x86.c (x86_class_init_trampoline): Fix build.
23051         
23052         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
23053
23054 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
23055
23056         * mini.c (mono_no_aot): Remove unused global variable.
23057
23058         * mini.c: Thread safety fixes.
23059
23060 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
23061
23062         * mini.c (mono_create_class_init_trampoline): Add a lock around
23063         class_init_hash_addr.
23064
23065         * arrays.cs (test_0_newarr_emulation): Add new regression test for
23066         #30073.
23067
23068         * mini.c: Decompose the NEWARR instruction before decomposing its
23069         arguments. Fixes #30073.
23070
23071 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
23072
23073         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
23074         convention.
23075
23076 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
23077
23078         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
23079
23080         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
23081
23082         * driver.c: Add support for compiling icall wrappers to --compile.
23083
23084 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
23085
23086         * inssel.brg: The empty value in class->interface_offsets is -1, not
23087         0. Fixes #49287.
23088
23089 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
23090
23091         * objects.cs: New test for 'is' operator on an array of interfaces.
23092
23093 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23094
23095         * tramp-ppc.c: update trampoline code to support jumps
23096         and class initialization.
23097
23098 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
23099
23100         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
23101
23102         * inssel.brg (OP_UNBOXCAST): Fix #46027.
23103
23104         * inssel.brg (OP_UNBOX): Remove unused rule.
23105
23106         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
23107         region instead of one for each method. Fixes #47813.
23108
23109 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
23110
23111         * exceptions.cs (test_0_nested_finally): New regression test for
23112         nested exception handlers.
23113
23114         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
23115
23116         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
23117
23118         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
23119         inlining.
23120
23121         * mini.c (mono_method_check_inlining): Make the inlining limit 
23122         configurable by an environment variable.
23123         
23124         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
23125
23126         * mini.h: Bump AOT file version.
23127
23128         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
23129         token, store the image along with the token, since the token might not 
23130         refer to the same image as the method containing the relocation, 
23131         because of inlining.
23132
23133 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
23134
23135         * mini.c (mono_precompile_assemblies): New function to compile
23136         all methods in all loaded assemblies.
23137
23138         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
23139
23140         * regalloc.h regalloc.c (MonoRegState): Change the type of 
23141         iassign and fassign to int*, since they can contain large negative
23142         values if the register is spilled. Also added some comments. Fixes
23143         #45817.
23144
23145         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
23146         under Win32. Fixes #42964.
23147
23148 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
23149
23150         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
23151
23152         * aot.c: Added support for AOT compiling methods which contain calls
23153         to wrappers. Currently, only remoting-invoke-with-check wrappers are
23154         handled.
23155         
23156         * driver.c (compile_all_methods): Run the compilation in a thread
23157         managed by mono. Fixes #44023.
23158
23159         * mini.c (mono_codegen): Print full method name in verbose output.
23160
23161         * mini-x86.c (mono_arch_patch_code): Fix warning.
23162         
23163         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
23164         jumps, since the method we are jumping to might be domain-specific.
23165
23166         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
23167
23168 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23169
23170         * inssel.brg: string chars are unsigned.
23171
23172 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
23173
23174         * TODO: New todo item.
23175
23176         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
23177         which calls mono_runtime_class_init and patches the call site to
23178         avoid further calls.
23179         (mono_arch_create_class_init_trampoline): New arch specific function 
23180         to create a class init trampoline.
23181         (create_trampoline_code): Generalized so it can create
23182         class init trampolines as well.
23183
23184         * mini.c (helper_sig_class_init_trampoline): New helper variable.
23185         (mono_create_class_init_trampoline): New function to create and cache
23186         class init trampolines.
23187         (mono_find_class_init_trampoline_by_addr): New function to lookup the
23188         vtable given the address of a class init trampoline. Used by the
23189         patching process.
23190         (mono_codegen): Generate a call to a trampoline instead of
23191         mono_runtime_class_init in LDSFLD[A].
23192         (mono_codegen): Add relocations for the new trampoline.
23193         
23194         * mini.h mini-x86.c aot.c: Added a new relocation type: 
23195         MONO_PATCH_INFO_CLASS_INIT.
23196
23197         * mini.h: Bump AOT version number.
23198
23199         * aot.c: Create a copy of the loaded code instead of using the original
23200         so methods which call each other will be close in memory, improving
23201         cache behaviour.
23202         
23203         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
23204         patch since it breaks the regression tests.
23205         
23206         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
23207         for the register saving instruction sequence since the 
23208         frame_state_for function in glibc 2.3.2 don't seem to detect it.
23209
23210 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
23211
23212         * TODO: Fix todo item && remove another.
23213
23214 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
23215
23216         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
23217         previous checkin.
23218
23219         * aot.c: Moved the check for MONO_LASTAOT into the initialization
23220         function of the module.
23221
23222         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
23223         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
23224         --no-aot command line option.
23225
23226 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
23227
23228         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
23229         by Bernie Solomon (bernard@ugsolutions.com).
23230
23231         * inssel.brg: Refactor the interface offset table related code into
23232         its separate functions and add support for the AOT case.
23233
23234 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
23235
23236         * aot.c (mono_aot_get_method_inner): Fix memory leak.
23237         
23238         * aot.c: Added mono_aot_verbose variable and made all debugging
23239         output depend on the value of this variable.
23240
23241         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
23242         method_label and info_label.
23243
23244         * mini.h mini-x86.c aot.c: Added a new relocation type 
23245         MONO_PATCH_INFO_IID for klass->interface_id.
23246
23247         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
23248         the MonoJitInfo structure.
23249
23250         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
23251         a non-root appdomain in shared mode.
23252
23253 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
23254
23255         * aot.c: make aot loader less verbose. Remove free of unused variable.
23256
23257 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
23258
23259         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
23260
23261         * .cvsignore: Added *.dll.
23262
23263         * mini.c (mono_print_tree_nl): New function callable while debugging.
23264
23265         * mini.c (mono_print_code): Export this.
23266
23267         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
23268         patched code.
23269
23270 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
23271
23272         * mini.h (MonoCompile): Added 'jit_info' field.
23273
23274         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
23275         the cfg structure, since it is needed by the AOT compiler.
23276
23277         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
23278
23279         * aot.c: A major rewrite. Changes include:
23280         - save exception tables for methods which have them.
23281         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
23282         to g_module_symbol.
23283         - reworked the file format so it is now much smaller and needs
23284         fewer relocation entries.
23285         
23286 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
23287
23288         * aot.c (load_aot_module): Fix build bustage on platforms without
23289         Boehm GC.
23290
23291 2003-09-04  Martin Baulig  <martin@ximian.com>
23292
23293         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
23294
23295 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
23296
23297         * TODO: Some new optimization ideas.
23298
23299         * aot.c: Move AOT module loading logic here from mono_assembly_open.
23300
23301         * aot.c: Save the optimization flags used to compile the code into
23302         the AOT module.
23303
23304         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
23305         support emitting domain specific code.
23306         
23307         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
23308         no longer domain neutral. It can be made domain neutral by compiling 
23309         with --optimize=shared.
23310
23311         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
23312         between appdomains.
23313
23314         * driver.c mini.h mini.c: New --no-aot debugging option which disables
23315         loading of AOT code.
23316
23317         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
23318         
23319         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
23320         if there is no domain neutrality information.
23321
23322 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
23323
23324         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
23325         format version into the generated library.
23326
23327         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
23328         callee method into the caller since one of them could be shared.
23329
23330         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
23331         system exceptions from AOT code now works.
23332
23333         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
23334         method if it is domain neutral and the callee is not.
23335
23336         * graph.c (cfg_emit_one_loop_level): Fix warning.
23337
23338 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
23339
23340         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
23341         last checkin.
23342
23343 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
23344
23345         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
23346         is needed  by code which is executed before mono_runtime_init ().
23347         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
23348         
23349         * mini.c (mono_thread_abort): Fix warning.
23350         (mono_jit_compile_method): Call static constructor in the AOT case too.
23351
23352         * aot.c (mono_compile_assembly): Fix warning.
23353
23354 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23355
23356         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
23357
23358 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
23359
23360         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
23361
23362         * cpu-pentium.md: Fix the length of call opcodes so they include the
23363         ESP restoring instruction. Fixes #47968.
23364
23365 2003-08-28  Martin Baulig  <martin@ximian.com>
23366
23367         * mini-x86.c (mono_arch_call_opcode): Added support for
23368         MONO_TYPE_GENERICINST.
23369
23370         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
23371
23372 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
23373
23374         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
23375         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
23376
23377         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
23378         metadata_section.
23379
23380 2003-08-26  Martin Baulig  <martin@ximian.com>
23381
23382         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
23383         when reporting an error, set this to the actual error location.
23384         (mono_method_to_ir): Report the correct error location if
23385         get_basic_blocks() returned an error.
23386
23387 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
23388
23389         * mini.c (mono_type_blittable): OBJECT is not blittable.
23390         (mono_method_blittable): Methods which have marshalling descriptors
23391         are not blittable either. Fixes #47842.
23392
23393 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
23394
23395         * driver.c mini.c: Use an environment variable instead of a global 
23396         variable. Also fix the build.
23397
23398         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
23399         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
23400         reporting this. 
23401
23402         * driver.c mini.c: Added --with-valgrind option to turn off some
23403         code which prevents mono from running under valgrind.
23404
23405         * mini.c (mono_emit_call_args): Fixed warning.
23406
23407         * mini.c (mono_emulate_opcode): Fixed warning.
23408
23409 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23410
23411         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
23412         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
23413         regalloc.c, regalloc.h: specify available registers in arch-specific
23414         code and support floats in the regallocator (patch by Laurent Morichetti 
23415         <l_m@pacbell.net>)
23416
23417 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
23418
23419         * mini.c: mono_thread_current() can be called only after
23420         mono_runtime_init(): rearrange code to not call it early on.
23421
23422 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23423
23424         * mini.c: allocate jump tables in the code mempools.
23425
23426 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23427
23428         * mini.c, mini.h: make sure per-thread data allocated by the jit is
23429         freed.
23430
23431 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
23432
23433         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
23434         12 to 16.  This fixes bug #47453.
23435
23436
23437 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
23438
23439         * mini-ppc.c: fixed indexed load and unsigned compares.
23440
23441 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
23442
23443         * mini.c: reenabled installation of handler for
23444           thread abort signal.
23445
23446 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23447
23448         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
23449         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
23450         until it's fixed and actually useful.
23451
23452 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23453
23454         * inssel-long32.brg: couple more opcodes implemented.
23455
23456 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
23457         
23458         * mini-sparc.c: Even more opcodes implemeted.
23459
23460 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
23461
23462         * mini-sparc.c: More opcodes implemented.
23463
23464 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
23465
23466         * mini-sparc.c: More opcodes implemented.
23467
23468 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
23469
23470         * inssel-sparc.brg: Add some needed rules.  Direct
23471         copy from PPC.
23472         * Makefile.am: Use inssel-sparc.brg
23473         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
23474         an assert happy for now.
23475
23476 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
23477
23478         * mini-sparc.c: Fixed compile errors.
23479         * exceptions-sparc.c: Same.  We now produce a mono binary 
23480         on sparc-linux.  Yea.
23481
23482 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
23483
23484         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
23485         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
23486         They compile, but do not work.
23487
23488 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23489
23490         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
23491         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
23492         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
23493         (ct@gentoo.org).
23494
23495 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23496
23497         * mini.c: more opcodes implemented and better support for generics.
23498
23499 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
23500
23501         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
23502         * mini.c, mini.h: first cut at generics support: some new instructions 
23503         added and changed the behaviour of some of the existing ones.
23504
23505 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
23506
23507         * mini.c: Removed definition of metadata_shared mutex here.
23508
23509 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
23510
23511         * mini-x86.c: make vararg calls work for instance methods.
23512
23513 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
23514
23515         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
23516         returns the arguments in a separte list, now.
23517
23518 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23519
23520         * aot.c, mini.c: updates for array type representation changes.
23521
23522 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
23523
23524         * mini.c: register function to perform jit shutdown.
23525
23526 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23527
23528         * mini.c: use a faster allocator if possible.
23529
23530 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
23531
23532         * aot.c: some cleanups and portability changes.
23533
23534 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23535
23536         * mini.c: use faster allocation for CEE_BOX if possible.
23537
23538 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
23539
23540         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
23541         Moved inlined mempcy code to its own function so that is can be
23542         reused. Added an inline memset function as well (optimized initobj).
23543         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
23544
23545 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23546
23547         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
23548
23549 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
23550
23551         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
23552         arch code can setup the cpu for CLR execution, if needed.
23553         We use it on x86 to set the precision of FP operations.
23554
23555 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
23556
23557         * mini.c: disable some optimizations if we can guess they'll cost too
23558         much for a given method.
23559
23560 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
23561
23562         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
23563         
23564 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
23565         * mini.h mini.c mini-x86.c: Added instruction level coverage 
23566         info collection support.
23567
23568 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23569
23570         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
23571         is now implemented in the profiling API. Get rid of a couple of
23572         unnecessary global variables.
23573
23574 2003-06-15  Nick Drochak <ndrochak@gol.com>
23575
23576         * basic-long.cs: tests for negative values for bigmul, and unsigned.
23577         * cpu-g4.md: add op_bigmul and op_bigmul_un
23578         * cpu_pentium.md: add op_bigmul_un
23579         * inssel-long32.brg: add rule for unsigned bigmul
23580         * mini-ops.h: define OP_BIGMUL_UN
23581         * mini-x86.c: THE BUG: handle (un)signed properly
23582         * mini.c: choose unsigned opcode if needed.
23583         This set of patches fixes bug #44291
23584
23585 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
23586
23587         * mini.c (optimize_branches): improved to handle all kinds of
23588         conditional branches.
23589
23590 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
23591
23592         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
23593         don't raise exceptions.
23594
23595 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23596
23597         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
23598         to arch-specific files.
23599
23600 2003-06-09  Martin Baulig  <martin@ximian.com>
23601
23602         * Makefile.am (libs): Added $(LIBGC_LIBS).
23603
23604 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
23605
23606         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
23607         and OP_ATAN (fixes bug#44293).
23608
23609 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
23610
23611         * Makefile.am, mini-x86.c: rename cpu description array to
23612         pentium_desc, since some compilers define the 'pentium' preprocessor
23613         symbol.
23614
23615 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
23616
23617         * mini.c (mini_select_instructions): add explicit branch if the
23618         following block is not the false target of a conditional branch -
23619         we need this with any optimization that reorder or remove bblocks
23620
23621         * mini.c (optimize_branches): bug fixes
23622
23623 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
23624
23625         * mini.c (mono_method_to_ir): inline static readonly fields
23626
23627         * ssa.c (fold_tree): start cfold support for long (very simple
23628         cases only)
23629
23630         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
23631
23632 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23633
23634         * inssel.brg: fixed memcpy (bug #44219).
23635
23636 2003-06-05  Dick Porter  <dick@ximian.com>
23637
23638         * driver.c: Set the glib log levels to not abort if g_message
23639         recurses.
23640
23641         g_set_prgname() has to happen before mini_init() so that the
23642         process handle gets the info.
23643         
23644 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23645
23646         * driver.c: add intrins to the default optimizations to get wider
23647         exposure.
23648
23649 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
23650
23651         * mini.h: some large basic blocks will overflow a 16-bit
23652         integers for symbolic registers.
23653
23654 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
23655
23656         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
23657         (mono_arch_output_basic_block): fix bug 43499 
23658
23659 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
23660
23661         * mini.c: kill duplicated definition of mono_debug_format.
23662
23663 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
23664
23665         * mini-x86.c, arrays.cs: fixed register allocation bug.
23666
23667 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
23668
23669         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
23670
23671         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
23672
23673 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23674
23675         * mini.c:
23676         (print_method_from_ip): also print source location information if
23677         available.
23678
23679 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
23680
23681         * mini.c (mono_find_block_region): bug fix in region code
23682         (mini_method_compile): enable removing unreachable code again, but
23683         only in methods without exception clauses.
23684
23685 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
23686
23687         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
23688         Implemented arglist opcode and handling of TypedReference type.
23689         Fixed x86 call convention when a structure is returned.
23690         Minimal support for calling static vararg methods.
23691
23692 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
23693
23694         * mini.c (mini_method_compile):  always remove unreachable code,
23695         because the code in them may be inconsistent  (access to dead
23696         variables for example).
23697
23698 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
23699
23700         * driver.c, debug-mini.c: warning fixes.
23701
23702 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
23703
23704         * Makefile.am, jit.h, mini.h: install header for embedding mono.
23705
23706 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
23707
23708         * mini.c: thread-static fields are registered in mono_class_vtable(),
23709         so ensure the function is called before checking for them.
23710
23711 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
23712
23713         * mini.c (optimize_branches): fix for bug 43586
23714
23715         * jit-icalls.c (mono_llmult_ovf): added an additional check for
23716         overflow (fixes Bug #43639)
23717
23718 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23719
23720         * mini.c, objects.cs: allow the use of stobj for primitive types.
23721
23722 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23723
23724         * mini.c: be less strict about argument checking until we support
23725         running the verifier.
23726
23727 2003-05-27  Nick Drochak <ndrochak@gol.com>
23728
23729         * basic-long.cs: tests for (ulong)int * (ulong)int also
23730         * mini.c: use the same trick for (ulong)int * (ulong)int
23731
23732 2003-05-27  Nick Drochak <ndrochak@gol.com>
23733
23734         * basic-long.cs: add regression test for (long)int * (long)int
23735         * cpu-pentium.md: add op_bigmul specification
23736         * inssel-long32.brg: add OP_BIGMUL rule
23737         * mini-ops.h: add OP_BIGMUL
23738         * mini-x86.c: register allocator: handle case where src1 needs to be
23739         in EAX.
23740         * mini.c: substitute special BIGMUL opcode in the tree for 
23741         (long)int * (long)int
23742
23743 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
23744
23745         * jit-icalls.c: call the type ctor on field access if needed.
23746
23747 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
23748
23749         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
23750         to a method (including results of ldelema, bug#43207).
23751
23752 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
23753
23754         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
23755         colors to show exception handler blocks.
23756
23757         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
23758         (fix for pinvoke7.cs).
23759
23760 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23761
23762         * mini.h, mini.c: ensure correct initialization order for types that
23763         require it. Prepare for lazy compilation of jit icall wrappers.
23764         Provide a name for opcode emulation to reduce unneeded mallocing.
23765
23766 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
23767
23768         * mini-x86.c: better register restoring code and profiling
23769         support for tail calls.
23770
23771 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23772
23773         * mini.h, driver.c: prepare for leaf methods optimization.
23774
23775 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
23776
23777         * mini.c: get targets of branches before converting a method.
23778
23779 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
23780
23781         * mini.c (optimize_branches): added some experimental code (disbaled) 
23782
23783 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
23784
23785         * mini.c (optimize_branches): fix branch to branch optimization 
23786
23787         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
23788
23789         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
23790
23791         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
23792
23793         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
23794         if needed.
23795
23796 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
23797
23798         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
23799         enable use of interface variables again.
23800
23801         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
23802         I1 to registers because there is no simply way to sign extend 8bit
23803         quantities in caller saved registers on x86.
23804
23805         * inssel-float.brg: set costs of some rules to 2 so
23806         that monobure always select the arch. specific ones if supplied,
23807         regardless of the order we pass the files to monoburg.
23808
23809 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
23810
23811         * mini.c, mini-x86.c: since the magic trampoline for jumps
23812         can't patch the code directly, we do it as soon as the
23813         method gets compiled.
23814
23815 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
23816
23817         * mini-x86.c, mini.h: introduce a new patching method
23818         to support CEE_JMP and tail calls.
23819         * mini.c: obey tail.call. Don't precompile methods target
23820         of CEE_JMP.
23821         * tramp-x86.c: new trampoline code to handle methods
23822         reached through a jump.
23823
23824 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
23825
23826         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
23827         bit values to registers
23828
23829 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
23830
23831         * mini.c (mono_compile_get_interface_var): share interface
23832         variables if possible.
23833
23834 2003-05-16  Martin Baulig  <martin@ximian.com>
23835
23836         * debug-mini.c (mono_init_debugger): New function to initialize
23837         the debugger.  This is not in the debugger since it needs to
23838         access some of mini's internals.
23839
23840 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
23841
23842         * mini.c (mono_method_to_ir): inlining fixes/cleanups
23843
23844 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
23845
23846         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
23847         for value type handling.
23848
23849 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
23850
23851         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
23852         (mono_method_check_inlining): enable inlining of all kinds of wrappers
23853
23854 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
23855
23856         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
23857           the constructor through a proxy.
23858
23859 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23860
23861         * jit-icalls.c, inssel.brg: fixes to array element address
23862         calculations.
23863
23864 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
23865
23866         * mini-x86.c (is_regsize_var): allocate pointer to registers
23867
23868 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23869
23870         * driver.c: fixed typo, added intrins to the set of optimizations
23871         tested with regressions.
23872
23873 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
23874
23875         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
23876         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
23877         test case.
23878
23879 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
23880
23881         * inssel.brg: remove some common pop instructions without side effects
23882
23883 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23884
23885         * inssel-x86.brg: fixed thinko in int to double conversions.
23886
23887 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
23888
23889         * mini.c, jit-icalls.c: added runtime thread-static variable support.
23890
23891 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
23892
23893         * inssel-long32.brg: two more missing instructions.
23894
23895 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
23896
23897         * mini.c (mono_emit_call_args): set the cil_code for all arguments
23898         if not already set.
23899
23900 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
23901
23902         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
23903         correctly.
23904
23905         * basic-float.cs: Added tests for negative zero.
23906
23907 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23908
23909         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
23910         a couple of missing operations for long casts, with test cases.
23911
23912 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23913
23914         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
23915
23916 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
23917
23918         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
23919         code size estimation.
23920
23921 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
23922
23923         * mini.c (mono_jit_create_remoting_trampoline): make it work with
23924         abstract methods (fix bug 42542)
23925
23926         * aot.c: add ability to handle array types
23927         
23928 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
23929
23930         * mini.c: Call the _specific versions of the object allocation
23931         functions if possible.
23932
23933 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
23934
23935         * driver.c: call setlocale ().
23936
23937 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
23938
23939         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
23940         windows build.
23941
23942 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
23943
23944         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
23945
23946         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
23947         wrappers (fix bug 42122)
23948
23949 2003-05-04  Martin Baulig  <martin@ximian.com>
23950
23951         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
23952
23953         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
23954         s/mini_set_defaults/mono_set_defaults/g.
23955
23956 2003-05-04  Martin Baulig  <martin@ximian.com>
23957
23958         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
23959
23960 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23961
23962         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
23963         (reported by Don Roberts).
23964
23965 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
23966
23967         * mini.c: temporarily work around two bugs for this release.
23968
23969 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23970
23971         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
23972         that contains -export-dynamic and it makes using the ld script
23973         useless.
23974         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
23975
23976 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
23977
23978         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
23979         specific cpu.
23980
23981 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
23982
23983         * mini.c: make sure leave calls all the needed finally blocks,
23984         even when the target jumps out of multiple exception clauses.
23985
23986 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23987
23988         * ldscript, Makefile.am: add linker script to reduce the number of
23989         exported symbols (should also fix the issues with libwine defining
23990         some of the same symbols in io-layer).
23991
23992 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
23993
23994         * driver.c (mini_main): Avoid assertion when no file name is given on 
23995         the command line.
23996
23997 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
23998
23999         * driver.c: added --version/-V command line option.
24000         Added the inline optimization in the regression tests.
24001
24002 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24003
24004         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
24005         to the type in the method signature (fixes bug#42134).
24006
24007 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
24008
24009         * mini.c: when inlining, check this is not null only when needed (bug #42135).
24010
24011 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
24012
24013         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
24014
24015 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24016
24017         * driver.c: fixed bug #42100.
24018
24019 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
24020
24021         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
24022
24023 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
24024
24025         * mini.c: moved most of the code required to do inlining to its own
24026         function so it can be reused. Inline also ctors if appropriate.
24027
24028 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
24029
24030         * Makefile.am: Link with -export-dynamic so shared libs loaded by
24031         the runtime can call mono API functions.
24032
24033 2003-04-27  Martin Baulig  <martin@ximian.com>
24034
24035         * debug-mini.c (mono_debug_init_method): Added
24036         `guint32 breakpoint_id' argument; if the method has a breakpoint,
24037         send a notification to the debugger.
24038
24039         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
24040         running in the Mono Debugger, just pass the breakpoint number to
24041         mono_debug_init_method().
24042
24043         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
24044
24045 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
24046
24047         * mini.c: allow some more unsafe compares.
24048
24049 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24050
24051         * mini-x86.c, Makefile.am: make distcheck works (partially from
24052         a patch by Richard Lee <r.h.lee@attbi.com>).
24053         * regset.c, regset.h: removed, they are unused.
24054
24055 2003-04-25  Dick Porter  <dick@ximian.com>
24056
24057         * driver.c: Usage reports the name as 'mono' not 'mini'
24058         * exceptions-x86.c: Build and run on freebsd
24059
24060 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
24061
24062         * Makefile.am: install the program with the 'mono' name and
24063         the library as libmono instead of mini and libmini.
24064
24065 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24066
24067         * driver.c: provide the APIs for the embedding interface of the old jit.
24068
24069 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
24070
24071         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
24072
24073 2003-04-23  Martin Baulig  <martin@ximian.com>
24074
24075         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
24076
24077         * driver.c: Added `--debug' command line argument to enable
24078         debugging support.
24079
24080 2003-04-23  Martin Baulig  <martin@ximian.com>
24081
24082         * debug.[ch]: Removed.  The code is now in
24083         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
24084
24085         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
24086         last six months.
24087
24088 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
24089
24090         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
24091
24092 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24093
24094         * mini.c:
24095         (mini_cleanup): moved mono_runtime_cleanup call after the call to
24096         mono_domain_finalize.
24097         (mini_method_compile): use mono_method_profile* if the the option is
24098         enabled.
24099
24100 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
24101
24102         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
24103         methods with their wrapper.
24104
24105         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
24106         methods with their wrapper.
24107
24108         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
24109         their wrapper.
24110
24111         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
24112         wrapper.
24113
24114         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
24115         methods.
24116
24117 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
24118
24119         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
24120
24121 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
24122
24123         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
24124         of the mempool. This is slightly faster and uses less memory
24125
24126 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24127
24128         * mini.c: avoid O(n) allocation for variables.
24129
24130 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24131
24132         * mini.c: handle items on the stack after inlining methods.
24133
24134 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
24135
24136         * mini.c: make the method->opcode optimization dependent
24137         on MONO_OPT_INSTRINS and do it lazily.
24138
24139 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
24140
24141         * driver.c: print overall results at the end of regression run.
24142
24143 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
24144
24145         * inssel.brg: don't overwrite symbolic registers.
24146
24147 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
24148
24149         * inssel-x86.brg: fix conversion from long to float.
24150
24151 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
24152
24153         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
24154
24155 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
24156
24157         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
24158
24159         * driver.c: Added --print-vtable option as in the old JIT.
24160
24161 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
24162
24163         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
24164
24165 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
24166
24167         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
24168
24169 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
24170
24171         * mini.c regalloc.c regalloc.h: Fix memory leak.
24172
24173 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
24174
24175         * aot.c (mono_aot_get_method): register all used strings
24176
24177 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24178
24179         * mini.c: always intern strings references with ldstr at compile time.
24180
24181 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24182
24183         * Makefile.am: add BUILT_SOURCES.
24184
24185 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
24186
24187         * driver.c: give a better error message when the assembly to execute
24188         doesn't have an entry point.
24189
24190 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
24191
24192         * Makefile.am: added hack for automake
24193
24194         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
24195         correct sematics.
24196
24197         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
24198
24199 22003-04-07  Martin Baulig  <martin@ximian.com>
24200
24201         * Makefile.am: Added Makefile.am.
24202
24203         * debugger-main.c: Removed, this is now in the debugger where it
24204         belongs.
24205
24206         * mini.pc.in: Call this package `mini' for the moment.
24207
24208
24209
24210
24211
24212
24213
24214
24215
24216
24217
24218
24219
24220
24221