2010-02-13 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
2
3         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
4         points.
5
6         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
7         so they have small offsets. Fixes #566311.
8
9 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
10
11         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
12
13 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
14
15         * mini-amd64.c: Remove the special casing of byref in a few places now that
16         mini_type_get_underlying_type () handles it.
17
18         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
19         by returning native int. Fixes #577984.
20
21 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
22
23         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
24         a macro.
25
26         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
27         of putting the clause itself.
28
29         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
30
31 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
32
33         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
34         might be unaligned.
35
36 2010-02-10  Geoff Norton  <gnorton@novell.com>
37
38         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
39
40 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
41
42         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
43         llvm methods too.
44
45         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
46         it is not an LLVM generated symbol.
47
48         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
49
50         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
51         implementation in gshared mode because it causes regressions.
52
53         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
54
55         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
56         should be done by the caller.
57
58         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
59
60         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
61
62         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
63         since mono_jit_info_table_find () doesn't do it anymore.
64
65         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
66         instead of mono_jit_info_table_find ().
67
68 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
69
70         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
71
72         * aot-compiler.c (encode_method_ref): Update after the removal of
73         mono_gc_get_managed_allocator_type ().
74
75         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
76         Fixes #564538.
77
78 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
79
80         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
81         generic params as well.
82         (handle_isinst): Ditto.
83
84         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
85         instead of always calling an icall.
86
87         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
88         computing the size of the got.
89
90         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
91         when using LLVM. Instead of emitting it as an LLVM method, emit it using
92         the assembly directive '.set' so it points to the first LLVM emitted method.
93
94 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
95
96         * mini.c (mini_method_verify): Report the method which failed to verify.
97
98 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
99
100         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
101         to avoid JIT'ng dead basic blocks. This is the same behavior as the
102         runtime MS verifier.
103
104 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
105
106         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
107         #561962.
108
109 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
110
111         * mini-llvm.c: Init the jit module only when first JITting.
112
113         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
114
115         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
116
117         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
118         replaced with the real got.
119
120         * debugger-agent.c (type_commands): Return the enumness if the type as well.
121
122         * image-writer.c: Reduce the amount of #ifdefs a bit.
123
124         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
125         llvm on darwin/arm.
126
127         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
128
129         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
130         global.
131
132 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
133
134         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
135         (mono_llvm_emit_method): Fix unaligned stores too.
136
137         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
138         so async stack walks don't crash.
139
140 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
141
142         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
143         was not patched if the callee needed an rgctx trampoline.
144
145 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
146
147         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
148         vtable address in AOT code.
149
150 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
151
152         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
153         MonoInst's.
154
155 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
156
157         * genmdesc.pl: remove dependency on external cpp.
158
159 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
160
161         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
162         using LLVM, its not needed, and abcrem can't handle it.
163
164 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
165
166         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
167         it easier to group instructions and reduce duplication.
168
169 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
170
171         * decompose.c: Move the array/soft float decompose routines here from
172         method-to-ir.c.
173
174         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
175
176 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
177
178         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
179         to tell LLVM that the got is constant, not used yet.
180
181         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
182
183 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
184
185         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
186         managed wrappers.
187
188 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
189
190         * aot-compiler.c (add_wrappers): Commit the hack which generates
191         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
192         custom attribute.
193
194 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
195
196         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
197         a fault, only used by the LLVM backend.
198
199         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
200         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
201
202         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
203         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
204
205         * mini-llvm.c: Only generate volatile loads from load instructions which have
206         the MONO_INST_FAULT flag set.
207
208 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
209
210         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
211         64 bit platforms.
212
213 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
214
215         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
216         sequence points. Fixes #571236.
217
218 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
219
220         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
221         end of the appdomain unload process, after assemblies have been unloaded.
222         Fixes #574842.
223
224 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
225
226         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
227         works.
228
229         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
230         Fixes #573988.
231
232 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
233
234         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
235
236 2010-01-26  Geoff Norton  <gnorton@novell.com>
237
238         * aot-compiler.c: Fix a logic error introduced when guarding against enums
239         with struct marshalability.
240
241 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
242
243         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
244         it supports class names as well.
245
246         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
247         needed by the GC map code.
248
249         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
250         flags if needed.
251
252         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
253         if cfg->init_ref_vars is set.
254
255         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
256         cfg->disable_initlocals_op_refs is set.
257
258         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
259         using liveness info if cfg->compute_precise_live_ranges is set.
260
261         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
262         volatile variables correctly. Add comments about the live ranges. Not enabled
263         yet.
264
265 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
266
267         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
268         0x2a into them in method prologs.
269
270         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
271
272 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
273
274         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
275         classes, since llvm is compiled with -fno-rtti.
276
277         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
278
279         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
280         llvm does not require it.
281
282         * aot-runtime.c (load_method): Print the full name of the last aot method.
283
284 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
285
286         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
287         thread has not fully started yet.
288
289 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
290
291         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
292
293 2010-01-21  Miguel de Icaza  <miguel@novell.com>
294
295         * driver.c: Do not abort if LLVM is not supported, print a
296         warning and add the information to the Mono JIT information.
297
298 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
299
300         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
301         using explicit null checks.
302
303 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
304
305         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
306         related code.
307
308         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
309         () in one place.
310         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
311         its no longer needed.
312
313         * method-to-ir.c (mono_method_to_ir): Fix a warning.
314
315         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
316         define for platforms still using it (s390). Get rid of the
317         mono_arch_get_throw_exception_by_name () routines on all other platforms.
318
319         * exceptions-x86.c: Rework the throw trampolines so there is only one function
320         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
321
322         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
323         the caller pushed the arguments.
324
325         * mini-llvm.c: Enable throwing exceptions on x86.
326
327         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
328         "Thread (nil) may have been prematurely finalized" messages if this is called
329         on a thread not registered with the runtime.
330
331         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
332
333 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
334
335         * jit-icalls.c (mono_array_new_3): New jit icall.
336
337         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
338
339         * arrays.cs: Add a test for 3 dimensional arrays.
340
341 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
342
343         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
344         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
345         used.
346
347         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
348         thrown on x86.
349
350         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
351
352         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
353
354         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
355
356 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
357
358         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
359           HOST_WIN32.  Also including winsock2. to define struct in_addr.
360
361         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
362
363         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
364
365         Code is contributed under MIT/X11 license.
366
367 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
368
369         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
370
371         * branch-opts.c (mono_optimize_branches): Honor the new flag.
372
373         * mini.c (mini_method_compile): Set the new flag when running under the
374         debugger.
375
376 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
377
378         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
379         a ref/noref value + a global pin flag, so parts of stack frames can still be
380         precisely marked even if they include stuff which needs pinning. Improve logging.
381         Fix many bugs. Not enabled yet.
382
383         * gc-test.cs: Add a few tests.
384
385         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
386         the normal -v options. Avoid propagating liveness information through bblocks
387         which end with a NOT_REACHED opcode.
388
389         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
390         after cfg has been freed.
391
392 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
393
394         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
395         if a clause is skipped because it uses the exception object, since it could
396         have caught the exception.
397
398         * exceptions.cs: Add a test.
399
400 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
401
402        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
403
404         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
405         ICollection<T> wrappers.
406
407 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
408
409         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
410
411 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
412
413         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
414         NOMAP32BIT or optimize_for_xen is set.
415
416 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
417
418         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
419         mono_metadata_str_hash () instead.
420
421 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
422
423         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
424         sizeof (void*).
425
426         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
427
428 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
429
430         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
431         flag is set.
432
433         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
434         throwing code correctly.
435
436         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
437
438 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
439
440         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
441         ftnptrs created by us, handle RGCTX_FETCH correctly.
442         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
443
444         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
445         ftnptr added by mono_aot_get_named_code ().
446
447 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
448
449         * mini-arm.c: Fix a few LLVM problems.
450
451         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
452
453 2010-01-13  Mark Probst  <mark.probst@gmail.com>
454
455         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
456         AOT compiling.
457
458 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
459
460         * jit.h, method-to-ir.c: added ability to set the policy for
461         inserting breakpoints from the break IL instruction or the
462         Debugger.Break () API call.
463
464 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
465
466         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
467         assemblies need to be eagerly loaded.
468
469 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
470
471         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
472
473 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
474
475         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
476         an argument which matches any exception.
477
478 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
479
480         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
481         optimization if the called method is gshared and marshalbyref, since gshared
482         methods can' have wrappers. Fixes #569390.
483
484         * generics.cs: Add a test.
485
486 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
487
488         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
489         callable from gdb.
490
491 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
492
493         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
494
495 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
496
497         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
498         since it is not supported in win2000.
499
500 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
501
502         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
503         error if loading an assembly fails.
504         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
505
506         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
507         if exists.
508
509         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
510         compiled methods.
511
512         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
513
514         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
515         is not supported yet.
516
517         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
518
519 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
520
521         * method-to-ir.c: All types with variant arguments must fallback to the
522         slow path. This makes cast of variant delegates work.
523
524         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
525         argument that is set to TRUE is the returned vtable slot is for a variant
526         interface. Changed a g_print + g_assert_not_reached to a g_error.
527
528         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
529         a similar fashion of generic virtual methods.
530
531 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
532
533         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
534         when cfg is null.
535
536         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
537         method using a variance aware function.
538
539         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
540
541 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
542
543         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
544         do an icall for now.
545
546 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
547
548         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
549         If LLVM decides to set the code model to Large, reset it to Default.
550
551 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
552
553         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
554         stripped binaries as well.
555
556 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
557
558         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
559         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
560
561         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
562         reg.
563
564 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
565
566         * mini.c (mini_method_compile): Extract the JIT info creation code into a
567         separate function.
568
569         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
570         as the type info to llvm.eh.selector.
571         (exception_cb): Use the type info for filling out some fields of
572         MonoJitExceptionInfo like the flags and the exception class. This is needed
573         because the LLVM produced exception handling clauses might not match the original
574         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
575
576         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
577         separate function. Add an extra argument which returns the type infos
578         corresponding to the exception clauses.
579
580         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
581         exception handling clauses.
582
583 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
584
585         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
586         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
587         to fix an AOT case.
588
589 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
590
591         * mini.c (mono_compile_is_broken): Skip methods from serialization's
592         internal assembly.
593
594 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
595
596         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
597         llvm code.
598
599 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
600
601         * mini.c (mini_method_compile): Verify the method before calling
602         mono_compile_create_vars as this might crash since it uses method
603         information.
604
605         Fixes #560196.
606
607 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
608
609         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
610         one case if AOTing, since the class might not be a concrete class.
611
612 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
613
614         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
615         functions which are now defined in mempool-internals.h.
616
617         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
618
619         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
620
621 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
622
623         * mini.c:
624         * method-to.ir.c:
625         * mini-*.c: Properly handle generic enums.
626
627         Fixes #566294
628
629 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
630
631         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
632         in a few more places.
633
634 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
635
636         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
637         nullable parameters. Fixes #567351.
638
639 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
640
641         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
642
643 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
644
645         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
646         mono_get_generic_context_from_code () call.
647
648         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
649
650 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
651
652         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
653         needed.
654
655 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
656
657         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
658         mono_method_get_signature returns NULL. Fix #567084
659
660 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
661
662         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
663         instead of once for each module.
664
665 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
666
667         * debugger-agent.c (ss_start): Implement step over for the last sequence
668         point in methods.
669
670         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
671         have the STEP_LOC flag set.
672
673         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
674         fails. Fixes #566689.
675
676 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
677
678         * mini.c (mono_add_seq_point): New helper function.
679         (mono_save_seq_point_info): New function to save sequence point info, extracted
680         from mini_method_compile ().
681
682         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
683
684         * mini.h (MonoSeqPointInfo): New structure containing information about
685         the sequence points of a JITted method.
686         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
687         'bucket' field.
688
689         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
690         point information is stored, use a MonoSeqPointInfo structure instead of a
691         GPtrArray. For each seq point, compute a list of successor seq points.
692
693         * debugger-agent.c: Use the successor list to implement step-over more
694         efficiently: instead of single stepping until a different line/IL offset is
695         reached, place breakpoints into all successor seq points.
696
697         * mini.h: Bump AOT file format version.
698
699 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
700
701         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
702
703         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
704
705 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
706
707         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
708         build.
709
710 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
711
712         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
713         alloca as g_malloc is not signal safe.
714
715 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
716
717         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
718         VALGRIND_DISCARD_TRANSLATIONS.
719
720         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
721         checks, they are no longer needed.
722
723         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
724         a function into a sigctx which can handle function pointers.
725
726         * mini-ppc.c: Implement soft debugger support on ppc64.
727
728         * mini-ppc.c: Implement soft debugger support.
729
730 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
731
732         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
733
734 2009-12-17  Marek Habersack  <mhabersack@novell.com>
735
736         * mini.c (mono_get_runtime_build_info): include Mono version in
737         the returned value.
738
739         * driver.c (mono_main): VERSION is now included in the string
740         returned from mono_get_runtime_build_info()
741
742 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
743
744         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
745         signatures. Fixes #565143.
746
747         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
748
749 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
750
751         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
752
753 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
754
755         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
756         making max stack 10x smaller.
757
758 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
759
760         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
761
762 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
763
764         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
765
766 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
767
768         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
769         bigger than MONO_ARCH_MAX_FRAME_SIZE.
770
771         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
772
773         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
774
775         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
776
777         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
778         the compilation.
779
780 2009-12-14  Miguel de Icaza  <miguel@novell.com>
781
782         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
783         raise an invalid program exception.   
784
785         For other opcodes that we might not handle use a g_warning and
786         raise the exception.   Beats termination.
787
788         Fixes #561724
789
790 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
791
792         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
793
794         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
795         by merging the LLVM and !MAP_32BIT cases.
796
797 2009-12-13 Jonathan Chambers <joncham@gmail.com>
798
799         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
800         sigctx being passed in, as we have no CONTEXT available in the APC.
801
802         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
803         for now.
804
805         Code contributed under MIT/X11 license.
806
807 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
808
809         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
810         in the LLVM backend on AMD64.
811
812         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
813         FDE.
814
815         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
816
817         * mini-llvm.c: Export mono_personality for AOT.
818
819         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
820
821         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
822         implicit exception can occur.
823
824         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
825         OP_IMPLICIT_EXCEPTION instruction.
826
827         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
828
829         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
830
831         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
832         inside a protected block.
833
834         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
835         trampolines doesn't include the argument.
836
837         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
838         trampolines on amd64.
839
840         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
841         of RDI.
842
843         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
844         disabled for methods with clauses.
845
846         * mini-llvm.c: Enable support for catch clauses.
847
848         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
849         end of an LLVM compiled finally clause.
850         (mono_handle_exception_internal): Save the exception handling state in TLS
851         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
852         resume unwinding from that point.
853
854         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
855         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
856         to obtain the addresses of the exception handling regions.
857
858         * mini-llvm.c: Add beginnings of support for exception handling, currently only
859         finally clauses are supported.
860
861         * mini.c (mini_method_compile): Add support for LLVM code with exception
862         handlers.
863
864 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
865
866         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
867         proper size.
868
869 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
870
871         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
872         as a primitive type.
873
874 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
875
876         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
877         for 2 parameter sched_setaffinity in older glibc versions. Fixes
878         #564000.
879
880 2009-12-11  Marek Habersack  <mhabersack@novell.com>
881
882         * method-to-ir.c (mini_redirect_call): do not redirect the
883         InternalAllocateStr internal call if string profiling is enabled.
884
885 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
886
887         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
888         generic methods.
889
890         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
891         unwind.h header file.
892
893         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
894         newer valgrind versions seems to handle this fine.
895
896 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
897
898         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
899         on the debugger thread.
900
901 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
902
903         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
904
905         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
906
907         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
908
909         * cpu-<ARCH>.md: Make call_handler clob:c.
910
911         * mini.c: Reenable SSA for methods with clauses.
912
913         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
914         as it causes failures on x86.
915
916 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
917
918         * driver.c: Fail gracefully with --compile-all if mono_method_signature
919         returns NULL (e.g. a bad assembly).
920
921 2009-12-08  Geoff Norton  <gnorton@novell.com>
922
923         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
924         stepping out into native code.  There were issues with nested invokes
925         like .cctors.
926
927 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
928
929         * mini.c (mini_method_compile): Do the disable_llvm checks early
930         and avoid the LLVM compile pass if the checks fail.
931
932         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
933
934         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
935         LLVM optimizations don't try to remove them.
936
937         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
938         different file so the original remains.
939
940 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
941
942         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
943
944         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
945
946         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
947         support for non-inline unwind descriptors.
948
949 2009-12-07  Geoff Norton  <gnorton@novell.com>
950
951         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
952         the interrupt_count slightly differently.  Native threads were never
953         marked as resumed.
954
955 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
956
957         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
958         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
959         yet generate this info.
960
961         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
962
963         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
964         client can distinguish between intptrs and longs.
965
966 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
967
968         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
969         blob.
970
971         * aot-runtime.c (load_function): Update after the change above.
972
973         * mini.h: Bump AOT file format version.
974
975         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
976         if the delegate class is dynamic.
977
978         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
979         in gshared code too using the new rgctx info type
980         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
981
982 2009-12-04  Geoff Norton  <gnorton@novell.com>
983
984         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
985         we need to track the original suspend count so the thread properly
986         wakes up in resume_thread.
987
988 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
989
990         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
991         code.
992
993         * generics.cs: Add a test.
994
995         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
996         is 0. Simplify a lot of code using this.
997
998         * mini-trampolines.c (mono_delegate_trampoline): Call
999         mono_create_static_rgctx_trampoline () before saving the final address in
1000         delegate->method_code, to avoid calling it each time a delegate is first called.
1001
1002         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
1003         which need static rgctx trampolines.
1004
1005         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
1006         keyed on the method+addr pair, since addr could be either the method addr or
1007         an unbox trampoline in the AOT case. Fixes #560246.
1008
1009 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1010
1011         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
1012         place it was called before too.
1013
1014 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1015
1016         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
1017         if no security manager is present, to speed up the AOT case. Call
1018         mono_class_vtable () full with raise_on_error == TRUE instead.
1019
1020 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1021
1022         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
1023         the local optimization passes can take its result into account. Fixes
1024         #559876.
1025
1026         * exceptions.cs: Add a test.
1027
1028 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
1029
1030         This patch is contributed under the terms of the MIT/X11 license
1031
1032         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
1033
1034 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1035
1036         * mini.h (MonoInst): Remove unused 'ssa_op' field.
1037
1038         * debugger-agent.c: Rework the handling of stack traces of running threads to
1039         avoid crashes if compute_frames () tries to walk the stack of running thread.
1040
1041         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
1042
1043         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
1044
1045         * mini.h (StackFrameInfo): Add an 'lmf' field.
1046
1047 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
1048
1049         * debugger-agent.c (suspend_current): Always set really_suspended.
1050
1051         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
1052
1053         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
1054
1055 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
1056
1057         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
1058         really suspended.
1059
1060 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
1061
1062         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
1063
1064 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
1065
1066         * mini-trampolines.c: Fix MSVC build.
1067
1068 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
1069
1070         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
1071
1072 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
1073
1074         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
1075         the instruction following an OP_FCOMPARE is optimized away.
1076
1077 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
1078
1079         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
1080         emit_autoreg () into this arch-specific function.
1081
1082         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
1083         code, it is no longer needed.
1084
1085         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
1086
1087         * mini.h: Bump AOT file format version.
1088
1089         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
1090         using the sorted_code_offsets array, instead of reading it from the
1091         exception debug info.
1092         (load_method): Call mono_aot_find_jit_info instead of
1093         decode_exception_debug_info ().
1094
1095         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
1096         LLVM compiled as a flag.
1097
1098 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
1099
1100         * debugger-agent.c (resume_thread): Fix a warning.
1101
1102         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
1103         generated.
1104
1105 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
1106
1107         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
1108         contents to MonoAotFileInfo.
1109
1110 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
1111
1112         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
1113         Put all binary data into a giant blob, similarly to the way .net assemblies
1114         store binary data. Emit offset tables in a compact form to reduce their size.
1115
1116         * mini.h: Bump AOT file format version.
1117
1118         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
1119         places.
1120
1121         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
1122         avoid linear searches at runtime.
1123
1124         * aot-runtime.c (find_symbol): Update this to use the hash.
1125
1126         * mini.h: Bump AOT file format version.
1127
1128 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
1129
1130         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
1131         container.
1132
1133         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
1134         too.
1135
1136         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
1137         the distribution of got slot types.
1138
1139         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
1140
1141         * method-to-ir.c: Add support for generating explicit null checks.
1142
1143 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
1144
1145         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
1146         on a random thread if possible.
1147
1148         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
1149         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
1150         correctly.
1151
1152         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
1153         regs. Pass the real size of the regs array to mono_unwind_frame ().
1154
1155         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
1156         ones instead.
1157
1158 2009-11-24  Geoff Norton  <gnorton@novell.com>
1159
1160         * mini-darwin.c: Work around apple bug rdar://7209349  See
1161         http://openradar.appspot.com/7209349 for details.  Synopsis,
1162         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
1163         never been initialized before.
1164
1165 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1166
1167         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
1168
1169         * mini-arm.c (mono_arm_thumb_supported): New helper function.
1170
1171 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1172
1173         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
1174         OP_SHL_IMM is not 32 bit.
1175
1176 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1177
1178         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
1179
1180 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1181
1182         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
1183         encountered.
1184
1185         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
1186         > 0 since some threads can resume if their resume_count is > 0.
1187         (invoke_method): Avoid reading freed memory.
1188
1189         * debugger-agent.c (process_suspend): Extract the suspend code from
1190         process_single_step_inner () to a separate function. Rework the code to prevent
1191         races between this function and thread interrupts.
1192
1193         * debugger-agent.c (suspend_current): Check the resume_count field instead
1194         of resume_one so suspends+resumes during single threaded invokes work
1195         correctly.
1196
1197 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
1198
1199         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
1200         to make the generated code smaller.
1201
1202         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
1203         sequence generated by recent LLVM versions.
1204
1205         * mini-llvm.c: Add support for a few simple cases which weren't supported
1206         before.
1207
1208         * mini-trampolines.c (mono_magic_trampoline): Don't call
1209         mono_arch_get_vcall_slot () when llvm is enabled.
1210
1211         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
1212
1213         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
1214         into a new function called common_call_trampoline () which is used by the
1215         llvm vcall trampoline as well.
1216
1217         * debugger-agent.c: Implement single threaded invokes.
1218
1219         * debugger-agent.c: Revert change which broke the agent on linux.
1220
1221         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
1222         #557606.
1223
1224         * generics.cs: Add a test.
1225
1226 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
1227
1228         * debugger-agent.c: Fix the cygwin build.
1229
1230 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1231
1232         * cprop.c: Remove this unused file.
1233
1234 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1235
1236         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
1237         #557262.
1238
1239         * basic.cs: Add a test.
1240
1241 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1242
1243         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
1244         in one more place.
1245
1246 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
1247
1248         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
1249         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
1250         it. Use this flag to control llvm related code paths instead of #ifdef
1251         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
1252         AOT code.
1253
1254         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
1255
1256         * mini.h: Bump AOT file format version.
1257
1258         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
1259         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
1260
1261         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
1262         was used as an assembly filter.
1263
1264 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1265
1266         * unwind.c: Fix support for ppc.
1267
1268         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
1269         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
1270
1271 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1272
1273         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
1274         port.
1275         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
1276         added by the ps3 changes.
1277
1278 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1279
1280         * mini-gc.c: Resurrect this, so at least it compiles.
1281
1282         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
1283
1284 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
1285
1286         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
1287         create_event_list () so assembly filters can be used.
1288
1289         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
1290         from the LMF.
1291
1292 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
1293
1294         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
1295         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
1296         is disabled.
1297
1298         * aot-compiler.c (add_generic_instances): Emit instances of common generic
1299         classes for char/bool too.
1300
1301         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
1302
1303         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
1304         used.
1305
1306         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
1307         Fix warnings.
1308
1309 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
1310
1311         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
1312         
1313         Code contributed under MIT/X11 license.
1314
1315 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
1316
1317         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
1318         threads in native code work.
1319
1320         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
1321         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
1322         version.
1323
1324 2009-11-13 Jonathan Chambers <joncham@gmail.com>
1325
1326         * debugger-agent.c: Implementation for Windows platform.
1327
1328         * mini-x86.c: Add support for Windows. Use mono-* synchronization
1329         primitives. Use SEH to implement breakpoints and single stepping.
1330
1331         * mini-x86.h: Enable soft debugger on Windows.
1332
1333         Code contributed under MIT/X11 license.
1334
1335 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
1336
1337         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
1338         under XEN. Fixes #522894.
1339
1340         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
1341
1342         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
1343         interface calls in LLVM AOT code.
1344
1345         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
1346         is found.
1347
1348         * mini-llvm.c: Add support for OP_VPHI.
1349
1350         * objects.cs: Add a test.
1351
1352 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
1353
1354         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
1355         this is called on the debugger thread.
1356
1357 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
1358
1359         * mini-llvm.c: Add soft-float support.
1360
1361         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
1362         FCALL which returns an R4.
1363
1364         * driver.c (mono_main): Add a missing '\n'.
1365
1366         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
1367         platforms which doesn't support the LLVM IMT trampoline.
1368
1369 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
1370
1371         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
1372
1373         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
1374
1375         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
1376         virtual calls.
1377
1378         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
1379
1380 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
1381
1382         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
1383         Instead of emitting a method_order table, sort the contents of the code_offsets
1384         table and do a binary search in the sorted table. The previous approach doesn't
1385         work with LLVM which emits methods in a arbitrary order.
1386
1387         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
1388         in the .eh_frame section in ELF files.
1389
1390         * mini.h: Bump corlib file format version.
1391
1392         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
1393
1394         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
1395         LDMIA->LDM macro name change.
1396
1397 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
1398
1399         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
1400         x86.
1401
1402         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
1403         SVN.
1404
1405         * aot-compiler.c: Ditto.
1406
1407         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
1408         &align to mini_type_stack_size_full ().
1409
1410         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
1411
1412         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
1413
1414 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
1415
1416         * mini-arm.c: Compute the stack space used by arguments using
1417         mini_type_stack_size_full ().
1418
1419 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
1420
1421         * optflags-def.h: Remove dead TREEPROP optimization.
1422
1423 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
1424
1425         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
1426
1427         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
1428
1429 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
1430
1431         * driver.c (mono_jit_parse_options): New public API function to parse options
1432         as done by the runtime executable.
1433
1434         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
1435         when handling named arguments.
1436
1437 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
1438
1439         * mini-arm.c: Implement support for returning vtypes in registers, fix support
1440         for passing small vtypes in registers, make the CallInfo structures more
1441         similar to the code on the other platforms.
1442
1443         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
1444         the code in the prolog requires it.
1445
1446 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
1447
1448         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
1449         (koush@koushikdutta.com).
1450
1451         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
1452         where the thunk memory should be allocated from. Fixes appdomain unloading
1453         on arm.
1454
1455 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
1456
1457         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
1458         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
1459
1460 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1461
1462         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
1463         AOT, as it is not implemented yet.
1464
1465         * mini-x86.c (mono_arch_output_basic_block): Ditto.
1466
1467 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1468
1469         * debugger-agent.c: Fix windows build.
1470
1471 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1472
1473         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
1474         after the client connects/disconnects.
1475
1476         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
1477         when an exception of a given type is thrown.
1478
1479         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
1480         only on an uncaught exception.
1481
1482         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
1483
1484         * debugger-agent.c: Add a 'launch' option.
1485
1486 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1487
1488         * debugger-agent.c: Add a 'timeout' option.
1489
1490 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1491
1492         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
1493         the JDWP agent.
1494
1495 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1496
1497         * debugger-agent.c (set_breakpoint): Emit a log message.
1498
1499 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
1500
1501         * mini-arm.c: Fix the arm build.
1502
1503 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
1504
1505         * aot-compiler.c: don't leak the value returned from
1506         mono_type_full_name().
1507
1508 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
1509
1510         * debugger-agent.c: defer including mono-mutex.h until we know the
1511         agent is supported.
1512
1513 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1514
1515         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
1516         of pthreads directly.
1517
1518         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
1519         exception handlers. Pass info argument.
1520
1521         * mini.h: Adjust signatures of soft debugger functions to pass void*
1522         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
1523
1524         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
1525         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1526         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
1527         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1528
1529         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
1530
1531         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
1532         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1533         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
1534         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1535
1536         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
1537
1538         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
1539
1540         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
1541
1542         * mono-semaphore.h: Skeleton implementation for Windows.
1543
1544         Code contributed under MIT/X11 license.
1545
1546 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1547
1548         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
1549
1550         Code contributed under MIT/X11 license.
1551
1552 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1553
1554         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
1555
1556         Code contributed under MIT/X11 license.
1557
1558 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
1559
1560         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
1561         debug info to 100 because 10 still slows down gdb too much.
1562
1563         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
1564         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
1565         them in the wrappers.
1566
1567 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
1568
1569         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
1570
1571         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
1572
1573         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
1574         function mono_aot_get_array_helper_from_wrapper ().
1575
1576         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
1577         array helper methods.
1578
1579 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1580
1581         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
1582         the value was loaded from memory.
1583
1584         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
1585         the value was loader from there.
1586
1587         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
1588         without constant swizzle.
1589
1590 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1591
1592         * mini-amd64.c: Put soft debugger functions behind a
1593         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
1594
1595         * mini-amd64.h: disable the soft debugger in windows.
1596
1597         Code contributed under MIT/X11 license.
1598
1599 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1600
1601         * mini-x86.c: Put soft debugger functions behind a
1602         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
1603
1604         Code contributed under MIT/X11 license.
1605
1606 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1607
1608         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
1609         to mono_arch_find_jit_info_ext.
1610
1611         Code contributed under MIT/X11 license.
1612
1613 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
1614
1615         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
1616
1617         * debugger-agent.c: Add support for filtering events by assemblies.
1618
1619         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
1620         the agent is not enabled.
1621
1622 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1623
1624         * exceptions-x86.c: hopefully last change to fix the windows build.
1625         This one courtesy of Jonathan Chambers.
1626
1627 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1628
1629         * debugger-agent.c: remove unused function.
1630
1631 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1632
1633         * debugger-agent.c: add #ifdefs for a few header files.
1634         * mini-x86.h: disable the soft debugger in windows.
1635         Step 1 of 2 to make this compile on windows with gcc.
1636
1637 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
1638
1639         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
1640         as it breaks the build.
1641
1642 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
1643
1644         Merge the soft debugger branch.
1645
1646         * debugger-agent.h debugger-agent.c: New files containing the soft
1647         mode debugger module.
1648
1649         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
1650         at the appropriate locations.
1651
1652         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
1653         opcode.
1654
1655         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
1656         enable/disable single stepping.
1657
1658         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
1659         which returns all information in a StackFrameInfo structure, and can handle the
1660         LMF frames added by the debugger.
1661
1662         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
1663         about an LMF frame.
1664
1665         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
1666         walker function which works on a specific thread and passes a StackFrameInfo
1667         structure to its callback.
1668
1669         * mini.c (mini_init): Initialize the debugger agent.
1670
1671         * aot-compiler.c aot-runtime.c: Add soft-debug support.
1672
1673         * mini-ops.h: Add OP_SEQ_POINT opcode.
1674
1675         * driver.c (mono_main): Add new '--debugger-agent' option for passing
1676         arguments to the debugger agent.
1677
1678 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
1679
1680         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
1681         speed things up.
1682
1683         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
1684
1685         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
1686
1687         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
1688
1689         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
1690         if needed.
1691         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
1692         sets the IMT argument and makes a virtual call.
1693
1694         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
1695
1696 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
1697
1698         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
1699         the windows build.
1700
1701 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
1702
1703         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
1704         runtime. Fixes #551228.
1705
1706 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
1707
1708         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
1709
1710         * basic.cs: Add a test.
1711
1712         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
1713         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
1714         CONSTRAINED. Fixes #550964.
1715
1716         * generics.cs: Add a test.
1717
1718 2009-10-28  Mark Probst  <mark.probst@gmail.com>
1719
1720         * mini-posix.c (add_signal_handler): Use
1721         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
1722
1723 2009-10-28 Jerry Maine <crashfourit@gmail.com>
1724
1725         Contributed under the terms of the MIT/X11 license by
1726         Jerry Maine <crashfourit@gail.com>.
1727
1728         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
1729         sse4a for simd intrinsics.
1730
1731         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
1732         sse4a for simd intrinsics.
1733
1734 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
1735
1736         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
1737         instead of inst_p1 which is not the same on ILP32 platforms.
1738
1739 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
1740
1741         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
1742         not the mscorlib one before calling mono_get_lmf_addr.
1743
1744         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
1745         of the ip to the LMF.
1746
1747         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
1748         immediate in the op->op_imm optimization.
1749
1750         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
1751         understand. VTypes now work, but are not abi compliant, as they are
1752         split into 4 byte parts instead of 8.
1753         (emit_memcpy): Fix the unrolled case to work on the PS3.
1754
1755         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
1756
1757         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
1758         the default when static linking.
1759
1760         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
1761
1762         * aot-compiler.c: Add an autoreg option to automatically register
1763         statically linked aot modules using ELF .ctors.
1764
1765         * genmdesc.pl: Add __ppc64__ to allowed defines.
1766
1767 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
1768
1769         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
1770         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
1771
1772 2009-10-24  Mark Probst  <mark.probst@gmail.com>
1773
1774         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
1775
1776 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
1777
1778         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
1779         which will contain the domain where the method was found.
1780
1781         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
1782         mini_jit_info_table_find ().
1783
1784         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
1785
1786         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
1787
1788 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
1789
1790         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
1791         set, its not supported yet.
1792
1793 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
1794
1795         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
1796         iface wrapper is not found.
1797         (mono_aot_get_method): Ditto for GetGenericValueImpl.
1798
1799 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
1800
1801         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
1802         which have a different name.
1803
1804         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
1805         wrappers and Array.GetGenericValueImpl ().
1806
1807         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
1808         because of the change above.
1809
1810         * generics.cs: Add a test for full aot + generic array ifaces.
1811
1812 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
1813
1814         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
1815         that hides the previous one.
1816
1817 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
1818
1819         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
1820         marshalled. Fixes #541623.
1821
1822 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
1823
1824         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
1825
1826 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
1827
1828         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
1829
1830 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1831
1832         * mini-posix.c (sigprof_signal_handler):
1833         Implemented support for building stat call chans in different ways.
1834
1835 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1836
1837         * mini-exceptions.c (mono_find_jit_info):
1838         Also check that a jit info has been found (fixes a profiler crash).
1839
1840 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1841
1842         * mini.c (mono_codegen):
1843         Call mono_profiler_code_buffer_new with correct code address.
1844
1845 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
1846
1847         * driver.c (mono_main): Change the date in the copyright.
1848
1849 2009-10-14  Mark Probst  <mark.probst@gmail.com>
1850
1851         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
1852         allocator in shared generic code for open classes, because we
1853         can't get those classes' vtables.  We need to make managed
1854         allocators not depend on the vtable at compile-time to solve this.
1855
1856 2009-10-13  Martin Baulig  <martin@ximian.com>
1857
1858         * debug-mini.c (mono_debugger_trampoline_compiled): Add
1859         `const guint8 *trampoline' argument; send both the old and the new
1860         notification.
1861
1862 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
1863
1864         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
1865         mono_runtime_capture_context () without calling mono_runtime_invoke ().
1866         (can_marshal_struct): Skip structures with auto layout.
1867
1868         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
1869
1870 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
1871
1872         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
1873         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
1874         a variable to hold the stack slot used by the int<->float conversion opcodes.
1875
1876         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
1877
1878 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
1879
1880         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
1881         when using full-aot.
1882
1883 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
1884
1885         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
1886         each instance of Comparer<T>.
1887
1888         * generics.cs: Add a new test.
1889
1890 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
1891
1892         * driver.c (parse_debug_options): Add a 'gdb' option.
1893
1894         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
1895
1896         * image-writer.c: Add support for emitting the image into a memory buffer.
1897
1898         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
1899
1900         * aot-compiler.c: Add support for registering debug info with GDB using the
1901         new JIT debugging interface in GDB 7.0. It can be turned on by setting
1902         MONO_XDEBUG to 'gdb'.
1903
1904 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
1905
1906         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
1907         gdb mode.
1908
1909 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
1910
1911         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
1912         can be used to set breakpoints in gdb.
1913
1914         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
1915         segment to an absolute address.
1916
1917 2009-10-13  Mark Probst  <mark.probst@gmail.com>
1918
1919         * method-to-ir.c: Use the managed array allocator method if
1920         available.
1921
1922 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
1923
1924         * aot-compiler.c : Fix the MSVC builds
1925
1926         Code is contributed under MIT/X11 license.
1927
1928 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
1929
1930         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
1931         avoid registering 1 symbol file per method with gdb.
1932
1933 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
1934
1935         * mini-sparc.c: Fix the handling of enums with base type long.
1936
1937         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
1938
1939         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
1940         instead of using type->data.klass as the later doesn't work with generics.
1941
1942 2009-09-25  Mark Probst  <mark.probst@gmail.com>
1943
1944         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
1945         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
1946         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
1947         works differently now and we don't handle it in the JIT anymore.
1948
1949         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
1950         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
1951         the Thread class split.
1952
1953 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
1954
1955         * driver.c: Don't run tests with the obsolete treeprop optimization.
1956
1957         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
1958         variable volatile. Fixes #541577.
1959
1960         * basic-calls.cs: Add a new test.
1961
1962         * basic-long.cs: Remove tests which are now in basic-calls.cs.
1963
1964 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
1965
1966         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
1967         work/required with recent iphone sdk versions.
1968
1969         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
1970         structures.
1971
1972         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
1973         in the VCALL decomposition code.
1974
1975 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
1976
1977         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
1978
1979         * basic.cs: Add a test.
1980
1981         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
1982         generic invokes.
1983
1984         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
1985         searches all the domains of the current thread.
1986
1987         * exceptions-<ARCH>.c: Use it. Fixes #539394.
1988
1989 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
1990
1991         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
1992         so catching exceptions thrown in the same method works. Fixes exception17.exe.
1993
1994         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
1995         for non-jit trampolines.
1996
1997         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
1998
1999         * aot-compiler.c (add_wrappers): Ditto.
2000
2001         * mini-arm.c: Implement support for passing vtypes and floats, and increase
2002         the size of the param area used by dyn_call to 6 which covers the majority of
2003         methods.
2004
2005         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
2006
2007         * mini-arm.c: Implement support for passing/receiving
2008         longs and receiving floats in the dyn_call code.
2009
2010         * mini-amd64.c: Implement support for receiving vtypes in registers in
2011         the dyn_call code.
2012
2013         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
2014         the dyn_call code.
2015
2016 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
2017
2018         * mini-arm.c (get_call_info): Return more precise information in
2019         ArgInfo->regtype.
2020         (dyn_call_supported): Use the information in CallInfo.
2021
2022         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
2023
2024         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
2025         code.
2026
2027         * mini-arm.c: Update after the dyn_call api changes.
2028
2029         * mini.c (mini_create_jit_domain_info): Register a destructor function
2030         for the runtime_invoke_hash.
2031
2032         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
2033         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
2034         this function.
2035         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
2036         (dyn_call_supported): Simplify this by using get_call_info ().
2037         (mono_arch_dyn_call_free): New destructor function.
2038
2039         * generics.cs: Remove a printf.
2040
2041         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
2042
2043         * mini-arm.c: Add support for enum return values and passing a few arguments
2044         on the stack.
2045         
2046         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
2047         dyn invoke.
2048
2049         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
2050
2051         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
2052         the dynamic invoke wrappers.
2053
2054         * mini-arm.c: Implement OP_DYN_CALL for arm.
2055
2056         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
2057         supported by the dynamic runtime invoke wrapper.
2058
2059         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
2060         runtime invoke wrapper.
2061
2062         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
2063         if possible when running with full-aot.
2064
2065         * mini-ops.h: Add OP_DYN_CALL opcode.
2066
2067         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
2068         with dynamic arguments lists similar to libffi.
2069
2070 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
2071
2072         * method-to-ir.c: Fix the previous change on 64 bit platforms.
2073         
2074         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
2075         to NEWARR.
2076
2077         * iltests.il.in: Add a new test.
2078         
2079 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
2080
2081         * aot-compiler.c (add_generic_instances): Add more instances of
2082         GenericEqualityComparer.
2083
2084 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
2085
2086         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
2087
2088 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
2089
2090         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
2091         comments on some functions that now can fail.
2092
2093 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
2094
2095         * Makefile.am: Add Info.plist to EXTRA_DIST
2096
2097 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
2098
2099         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
2100         static synchronized wrappers. Fixes #539500.
2101
2102 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
2103
2104         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
2105         properly.
2106
2107 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
2108
2109         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
2110         lmf before calling filter clauses as well. Fixes #539550.
2111
2112         * exceptions.cs: Add a test.
2113         
2114 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
2115
2116         * aot-compiler.c (add_generic_class): Add instances of
2117         Array.GetGenericValueImpl as well.
2118
2119         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
2120         can be tested too.
2121
2122         * generics.cs: Add a fullaot linq test.
2123
2124 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
2125
2126         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
2127         reg r1 on arm.
2128
2129 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
2130
2131         * mini-trampolines.c (mono_delegate_trampoline) : Call
2132           mono_cominterop_get_invoke if the delegate target object
2133           is a COM object.
2134
2135         Code is contributed under MIT/X11 license.
2136
2137 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
2138
2139         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
2140         internal call is defined outside platform code. Reduce code 
2141         duplication with existing [Method|Field]AccessException
2142
2143 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
2144
2145         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
2146         if the return value is a small struct passed on regs.
2147
2148 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
2149
2150         * cpu-arm.md mini-arm.c: Remove unused opcodes.
2151
2152         * mini-codegen.c: Enable the cpu description validation for arm.
2153
2154 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
2155
2156         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
2157         test which depends on structs to objects.cs.
2158         
2159         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
2160         require object model related stuff working.
2161
2162         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
2163
2164         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
2165
2166         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
2167         against the instruction metadata in mini-ops.h. amd64 only for now.
2168
2169         * mini-ops.h: Fix some instruction descriptions.
2170
2171         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
2172         unused instructions.
2173
2174 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
2175
2176         * exceptions.cs: Add a new test.
2177
2178 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
2179
2180         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
2181
2182 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
2183
2184         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
2185         skip empty phi opcodes.
2186         
2187         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
2188         correctly by zero extending after loads. Skip methods containing calls
2189         to the monitor enter/exit trampolines.
2190
2191         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
2192         when calling mono_thread_force_interruption_checkpoint ().
2193
2194         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
2195
2196         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
2197         64 bit thunks.
2198         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
2199
2200         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
2201         bootstrap could run.
2202
2203 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
2204
2205         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
2206
2207 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
2208
2209         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
2210         of the method to
2211         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
2212         LLVM might be very short.
2213
2214         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
2215         in OP_THROW/RETHROW.
2216
2217         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
2218         alignment on osx.
2219
2220 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
2221
2222         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
2223         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
2224         LLVM might be very short.
2225
2226 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
2227
2228         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
2229         the alignment for the value of sp.
2230
2231 2009-09-01  Geoff Norton  <gnorton@novell.com>
2232
2233         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
2234         managed wrappers in full aot.
2235
2236 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
2237
2238         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
2239
2240 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
2241
2242         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
2243
2244 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
2245
2246         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
2247
2248         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
2249         saved info.
2250
2251         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2252
2253         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
2254         depend on the info MonoMethodHeader which could be missing in IL stripped
2255         assemblies.
2256
2257 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
2258
2259         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
2260         they are only 4 byte aligned.
2261
2262 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
2263
2264         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
2265         was done previously, since using SP causes too many problems.
2266
2267         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
2268         frames without a frame pointer works.
2269
2270         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
2271         global register in methods with calls, since the calls can go through
2272         a static rgctx trampoline which doesn't save it.
2273
2274 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
2275
2276         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
2277
2278 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
2279
2280         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
2281
2282 2009-08-18  Christian Hergert  <chris@dronelabs.com>
2283
2284         * method-to-ir.c: Fix warnings for uninitialized variables.
2285
2286 2009-08-18  Christian Hergert  <chris@dronelabs.com>
2287
2288         * mini-exceptions.c:
2289         * aot-compiler.c: Fix printf warnings.
2290
2291 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
2292
2293         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
2294         Add GetGenericValueImpl<string>.
2295         
2296         * aot-compiler.c (add_generic_instances): Add instances of
2297         GenericEqualityComparer<T> for primitive types. Only emit the array
2298         wrappers into the mscorlib image.
2299
2300 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
2301
2302         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
2303         the methods_loaded array using amodule->info->nmethods.
2304
2305         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
2306         (MONO_AOT_FILE_VERSION): Bump this.
2307
2308         * aot-compiler.c: Emit more generic instances allowing some parts of linq
2309         to work.
2310
2311         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
2312         MonoJitInfo doesn't belong to its methods aot image.
2313
2314 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
2315
2316         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
2317
2318         * mini-arm.c: Fix warnings.
2319         
2320         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
2321
2322         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
2323         supports it.
2324
2325 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
2326
2327         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
2328         avoid clobbering IP.
2329
2330         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
2331         hold the trampoline argument, so its initial value is available during
2332         debugging.
2333
2334 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
2335
2336         * exceptions-arm.c:
2337         * exceptions-hppa.c:
2338         * mini.c:
2339         * exceptions-s390x.c:
2340         * exceptions-mips.c:
2341         * exceptions-ppc.c:
2342         * exceptions-sparc.c:
2343         * exceptions-alpha.c:
2344         * aot-runtime.c:
2345         * mini-trampolines.c:
2346         * exceptions-x86.c:
2347         * exceptions-s390.c: add and use #define's instead of sizeof()
2348         for MonoJitInfo and MonoJitInfoTable.
2349
2350 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
2351
2352         * tramp-arm.c:
2353         * tramp-amd64.c:
2354         * tramp-ppc.c:
2355         * tramp-x86.c: use a #define instead of sizeof() for a few
2356         structures that use a zero-length array.
2357
2358 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
2359
2360         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
2361         case when the method is dynamic. Fixes #529238.
2362
2363 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
2364
2365         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
2366         of asserting when a method is JIT compiled in full-aot mode.
2367
2368 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
2369         
2370         Contributed under the terms of the MIT/X11 license by
2371         Jerry Maine <crashfourit@gail.com>.
2372         
2373         * fixed wrong dates in changelog.
2374
2375 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
2376         
2377         Contributed under the terms of the MIT/X11 license by
2378         Jerry Maine <crashfourit@gail.com>.
2379
2380         * basic-simd.cs: added test for packed double square root.
2381         * cpu-amd64.md: added opcode info for packed double square root.
2382         * cpu-x86.md: added opcode info for packed double square root.
2383         * mini-ops.h: added IR opcode for packed double square root.
2384         * mini-x86.c: added IR to native translation code for packed double square root.
2385         * mini-amd64.c: removed todo for packed double square root.
2386         * simd-intrinsics.c: added method to IR opcode converstion for
2387         packed double square root.
2388
2389 2009-08-03 Jerry Maine <crashfourit@gmail.com>
2390
2391         Contributed under the terms of the MIT/X11 license by
2392         Jerry Maine <crashfourit@gail.com>.
2393
2394         * mini-amd64.c: Added a change to help tell the difference as 
2395         to what perpose the xmm register is being used--mainly to help
2396         with debuging.
2397         * mini-amd64.h: Changed callee regs to use 15 out of 16 
2398         (one used for special cases) xmm registers for both fp
2399         and simd ops. Added define to turn on new feature in the regalloc
2400         that allows fp and simd ops to share the xmm regs happily.
2401         * codegen.c: Added code to detect for which perpose an xmm reg is
2402         being used (fp or simd) and to translate back and forth to the
2403         correct logical reg bank (fp or simd) for 'spill load's.
2404
2405 2009-08-03 Jerry Maine <crashfourit@gmail.com>
2406
2407         Contributed under the terms of the MIT/X11 license by
2408         Jerry Maine <crashfourit@gail.com>.
2409
2410         * basic-simd.cs: Added tests for stressing the regalloc when running with
2411         16 simd regs and when simd and fp ops share the same reg bank.
2412
2413 2009-08-01  Mark Probst  <mark.probst@gmail.com>
2414
2415         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
2416         in shared generic code, we might have to look up the class in the
2417         RGCTX.  If we use the class directly, compute its GC descriptor.
2418
2419 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
2420
2421         * mini.c (mono_jit_runtime_invoke): Fix a warning.
2422
2423 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
2424
2425         * mini.c (mono_jit_runtime_invoke): Initialize the class and
2426         check for errors. Fixed the case when the class with the Main
2427         method is broken.
2428
2429 2009-07-31 Jerry Maine <crashfourit@gmail.com>
2430
2431         Contributed under the terms of the MIT/X11 license by
2432         Jerry Maine <crashfourit@gail.com>.
2433
2434         * cpu-amd64.md: Fixed simple bug in machine discrition file.
2435
2436 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
2437
2438         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
2439
2440 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
2441
2442         * method-to-ir.c: Fix naming of stelem and ldelem.
2443
2444 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
2445
2446         * driver.c (main_thread_handler): Check that the assembly loaded
2447         matches the filename when doing AOT.
2448
2449 2009-07-30  Mark Probst  <mark.probst@gmail.com>
2450
2451         * mini.c: get_ip_from_sigctx installer has been removed, so don't
2452         call it anymore.
2453
2454         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
2455         utils/mono-sigcontext.h).
2456
2457         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
2458         #ifdef.
2459
2460 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
2461
2462         * mini.c (mono_codegen):
2463         Call profiler hook to keep track of method code buffers.
2464
2465 2009-07-27  Mark Probst  <mark.probst@gmail.com>
2466
2467         * method-to-ir.c: Invoke write barriers for the
2468         Interlocked.(Compare)Exchange JIT intrinsics.
2469
2470 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
2471
2472         * Makefile.am (version.h): Fix issues when built out of tree.
2473         Remove some redundant 'grep's piped through 'sed's.
2474
2475 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
2476
2477         This patch is contributed under the terms of the MIT/X11 license
2478
2479         * mini-ppc.c (mono_arch_output_basic_block):
2480         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
2481         for bits 32-47 with signed load/store diplacements for bits
2482         48-63.  Use prefered base/offset order for indexed form.
2483         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
2484         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
2485         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
2486         OP_LOADI2_MEMBASE): Same.
2487         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
2488         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
2489         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
2490         indexed form.
2491         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
2492         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
2493         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
2494         OP_LOADI1_MEMINDEX): Same
2495         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
2496         OP_STORER8_MEMINDEX): Same
2497         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
2498         computations.
2499         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
2500         for bits 32-47 with signed load/store diplacements for bits
2501         48-63.  Use prefered base/offset order for indexed form.
2502
2503 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
2504
2505 This patch is contributed under the terms of the MIT/X11 license
2506
2507         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
2508         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
2509         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
2510         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
2511         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
2512         cfg->stack_usage to avoid size warnings.
2513         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
2514         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
2515         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
2516         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
2517         to convert.
2518         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
2519         after code varible is initialized.
2520         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
2521         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
2522         (mono_arch_emit_epilog): 
2523         Move Use ppc_load32 for cfg->stack_usage to avoid size
2524         warnings.
2525
2526 2009-07-24  Mark Probst  <mark.probst@gmail.com>
2527
2528         * method-to-ir.c: The write barrier doesn't do the store anymore,
2529         so we have always to emit it.  Also, emit the wbarrier after the
2530         store.
2531
2532 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
2533
2534         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
2535         for argument count 3 too.
2536
2537 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
2538
2539         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
2540         the caller handle the exceptions.
2541         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
2542         method. Fixes #524498.
2543
2544 2009-07-22  Geoff Norton  <gnorton@novell.com>
2545
2546         * mini-exceptions.c: Fix build on ia64.
2547
2548 2009-07-22  Mark Probst  <mark.probst@gmail.com>
2549
2550         * mini-exceptions.c (ves_icall_get_frame_info): Use write
2551         barriers.
2552
2553 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
2554
2555         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
2556         code.
2557
2558 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
2559
2560         * basic-simd.cs (Main): Pass args to the test driver.
2561
2562 2009-07-20  Geoff Norton  <gnorton@novell.com>
2563
2564         * mini-x86.h: Fix the x86 version guards to use Apple's
2565         properly defined macros.
2566
2567 2009-07-20  Geoff Norton  <gnorton@novell.com>
2568
2569         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
2570         aligned access.
2571
2572 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
2573
2574         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
2575         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
2576         the information which is needed for invokes, so only one locking+hash table
2577         lookup is needed.
2578
2579         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
2580         
2581         * aot-compiler.c (add_generic_instances): Emit instances of 
2582         GenericComparer<T> for primitive types.
2583
2584 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
2585
2586         * mini-posix.c: Fix linux build.
2587
2588 2009-07-19  Geoff Norton  <gnorton@novell.com>
2589
2590         * mini.h: Add prototypes for mono_runtime_syscall_fork and
2591         mono_gdb_render_native_backtraces
2592         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
2593         so we implement the sane semantics to the runtime here
2594         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
2595         so we need to call it differently (mono_gdb_render_native_backtraces)
2596         * mini-posix.c: Move the old semantics from mini.c to the prototypes
2597         here for default implementations.
2598         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
2599         support Apple's weird syscall (SYS_fork) implementation and not busy
2600         loop in abort() on native crashes on OSX anymore.
2601
2602 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
2603
2604         * aot-runtime.c (load_method): Change the handling of the
2605         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
2606         are used.
2607
2608         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
2609
2610 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
2611
2612         * mini.c (mono_patch_info_equal): Revert the last change for now as it
2613         seems to break the aot tests.
2614         
2615         * mini.c (mono_patch_info_equal): Fix the handling of 
2616         MONO_PATCH_INFO_RGCTX_FETCH.
2617
2618 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
2619
2620         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
2621
2622         * mini.c (mono_patch_info_hash): Fix the handling of 
2623         MONO_PATCH_INFO_INTERNAL_METHOD.
2624         (mono_patch_info_equal): Ditto.
2625
2626 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
2627
2628         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
2629         in a few places.
2630         
2631         * mini-llvm.c: Add some infrastructure for AOT support.
2632
2633 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
2634
2635         * mini-llvm-cpp.c: Update to the latest llvm api.
2636         
2637         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
2638         option to false to prevent llvm from installing signal handlers which
2639         trip up the gc.
2640         
2641 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
2642
2643         * cpu-x86.md:
2644         * cpu-amd64.md: Revert previous change as those instructions
2645         take 2 separate arguments. Remember to read the arch docs more
2646         carefully next time.
2647
2648 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
2649
2650         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
2651
2652 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
2653
2654         * mini-ppc.c: exploit multiple load/store units if available (rest of
2655         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
2656         http://bugzilla.novell.com/show_bug.cgi?id=487846).
2657
2658 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
2659
2660         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
2661         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
2662
2663 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
2664
2665         * cpu-x86.md: Fix missing clobbering from trancendental simd
2666         ops.
2667
2668         * cpu-amd64.md: Same.
2669
2670 2009-07-14 Jerry Maine <crashfourit@gmail.com>
2671
2672         Contributed under the terms of the MIT/X11 license by
2673         Jerry Maine <crashfourit@gail.com>.
2674
2675         * basic-simd.cs: Added tests for single and doulble indexers.
2676
2677         * cpu-amd64.md: Added simd opcode information.
2678
2679         * mini-amd64.c: Added IR to native simd generation code.
2680         Added simd register names and function that returns them.
2681
2682         * mini-amd64.h: Added marcos to turn on simd code compilation in
2683         amd64. Added max simd register count marco. Added caller/callee
2684         register mask marcos. Added marcos to use simd register bank.
2685
2686         * mini.h: Added helper marco for shufling dwords and simple
2687         floats.
2688
2689 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
2690
2691         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
2692
2693         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
2694
2695         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
2696         the length of the native code as well.
2697
2698         * basic-simd.cs: Add a test for #521662.
2699
2700 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
2701
2702         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
2703
2704 2009-07-13  Mark Probst  <mark.probst@gmail.com>
2705
2706         * mini.c: Register function for getting the IP from a signal
2707         context with metadata.
2708
2709 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
2710
2711         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
2712         call a generic class init trampoline if needed. Fixes #519336.
2713
2714         * generics.cs: Add a test.
2715         
2716 2009-07-09  Mark Probst  <mark.probst@gmail.com>
2717
2718         * method-to-ir.c: When doing a call which might be remote from
2719         shared generic code to other shared code with open type arguments,
2720         get the remoting invoke wrapper from the RGCTX and do an indirect
2721         call to it.
2722
2723 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
2724
2725         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
2726         after the unbox trampoline in the full-aot case.
2727
2728 2009-07-02  jonas echterhoff <jonas@unity3d.com>
2729         
2730         * mini.c: Move initialization of jit_mutex before debugger initialization
2731         
2732         to avoid crashes.
2733         
2734         
2735         * Info.plist: added Info.plist and link flag to enable the mono executable
2736         to access other processes. Requires codesigning of the executable to work.
2737         
2738         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
2739         
2740         compile on OS X.
2741         
2742
2743 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
2744
2745         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
2746
2747 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
2748
2749         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
2750         when the generic instance is an instantiation of a subclass of the
2751         methods class. Fixes #517166.
2752
2753 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
2754
2755         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
2756         code.
2757
2758         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
2759         AOTed code.
2760
2761         * CMakeLists.txt: Add minimal support for installation.
2762
2763 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
2764
2765         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
2766         determine whenever a method is directly callable to a separate function.
2767
2768         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
2769         needed ones as a result of the previous change.
2770
2771         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
2772         type of register arrays.
2773
2774         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
2775         type of register arrays.
2776
2777 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
2778         
2779         Contributed under the terms of the MIT/X11 license by
2780         Jerry Maine <crashfourit@gail.com>.
2781
2782         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
2783
2784 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
2785
2786         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
2787
2788 2009-06-24  Neale Ferguson <neale@sinenomine.net>
2789
2790         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
2791         dump of structure return value. Fix some formatting.
2792         * cpu-s390x.md: Fix lengths of instruction sequences.
2793         * mini-s390.c: Minor formatting changes.
2794
2795 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
2796
2797         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
2798         Use sigaction on freebsd as well.
2799
2800 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
2801
2802         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
2803         uses #ifdef on it.
2804         
2805         * mini.c (mini_init): Revert a change which breaks cross-compilation.
2806
2807 2009-06-22  Mark Probst  <mark.probst@gmail.com>
2808
2809         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
2810
2811 2009-06-22  Mark Probst  <mark.probst@gmail.com>
2812
2813         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
2814
2815 2009-06-20  Martin Baulig  <martin@ximian.com>
2816
2817         * debug-mini.c
2818         (MonoDebuggerThreadFlags): New enum typedef.
2819         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
2820         (mono_debugger_thread_created): Added `gpointer func' argument;
2821         initialize the new `thread_flags' field.
2822
2823 2009-06-18  Martin Baulig  <martin@ximian.com>
2824
2825         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
2826         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
2827
2828         * debug-debugger.c
2829         (mini_debugger_set_attach_ok): New function; sets the attach-ok
2830         flag in `MONO_DEBUGGER__info.runtime_info'.
2831
2832         * driver.c
2833         (mono_main): Call mini_debugger_set_attach_ok() if generics
2834         sharing is disabled.
2835
2836 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
2837
2838         * aot-compiler.c (add_wrappers): Fix a warning.
2839
2840         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
2841         the ppc load/store macro changes.
2842
2843 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
2844
2845         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
2846
2847         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
2848         not just the got symbol.
2849
2850         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
2851         on ppc.
2852
2853         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
2854         ppc.
2855         
2856         * aot-compiler.c: Remove some fixmes.
2857
2858         * driver.c (mono_main): Print a helpful message when cross-compiling.
2859
2860         * mini.c (mini_init): Disable signal handlers when cross-compiling.
2861
2862         * method-to-ir.c (initialize_array_data): Do the optimization if the
2863         target byte order is little endian, instead of the host byte order.
2864
2865         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
2866         wrappers into the mscorlib image, Emit a unique plt symbol for each
2867         image, emit symbols for plt entries.
2868
2869         * image-writer.c (img_writer_emit_symbol_size): New function to emit
2870         a .size directive.
2871         
2872 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
2873
2874         * aot-compiler.c (add_wrappers): Avoid calling 
2875         mono_marshal_get_type_info () since it can assert for some types.
2876
2877         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
2878         ldtoken are used inside wrappers.
2879
2880         * helpers.c: Add support for prefixing tools with the arch name.
2881
2882         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
2883         quantities when using ilp32.
2884
2885         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
2886         spill slots. Use sizeof(mgreg_t) for the spill slot size.
2887
2888         * image-writer.c: Use .long on ilp32.
2889
2890         * aot-compiler.c: Use 32 bit loads on ilp32.
2891         
2892 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
2893
2894         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
2895
2896         * mini-ops.h: Use TARGET_POWERPC define for consistency.
2897
2898         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
2899
2900         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
2901         second got slot of every aot image.
2902         
2903         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
2904         aot on platforms with function pointers.
2905
2906         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
2907         support for aot/full aot on ppc/ppc64.
2908         
2909         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
2910         arguments which are needed on ppc.
2911
2912         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
2913         argument.
2914
2915         * mini-trampolines.c aot-runtime.c: Update after the above changes.
2916         
2917         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
2918
2919         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
2920
2921         * aot-compiler.c (emit_got_info): Fix reading unused memory.
2922
2923         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
2924
2925 2009-06-17  Geoff Norton  <gnorton@novell.com>
2926
2927         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
2928
2929 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
2930
2931         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
2932         to control whenever the dwarf writer is in xdebug or aot mode.
2933         (emit_class_dwarf_info): Use a separate abbrev for structures without
2934         children.
2935
2936         * aot-compiler.c: Pass the appending parameter to 
2937         mono_dwarf_writer_create ().
2938
2939         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
2940         falls through to its next bblock. Fixes #513931.
2941
2942         * iltests.il: Add a test.
2943
2944         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
2945         infor even if emit_line is FALSE, as the apple linker seems to require it.
2946
2947         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
2948
2949         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
2950         gcc does.
2951         (emit_fde): Ditto.
2952
2953 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
2954
2955         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
2956         mips build.
2957
2958 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
2959
2960         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
2961         'has_call_handler' fields.
2962
2963         * method-to-ir.c (mono_method_to_ir): Set them if needed.
2964
2965         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
2966         first bblock if not needed. Fixes #512790.
2967         
2968 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
2969
2970         * aot-compiler.c (mono_compile_assembly): Fix a warning.
2971         
2972         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
2973         wrappers.
2974
2975         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
2976         remoting-invoke-with-check wrappers, which are not needed when running with
2977         full-aot, since it doesn't support remoting.
2978         
2979 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
2980
2981         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
2982
2983         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
2984         method info, it is not used anymore.
2985
2986         * mini.h: Bump AOT file format version.
2987         
2988         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
2989         word smaller.
2990
2991         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
2992         change above.
2993         
2994         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
2995
2996         * mini.h: Bump AOT file format version.
2997         
2998 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
2999
3000         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
3001         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
3002         iphone.
3003
3004         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
3005         of CKFINITE and FBGE for VFP.
3006
3007 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
3008
3009         * aot-compiler.c: Don't align code to 16 bytes on arm.
3010         
3011         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
3012         before the methods they belong to.
3013
3014         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
3015         the full-aot case if possible, since the trampoline will be called right 
3016         away.
3017
3018         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
3019         trampolines to 1024 after the change above.
3020
3021         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
3022         trampoline to save 8 bytes per trampoline.
3023
3024         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
3025         change above.
3026
3027 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
3028
3029         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
3030
3031 2009-06-08  Martin Baulig  <martin@ximian.com>
3032
3033         * debug-mini.c
3034         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
3035         (_mono_debugger_throw_exception): Don't make this static.
3036         (_mono_debugger_unhandled_exception): Likewise.
3037         (mono_debugger_handle_exception): Moved to mini-exceptions.c
3038
3039         * debug-mini.c
3040         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
3041         (_mono_debugger_throw_exception): Add function prototype.
3042         (_mono_debugger_unhandled_exception): Likewise.
3043
3044         * mini-exceptions.c
3045         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
3046         arg; return the first exception handler if the exception is caught
3047         and we're running inside the debugger.
3048         (mono_debugger_handle_exception): Moved here from debug-mini.c;
3049         improve exception handle inside runtime-invoke, check whether the
3050         exception is actually caught in the method being invoked and not
3051         by the runtime-invoke-wrapper.
3052
3053 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
3054
3055         * image-writer.c: Improve support for the osx assembler.
3056
3057         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
3058         support them.
3059
3060 2009-06-08  Martin Baulig  <martin@ximian.com>
3061
3062         * debug-mini.c
3063         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
3064         (_mono_debugger_throw_exception): Don't make this static.
3065         (_mono_debugger_unhandled_exception): Likewise.
3066         (mono_debugger_handle_exception): Moved to mini-exceptions.c
3067
3068         * debug-mini.c
3069         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
3070         (_mono_debugger_throw_exception): Add function prototype.
3071         (_mono_debugger_unhandled_exception): Likewise.
3072
3073         * mini-exceptions.c
3074         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
3075         arg; return the first exception handler if the exception is caught
3076         and we're running inside the debugger.
3077         (mono_debugger_handle_exception): Moved here from debug-mini.c;
3078         improve exception handle inside runtime-invoke, check whether the
3079         exception is actually caught in the method being invoked and not
3080         by the runtime-invoke-wrapper.
3081
3082 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
3083
3084         * image-writer.c (append_subsection): Don't align subsections of the
3085         debug_line section as a workaround.
3086
3087         * dwarfwriter.c: Emit line number info in the AOT case as well.
3088
3089 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
3090
3091         This patch is contributed under the terms of the MIT/X11 license
3092
3093        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
3094        code_len <= code_size
3095
3096 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
3097
3098         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
3099
3100 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
3101
3102         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
3103         invoke wrappers, we now use trampolines instead.
3104
3105 2009-06-04  Mark Probst  <mark.probst@gmail.com>
3106
3107         * mini-darwin.c: The exception thread must not be registered with
3108         the GC.
3109
3110 2009-06-04  Mark Probst  <mark.probst@gmail.com>
3111
3112         * mini-gc.c: Disable the code because it makes SGen crash.
3113
3114 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
3115
3116         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
3117         instead of asserting.
3118
3119 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
3120
3121         * aot-compiler.c (mono_compile_assembly): Move the creation of the
3122         output file after the code has been compiled.
3123
3124 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
3125
3126         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
3127
3128 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
3129
3130         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
3131         entries distinction to simplify the code.
3132
3133         * mini.h: Bump AOT file format version.
3134         
3135 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
3136
3137         * objects.cs: Fix the signature of one of the tests.
3138
3139         * mini.c (mini_create_ftnptr): New helper function, moved here from
3140         object.c.
3141         (mini_get_addr_from_ftnptr): Ditto.
3142         (mini_init): Install the new helpers.
3143
3144 2009-05-28  Martin Baulig  <martin@ximian.com>
3145
3146         Correctly initialize the debugger when embedding Mono.
3147
3148         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
3149         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
3150         see documentation in mini_debug_running_inside_mdb().
3151
3152         * debug-debugger.c
3153         (mini_debug_running_inside_mdb): New function to check whether
3154         we're running inside mdb.
3155
3156         * mini.c (mini_init): Call mini_debugger_init() if we're running
3157         inside the debugger.
3158
3159         * driver.c (mono_main): Moved the call to mini_debugger_init()
3160         into mini_init() to make this work when embedding Mono.
3161
3162         * debug-debugger.c (mini_debugger_init): Warn about duplicate
3163         calls to mini_debugger_init().
3164
3165         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
3166         mono_debugger_main() -> mini_debugger_main() and put them inside a
3167         `MONO_DEBUGGER_SUPPORTED' conditional.
3168
3169 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
3170
3171         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
3172         this is no longer in use.
3173         * mini.h: Same.
3174
3175 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
3176
3177         * mini-sparc.c (add_outarg_load): Fix the sparc build.
3178
3179         * aot-compiler.c (emit_method_code): Always write out C style symbols for
3180         methods.
3181
3182 2009-05-27  Martin Baulig  <martin@ximian.com>
3183
3184 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3185
3186         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
3187         long_conv_to_r_un to 64 bits.
3188
3189         * cpu-x86.md: Increase the instruction size due to the changes.
3190
3191         * iltests.il.in: Add regression test.
3192
3193         Fixes #467201.
3194
3195 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3196
3197         * objects.cs: Move the previous test from basic.cs to here.
3198
3199 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3200
3201         * basic.cs: Add regression test for #506915.
3202
3203 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3204
3205         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
3206         optimization we must check the bb of the first byte of stobj as
3207         it's the only one set in cil_offset_to_bb.
3208
3209         Fixes #506915.  
3210
3211 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
3212
3213         * image-writer.c: Fix pointer directive on ppc64.
3214
3215 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
3216
3217         * image-writer.c (asm_writer_emit_section_change): Avoid using
3218         .bss subsections on ppc too.
3219
3220 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
3221
3222         * image-writer.c: Fix the definition of TARGET_ASM_....
3223         
3224         * image-writer.c: Fix the emission of assembler directives in the last
3225         change.
3226
3227         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
3228         exception throwing code to accomodate ppc64.
3229
3230         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
3231         size to work on ppc64 too.
3232
3233         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
3234         too.
3235
3236         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
3237         the assembler dialect instead of using platform specific defines.
3238
3239 2009-05-22  Geoff Norton  <gnorton@novell.com>
3240
3241         * mini-arm.c (get_call_info): If a structure is split between the stack
3242         and argument registers, we should not advance the stack pointer by the entire
3243         native size, but just by the amount that spilled.
3244
3245 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
3246
3247         * mini-arm.c (get_call_info): Handle structures with alignment requirements
3248         correctly.
3249
3250 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
3251
3252         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
3253         wrappers normally.
3254         
3255         * aot-compiler.c (add_extra_method): Fix up the collection of extra
3256         methods so wrapper don't get added twice.
3257         (add_generic_instances): Don't add methods of arrays.
3258
3259         * generics.cs: Mark one test as !FULLAOT.
3260
3261 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
3262
3263         * mini-x86.c (emit_move_return_value): Remove unused vars.
3264
3265 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
3266
3267         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
3268         decomposing 8 bytes structs into a LCALL.
3269
3270         * mini-x86.c (emit_move_return_value): We no longer push the vtype
3271         pointer for where to store the returned regs.
3272
3273         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
3274         state the concern.
3275
3276         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
3277
3278 2009-05-20  Miguel de Icaza  <miguel@novell.com>
3279
3280         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
3281         without getenv.
3282
3283 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
3284
3285         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
3286
3287         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
3288         generics.
3289
3290 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
3291
3292         * local-propagation.c (mono_local_cprop): Avoid local propagation
3293         across paired add/sub if the first instruction dest reg is it's
3294         source reg. For example:
3295
3296         int_add_imm R12 <- R12 [1] clobbers: 1
3297         int_sub_imm R42 <- R12 [1] clobbers: 1
3298
3299         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
3300         maintain the math identify.
3301
3302         Fixes #505375.
3303
3304 2009-05-20  Andreia Gaita  <avidigal@novell.com>
3305
3306         * Makefile.am: avoid going on the network just to get the revision,
3307         use git log instead
3308
3309 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
3310
3311         Fixed estimate for short branches on amd64 (they were off mark, and
3312         enabling call prolog-epilog instrumentations caused assertions).
3313         * mini.h (struct MonoBasicBlock): added max_length field to hold the
3314         estimate for the maximum length of this basic block.
3315         * mini-amd64.c:
3316         - mono_arch_emit_prolog: compute max_length for each basic block
3317           (instead of max_offset), and inflate size estimate also for entry bb
3318           in case of code instrumentation.
3319         - mono_arch_output_basic_block: get rid of "cpos" (the current
3320           estimated "position" in the code), and always use "offset" instead,
3321           which is accurate; at the beginning of the function quickly recompute
3322           max_offset for all the remaining blocks, starting from the current
3323           cfg->code_len (which is correct, and not estimated) and using the
3324           estimated block lengths computed previously.
3325
3326 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
3327
3328         * exceptions-ppc.c: Remove the caching from the trampoline creation 
3329         functions, it is already done in the caller.
3330
3331         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
3332
3333         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
3334         MONO_ARCH_GSHARED_SUPPORTED define.
3335
3336         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
3337
3338         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
3339         function.
3340
3341 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
3342
3343         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
3344         call to mono_marshal_get_rgctx_invoke ().
3345
3346         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
3347         mono_marshal_get_static_rgctx_invoke (), all platforms which support
3348         gshared use the static rgctx trampolines now.
3349         
3350         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
3351         platform supports it.
3352
3353 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3354
3355         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
3356
3357         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
3358
3359 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3360
3361         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
3362
3363         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
3364         for ppc.
3365
3366 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
3367
3368         Made it possible for mono_arch_instrument_epilog to preserve
3369         argument registers, otherwise instrumenting the "epilogue" before
3370         a tail call would clobber them.
3371         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
3372         if like mono_arch_instrument_epilog but with an additional parameter
3373         that states if argument registers must be preserved.
3374         * mini.c: implemented mono_arch_instrument_epilog as a call to
3375         mono_arch_instrument_epilog_full without asking to preserve argument
3376         registers (this makes the existing code work as usual).
3377         * mini-amd64.c:
3378         - mono_arch_instrument_epilog: add parameter to transform it into
3379         mono_arch_instrument_epilog_full, and preserve argument registers
3380         when required.
3381         - mono_arch_output_basic_block, OP_TAILCALL case: call
3382         mono_arch_instrument_epilog_full.
3383         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
3384         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
3385         only transformed mono_arch_instrument_epilog into
3386         mono_arch_instrument_epilog_full.
3387
3388 2009-05-15  Geoff Norton  <gnorton@novell.com>
3389
3390         * mini-darwin.c: This works on arm now.
3391
3392 2009-05-14  Geoff Norton  <gnorton@novell.com>
3393
3394         * jit.h, driver.c: Allow full-aot to be decided programatically by the
3395         embedding api.
3396
3397 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3398
3399         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
3400         label names.
3401
3402         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
3403         wrappers during full aot mode correctly.
3404
3405         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
3406         methods correctly.
3407
3408         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
3409         mono_metadata_type_hash ().
3410
3411 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
3412
3413         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
3414         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
3415         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
3416         Removed MONO_INST_BRLABEL from the instruction flags, and the
3417         remaining code that used it, because we do not support branches inside
3418         basic blocks (and branch target labels) anymore.
3419         * Makefile.am: As part of the above cleanup, remove reference to
3420         BURG files which don't exist anymore.
3421
3422 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
3423
3424         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
3425         osx.
3426
3427         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
3428         to use mono_arch_throw_corlib_exception.
3429
3430         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
3431         mono_arch_throw_corlib_exception for throwing corlib exceptions.
3432
3433         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
3434         domain mempool.
3435
3436         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
3437
3438         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
3439         for the got to make debugging easier and to avoid confusing it with the
3440         system got.
3441         
3442         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
3443         method so a breakpoint can be set when using gdb.
3444
3445 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
3446
3447         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
3448         on mono_method_get_imt_slot ().
3449
3450         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
3451         num_decodes variables.
3452
3453         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
3454         change as it doesn't seem to work.
3455         
3456         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
3457         wrappers.
3458
3459 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
3460
3461         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
3462         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
3463
3464         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
3465         builder when using full aot.
3466
3467         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
3468         here, it is already handled.
3469         
3470         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
3471         correctly for IMT.
3472
3473         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
3474
3475         * mini-arm.h: Enable IMT for full aot.
3476         
3477         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
3478         arch doesn't support it.
3479
3480         * mini.c (mini_init): Don't disable IMT for full aot if the
3481         architecture supports it.
3482
3483         * mini.h (MonoAotTrampoline): New enum containing the different types
3484         of 'numerous' trampolines.
3485         (MONO_AOT_FILE_VERSION): Bump this.
3486
3487         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
3488         static rgctx trampolines. Add support for full-aot IMT thunks.
3489
3490         * mini-amd64.h: Enable IMT for full aot.
3491
3492         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
3493         to exclude tests belonging to a category.
3494
3495         * generics.cs: Mark some tests with a !FULLAOT category.
3496
3497         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
3498         generics tests.
3499
3500 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
3501
3502         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
3503         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
3504         (emit_plt): Fix a warning.
3505
3506 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
3507
3508         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
3509         back into aot-compiler.c to a place where the other functions shared by
3510         the runtime and aot compiler are.
3511         
3512         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
3513         as done previously, instead of in MonoAotFileInfo, since pointers might have
3514         alignment requirements.
3515
3516         * mini.h: Bump AOT file format version.
3517
3518 2009-05-10  Miguel de Icaza  <miguel@novell.com>
3519
3520         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
3521         that is used at runtime from the aot-compiler.c, this makes it
3522         work on setups that remove the AOT compiler from the output
3523         image. 
3524
3525 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
3526
3527         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
3528         PPC.
3529
3530         * mini-ppc.h: Enable static rgctx trampolines for ppc.
3531
3532         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
3533
3534         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
3535         stuff to mono_arch_decompose_long_opts ().
3536         (mono_decompose_opcode): Remove some dead code.
3537
3538 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
3539
3540         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
3541         cmethod can be null for quite a some reasons.
3542
3543 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
3544
3545         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
3546
3547 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
3548
3549         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
3550
3551 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
3552
3553         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
3554         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
3555         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
3556         calls returning structures by addr on amd64.
3557
3558         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
3559
3560         * iltests.il.in: Restructure the tail call tests a bit.
3561         
3562 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
3563
3564         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
3565         for virtual methods too.
3566
3567 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
3568
3569         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
3570         due to regression in verifying System.dll.
3571
3572 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
3573
3574         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
3575         in dynamic methods.
3576
3577         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
3578         instances.
3579
3580         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
3581         g_str_hash () which can change.
3582
3583         * driver.c (mini_regression): Disable optimizations not supported by
3584         the cpu. Fixes #500019.
3585
3586         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
3587         build.
3588
3589 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
3590
3591         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
3592         to the latest LLVM code.
3593
3594 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
3595
3596         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
3597
3598 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
3599
3600         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
3601         x86/amd64.
3602
3603         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
3604         no longer saving offsets, so just save the patch types along with the other
3605         info.
3606         * aot-runtime.c (load_patch_info): Update after the changes to 
3607         encode_patch_list ().
3608         (decode_got_entry): Removed, merged into load_patch_info ().
3609         (is_shared_got_patch): Removed, call the same function from
3610         aot-compiler.c.
3611
3612         * mini.h: Bump aot file format version.
3613         
3614         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
3615         half-finished no-dlsym code.
3616
3617         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
3618         option.
3619
3620         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
3621         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
3622
3623 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
3624
3625         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
3626         buffer length to work with AOT code.
3627
3628         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
3629         ldfld/stfld opcodes.
3630
3631         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
3632         as it is not used.
3633
3634         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
3635
3636         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
3637
3638         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
3639         LLVM API.
3640
3641         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
3642         if needed. Don't decompose long operations when using llvm.
3643
3644 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
3645
3646         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
3647         PAGESIZE constant.
3648
3649         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
3650
3651 2009-05-03  Martin Baulig  <martin@ximian.com>
3652
3653         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
3654         mono_debugger_insert_method_breakpoint() since the class init
3655         handler we're inserting at the top of the method already gives us
3656         a notification.
3657
3658 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
3659
3660         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
3661         to mono_arch_decompose_long_opts () for x86 and arm.
3662
3663 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
3664
3665         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
3666         TARGET_AMD64 here.
3667
3668 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
3669
3670         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
3671         JIT code.
3672
3673 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
3674
3675         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
3676         number of trampolines used in full-aot mode.
3677
3678         * aot-compiler.c: Add an ntrampolines option to set the number of 
3679         trampolines emitted in full-aot mode.
3680
3681 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
3682
3683         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
3684         a volatile load. Get rid of get_tempname (), llvm assigns names
3685         automatically.
3686
3687         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
3688         builder function.
3689
3690         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
3691         a value.
3692
3693         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
3694         level 1.
3695
3696         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
3697         to the same register as a fixed sreg2. Fixes #497271.
3698
3699         * iltests.il.in: Add a new test.
3700
3701 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
3702
3703         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
3704         stack, since pushes complicate exception handling.
3705
3706         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
3707         the stack if they are passed using moves.
3708
3709         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3710
3711         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
3712         when using llvm.
3713
3714         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
3715         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
3716         of FMOVE if it is an R4.
3717
3718 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
3719
3720         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
3721
3722         * mini.h (LLVMCallInfo): New structure to store calling convention 
3723         information for the LLVM back end similar to the CallInfo structures in 
3724         the back-ends.
3725
3726         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
3727         call information in a format usable by LLVM.
3728         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
3729
3730         * method-to-ir.c (mono_emit_call_args): Emit calls using 
3731         mono_llvm_emit_call () when compiling using LLVM.
3732
3733         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
3734         comments to all functions. Fix memory leaks. Add a public init/cleanup
3735         function.
3736
3737         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
3738
3739         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
3740         mono_array_new_va () jit icall.
3741         
3742 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
3743
3744         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
3745         multiple machine description files to be specified.
3746         * mini-ops.h: fixes for cross-compilation.
3747
3748 2009-04-22  Miguel de Icaza  <miguel@novell.com>
3749
3750         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
3751         some porting work.
3752
3753 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
3754
3755         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
3756         to prevent asserts in various passes. Fixes #497220.
3757
3758 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
3759
3760         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
3761         a racy assert.
3762
3763         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
3764         table to avoid duplicates.
3765
3766         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3767         
3768         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
3769         option is used.
3770
3771 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
3772
3773         * mini.c (mini_method_verify): Fail fulltrust code if the exception
3774         is for method or field access.
3775
3776 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
3777
3778         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
3779         a Value to stdout.
3780
3781         * mini-llvm.c (mono_llvm_emit_method): Use it.
3782         
3783         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
3784         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
3785         on volatile values.
3786
3787         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
3788         synchronized methods.
3789
3790         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
3791
3792         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
3793
3794         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
3795         OP_LOADI8_MEM.
3796
3797         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
3798         allowing some options to be set dynamically.
3799
3800 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
3801
3802         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
3803         unconditional branch.
3804
3805         * mini.h (MonoTrampolineType): Add new trampoline type 
3806         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
3807         compiled code.
3808
3809         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
3810         function.
3811
3812         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
3813         creation function.
3814
3815         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
3816         is enabled. Instead, use the llvm vcall trampoline.
3817         
3818         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
3819
3820         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
3821         
3822         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
3823         functions.
3824
3825         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
3826         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
3827
3828         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
3829         OP_IA64_CSET opcode.
3830
3831         * mini.c: Fix a warning.
3832
3833         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
3834         THROW to the appropriate llvm type.
3835
3836 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
3837
3838         * mini.c (mini_method_compile): Add statistics for methods JITted
3839         with/without LLVM.
3840
3841 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3842
3843         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
3844         OP_IA64_CMP_<cond>_IMM opcodes.
3845
3846 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3847
3848         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
3849         corlib exceptions.
3850
3851         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
3852         correctly.
3853
3854         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
3855         GENERICINST.
3856
3857 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
3858
3859         * mini-exceptions.c : add thread id to EXCEPTION trace message.
3860
3861 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3862
3863         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
3864         support.
3865
3866         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
3867         rgctx invoke trampolines for x86.
3868
3869         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
3870         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
3871         (mono_arch_get_vcall_slot): Simplify this.
3872
3873 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
3874
3875         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
3876         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
3877
3878 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
3879
3880         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
3881         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
3882
3883         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
3884
3885         * liveness.c (visit_bb): Remove a needless assert.
3886
3887 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
3888
3889         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
3890         full aot support to the arch specific code.
3891
3892         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
3893
3894         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
3895
3896         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
3897         
3898         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
3899         collect information about the delegate invoke impl trampolines.
3900
3901         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
3902         to save trampolines during full-aot mode.
3903
3904         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
3905         creation function which returns a trampoline which sets the rgctx
3906         argument.
3907         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
3908         wrapper if possible.
3909         (mono_delegate_trampoline): Ditto.
3910
3911         * mini.c (mono_jit_runtime_invoke): Ditto.
3912
3913         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
3914         
3915         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
3916
3917         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3918         
3919 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
3920
3921         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
3922         just setting the opcode to OP_NOP.
3923
3924 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
3925
3926         * mini.c (mini_method_compile): Put the last change inside an 
3927         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
3928         
3929         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
3930         and extend live ranges to cover the whole method when using xdb.
3931
3932         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
3933         do it in the trampolines.
3934
3935         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
3936         needed.
3937
3938         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
3939         
3940         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
3941         call code in full-aot mode since IMT is disabled there.
3942         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
3943         new JIT no longer has that restriction.
3944
3945         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3946
3947         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
3948         a more compact format.
3949         (mono_aot_wrapper_name): New function to return a unique name for a
3950         wrapper method, also used by the AOT runtime.
3951
3952         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
3953         aot-compiler.c.
3954
3955         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
3956         when a ICollection<T> etc is encountered.
3957         (add_generic_instances): Process method arguments/locals too.
3958         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
3959         trampoline names.
3960
3961         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
3962         
3963 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
3964
3965         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
3966
3967         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
3968
3969         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
3970         representing the result of the decomposition. Nullify instructions
3971         instead of setting them to OP_NOP since nops can't have registers
3972         set.
3973
3974 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
3975
3976         * aot-compiler.c (mono_compile_assembly): Split this huge function into
3977         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
3978         info. Strip 'mapping symbols' on ARM.
3979
3980         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
3981         
3982         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
3983         this with the native genmdesc.
3984
3985 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
3986
3987         * aot-runtime.c:  Fixing the MSVC build.
3988
3989         Code is contributed under MIT/X11 license.
3990
3991 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
3992
3993         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
3994         JITted code depends on it.
3995
3996 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
3997
3998         * aot-compiler.c: Use new MonoGenericParam accessors.
3999
4000 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
4001
4002         Reduce memory usage and improve correctness wrt MonoGenericParam
4003         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
4004         handing.  Avoid allocating MonoGenericParams, but use the ones in
4005         the container itself.
4006
4007 2009-04-07  Miguel de Icaza  <miguel@novell.com>
4008
4009         * tasklets.c: Return exceptions in the out argument.
4010
4011 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
4012
4013         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
4014         opcode. Use pointer types in more places instead of casting them to 
4015         integers.
4016
4017         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
4018         optimizations.
4019         (mono_llvm_optimize_method): New helper function to optimize a method.
4020
4021         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
4022         widening code so it could be called from more places.
4023         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
4024         code paths in the call opcodes.
4025
4026 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
4027
4028         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
4029
4030 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
4031
4032         * dwarfwriter.c: Use _ to separate class name 
4033         components as gdb can't handle '.'. Represent reference variables
4034         as 'class <NAME>&'.
4035         
4036         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
4037
4038         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
4039         
4040         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
4041
4042         * gc-test.cs: New file with GC stack marking tests.
4043         
4044         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
4045         negative numbers for vfp.
4046
4047         * basic-float.cs: Add a test.
4048         
4049 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
4050
4051         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
4052
4053 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
4054
4055         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
4056         part of tasklet/continuation support.
4057
4058 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
4059
4060         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
4061         amd64 opcodes inside an ifdef.
4062
4063         * dwarfwriter.c: Emit inheritance information for classes, emit fields
4064         of complex types.
4065         
4066         * dwarfwriter.c (emit_type): Emit the class info for classes.
4067
4068 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
4069
4070         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
4071
4072         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
4073
4074         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
4075
4076         * ssa.c (mono_ssa_compute): Fix some memory leaks.
4077
4078 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
4079
4080         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
4081
4082         * mini-llvm.c: Update comments.
4083
4084         * mini.h (COMPILE_LLVM): New macro.
4085
4086         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
4087
4088         * ssa.c (mono_ssa_compute): Ditto.
4089         
4090         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
4091         the unwind ops from a DWARF FDE.
4092
4093         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
4094         methods by extracting the dwarf unwind ops from the unwind info generated
4095         by LLVM.
4096         
4097         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
4098         calls.
4099
4100         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
4101         addressing modes.
4102
4103 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
4104
4105         * Makefile.am (llvm_sources): Enable this.
4106
4107         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
4108         failing back to the JIT if something cannot be handled.
4109
4110         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
4111         compiling with LLVM.
4112
4113         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
4114         compiling with LLVM.
4115
4116         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
4117         compiling with LLVM.
4118
4119         * mini-ops.h: Add a few opcodes needed by LLVM.
4120
4121         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
4122         has no unwind info.
4123
4124         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
4125         backend.
4126
4127         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
4128
4129         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
4130
4131 2009-04-01  Mark Probst  <mark.probst@gmail.com>
4132
4133         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
4134         ridiculously large methods.
4135
4136 2009-03-31  Martin Baulig  <martin@ximian.com>
4137
4138         * debug-debugger.c (debugger_remove_breakpoint): Call
4139         mono_debugger_remove_class_init_callback ().
4140
4141 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
4142
4143         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
4144         right before emitting code, not at the start.
4145
4146         * mini.c (mono_postprocess_patches): Extract this into a separate function
4147         from mono_codegen ().
4148
4149         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
4150         byref types correctly.
4151
4152 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
4153
4154         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
4155         by the last change.
4156
4157 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
4158
4159         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
4160         indirect calls, this avoids problems where get_vcall_slot () would get
4161         confused by the native code for the instruction preceeding the call.
4162         (mono_arch_get_vcall_slot): Simplify this.
4163         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
4164
4165         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
4166         register allocator now seems to depend on them instead of the data in
4167         cpu-<ARCH>.md.
4168
4169         * mini.c (mini_method_compile): Throw the correct type of exception if
4170         mono_method_get_header () fails because of a loading error.
4171
4172 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
4173
4174         * mini.c (mini_method_compile): Clear the loader error if the method
4175         header cannot be decoded.
4176
4177         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
4178         interface methods on proxies correctly.
4179
4180         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
4181         this argument for vtype methods. Add precise liveness info for arguments.
4182
4183         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
4184         LIVERANGE_START/END opcodes.
4185
4186         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
4187         for arguments and values in registers.
4188
4189 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
4190
4191         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
4192         return a valuetype. Fixes #487518.
4193
4194         * iltests.il: Add a test.
4195         
4196         * aot-compiler.c: Use mono_thread_create () to create helper threads.
4197
4198         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
4199         closed over a null reference correctly.
4200
4201 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
4202
4203         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
4204
4205 2009-03-25  Mark Probst  <mark.probst@gmail.com>
4206
4207         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
4208         allocated to the same registers as fixed sregs.
4209
4210 2009-03-24  Mark Probst  <mark.probst@gmail.com>
4211
4212         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
4213         ATOMIC_CAS_IMM ops.
4214
4215         * method-to-ir.c: Handle more cases for
4216         Interlocked.CompareExchange.
4217
4218         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
4219         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
4220         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
4221
4222 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
4223
4224         * aot-runtime.c (decode_method_ref): Fix a warning.
4225
4226         * unwind.c (mono_unwind_frame): Ditto.  
4227
4228 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4229
4230         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
4231         (mono_compile_assembly): Enable the binary writer for full-aot as well.
4232
4233         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
4234         fix the handling of large values in the ALU_PC_G0_NC relocation.
4235
4236 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4237
4238         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
4239
4240 2009-03-22  Mark Probst  <mark.probst@gmail.com>
4241
4242         * method-to-ir.c (mono_spill_global_vars): Support for ternary
4243         ops.
4244
4245 2009-03-22  Mark Probst  <mark.probst@gmail.com>
4246
4247         * method-to-ir.c: MINI_OP3 needs a comma.
4248
4249         * method-to-ir.c, mini.h, mini.c: Remove
4250         mono_init_op_sreg_counts ().
4251
4252 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4253
4254         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
4255         OP_JMP.
4256         
4257         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
4258         assertion.
4259
4260         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
4261
4262         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
4263         code somewhat.
4264
4265 2009-03-21  Mark Probst  <mark.probst@gmail.com>
4266
4267         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
4268         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
4269         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
4270         operations.
4271
4272 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
4273
4274         * driver.c: Change location of gc_wrapper.h.
4275
4276         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
4277         inside finally clauses correctly. Fixes #485721.
4278
4279         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
4280         after the change above.
4281
4282         * exceptions.cs: Add a test.
4283         
4284 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
4285
4286         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
4287
4288         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
4289         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
4290         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
4291
4292         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
4293         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
4294
4295 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
4296
4297         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
4298         Simplify logic for ensure_method_is_allowed_to_call_method. 
4299         Handle wrappers on callers.
4300
4301 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
4302
4303         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
4304         them don't run yet.
4305
4306         * basic-simd.cs: Fix the names of some test methods.
4307
4308 2009-03-18  Geoff Norton  <gnorton@novell.com>
4309
4310         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
4311
4312 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
4313
4314         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
4315
4316 2009-03-17  Jb Evain  <jbevain@novell.com>
4317
4318         * driver.c: remove now uneeded call to mono_gc_base_init before
4319         mono_profiler_load.
4320
4321 2009-03-17  Jb Evain  <jbevain@novell.com>
4322
4323         * dwarfwriter.c (token_handler): handle more cases.
4324
4325 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
4326
4327         * method-to-ir.c: Remove more dead code (that was required only
4328         because of method_is_safe). Fix compiler warnings.
4329
4330 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
4331
4332         * method-to-ir.c: Remove unneeded/useless method_is_safe
4333         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
4334
4335 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
4336
4337         * mini.c (mini_method_compile): Print the method been compiled with
4338         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
4339         for people not familiar with the runtime.
4340
4341 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
4342
4343         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
4344         a managed object which is later put into a GList. Return its class instead.
4345
4346         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
4347         stack slots when using sgen.
4348
4349 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
4350
4351         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
4352
4353 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
4354
4355         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
4356         > so it works on the first vreg as well.
4357
4358 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
4359
4360         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
4361         trigger randomly.
4362
4363         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
4364         
4365         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
4366         implement GArray.
4367
4368 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
4369
4370         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
4371         native->IL offset mapping.
4372
4373 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
4374
4375         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
4376
4377         * basic.cs: Add a test.
4378
4379 2009-03-11  Mark Probst  <mark.probst@gmail.com>
4380
4381         * mini-x86.c (mono_arch_output_basic_block): Use different
4382         registers in case the ones we want to overwrite are used by the
4383         other operand.  Fixes regression in #480807.
4384
4385 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
4386
4387         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
4388
4389         * dwarfwriter.c (emit_line_number_info): The line number info for
4390         IL code was off by one. Fix that.
4391
4392         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
4393         stack.
4394
4395 2009-03-09  Mark Probst  <mark.probst@gmail.com>
4396
4397         Contributed under the terms of the MIT/X11 license by Steven
4398         Munroe <munroesj@us.ibm.com>.
4399
4400         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
4401         Fixes #483462.
4402
4403 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
4404
4405         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
4406         as well.
4407
4408 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
4409
4410         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
4411         the delegate ctor handling code. Fixes #482638.
4412         
4413         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
4414         #481458.
4415
4416         * iltests.il.in: Add a test.
4417         
4418         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
4419         mini-posix.c.
4420
4421 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4422
4423         * mini-trampolines.c (mono_create_jump_trampoline): If the method
4424         is shared generic code, return the trampoline, even if the method
4425         has already been compiled.  Fixes #479763.
4426
4427         * mini.c, mini.h: New function
4428         mono_jit_find_compiled_method_with_jit_info() which is the same as
4429         mono_jit_find_compiled_method() but also returns the jit info.
4430
4431 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4432
4433         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
4434         for methods which actually have one.  For all other methods, make
4435         sure the this argument var is live the whole method.
4436
4437         * mini.c (mini_method_compile): Every shared method has a
4438         this/vtable/mrgctx info.  Fixes #480807.
4439
4440 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4441
4442         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
4443         generic/imt thunks where some entries branch through the vtable,
4444         while other entries branch directly.
4445
4446 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
4447
4448         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
4449
4450         * mini-windows.c: Ditto.
4451         
4452         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
4453         ctors.
4454
4455 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
4456
4457         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
4458         down an assert.
4459
4460 2009-03-04  Mark Probst  <mark.probst@gmail.com>
4461
4462         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
4463         #481403.
4464
4465 2009-03-04  Mark Probst  <mark.probst@gmail.com>
4466
4467         * exceptions-x86.c: Include debug-mini.h - fixes build.
4468
4469 2009-03-04  Martin Baulig  <martin@ximian.com>
4470
4471         * debug-mini.c: Clean up the exception API and add documentation.
4472         (mono_debugger_handle_exception): New public method; this is
4473         called when throwing an exception or encountering an unhandled one.
4474         (mono_debugger_call_exception_handler): Formerly known as
4475         mono_debugger_handle_exception(); this is used to tell the
4476         debugger that we're about to invoke an exception handler.
4477
4478 2009-03-04  Martin Baulig  <martin@ximian.com>
4479
4480         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
4481         ../metadata/mono-debug-debugger.c; save and reset exception state.
4482
4483 2009-03-02  Martin Baulig  <martin@ximian.com>
4484
4485         * debug-mini.c: Moved the debugger exception handling here from
4486         ../metadata/mono-debug-debugger.c.
4487
4488         * debug-mini.h
4489         (MonoDebuggerExceptionAction): New exception typedef.
4490
4491         * debug-mini.c
4492         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
4493
4494         * exceptions-amd64.c
4495         (mono_amd64_throw_exception): Use the new debugger exception
4496         handling code.
4497
4498         * mini-exceptions.c
4499         (mono_handle_exception_internal): Don't call
4500         mono_debugger_unhandled_exception() here.
4501
4502 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
4503
4504         * mini.c aot-compiler.c: Update after the changes to 
4505         mono_marshal_get_runtime_invoke ().
4506
4507         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
4508         Virtual generic methods might not have method->slot set, work around
4509         that.
4510
4511         * generics.cs: Add a test.
4512
4513 2009-03-02  Geoff Norton  <gnorton@novell.com>
4514
4515         * mini.c:
4516         * driver.c: Allow signal chaining of SIGFPE as well.
4517
4518 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
4519
4520         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
4521         this since it now receives the method not its generic context in the
4522         IMT reg.
4523
4524         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
4525         generic/imt thunks where some entries branch through the vtable, while
4526         other entries branch directly.
4527
4528         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
4529
4530         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
4531         support for interface methods as well.
4532
4533         * mini-trampolines.c: Add support for virtual generic methods in interfaces
4534         using the normal IMT thunks.
4535
4536         generics.cs: Add new tests.
4537         
4538         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
4539         the generic inst to the generic imt thunks. This fixes AOT support, 
4540         improves consistency with the normal IMT thunks, and makes it easier to
4541         add support for interface generic virtual methods later.
4542
4543         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
4544         
4545 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
4546
4547         * driver.c (mono_set_signal_chaining): New public API function to enable
4548         signal chaining on POSIX platforms.
4549
4550         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
4551         (si@lindenlab.com) to implement signal chaining. The original patch was
4552         contributed under the MIT X/11 license:
4553         https://bugzilla.novell.com/show_bug.cgi?id=318894
4554
4555 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
4556
4557         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
4558         too until it can be made to run on amd64.
4559
4560 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
4561
4562         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
4563         to  get_generic_context_from_code () + get_call_info () if possible.
4564
4565 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
4566
4567         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
4568         suspend-on-sigsegv functionality.
4569
4570         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
4571         to suspend when a native SIGSEGV is received. This is useful for debugging
4572         crashes which don't happen under gdb, since a live process contains more
4573         information than a core file.
4574
4575         * mini-exceptions.c (mono_print_thread_dump): Use 
4576         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
4577
4578         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
4579
4580         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
4581         
4582         * basic-float.cs: Disable the tests which currently fail on amd64.
4583
4584         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
4585         value to mono_arch_patch_callsite () to fix crashes.
4586         
4587         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
4588
4589 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
4590
4591         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
4592         nop code by patching the call address to point to the nullified class init
4593         trampoline, as the former does not seem to be safe on SMP machines.
4594
4595 2009-02-23  Mark Probst  <mark.probst@gmail.com>
4596
4597         * mini-ops.h: Fix the argument types for a few x86 opcodes where
4598         they were wrong.
4599
4600 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
4601
4602         * basic-float.cs basic-calls.cs: Fix warnings.
4603
4604 2009-02-22  Mark Probst  <mark.probst@gmail.com>
4605
4606         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
4607         correct frame pointer in the LMF.  Should fix #478394.
4608
4609 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
4610
4611         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
4612
4613         * image-writer.c: Make the binary writer less verbose.
4614
4615 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
4616
4617         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
4618         are called from runtime invoke wrappers.
4619
4620 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
4621
4622         * cpu-ppc.md (store_memindex): Increase the size of this.
4623
4624 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4625
4626         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4627
4628         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
4629
4630         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
4631         OP_LCONV_TO_R_UN.
4632
4633         Last fix for of #467201.
4634
4635
4636 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4637
4638         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4639
4640         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
4641         and long_conv_to_r8_2:
4642
4643         Fixed part of #467201.
4644
4645 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4646
4647         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4648
4649         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
4650         conversion to 32 bits.
4651
4652         * cpu-x86.md: Increase the size of int_conv_to_r4.
4653
4654         * basic-float.cs: Add a test for this.
4655
4656         Fixed part of #467201.
4657
4658 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4659
4660         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4661
4662         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
4663         conversion to 64 bits.
4664
4665         * basic-float.cs: Add a test for this.
4666
4667         Fixed part of #467201.
4668
4669 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4670
4671         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4672
4673         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
4674         This behavior is compatible with MS.
4675
4676         * iltest.il.in: Add a test for this.
4677
4678         Fixed part of #467201.
4679
4680 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4681
4682         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4683
4684         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
4685         change the precision of the value.
4686
4687         * cpu-x86.md: Define len for float_conv_to_r4.
4688
4689         * basic-float.cs: Add a test for this.
4690
4691         Fixed part of #467201.
4692
4693 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
4694
4695         * mini.c: Adjust locking order to the new semantics where the loader lock
4696         comes first.
4697
4698 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
4699
4700         * aot-runtime.c:
4701         * mini-amd64.c:
4702         * mini-arm.c:
4703         * mini-ia64.c:
4704         * mini-mips.c:
4705         * mini-ppc.c:
4706         * mini-sparc.c:
4707         * mini-trampolines.c:
4708         * mini-x86.c:
4709         * mini.c:
4710         * tramp-alpha.c:
4711         * tramp-amd64.c:
4712         * tramp-arm.c:
4713         * tramp-hppa.c:
4714         * tramp-ia64.c:
4715         * tramp-mips.c:
4716         * tramp-ppc.c:
4717         * tramp-s390.c:
4718         * tramp-s390x.c:
4719         * tramp-sparc.c:
4720         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
4721
4722 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
4723
4724         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
4725         as it is incorrect.
4726
4727 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
4728
4729         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
4730         for cctors if needed.
4731
4732 2009-02-17  Mark Probst  <mark.probst@gmail.com>
4733
4734         * mini-ppc.c: Fix build on Darwin.
4735
4736 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
4737
4738         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
4739         version instead of 3 as valgrind doesn't like version 3.
4740
4741         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4742
4743         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
4744         usable for hashing methods.
4745         (emit_extra_methods): Use the new hash to avoid putting every method in the
4746         same hash bucket.
4747
4748         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
4749
4750         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
4751         whenever a method ref could match a method.
4752         
4753         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
4754         test to fail.
4755         
4756         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
4757         methods refs.
4758
4759         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
4760
4761         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
4762         the encoding buffer.
4763
4764         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
4765         mono_method_get_header () on inflated methods as an optimization.
4766
4767 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
4768
4769         * ssa.c (fold_ins): Fix another crash if the instruction following the
4770         switch was optimized away.
4771
4772 2009-02-16  Mark Probst  <mark.probst@gmail.com>
4773
4774         Contributed under the terms of the MIT/X11 license by Steven
4775         Munroe <munroesj@us.ibm.com>.
4776
4777         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
4778
4779 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
4780
4781         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
4782         around the mono_domain_alloc calls, it is now done by the functions
4783         themselves.
4784
4785         * aot-compiler.c (compile_method): Only add wrappers referenced by
4786         the method if compiling with full AOT.
4787         (mono_compile_assembly): Error out if --aot=full is specified on
4788         a platform where it is not supported.
4789
4790         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
4791         on ARM too.
4792
4793         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
4794         AOT support.
4795
4796         * aot-runtime.c (load_named_code): Handle 
4797         mono_arm_throw_exception_by_token.
4798
4799         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
4800
4801         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
4802         unaligned.
4803
4804         * Makefile.am (fullaotcheck): Exit if a test fails.
4805
4806         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
4807         on ARM.
4808         (mono_compile_assembly): Handle the assembler failing.
4809
4810         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
4811         accepting subsections of .bss.
4812
4813         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
4814         was optimized away.
4815
4816         * aot-compiler.c: Remove some unused includes.
4817         
4818         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
4819         now in MonoImageWriter.
4820
4821         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
4822         code sequence which matches a non-virtual call. Fixes #472654.
4823
4824 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
4825
4826         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
4827         xdebug code.
4828         
4829         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
4830         use the image/dwarf writers directly.
4831
4832         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
4833         field.
4834
4835         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
4836         MonoDwarfWriter.
4837
4838         * image-writer.h: Fix some typos.
4839
4840         * dwarfwriter.h dwarfwriter.c: New files.
4841         
4842         * aot-compiler.c: Extract the DWARF info writing functionality into a 
4843         separate module.
4844
4845         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
4846         argument to return unwind info.
4847
4848         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
4849
4850         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
4851         
4852         * aot-runtime.c (decode_method_ref): Add a case for 
4853         MONO_AOT_METHODREF_WRAPPER_NAME.
4854
4855         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
4856         for AOT.
4857
4858         * aot-compiler.c (encode_method_ref): Use the new constants.
4859
4860         * aot-runtime.c (decode_method_ref): Ditto.
4861
4862         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
4863         be compiled, not the icall itself.
4864
4865 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
4866
4867         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
4868         using decode_method_ref ().
4869
4870         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
4871         convert it to an in32. Fixes #475859.
4872
4873         * arrays.cs: Add a test.
4874
4875 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4876
4877         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
4878         OP_LCONV_TO_U2.
4879
4880         * basic-long.cs: Add a test.
4881
4882 2009-02-12  Mark Probst  <mark.probst@gmail.com>
4883
4884         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
4885         remove the frame pointer in leaf methods which don't receive any
4886         arguments, don't throw exceptions and don't do dynamic stack
4887         allocations.
4888
4889 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4890
4891         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
4892         the fail_tramp changes. Hopefully fixes #475132.
4893
4894 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
4895
4896         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
4897         instead of mono_metadata_signature_dup_full.
4898
4899 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4900
4901         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
4902         for processing jump tables. Fixes #473787.
4903
4904 2009-02-11  Mark Probst  <mark.probst@gmail.com>
4905
4906         * mini-generic-sharing.c: mini_method_get_context() just calls
4907         mono_method_get_context_general() now.
4908
4909         * mini.c, mini.h: Moved get_object_generic_inst(),
4910         construct_object_context_for_method() and
4911         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
4912
4913 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
4914
4915         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
4916         basic block fell through to its successor bblock without a branch. Fixes
4917         #474718.
4918
4919         * iltests.il.in: Add a test.
4920         
4921         * aot-compiler.c (encode_method_ref): Encode methods of array types.
4922         (can_encode_patch): We can now handle arrays of generic parameters and
4923         array methods.
4924
4925         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
4926
4927         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
4928         the AOT file to avoid some #ifdefs in aot-runtime.c
4929
4930         * mini.h: Bump AOT file format version.
4931
4932 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4933
4934         * Makefile.am (fullaotcheck): Make this run the tests.
4935
4936         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
4937
4938 2009-02-10  Mark Probst  <mark.probst@gmail.com>
4939
4940         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
4941         individually.  Fixes #473482.
4942
4943 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4944
4945         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
4946
4947 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
4948
4949         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
4950         (mono_compile_assembly): Hush compile warnings about
4951         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
4952         code path.
4953
4954 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4955
4956         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
4957
4958         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
4959
4960         * aot-compiler.c: Fix arm support.
4961
4962         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
4963         img_writer_emit_unset_mode () function.
4964
4965         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
4966         (mono_unwind_get_dwarf_pc_reg): Ditto.
4967
4968         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
4969         Move almost all platform specific code to a set of arch_ functions, 
4970         and document them to ease porting.
4971         
4972         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
4973
4974         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
4975
4976         * aot-compiler.c: Extract the image writing functionality into a separate
4977         module to reduce the size of this file.
4978
4979 2009-02-09  Geoff Norton  <gnorton@novell.com>
4980
4981         * mini-s390.c: Fix the signature of emit_sig_cookie.
4982
4983 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
4984
4985         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
4986
4987         * aot-runtime.c (is_shared_got_patch): Ditto.
4988
4989         * aot-runtime.c (load_named_code): Cope with the fact that 
4990         decode_got_entry () won't decode the patch fully if its corresponding got
4991         entry is already filled.
4992         
4993         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
4994         Initialize *ji.
4995         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
4996
4997         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
4998         as the moving pointer instead of 'buf' for consistency with the rest of the
4999         codebase.
5000         (mono_arch_create_monitor_exit_trampoline): Ditto.
5001
5002         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
5003         generic_class_init trampolines.
5004         (add_generic_class): Extract some code from add_generic_instances () into a
5005         separate function so it can be called from other places too.
5006         (compile_method): Call add_generic_class () for the classes of inflated methods
5007         referenced by the method.
5008         (can_encode_patch): Allow references to generic parameters.
5009
5010         * aot-runtime.c: Add support the patches required by the new trampolines.
5011         
5012         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
5013         support.
5014
5015         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
5016         full-aot support.
5017
5018         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
5019         this from get_throw_pending_exception, make the signature full aot compatible.
5020
5021         * Makefile.am (fullaotcheck): New target to run full-aot tests.
5022
5023         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
5024
5025         * exceptions.cs: Add a test.
5026
5027 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
5028
5029         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
5030         use the DWARF_DATA_ALIGN constant instead.
5031
5032         * exception-<ARCH>.c: Update after the above change.
5033
5034         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
5035         dwarf unwinder.
5036
5037         * mini-arm.c: Enable the dwarf unwinder.
5038
5039         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
5040         instead of mono_class_setup_vtable ().
5041
5042 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
5043
5044         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
5045         dwarf unwinder.
5046
5047         * mini-x86.h: Enable the dwarf unwinder.
5048
5049 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
5050
5051         Fix mcs/tests/test-7.cs
5052         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
5053         2009-02-03.
5054
5055 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
5056
5057         * mini.c (print_jit_stats): Remove some unused statistics.
5058
5059 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
5060
5061         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
5062
5063 2009-02-05  Mark Probst  <mark.probst@gmail.com>
5064
5065         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
5066         the method we get from mono_object_get_virtual_method() because
5067         that function does it properly, now.
5068
5069 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
5070
5071         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
5072         opcodes. Fixes #472775.
5073
5074 2009-02-05  Mark Probst  <mark.probst@gmail.com>
5075
5076         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
5077         fact that mono_find_jit_info() sometimes returns the context
5078         corresponding to the jit info in new_ctx.  Fixes #472600.
5079
5080 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
5081
5082         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
5083         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
5084         klass->enum_basetype directly.
5085
5086         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
5087         enum subtypes.
5088
5089         * unwind.c: Avoid 0 sized arrays.
5090
5091 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
5092
5093         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
5094         size on systems with 64k pages. Fixes #471389.
5095
5096 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5097
5098         Contributed under the terms of the MIT/X11 license by Steven
5099         Munroe <munroesj@us.ibm.com>.
5100
5101         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
5102         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
5103         necessary.
5104
5105 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5106
5107         Contributed under the terms of the MIT/X11 license by Steven
5108         Munroe <munroesj@us.ibm.com>.
5109
5110         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
5111         comparison fix.
5112
5113         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
5114         The trampoline can be longer on PPC64.
5115
5116 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5117
5118         Contributed under the terms of the MIT/X11 license by Steven
5119         Munroe <munroesj@us.ibm.com>.
5120
5121         * mini-ppc.c: Compiler warning fixes and trivial code
5122         simplifications.
5123
5124 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
5125
5126         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
5127         ins->dreg which could be a hardware register, not a vreg.
5128
5129         * aot-compiler.c (emit_method_dwarf_info): Ditto.
5130         
5131         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
5132         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
5133
5134         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
5135         
5136         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
5137         ->dreg, that is not the vreg we are looking for.
5138
5139         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
5140
5141         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
5142         LIVERANGE_END.
5143
5144         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
5145         strange crashes.
5146
5147 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
5148
5149         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
5150
5151         * aot-compiler.c (emit_line_number_info): Fix line number emission when
5152         the line diff is 0.
5153
5154         * aot-compiler.c: Add xdebug support on x86.
5155
5156         * unwind.c: Add x86 support.
5157         
5158         * aot-compiler.c (emit_exception_debug_info): Control the emission of
5159         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
5160
5161         * mini.c (mini_method_compile): Ditto.
5162         
5163         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
5164         the variable index.
5165
5166         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
5167         which mimic .push_section/.pop_section in GAS.
5168         
5169         * aot-compiler.c: Emit precise live range information for variables.
5170
5171         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
5172
5173         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
5174         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
5175         them.
5176
5177         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
5178         the live ranges of variables.
5179
5180         * mini.h (struct MonoMethodVar): Add two fields containing the live range
5181         of the variable in terms of native offsets.
5182
5183 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
5184
5185         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
5186         
5187 2009-02-02  Mark Probst  <mark.probst@gmail.com>
5188
5189         Contributed under the terms of the MIT/X11 license by Steven
5190         Munroe <munroesj@us.ibm.com>.
5191
5192         * exceptions-ppc.c (restore_regs_from_context): Correct operand
5193         order (offset then base reg) for ppc_load_multiple_regs.
5194         (emit_save_saved_regs) Correct operand order for
5195         ppc_store_multiple_regs.
5196         (mono_arch_get_call_filter): Correct operand order for
5197         ppc_load_multiple_regs.
5198
5199         * mini-ppc.c (emit_memcpy): Fix operand order for
5200         ppc_load_reg_update and ppc_store_reg_update.
5201         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
5202         (mono_arch_emit_epilog): Correct operand order for
5203         ppc_load_multiple_regs.
5204
5205         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
5206         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
5207
5208 2009-02-02  Mark Probst  <mark.probst@gmail.com>
5209
5210         * cpu-ppc64.md: Fixed storer4_memindex length.
5211
5212 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
5213
5214         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
5215         line number info.
5216         
5217         * aot-compiler.c (emit_line_number_info): Optimize this.
5218
5219 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
5220
5221         * aot-compiler.c: Disassemble tokens in the IL disassembly.
5222         
5223         * aot-compiler.c: Add debug info for methods without debug info by
5224         emitting an IL file and having the line number info referencing that file.
5225
5226         * aot-compiler.c: Optimize the size of the generated line number info.
5227
5228         * aot-compiler.c: Emit line number info in xdebug mode.
5229
5230         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
5231         million arguments.
5232
5233 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
5234
5235         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
5236
5237         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
5238         is used.
5239
5240 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
5241
5242         * basic-calls.cs: Test for the weird crash found on arm.
5243         
5244 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
5245
5246         * cpu-arm.md: Increase the size of storer8_membase_reg and
5247         loadr8_membase_reg to 24 bytes to accomodate the extra add.
5248
5249         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
5250         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
5251         reg to LR otherwise we'll be loading/storing from just the offset.
5252
5253 2009-01-30  Miguel de Icaza  <miguel@novell.com>
5254
5255         Question: if we are storing gint32's inside the "*native_offset",
5256         should we change the signature to "gint32 *native_offset" to
5257         ensure that we do not have type definition problems?
5258         
5259         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
5260         an int * as this is what the other function expects, causes
5261         problems with Freescale's compiler that defined int32_t to be a
5262         long and makes int incompatible 
5263
5264 2009-01-30  Miguel de Icaza  <miguel@novell.com>
5265
5266         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
5267         filename conflict with bjam.
5268
5269 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5270
5271         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
5272         as it might use decomposed ops.
5273
5274 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5275
5276         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
5277
5278         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
5279         is defined.
5280
5281         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
5282
5283         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
5284         offsets.
5285
5286         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
5287         way registers are stored in MonoContext on arm.
5288
5289         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
5290         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
5291
5292         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
5293
5294         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
5295
5296         * mini.c (mini_init): Register mono_isfinite.
5297
5298         * jit-icalls.c (mono_isfinite): New jit icall.
5299
5300         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
5301         
5302         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
5303         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
5304         the parent frame.
5305
5306 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5307
5308         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
5309         separate frame and stack pointers, so we must use FP to find the register
5310         spill area.
5311         The FP reg is retrieved from the MonoContext::regs array.
5312
5313 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5314
5315         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
5316         as FPA requires it.
5317
5318 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5319
5320         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
5321         return R4 and R8 when not running under softfloat.
5322
5323         Fixes basic-calls.exe
5324
5325 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5326
5327         * mini-arm.c: Implement some overflow opcodes.
5328
5329 2009-01-29  Miguel de Icaza  <miguel@novell.com>
5330
5331         * ssa.c: handle another alloca.h
5332
5333         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
5334         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
5335         MONO_ARCH_USE_SIGACTION. 
5336
5337         * aot-runtime.c, mini-exceptions.c: Replace platform define with
5338         capability defines.
5339
5340         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
5341
5342         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
5343         PPC targets as sigaction does not exist on all platforms, define
5344         this on a per-platform basis.
5345
5346         Instead of erroring out if the platform is not defined, include
5347         mini-ppc-os.h, and expect that the OS specific setting provides
5348         the required information.   
5349
5350 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5351
5352         * aot-compiler.c: Fix --enable-minimal=aot.
5353
5354 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5355
5356         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
5357         previous change.
5358
5359 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
5360
5361         * exceptions-arm.c: Fix warnings.
5362
5363         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
5364         ARM.
5365
5366         * mini-x86.c: Fix --enable-minimal=jit build.
5367
5368         * mini.c: Really fix --enable-minimal=jit build.
5369         
5370         * mini.c (construct_object_context_for_method): Move this outside
5371         the DISABLE_JIT block to fix the --enable-minimal=jit build.
5372
5373         "Backported" of r124984 from 2.0 branch.
5374         
5375         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
5376
5377         "Backport" of r124977 + r124978 from 2.0 branch.
5378         
5379         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
5380         to avoid calling mono_exception_from_token () from the throw trampoline.
5381         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
5382         for throwing corlib exceptions, this fixes full-aot support for corlib
5383         exceptions.
5384
5385         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
5386
5387 2009-01-29  Miguel de Icaza  <miguel@novell.com>
5388
5389         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
5390         part of the changes to split the code in mini into operating
5391         system specific files.
5392
5393         This patch was done by copying mini.c to the respective files to
5394         preserve SVN history.
5395
5396 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
5397
5398         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
5399
5400 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
5401
5402         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
5403         remoting-invoke-with-check wrappers of shared methods.
5404
5405         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
5406
5407 2009-01-27  Mark Probst  <mark.probst@gmail.com>
5408
5409         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
5410         optimization if the top of stack is the last instruction in the
5411         bblock.  Otherwise it might have been used after its definition.
5412         Fixes #469742.
5413
5414 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
5415
5416         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
5417         method as well when get_vcall_slot () fails to match a code sequence.
5418
5419         * mini-arm.c: Fix the android build, which doesn't have
5420         __aeabi_read_tp.
5421
5422 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
5423
5424         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
5425         the s390x build.
5426
5427 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
5428
5429         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
5430
5431 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
5432
5433         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
5434         and put its id into jinfo->used_regs. This is only used on amd64,
5435         which is currently the only platform generating unwind info.
5436
5437         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
5438         the dwarf unwinder. This is required to correctly handle async exceptions
5439         like thread abort and stack overflows, which can happen while a method
5440         is in the middle of its prolog or epilog.
5441         
5442         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
5443         the unwind info belonging to an AOTed method.
5444
5445         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
5446         into cfg->unwind_ops.
5447         
5448         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
5449
5450         * mini.c (mini_init): Call mono_unwind_init ().
5451         (mini_cleanup): Call mono_unwind_cleanup ().
5452
5453         * unwind.c: Add functions for managing a set of unwind info entries, allowing
5454         unwind info to be shared between methods.
5455
5456         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
5457         saved in the LMF.
5458
5459         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
5460         get_throw_pending_exception () to avoid initialization races.
5461
5462         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
5463         mono_arch_exceptions_init () function.
5464
5465         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
5466
5467 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
5468
5469         * mini.c (mono_get_domain_intrinsic): New helper function.
5470         (mono_get_thread_intrinsic): Ditto.
5471
5472         * mini-arm.c mini-ia64.c: Use the new helper functions.
5473         
5474         * method-to-ir.c (mono_method_to_ir): Fix the comment for
5475         the last constrained_call change, since it is needed in the non-AOT
5476         case as well.
5477
5478         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
5479         
5480         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
5481         mono_get_lmf_addr () on arm eabi linux.
5482
5483 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
5484
5485         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
5486         code sequence which matches a non-virtual call.
5487
5488 2009-01-23  Mark Probst  <mark.probst@gmail.com>
5489
5490         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
5491         stack pointer (r1).
5492
5493 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
5494
5495         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
5496         runtime-invoke wrappers, since they are also shared based on signature.
5497
5498 2009-01-22  Mark Probst  <mark.probst@gmail.com>
5499
5500         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
5501         info from the (correct) context.
5502
5503 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
5504
5505         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
5506         
5507         * unwind.c (mono_unwind_frame): New function to unwind through a frame
5508         using dwarf unwinding info. Not yet used.
5509
5510         * mini.c (mini_init): When using xdebug, disable freeing of domains.
5511
5512 2009-01-21  Mark Probst  <mark.probst@gmail.com>
5513
5514         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
5515         descriptors.
5516
5517         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
5518         special case and handle mono_arch_delegate_invoke_impl() returning
5519         function descriptors.
5520
5521         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
5522         trampolines return function descriptors, too.
5523
5524 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
5525
5526         * method-to-ir.c (handle_alloc): Avoid generic instances in the
5527         out_of_line optimization.
5528
5529 2009-01-21  Martin Baulig  <martin@ximian.com>
5530
5531         * mini.h
5532         (MonoCompile): Added `disable_deadce_vars' to disable removing
5533         unused variables.
5534
5535         * mini.c
5536         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
5537         inside the debugger.
5538
5539         * liveness.c (mono_analyze_liveness): Don't remove any unused
5540         variables if `cfg->disable_deadce_vars' is set.
5541
5542 2009-01-21  Mark Probst  <mark.probst@gmail.com>
5543
5544         * method-to-ir.c: Only apply exception constructor optimization if
5545         the the method actually belongs to an exception class.  Fixes
5546         #467456.
5547
5548 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
5549
5550         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
5551         change inside a #ifdef __mono_ppc64__.
5552
5553         * aot-compiler.c (compile_method): Remove the previous limitation.
5554
5555         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
5556         on type variables in AOTed code.
5557         
5558         * aot-compiler.c (compile_method): Skip generic methods having type 
5559         constraints on their generic parameters.
5560
5561         * aot-compiler.c (compile_method): Check for methods which cannot be
5562         encoded inside RGCTX_FETCH patches as well.
5563
5564         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
5565         build.
5566
5567 2009-01-20  Mark Probst  <mark.probst@gmail.com>
5568
5569         * method-to-ir.c: Force the vtable variable in shared generic code
5570         for the case that they might show up on a stack trace where they
5571         are needed.
5572
5573         * mini-exceptions.c: Save and use generic sharing info as well as
5574         IP in stack traces to resolve shared generic instantiations.
5575
5576 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
5577
5578         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
5579         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
5580
5581 2009-01-20  Mark Probst  <mark.probst@gmail.com>
5582
5583         * method-to-ir.c: Do generic sharing for array constructors.
5584
5585 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
5586
5587         * mini-exceptions.c (mono_print_thread_dump): Add information
5588         about the thread state using wapi_current_thread_desc.
5589
5590 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
5591
5592         * basic-simd.cs: Tests for the new constructors. 
5593
5594 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
5595
5596         * mini-ops.h: Added OP_EXPAND_*
5597
5598         * cpu-x86.md: Same.
5599
5600         * mini-x86.c (mono_arch_output_basic_block): Same.
5601         
5602         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
5603
5604 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
5605
5606         * iltests.il.in: Add a test for #467385.
5607
5608 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
5609
5610         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
5611         thread been cleaned up is not the same currently in execution.
5612
5613         Fixes appdomain-unload crashes on windows, osx and linux variants
5614         without the __thread keyword.
5615
5616 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
5617
5618         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
5619         (koush@koushikdutta.com). Implement this for android.
5620
5621         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
5622         begins with a digit.
5623
5624         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
5625         mono_marshal_get_write_barrier ().
5626
5627 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
5628
5629         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
5630         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
5631         that pass them on a register pair.
5632
5633         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
5634         test was crashing due to that.
5635
5636 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
5637
5638         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
5639         trampoline code. Include ucontext.h only if available.
5640
5641 2009-01-15  Mark Probst  <mark.probst@gmail.com>
5642
5643         * mini.c: mono_domain_lookup_shared_generic() takes an open method
5644         and doesn't check whether it's sharable, like it was before
5645         removing the shared generics hash.  This brings IronPython
5646         performance back to what it was before that change.
5647
5648 2009-01-14  Mark Probst  <mark.probst@gmail.com>
5649
5650         * method-to-ir.c: Handle delegate invocation optimization earlier,
5651         otherwise it would be handled (much more slowly) by the
5652         final/sealed optimization.
5653
5654 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
5655
5656         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
5657         domain is not set. Fixes #465864.
5658
5659 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5660
5661         * method-to-ir.c: Don't stop sharing of generic methods with catch
5662         clauses - we already handle those.
5663
5664 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5665
5666         * mini.c, mini.h: lookup_generic_method() is now
5667         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
5668         making the shared_generics_hash obsolete.
5669
5670 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5671
5672         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
5673         use the red zone.  Make room on the stack first and then use it,
5674         not the other way around.
5675
5676 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
5677
5678         * mini.c (mini_init): Call mono_xdebug_init ().
5679
5680         * aot-compiler.c (mono_xdebug_init): Make this non-static.
5681
5682 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
5683
5684         * TestDriver.cs: Add an --iter argument to run tests multiple times.
5685
5686         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
5687         trampolines.
5688
5689         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
5690         debug+unwind info for trampolines.
5691
5692         * mini.c (mono_create_unwind_op): New helper function.
5693
5694         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
5695
5696 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
5697
5698         * aot-compiler.c: Fix the build.
5699
5700 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
5701
5702         * Makefile.am: Update dtrace-prelink.sh location.
5703
5704 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
5705
5706         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
5707         optimization. Fixes #464520.
5708
5709 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
5710
5711         * mini-amd64.c : Adding code to save/restore non-volatile registers
5712            on Winx64.
5713
5714         * exceptions-amd64.c : Adding code to save/restore non-volatile 
5715           registers on Winx64.
5716
5717         Contributed under MIT/X11 license.
5718
5719 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
5720
5721         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
5722         __GNUC_MINOR__ which can break when the major version changes.
5723
5724 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
5725
5726         * basic-simd.cs: Add tests for usage of the sizeof opcode.
5727
5728 2009-01-07  Geoff Norton  <gnorton@novell.com>
5729
5730         * helpers.c:  Allow mono -v -v -v to work on darwin.
5731
5732 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
5733
5734         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
5735           pattern. 
5736
5737         Contributed under MIT/X11 license.
5738
5739 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
5740
5741         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
5742         instead of directly accessing type->data.klass. Fixes #462016.
5743         (mono_allocate_stack_slots_full): Ditto.
5744
5745         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
5746         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
5747
5748         * aot-compiler.c (emit_plt): Fix ARM build.
5749
5750 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
5751
5752         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
5753         
5754         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
5755         change.
5756
5757         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
5758         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
5759         #463357.
5760
5761         * iltests.il.in: Add a regression test.
5762
5763 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5764
5765         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
5766
5767 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5768
5769         * basic-simd.cs: Add a regression test for #462457.
5770
5771 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5772
5773         * mini-ops.h: Add a definition of XPHI.
5774
5775         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
5776
5777         * ssa.c (op_phi_to_move): Handle XPHI.
5778
5779         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
5780
5781         Fixes #462457
5782
5783 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5784
5785         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
5786
5787 2008-12-31  Geoff Norton  <gnorton@novell.com>
5788
5789         * mini-ppc.c: The prolog size allocated can be too small for darwin
5790         ppc32 under certain circumstances.  Also fix a small logic bug.
5791
5792 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
5793
5794         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
5795         while loading AOT methods.
5796
5797         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
5798         since only the former is nulled out after a successful cast. This prevents
5799         crashes with rethrown exceptions when using --debug=casts.
5800
5801 2008-12-24  Mark Probst  <mark.probst@gmail.com>
5802
5803         * mini.h: New macro for checking whether a method is final,
5804         i.e. whether the method or its class is marked final.
5805
5806         * method-to-ir.c: Use the new macro for all final-checks
5807         consistently.  Fixes the crash in the System.ServiceModel tests.
5808
5809 2008-12-23  Mark Probst  <mark.probst@gmail.com>
5810
5811         * mini-exceptions.c (get_exception_catch_class): Corrected another
5812         overly strict assertion.
5813
5814 2008-12-23  Mark Probst  <mark.probst@gmail.com>
5815
5816         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
5817         Clobbering it is not allowed because the caller might use it as
5818         the vtable register in the interface call.
5819
5820 2008-12-19  Mark Probst  <mark.probst@gmail.com>
5821
5822         * mini-exceptions.c (get_exception_catch_class): Corrected an
5823         overly strict assertion.
5824
5825 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
5826         
5827         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
5828
5829         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
5830
5831         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
5832
5833         * cpu-mips.md: correct lengths for certain long_ opcodes.
5834
5835         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
5836
5837         * 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().
5838         
5839 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
5840
5841         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
5842         
5843 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
5844         
5845         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
5846         
5847 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
5848
5849         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
5850         next basic block.
5851         
5852 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
5853
5854         * 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
5855
5856         * 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)
5857         
5858 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
5859         
5860         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
5861         
5862 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
5863
5864         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
5865         gshared code. Fixes #458947.
5866
5867         * generics.cs: Add a test.
5868
5869 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
5870         
5871         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5872         
5873         * mini-mips.c: first pass n32 code generation.
5874
5875         * mini-mips.h: datatypes and defines for n32 support.
5876
5877         * exceptions-mips.c: first pass n32 code generation.
5878         
5879         * tramp-mips.c: first pass n32 code generation.
5880         
5881         * cpu-mips.md: add long_ opcodes.
5882         
5883 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
5884
5885         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5886
5887         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5888         
5889         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5890         
5891         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5892
5893         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5894
5895         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5896
5897         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5898
5899         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5900
5901         * helpers.c: for mips/n32, don't pass -mips32 to objdump
5902
5903 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
5904
5905         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
5906
5907 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
5908
5909         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
5910
5911 2008-12-12  Mark Probst  <mark.probst@gmail.com>
5912
5913         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
5914         descriptors for helper functions directly in front of the code.
5915
5916 2008-12-11  Mark Probst  <mark.probst@gmail.com>
5917
5918         * method-to-ir.c: Removed an unnecessary assertion.
5919
5920 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
5921
5922         * method-to-ir.c: Merge SGEN changes from the old JIT.
5923
5924 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
5925
5926         * driver.c (compile_all_methods_thread_main): Handle failure of
5927         mono_get_method ().
5928
5929 2008-12-10  Mark Probst  <mark.probst@gmail.com>
5930
5931         * mini-ppc.c: Merged with mini-ppc64.c.
5932
5933         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
5934
5935         * Makefile.am: Use the same sources for PPC and PPC64.
5936
5937         * mini-ppc64.c: Removed.
5938
5939 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
5940
5941         * branch-opts.c (remove_block_if_useless): Extract fall through detection
5942         code to mono_bb_is_fall_through.
5943         
5944         * branch-opts.c (mono_remove_critical_edges): Same.
5945
5946 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
5947
5948         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
5949         expect that an OP_BR_REG will be there.
5950
5951 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
5952
5953         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
5954         for the many branch ops. The original check miss OP_BR_REG.
5955
5956         Fixes #457574.
5957         
5958 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5959
5960         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
5961
5962 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
5963
5964         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
5965         while holding the aot lock.
5966
5967 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5968
5969         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
5970         
5971 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
5972
5973         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
5974           to release all runtime callable wrappers held by the runtime.
5975
5976         Contributed under MIT/X11 license.
5977
5978 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
5979
5980         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
5981           for Winx64.
5982
5983         Contributed under MIT/X11 license.
5984
5985 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
5986
5987         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
5988         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
5989
5990 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5991
5992         * cpu-mips.md: fix ckfinite length
5993
5994         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
5995         (mono_arch_lowering_pass): cleanup, rearrange for clarity
5996         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
5997         
5998 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
5999
6000         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
6001         
6002 2008-12-08  Geoff Norton  <gnorton@novell.com>
6003
6004         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
6005         size by 8 bytes as well.
6006
6007 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6008
6009         * basic-simd.cs: Fix method names for Vector16b.
6010         
6011 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6012
6013         * basic-simd.cs: Fix method names for Vector16sb.
6014
6015 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6016
6017         * basic-simd.cs: Fix method names for Vector8us.
6018         
6019 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6020
6021         * basic-simd.cs: Fix method names for Vector8s.
6022         
6023 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6024
6025         * basic-simd.cs: Fix method names for Vector4ui.
6026
6027 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6028
6029         * basic-simd.cs: Fix method names for Vector2l.
6030
6031 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6032
6033         * basic-simd.cs: Fix method names for Vector2d.
6034
6035 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6036
6037         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
6038         that are extension methods.
6039
6040 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6041
6042         * basic-simd.cs: Fix method names for Vector4f.
6043
6044 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
6045
6046         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
6047         as such. Fixes #456669.
6048
6049 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
6050
6051         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
6052         
6053 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
6054
6055         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
6056         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
6057         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
6058         (mips_adjust_stackframe): handle FP spills
6059                 
6060         * mini-ops.h: add mips_mtc1_s2
6061         
6062         * cpu-mips.md: add mips_mtc1_s2
6063         
6064 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
6065
6066         * unwind.c: New file, move the unwind info encoding functions here from
6067         aot-compiler.c, so they could be used at runtime too.
6068
6069 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
6070
6071         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
6072         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
6073         
6074 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
6075
6076         * mini-mips.c: cleanup warnings
6077         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
6078         (mips_adjust_stackframe): handle case of taking the address of stack locals
6079         
6080 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6081
6082         * aot-compiler.c: Implement a few functions missing from the asm writer.
6083         (emit_method_code): Only write symbols for methods when using the bin
6084         writer, since the assembler can't deal with the characters in our method
6085         names.
6086
6087         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
6088
6089         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
6090         call.
6091
6092         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
6093         a bit to also restore %rax.
6094
6095 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6096
6097         * mini-ppc.c: Some simple merges from mini-ppc64.c.
6098
6099 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6100
6101         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
6102         arguments.
6103
6104 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6105
6106         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
6107
6108         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
6109         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
6110
6111         * exceptions-ppc64.c: Removed.
6112
6113         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
6114
6115 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6116
6117         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
6118         tramp-ppc64.c.
6119
6120         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
6121
6122         * tramp-ppc64.c: Removed.
6123
6124 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6125
6126         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
6127         the TYPESPEC table.
6128
6129 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6130
6131         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
6132
6133         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
6134         mini-ppc.h instead of mini-ppc64.h.
6135
6136         * mini-ppc64.h: Removed.
6137
6138 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6139
6140         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
6141         
6142         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
6143         
6144 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6145
6146         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
6147         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
6148         code easier.
6149
6150 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6151
6152         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
6153
6154 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6155
6156         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
6157
6158 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6159
6160         * basic-simd.cs: Tests for operator == and != on Vector4f.
6161
6162 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6163
6164         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
6165
6166         * simd-intrinsics.c: Kill useless enum.
6167
6168 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6169
6170         * cpu-mips.md: add long_conv_to_ovf_i4_2
6171         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
6172
6173 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6174
6175         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
6176         
6177         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
6178
6179 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6180
6181         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
6182         
6183 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6184
6185         * basic-simd.cs: Add tests for new methods.
6186
6187 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6188
6189         * simd-intrinsics.c: Add support for operator == and !=
6190         on Vector4(u)i.
6191
6192         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
6193
6194 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6195
6196         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
6197
6198 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
6199
6200         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
6201
6202         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
6203         MONO_PATCH_INFO_ICALL_ADDR.
6204
6205         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
6206
6207         * aot-compiler.c: Resurrect full-aot support.
6208
6209 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6210
6211         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
6212         
6213 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6214
6215         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
6216         
6217 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
6218
6219         * basic-simd.cs: Fix tests to work under ppc.
6220         Remove tests for methods that will be removed.
6221
6222 2008-12-03  Mark Probst  <mark.probst@gmail.com>
6223
6224         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
6225         generic type (via a typedef or typeref) correctly.
6226
6227 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
6228
6229         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
6230         diagnose an assertion failure.
6231
6232 2008-12-02  Mark Probst  <mark.probst@gmail.com>
6233
6234         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
6235         Fix trampoline size.
6236
6237         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
6238         conversion opcodes are implemented natively instead via emulation.
6239
6240 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6241
6242         * cpu-mips.md: remove mips_xori
6243
6244         * mini-ops.h:  remove mips_xori
6245
6246         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
6247
6248         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
6249         
6250         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
6251         
6252 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6253
6254         * cpu-mips.md: fix instruction lengths.
6255
6256         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
6257
6258         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
6259
6260         * mini-ops.h: fix slti / sltiu op profiles.
6261         
6262 2008-12-02  Martin Baulig  <martin@ximian.com>
6263
6264         * method-to-ir.c (mono_method_to_ir): Disable debugging
6265         information for the init locals block to make the debugger stop
6266         after all locals have been initalized.
6267
6268 2008-12-02  Martin Baulig  <martin@ximian.com>
6269
6270         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
6271         running inside the debugger.
6272
6273 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
6274
6275         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
6276         is enabled.
6277
6278         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
6279         alu->alu imm optimization which only shows if deadce is disabled.
6280
6281         * aot-compiler.c: Rename the function names for the binary and asm writers
6282         so they can coexist in the same process. Rework the xdebug code to use the
6283         asm writer. This avoids the need to call into the runtime to dump the
6284         debugging info. Add more debugging info for types.
6285
6286         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
6287
6288         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
6289         cpu description tables, they can't occur in cpu-<ARCH>.md.
6290
6291         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
6292         the stack in CEE_LDFLDA. Fixes #450542.
6293
6294         * generics.cs: Add a new test.
6295
6296 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6297
6298         * mini-ops.h: updated MIPS opcodes
6299         * mini-mips.c: decompose long opts
6300         * mini-mips.h: decompose long opts
6301         
6302 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
6303
6304         * cpu-mips.md: fix length on int_rem_un
6305         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
6306         
6307 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
6308
6309         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
6310
6311         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
6312
6313 2008-11-29  Martin Baulig  <martin@ximian.com>
6314
6315         * mini-exceptions.c (mono_handle_native_sigsegv): Check
6316         mono_debug_using_mono_debugger() in addition to the
6317         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
6318
6319 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6320
6321         * mini-ops.h: updated more MIPS opcodes
6322         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
6323         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
6324         
6325 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6326
6327         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
6328
6329 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6330
6331         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
6332         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
6333         * mini-ops.h: correct selected mips opcode entries
6334         
6335 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6336
6337         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
6338         make them work.
6339
6340 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6341
6342         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
6343
6344 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6345
6346         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
6347         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
6348         * mini-mips.h: disable IMT
6349         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
6350         
6351 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6352
6353         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
6354
6355 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6356
6357         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
6358
6359 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
6360
6361         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
6362         consistency.
6363
6364 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6365
6366         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
6367         for Set/GetVector aligned versions.
6368
6369 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6370
6371         * basic-simd.cs: Add tests for Get/SetVector.
6372
6373 2008-11-27  Mark Probst  <mark.probst@gmail.com>
6374
6375         * mini.c: Removed g_slist_append_mempool().  Now in
6376         metadata/mempool.c.
6377
6378 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6379
6380         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
6381         size properly and make the bounds check optional.
6382
6383         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
6384         for SetVector and IsAligned.
6385
6386 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
6387
6388         * mini.c: Remove unused mono_normalize_opcodes () function.
6389
6390 2008-11-26  Mark Probst  <mark.probst@gmail.com>
6391
6392         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
6393         using the new atomic add ops now.
6394
6395         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
6396         add.
6397
6398 2008-11-26  Mark Probst  <mark.probst@gmail.com>
6399
6400         * mini-ppc64.c: Several fixes.
6401
6402 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6403
6404         * cpu-mips.md: added jump_table
6405         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
6406
6407 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6408
6409         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
6410
6411 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6412
6413         * mini-ops.h: corrected a handful of MIPS opcodes.
6414
6415 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6416
6417         * aot-compiler.c: MIPS to use ELF writer
6418
6419 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6420
6421         * mini-codegen.c: remove MIPS specific assert.
6422
6423 2008-11-25  Mark Probst  <mark.probst@gmail.com>
6424
6425         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
6426         fixes.  PPC64 now passes most of the runtime regressions.
6427
6428 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
6429
6430         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
6431         volatile intervals a bit.
6432
6433 2008-11-24  Mark Probst  <mark.probst@gmail.com>
6434
6435         * basic-long.cs: New test case.
6436
6437 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
6438
6439         * mini.c (mini_method_compile): Disable globalra for large methods for 
6440         now.
6441
6442         * regalloc2.c (order_moves): Add fp support.
6443
6444         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
6445         source bblock ends with an OP_BR_REG.
6446
6447         * ratests.cs: Add a new test.
6448
6449 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6450
6451         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
6452         sharing.  PPC64 now passes generics.exe.
6453
6454 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6455
6456         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
6457
6458 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
6459
6460         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
6461         memory when mono_jit_info_table_find () can't find the method in the
6462         LMF case.
6463
6464         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
6465         AOTed code too.
6466         
6467         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
6468         writer too.
6469
6470 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6471
6472         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
6473         Several fixes.  PPC64 now runs exceptions.exe and
6474         devirtualization.exe.
6475
6476 2008-11-22  Mark Probst  <mark.probst@gmail.com>
6477
6478         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
6479         arrays.exe and basic-math.exe.
6480
6481 2008-11-22  Mark Probst  <mark.probst@gmail.com>
6482
6483         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
6484         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
6485
6486 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6487
6488         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
6489
6490 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6491
6492         * method-to-ir.c: Move bounds checking macros to ir-emit.h
6493
6494         * ir-emit.h: Move macros from method-to-ir.c to here.
6495
6496 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6497
6498         * mini-ops.h: Correct the long simd ops to use LREG.
6499
6500 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
6501
6502         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
6503         
6504         * mini-ops.h: Correct the dreg type of a few long opcodes.
6505
6506         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
6507         Add netbsd support.
6508
6509 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
6510
6511         * mini-ppc.c: remove negative stack references in epilog
6512         for platforms that don't support the red zone.
6513
6514 2008-11-21  Mark Probst  <mark.probst@gmail.com>
6515
6516         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
6517         point regs.  Now PPC64 passes basic-calls.exe.
6518
6519 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6520
6521         * basic-simd.cs: Add tests for accessors of Vector2l.
6522
6523 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6524
6525         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
6526
6527         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
6528         
6529         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
6530
6531 2008-11-21  Mark Probst  <mark.probst@gmail.com>
6532
6533         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
6534         PPC64 passes basic-long.exe.
6535
6536 2008-11-20  Mark Probst  <mark.probst@gmail.com>
6537
6538         * decompose.c: Decompose carry and overflow add on PPC64 like on
6539         other 64 bit archs.  Don't decompose sub at all on PPC64.
6540
6541         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
6542         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
6543         basic-long.exe.
6544
6545 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6546
6547         * basic-simd.cs: Add tests for accessors of Vector2d.
6548
6549 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6550
6551         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
6552
6553         * cpu-x86.md: Same.
6554
6555         * mini-x86.c (mono_arch_output_basic_block): Same.
6556         
6557         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
6558
6559 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6560
6561         * basic-simd.cs: Add tests for accessors of Vector4f.
6562
6563 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6564
6565         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
6566
6567         * cpu-x86.md: Same.
6568
6569         * mini-x86.c (mono_arch_output_basic_block): Same.
6570         
6571         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
6572
6573 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6574
6575         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
6576
6577 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6578
6579         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
6580
6581         * cpu-x86.md: Same.
6582
6583         * mini-x86.c (mono_arch_output_basic_block): Same.
6584         
6585         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
6586
6587 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6588
6589         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
6590
6591 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6592
6593         * simd-intrinsics.c: Enable setters for Vector16sb.
6594
6595 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6596
6597         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
6598
6599         * cpu-x86.md: Same.
6600
6601         * mini-x86.c (mono_arch_output_basic_block): Same.
6602         
6603         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
6604
6605 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
6606
6607         * simd-intrinsics.c: Implement setter for Vector8us.
6608
6609 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
6610
6611         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
6612         for dead variables.
6613
6614 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
6615
6616         * mini-ppc.c: remove references to the red zone in the prolog
6617         (for systems that don't support it).
6618
6619 2008-11-19  Mark Probst  <mark.probst@gmail.com>
6620
6621         * cpu-ppc64.md: Fixed a few instruction lengths.
6622
6623         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
6624         now.
6625
6626 2008-11-19  Mark Probst  <mark.probst@gmail.com>
6627
6628         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
6629         basic.exe now.
6630
6631 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
6632
6633         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
6634
6635 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
6636
6637         * mini-ops.h: Added OP_INSERT_I2.
6638
6639         * cpu-x86.md: Same.
6640
6641         * mini-x86.c (mono_arch_output_basic_block): Same.
6642         
6643         * simd-intrinsics.c: Implement setter for Vector8s.
6644
6645         * simd-methods.h: Add the names of get setters of Vector8s.
6646
6647 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
6648
6649         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
6650         
6651         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
6652         parameters.
6653
6654         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
6655
6656 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6657
6658         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
6659         for PPC64.  An empty program runs now.
6660
6661 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
6662
6663         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
6664
6665         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
6666         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
6667         info for JITted code is emitted into a shared library, loadable into gdb.
6668
6669 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6670
6671         * Makefile.am: Changes to build PPC64.
6672
6673         * mini-arch.h: Include mini-ppc64.h on PPC64.
6674
6675 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6676
6677         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
6678         in PPC code up to r119147.
6679
6680 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6681
6682         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
6683         cpu-ppc64.md: Changes for PPC64.
6684
6685         Based on code submitted by andreas.faerber@web.de at
6686         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
6687         X11/MIT license.
6688
6689 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6690
6691         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
6692         cpu-ppc64.md: Copied from the corresponding PPC files from
6693         r118846.
6694
6695 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
6696
6697         * mini-ops.h: Added OP_ROUND.
6698
6699         * cpu-x86.md: Added round.
6700
6701         * mini-x86.c: Added support for intrinsicing Math.Round (double).
6702
6703         * basic-math.cs: Added test_0_round to test rounding.
6704
6705         Contributed under MIT/X11 license.
6706
6707 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
6708
6709         * aot-compiler.c : Fix the Winx64 build.
6710
6711         Contributed under MIT/X11 license.
6712
6713 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6714
6715         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
6716         in OP_EXTRACT_R8 to avoid possible stack corruption.
6717
6718 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6719
6720         * mini-ops.h: Added OP_EXTRACT_R8/I8.
6721
6722         * cpu-x86.md: Added extract_r8.
6723
6724         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
6725         
6726         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
6727         a couple of OP_EXTRACT_I4.
6728
6729         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
6730
6731         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
6732
6733 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6734
6735         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
6736         and not 4.1. 
6737
6738 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
6739
6740         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
6741         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
6742
6743         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
6744         are not needed any more.
6745
6746         * mini.h: Remove the unused INS_LIST macros.
6747
6748         * mini.c (mini_method_compile): Remove a disable globalra case which is no
6749         longer needed.
6750
6751         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
6752         ir-emit.h.
6753
6754         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
6755         mono_alloc_ireg () instead.
6756
6757         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
6758         macros.
6759
6760         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
6761         on amd64.
6762
6763         * aot-runtime.c (load_aot_module): Disable AOT when running under
6764         CAS.
6765
6766         * mini-amd64.h: Change the monitor fastpath defines to check for
6767         !PLATFORM_WIN32 so they work on *bsd too.
6768
6769         * mini.h mini.c mini-hhpa.c: Remove more unused code.
6770
6771         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
6772
6773         * mini.h (MonoCompile): Remove new_ir flag.
6774
6775         * regalloc.h regalloc.c: Remove unused code.
6776
6777         * cpu-*.md: Remove more unused opcodes.
6778
6779         * simple-cee-ops.h simple-mini-ops.h: Removed.
6780
6781         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
6782         
6783 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
6784
6785         * aliasing.h: Removed.
6786
6787         * *.c: Remove references to aliasing.h and inssel.h.
6788
6789         * mini.c: Remove additional unused functions.
6790
6791         * mini-ops.h cpu-*.md: Remove unused opcodes.
6792
6793 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
6794
6795         Remove the old JIT code.
6796
6797         * inssel*.brg: Removed.
6798
6799         * ssa.c abcremoval.c aliasing.c: Removed.
6800
6801         * ssa2.c: Renamed to ssa.c.
6802
6803         * abcremoval2.c: Renamed to abcremoval.c.
6804
6805         * *.c: Removed all !cfg->new_ir code.
6806
6807         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
6808         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
6809
6810         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
6811         
6812 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
6813
6814         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
6815         to simplify the code and cut back on the number of global symbols in the AOT
6816         file.
6817         
6818         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
6819
6820 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
6821
6822         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
6823         with the got/got_info tables.
6824
6825         * mini.h: Bump AOT file format version.
6826         
6827         * unwind.h: New file, contains definitions for stack unwinding.
6828
6829         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
6830         to cfg->unwind_ops.
6831         
6832         * aot-compiler.c: Generalize the emitting of unwind information to use the
6833         information in cfg->unwind_ops.
6834
6835         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
6836
6837         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
6838         AOT method frames. Enable writing symbols for methods by default.
6839
6840 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
6841
6842         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
6843         and make it work with vectors of element sizes 1, 2 and 4.
6844
6845         * simd-intrinsics.c: Enable getter for all vectors with element size
6846         1, 2 or 4.
6847
6848         * simd-methods.h: Add the names of other getters.
6849
6850         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
6851
6852         * cpu-x86.md: Same.
6853
6854         * mini-x86.c: Same.
6855
6856 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
6857
6858         * mini-ppc.h: portability fix.
6859
6860 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
6861
6862         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
6863         buggy and will overwrite it.
6864
6865 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
6866
6867         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
6868         Use it to emit local symbols for all methods so AOTed methods show up with
6869         their full name in gdb/valgrind output.
6870
6871 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
6872
6873         * mini-ppc.c: portability fixes.
6874
6875 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
6876
6877         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
6878         entries out of the if (!generic_shared...) code so it is always done.
6879         (mono_class_init_trampoline): Do the patching when running under valgrind
6880         too, newer versions of valgrind have no problems with it.
6881
6882 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
6883
6884         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
6885         further sections.
6886
6887 2008-11-13  Mark Probst  <mark.probst@gmail.com>
6888
6889         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
6890         filters.
6891
6892 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6893
6894         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
6895
6896 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6897
6898         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
6899
6900         * cpu-x86.md: Same.
6901
6902         * mini-x86.c: Same.
6903
6904         * simd-intrinsics.c: Same.
6905
6906 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6907
6908         * simd-intrinsics.c: Enable constructor intrinsics for all types.
6909
6910 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6911
6912         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
6913         to work with more Vector types.
6914
6915 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6916
6917         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
6918         store the elemens directly instead of using and intermediate.
6919
6920 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
6921
6922         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
6923
6924         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
6925         to preserve %eax for aot plt trampolines.
6926
6927         * aot-compiler.c (compile_method): Don't skip synchronized methods.
6928         (encode_method_ref): Flag synchronized methods so they won't go through
6929         the AOT trampoline.
6930
6931         * aot-compiler.c: Additional work to support AOTing synchronized methods/
6932         wrappers.
6933
6934         * cpu-ia64.md (jmp): Increase max length.
6935
6936 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
6937
6938         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
6939         open generic classes.
6940
6941         * aot-compiler.c: Enable the ELF writer on ELF platforms.
6942
6943         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
6944         box+brtrue optimization since it causes test failures on x86.
6945
6946 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6947
6948         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
6949
6950         * cpu-x86.md: Same.
6951
6952         * mini-x86.c: Same.
6953
6954         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
6955         for simd ctor values. 
6956
6957         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
6958         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
6959
6960 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6961
6962         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
6963         LogicalRightShift.
6964
6965         * simd-instrincs.c: Same.
6966
6967         * basic-simd.cs: Same.
6968
6969 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
6970
6971         * ratests.cs: Add more tests.
6972
6973         * regalloc2.c (add_spill_code): Handle more corner cases.
6974
6975 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
6976
6977         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
6978         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
6979         both the source an destination of an instruction.
6980
6981 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
6982
6983         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
6984         wapihandles.c: more portability changes.
6985
6986 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
6987
6988         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
6989         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
6990         safe to execute in a signal handler and the kernel provides better
6991         the info in /proc/self/smaps. Avoid the assert on sigaction during
6992         cleanup.
6993
6994 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
6995
6996         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
6997         do the bblock linking hack if it is actually needed.
6998
6999         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
7000         up linking.
7001
7002         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
7003         crash problem is fixed.
7004
7005         * branch-opts.c (mono_remove_critical_edges): Link up newly added
7006         bblocks.
7007
7008         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
7009         for catch clauses.
7010         (mini_method_compile): Set the starting value of next_vreg to 
7011         MAX_IREGS + MAX_FREGS when using globalra.
7012
7013         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
7014         filter clauses with BB_EXCEPTION_HANDLER.
7015
7016         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
7017
7018 2008-11-10  Mark Probst  <mark.probst@gmail.com>
7019
7020         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
7021         space for stdcall.  Fixes regressions on Win32.
7022
7023 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
7024
7025         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
7026         bblocks.
7027         (linear_scan): Remove an assert which doesn't seem to be needed.
7028
7029         * local-propagation.c (mono_local_deadce): Avoid a call to
7030         MONO_DELETE_INS which would screw up the instruction linking.
7031
7032         * mini.c (mono_decompose_op_imm): Make this work with globalra.
7033
7034         * regalloc2.c: Upgrade to work the current JIT code.
7035
7036 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
7037
7038         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
7039         case.
7040
7041         * aot-runtime.c: Remove some dead code.
7042
7043         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
7044         consistency.
7045         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
7046
7047         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
7048         trampolines using sscanf since atoi doesn't work on large unsigned values.
7049
7050         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
7051         Initialize code_size.
7052
7053 2008-11-08  Mark Probst  <mark.probst@gmail.com>
7054
7055         * method-to-ir.c (mini_emit_inst_for_method): Make
7056         Interlocked.CompareExchange work for Int arguments on 32 bit
7057         archs, as well.
7058
7059 2008-11-07  Mark Probst  <mark.probst@gmail.com>
7060
7061         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
7062
7063 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
7064
7065         * main.c Fix MSVC build.
7066
7067         Contributed under MIT/X11 license.
7068
7069 2008-11-06  Mark Probst  <mark.probst@gmail.com>
7070
7071         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
7072         alignment larger than 8 bytes are aligned correctly, too.
7073
7074         * mini.c: Honor the min_align field of MonoClass when laying out
7075         the stack.
7076
7077 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
7078
7079         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
7080
7081         * aot-compiler.c (emit_plt): Fix a warning.
7082         
7083         * aot-compiler.c: Implement ARM support in the binary writer.
7084
7085 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7086
7087         * basic-simd.cs: Add test for getter with byref arg.
7088         Fix the naming of a few tests.
7089         Add missing checks to a test.
7090
7091 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
7092
7093         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
7094
7095         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
7096         most of the full-aot support for monitor enter/exit trampolines.
7097
7098         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
7099         enter/exit trampoline creation functions.
7100
7101         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
7102         make dist.
7103
7104 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
7105
7106         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
7107         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
7108         implement the needed functionality without adding crap to the runtime.
7109
7110 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
7111
7112         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
7113         non-x86 builds.
7114
7115         * mini.c (mono_build_date): New global version holding the build date in
7116         string format.
7117         
7118         * Makefile.am (buildver.c): Generate a file containing the build date.
7119
7120         * main.c: Set the build date from the generated file.
7121
7122         * mini.c (mono_get_runtime_build_info): New helper function returning build
7123         information in a string format.
7124         
7125         * driver.c (mono_main): Print the build date in --version.
7126
7127         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
7128         file when the bind-to-runtime-version option is used.
7129
7130 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7131
7132         * simd-intrinsics.c: Fix bug when using getters and byref args. 
7133
7134 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7135
7136         * simd-methods.h: Rename prefetch methods.
7137
7138         * simd-intrinsics.c: Same.      
7139
7140 2008-11-05  Mark Probst  <mark.probst@gmail.com>
7141
7142         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
7143         sizes.
7144
7145 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7146
7147         * aot-compiler.c: Use the bundled elf header files instead of depending on
7148         the system one.
7149         
7150         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
7151         mempool.
7152
7153         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
7154         on every call.
7155
7156 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
7157
7158         * cpu-x86.md: Add store nta ops.
7159
7160         * mini-ops.h: Same.
7161
7162         * mini-x86.c: Same.
7163
7164         * mini.h: Add an enum for simd prefetch modes.
7165
7166         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
7167         of store. Use the changed code to support store nta.
7168
7169         * simd-intrinsics.c: Add prefetch ops for all vector types.
7170
7171 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7172
7173         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
7174         threads.
7175         
7176         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
7177         names.
7178
7179         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
7180         trampolines.
7181
7182 2008-11-04  Mark Probst  <mark.probst@gmail.com>
7183
7184         * mini-x86.c: Fixed commit.
7185
7186 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7187
7188         * aot-compiler.c (emit_plt): Align the plt section only on x86.
7189
7190 2008-11-04  Mark Probst  <mark.probst@gmail.com>
7191
7192         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
7193         and MONITOR_EXIT, for the ASM fastpaths.
7194
7195         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
7196         available.
7197
7198         * mini.c, patch-info.h: Signature and patch infos for
7199         Monitor.Enter/Exit trampolines.
7200
7201         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
7202
7203         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
7204         Monitor.Enter/Exit ASM fastpath for Linux.
7205
7206 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7207
7208         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
7209
7210         * objects.cs: Add a new test.
7211         
7212         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
7213
7214         * aot-runtime.c (load_method): Run class initialization in the PLT case even
7215         if MONO_LOG_LEVEL is set.
7216
7217         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
7218
7219         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
7220
7221         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
7222         
7223         * aot-compiler.c: Change the relocation code to use virtual addresses instead
7224         of file offsets. Align the sections belonging to the data segment to 
7225         PAGESIZE.
7226
7227 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
7228
7229         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
7230         elf.h. Port it to amd64.
7231
7232 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
7233
7234         * driver.c: Enable SIMD by default.
7235
7236 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
7237
7238         * cpu-x86.md: Add prefetch op.
7239
7240         * mini-ops.h: Same.
7241
7242         * mini-x86.c: Same.
7243
7244         * mini.h: Add an enum for simd prefetch modes.
7245
7246         * simd-methods.h: Add prefetch function names.
7247
7248         * simd-intrinsics.c: Add prefetch ops for all vector types.
7249
7250 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
7251
7252         * aot-compiler.c (emit_bytes): Speed this up a little.
7253
7254 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
7255
7256         * aot-compiler.c: Add JIT time etc. statistics.
7257         
7258         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
7259
7260         * mini.h (MonoCompile): Add 'got_offset' field.
7261
7262         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
7263         method_got_offsets array.
7264
7265         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
7266         wrappers.
7267
7268         * aot-compiler.c (compile_method): Add generic method instances referenced
7269         by the method to the list of methods to be compiled, this is required so if
7270         A<T> references B<T>, and another assembly references A<int>, then it will
7271         also get a copy of B<int>.
7272
7273         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
7274         when checking for monitor enter/exit.
7275
7276 2008-10-30  Mark Probst  <mark.probst@gmail.com>
7277
7278         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
7279         for Monitor.Enter and Monitor.Exit if enabled.
7280
7281         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
7282         Solaris.
7283
7284 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
7285
7286         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
7287         of an OP_MOVE. Fixes #440046.
7288
7289         * basic-long.cs: Add a new test.
7290
7291 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
7292
7293         * mini.h: Add synchronization note for the managed counter-part.
7294
7295         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
7296         returns the simd caps of the current cpu.
7297
7298 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
7299
7300         * basic-simd.cs: Remove Console.WriteLine.
7301
7302 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7303
7304         * basic-simd.cs: New tests for Vector2ul.
7305
7306 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7307
7308         * simd-intrinsics.c: Add new vector type Vector2ul.
7309
7310 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7311
7312         * basic-simd.cs: New tests for Vector2l.
7313
7314 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7315
7316         * cpu-x86.md: Add long version of most packed int ops.
7317
7318         * mini-ops.h: Same.
7319
7320         * mini-x86.h: Same.
7321
7322         * simd-intrinsics.c: Add new vector type Vector2l.
7323
7324 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7325
7326         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
7327
7328         * simd-methods.h: Remove SN_op_BitwiseXor.
7329
7330 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
7331
7332         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
7333         alignment.
7334
7335 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7336
7337         * basic-simd.cs: Test for Vector2d.
7338
7339         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
7340         value.
7341
7342 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7343
7344         * cpu-x86.md: Add double version of all packed float ops.
7345
7346         * mini-ops.h: Same.
7347
7348         * mini-x86.h: Same.
7349
7350         * simd-intrinsics.c: Add new vector type Vector2d.
7351
7352         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
7353
7354         * simd-methods.h: Add Duplicate.
7355
7356 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7357
7358         * basic-simd.cs: Test for packing with signed saturation.
7359
7360 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
7361
7362         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
7363         found in the TYPESPEC table.
7364
7365 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
7366
7367         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
7368         too.
7369
7370         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
7371
7372         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
7373         instead of the RVA, since the RVA can be changed by tools like the cil 
7374         stripper.
7375
7376         * method-to-ir.c (mono_method_to_ir2): Ditto.
7377
7378         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
7379         (deserialize_variable): Ditto.
7380
7381 2008-10-25  Martin Baulig  <martin@ximian.com>
7382
7383         * debug-mini.c (write_variable): Use
7384         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
7385
7386 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7387
7388         * cpu-x86.md: Add unsigned variants of packd and packw.
7389
7390         * mini-ops.h: Same.
7391
7392         * mini-x86.h: Emit the right instruction for packd and packw.
7393         Add unsigned variants of packd and packw.
7394
7395         * simd-intrinsics.c: Packd and packw were used in place of their
7396         unsigned variants. Change that.
7397         Add intrinsics for (Signed)PackWithSignedSaturation.
7398
7399         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
7400
7401 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7402
7403         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
7404
7405 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7406
7407         * mini-ops.h: Remove dword packed add/sub with saturation ops.
7408
7409         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
7410
7411         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
7412         sse instructions.
7413
7414         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
7415
7416 2008-10-24  Mark Probst  <mark.probst@gmail.com>
7417
7418         * method-to-ir.c, mini.c: Special casing for the synchronized
7419         wrapper for the ldtoken+GetTypeFromHandle case.
7420
7421 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
7422
7423         * mini.c (mono_replace_ins): Move this to branch-opts.c.
7424
7425         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
7426         created/split bblocks.
7427
7428 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7429
7430         * mini-ops.h: Add packed signed mul high.
7431         
7432         * cpu-x86.md: Same.
7433
7434         * mini-x86.c (mono_arch_output_basic_block): Same.
7435
7436         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
7437
7438         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
7439
7440 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7441
7442         * basic-simd.cs: Tests for Vector16sb.
7443
7444 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
7445
7446         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
7447
7448 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
7449
7450         * mini-ops.h: Add packed signed min, max and compare greater.
7451         
7452         * cpu-x86.md: Same.
7453
7454         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
7455         saturation.
7456
7457         * simd-methods.h: Add CompareGreaterThan.
7458
7459         * simd-methods.h: Remove CompareEquals.
7460
7461         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
7462
7463         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
7464
7465         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
7466         CompareEqual.
7467
7468 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
7469
7470         * basic-simd.cs: Fix tests due to change in the API.
7471
7472 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7473
7474         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
7475
7476 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7477
7478         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
7479
7480         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
7481         inst_offset as this has invalid values for LDADDR.
7482
7483 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7484
7485         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
7486
7487         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
7488
7489 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7490
7491         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
7492         for accessing field->data.
7493
7494 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7495
7496         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
7497
7498 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7499
7500         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
7501
7502         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
7503
7504 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7505
7506         * dominators.c (mono_compute_natural_loops): Allocate GList enties
7507         from the cfg mempool.
7508
7509 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
7510
7511         * basic-simd.cs: Tests for new methods in Vector8us.
7512
7513 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
7514
7515         * mini-ops.h: Add multiply and store high.
7516         
7517         * cpu-x86.md: Same.
7518
7519         * mini-x86.c (mono_arch_output_basic_block): Same.
7520
7521         * simd-methods.h: Same.
7522
7523         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
7524         and CompareEqual.
7525
7526 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
7527
7528         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
7529         mono_class_setup_vtable ().
7530
7531         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
7532         mono_class_get_vtable_entry () for accessing klass->vtable.
7533
7534         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
7535
7536         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
7537         found.
7538
7539         * method-to-ir.c (mono_save_token_info): Don't save references made from
7540         wrappers.
7541
7542         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
7543         of generic instances.
7544
7545         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
7546
7547 2008-10-19  Mark Probst  <mark.probst@gmail.com>
7548
7549         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
7550         OP_JMP depends on the method signature.  Calculate it properly.
7551
7552 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
7553         
7554         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
7555         called directly.
7556
7557         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
7558         instances.
7559         (emit_extra_methods): Add another table mapping method indexes to 
7560         offsets in the extra_method_info table.
7561
7562         * mini.h: Bump AOT file format version.
7563         
7564         * aot-runtime.c: Merge most of the code from mono_aot_get_method
7565         and mono_aot_get_method_from_token () into one function.
7566
7567 2008-10-19  Mark Probst  <mark.probst@gmail.com>
7568
7569         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
7570         separate counter.
7571
7572 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
7573
7574         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
7575         methods.
7576
7577         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
7578         disable_aot.
7579
7580         * mini.c (mono_patch_info_equal): Compare the generic context as well.
7581
7582         * mini.h: Bump aot file format version.
7583
7584         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
7585         AOT file can contain native code for methods which are not in the METHOD
7586         table. Generate code for non-sharable generic instances of generic methods
7587         found in the METHODSPEC table.
7588         
7589         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
7590         encoding generic type handles.
7591
7592         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
7593         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
7594
7595         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
7596         macros + MONO_ADD_INS.
7597
7598         * mini.c (mono_jump_info_token_new2): New function which takes a generic
7599         context as well.
7600
7601         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
7602
7603         * mini.h: Bump aot file format version.
7604
7605         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
7606
7607 2008-10-17  Mark Probst  <mark.probst@gmail.com>
7608
7609         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
7610         platforms, with definable stack alignment value.  Set to 16 now
7611         for all platforms.
7612
7613         * mini.c, mini.h, driver.c: Command line option for disabling
7614         stack alignment.
7615
7616 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7617
7618         * basic-simd.cs: Tests for new methods in Vector4ui.
7619
7620 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7621
7622         * mini-ops.h: Add packed int shuffle.
7623         
7624         * cpu-x86.md: Same.
7625
7626         * mini-x86.c (mono_arch_output_basic_block): Same.
7627
7628         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
7629         extract mask, max, min, shuffle.
7630
7631         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
7632
7633 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7634
7635         * basic-simd.cs: Tests for new methods in Vector8us.
7636
7637 2008-10-17  Mark Probst  <mark.probst@gmail.com>
7638
7639         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
7640         RuntimeTypeHandle, not a TypedReference.
7641
7642 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
7643
7644         * simd-intrinsics.c: remove relocations.
7645
7646 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
7647
7648         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
7649         optimizations from the x86 backend.
7650
7651 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
7652
7653         * simd-methods.h, simd-intrinsics.c: debloat method names and
7654         prepare for no relocations.
7655
7656 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7657
7658         * mini-ops.h: Add packed min/equal and sum of absolute differences.
7659         
7660         * cpu-x86.md: Same.
7661
7662         * mini-x86.c (mono_arch_output_basic_block): Same.
7663
7664         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
7665         extract mask, max, min and sum of absolute differences.
7666
7667         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
7668         method name.
7669
7670 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7671
7672         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
7673         Renamed one test for consistency.
7674
7675 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7676
7677         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
7678         fix to the code that deal with other blocks.
7679
7680 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7681
7682         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
7683
7684 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7685
7686         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
7687         that deals with vreg interference. Explicitly check for OP_LDADDR to be
7688         able to process the source reg.
7689
7690 2008-10-16  Martin Baulig  <martin@ximian.com>
7691
7692         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
7693
7694         * inssel.brg: Add `OP_HARD_NOP'.
7695
7696         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
7697
7698         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
7699         `OP_HARD_NOP' instruction when running inside the debugger.
7700
7701         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
7702         `OP_HARD_NOP' instruction when running inside the debugger.
7703
7704 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7705
7706         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
7707         now works. The issue with the regalloc tripping up no longer
7708         happens.
7709
7710         * simd-intrinsics.c (load_simd_vreg): Same.
7711
7712 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7713         
7714         * basic-simd.cs: Tests for new Vector8ui methods.
7715
7716 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7717
7718         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
7719         only for type. This fixes crashes where MonoInst::klass is checked
7720         for ops of type != VTYPE or OBJ.
7721
7722         * simd-intrinsics.c (load_simd_vreg): Same.
7723
7724 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7725
7726         * mini-ops.h: Add ops for packed shuffle/max/avg and
7727         extract mask.
7728         
7729         * cpu-x86.md: Same.
7730
7731         * mini-x86.c (mono_arch_output_basic_block): Same.
7732
7733         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
7734         extract mask.
7735
7736         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
7737         to emit extract mask op.
7738
7739         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
7740         to emit word shuffles.
7741
7742 2008-10-15  Mark Probst  <mark.probst@gmail.com>
7743
7744         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
7745         the largest alignment needed by a variable, but at least
7746         sizeof(gpointer).
7747
7748 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7749
7750         * basic-simd.cs: Tests for the fixes in the last commit.
7751
7752 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7753
7754         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
7755         no longer handles STACK_PTR input.
7756
7757         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
7758
7759         * simd-intrinsics.c (load_simd_vreg): New function that works like 
7760         get_simd_vreg   but handles STACK_PTR input.
7761
7762         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
7763         as the input can be an arbitrary pointer.
7764
7765         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
7766         LDADDR local optimization directly otherwise use a store op.
7767
7768 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7769
7770         * basic-simd.cs: Tests for dup low and dup high.
7771
7772 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7773
7774         * mini-ops.h: Add dup low and dup high ops.
7775         
7776         * cpu-x86.md: Same.
7777
7778         * mini-x86.c (mono_arch_output_basic_block): Same.
7779
7780         * simd-intrinsics.c (vector4f_intrinsics): Same.
7781
7782 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7783
7784         * basic-simd.cs: Tests for recently added functionality.
7785
7786 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7787
7788         * mini-ops.h: Add remaining sse1 fp ops.
7789         
7790         * cpu-x86.md: Add remaining sse1 fp ops.
7791
7792         * mini-x86.c (mono_arch_output_basic_block): Same.
7793
7794         * mini.h: Add enum for simd FP compare conditions.
7795
7796         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
7797
7798         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
7799         so the backed can generate the appropriate op.
7800
7801 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7802         This patch squeese one more byte from the SimdIntrinsc struct.
7803
7804         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
7805         a a shift amount intead of simply or'ing it.
7806
7807         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
7808
7809         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
7810         byte so we can have an aditional flags field without increasing struct size.
7811
7812         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
7813         against the simd_supported_versions bitmask.
7814
7815         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
7816
7817 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
7818
7819         * mini.c: remove rawbuffer code (the only use here is unsafe because
7820         it takes locks during signal handling and the kernel now provides much
7821         better info in proc/pid/smaps these days).
7822
7823 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
7824
7825         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
7826         OP_X86_PUSH_OBJ. Fixes #434620.
7827
7828         * objects.cs: Add a test.
7829         
7830 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
7831
7832         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
7833         that the packuswb/packusdw don't work with unsigned numbers for what
7834         would be negative numbers in signed format.
7835
7836         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
7837         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
7838
7839         * mini-ops.h: Add doubleword forms of many ops and packing ones.
7840
7841         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
7842
7843         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
7844
7845         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
7846
7847         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
7848         add more ops.
7849
7850         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
7851         version as the enum in mini.h.
7852
7853         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
7854         for sse3 ops, check the simd_version field if present. This way the code
7855         works with all versions of sse.
7856
7857 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7858
7859         * simd-intrinsics.c: Fixed intrinsic name typo.
7860
7861         * mini.h: Added missing simd exported function.
7862
7863         * basic-simd.cs: Added tests for Vector4ui.
7864         Fixed broken test for Vector16b.
7865
7866 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
7867
7868         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
7869         the max length to 64.
7870
7871 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7872
7873         * method-to-ir.c: Only do the fast virtual generic method call for
7874         non-wrapper methods.
7875
7876         * mini.h, mini-trampolines.c: The new generic virtual remoting
7877         trampoline handles virtual method calls via the vtable (as done by
7878         the fast virtual generic method calls) to remoting proxies.
7879
7880         * mini.c (mono_jit_create_remoting_trampoline): For generic
7881         methods reate a generic virtual remoting trampoline.
7882
7883         * mini-amd64.h: Enable fast virtual generic method calls again.
7884
7885 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7886
7887         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
7888         restore registers when doing tail calls.
7889
7890 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7891
7892         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
7893         Vector4ui.
7894
7895 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7896
7897         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
7898
7899 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7900
7901         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
7902
7903 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7904
7905         * basic-simd.cs: Retrofit for API changes.
7906
7907 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7908
7909         * mini-ppc.c: Handle integer stack arguments for tail calls.
7910
7911 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7912
7913         * optflags-def.h: Removed sse3 optimization.
7914
7915         * driver.c: Same.
7916
7917         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
7918         sse3.
7919
7920         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
7921
7922         * mini.h: Added enumeration with simd versions.
7923
7924         * simd-intrinsics.c (emit_intrinsics): Use the new static var
7925         for detecting SSE3.
7926
7927         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
7928
7929         * mini.c (mini_init): Call mono_simd_intrinsics_init.
7930
7931 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
7932
7933         * basic-simd.cs: Added tests for Vector8u and Vector16u.
7934
7935         * basic-simd.cs: Fixed test naming.
7936
7937 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
7938
7939         * mini-ops.h: Added ops for packed and saturated math, shifts
7940         and packing/unpacking.
7941
7942         * cpu-x86.md: Added descriptors for the above ops.
7943
7944         * mini-x86.c: Added code to emmit the above ops.
7945
7946         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
7947
7948 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
7949
7950         * aot-compiler.c (compile_method): Enable AOT for generic code.
7951
7952         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
7953
7954 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
7955
7956         * mini.c: add a workaround for a common screwup that ends up blamed
7957         to mono (other processes blocking signal delivery).
7958
7959 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7960
7961         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
7962         in the LDFLD/STFLD opcodes. Fixes #432673.
7963
7964         * iltests.il.in: Add a new test.
7965
7966 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
7967
7968         * mini-arm.c: attach the thread in unmanaged->managed transitions
7969         using delegates (bug #433148).
7970
7971 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
7972
7973        * basic-simd.cs: Use new ShuffleSel constants.
7974
7975 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
7976
7977         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
7978
7979         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
7980         only disable simd intrinsics if no sse2 is detected.
7981
7982         * optflags-def.h: Added sse3.
7983
7984         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
7985         is disabled.
7986
7987 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7988
7989         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
7990         when adding delegate-invoke wrappers.
7991
7992 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7993
7994         * Makefile.am: Reenable the simd tests.
7995
7996 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
7997
7998         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
7999           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
8000           other vreg is allocated to that hreg.
8001
8002         Contributed under MIT/X11 license.
8003
8004 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8005
8006         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
8007         yet checked in.
8008
8009 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
8010
8011         * basic-simd.cs: New test suite for SIMD intrinsics.
8012
8013         * Makefile.am: Added new tests.
8014
8015 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
8016
8017         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
8018
8019         * mini-ops.h: Same.
8020
8021         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
8022
8023         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
8024         using SSE2 aware opcodes.
8025
8026         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
8027         is enabled, this code path is only reachable if conversion ops are emmited after
8028         mono_method_to_ir.
8029
8030         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
8031
8032         This optimization saves 6 bytes per conversion against the old version.
8033
8034 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8035
8036         * aot-compiler.c (compile_method): Don't skip methods referencing 
8037         generic methods without a corresponding entry in token_info_hash, since
8038         encode_method_ref () can handle all generic methods now.
8039
8040         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
8041         generic context is set.
8042         
8043         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
8044         generic sharing of LDTOKEN.
8045
8046 2008-10-06  Mark Probst  <mark.probst@gmail.com>
8047
8048         * mini-amd64.h: Temporarily disabled fast virtual generic method
8049         calls because it breaks the System.Runtime.Remoting tests.
8050
8051 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8052
8053         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
8054
8055         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
8056         so inlining actually works.
8057         (check_inline_caller_method_name_limit): Ditto.
8058
8059 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
8060
8061         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
8062         64 bit safety (from Olaf Hering and Andreas Farber).
8063
8064 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8065         
8066         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
8067         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
8068         unused virtual call support code.
8069
8070         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
8071         
8072         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
8073         which can't use aot trampolines.
8074         (decode_patch): Don't create aot trampolines for methods which can't use
8075         them.
8076
8077         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
8078         use aot trampolines.
8079
8080         * mini.h: Bump AOT image format version.
8081         
8082 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
8083
8084         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
8085         to save_token_info () since cmethod is inflated for constrained calls.
8086
8087         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
8088
8089 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
8090
8091         * Makefile.am: Add build rules for ppc64.
8092         This avoids the build failing at pedump with unresolved symbols
8093         due to lack of arch_sources. Instead it will now fail earlier
8094         due to lack of cpu-ppc64.md.
8095
8096         Contributed under MIT/X11 license.
8097
8098 2008-10-04  Mark Probst  <mark.probst@gmail.com>
8099
8100         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
8101         tail calls.
8102
8103         * iltests.il.in: Add test case for tail call with many arguments.
8104
8105 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
8106
8107         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
8108         to the fast virtual generic method code until the aot case is fixed.
8109
8110 2008-10-03  Mark Probst  <mark.probst@gmail.com>
8111
8112         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
8113
8114 2008-10-03  Mark Probst  <mark.probst@gmail.com>
8115
8116         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
8117         thunks.
8118
8119 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
8120         
8121         * simd-intrinsics.c: Forgot to add this one.
8122
8123         * mini-codegen.c: Fix macro in case SIMD is not supported.
8124
8125 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
8126         
8127         This patch land initial JIT support for simd intrinsics.
8128
8129         * mini-x86.h: Added new define to make --enable_minimal work on x86.
8130
8131         * Makefile.am: Added simd-intrinsics.c
8132
8133         * simd-intrinsics.c: New file with simd instrinsic related
8134         code.
8135
8136         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
8137
8138         * cpu-x86.md: Add simd related instructions.
8139
8140         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
8141
8142         * driver.c: Added two new --regression variants.
8143
8144         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
8145
8146         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
8147
8148         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
8149         extract some complicated logic to helper functions.
8150
8151         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
8152
8153         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
8154
8155         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
8156         the specialized simplification pass.
8157
8158         * method-to-ir.c (mono_spill_global_vars): Use new macro.
8159
8160         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
8161
8162         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
8163         table.
8164
8165         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
8166         if MONO_ARCH_NEED_SIMD_BANK is defined.
8167
8168         * mini-ops.h: Added the new simd ops.
8169
8170         * mini-x86.c: Added mono_arch_xregname.
8171
8172         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
8173
8174         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
8175
8176         * mini-x86.h: Define simd related MONO_ARCH macros.
8177
8178         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
8179
8180         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
8181
8182         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
8183         MONO_CLASS_IS_SIMD to deal with simd related IR.
8184
8185         * mini.h (MonoInst): Added spill_var to the backend union.
8186
8187         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
8188
8189         * mini.h: Added forward declarations of the new simd fuctions.
8190
8191         * optflags-def.h: Added new optimization names SIMD.
8192
8193         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
8194
8195         * regalloc.h: Added support for working with 3 register banks.
8196
8197         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
8198
8199         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
8200
8201 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
8202
8203         * mini-exceptions.c: remove 64 bit related ifdef clutter.
8204
8205 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
8206
8207         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
8208         instead of one on 64 bit systems.
8209
8210         * method-to-ir.c: Remove unused includes.
8211
8212 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
8213
8214         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
8215         cfg->used_int_regs, since the two are different on arm.
8216
8217 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8218
8219         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
8220         mono_method_get_vtable_index() to get the vtable index.
8221
8222 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8223
8224         * method-to-ir.c (mono_method_to_ir2): Don't create native
8225         wrappers for array methods, because they're never called (and if
8226         they were called they wouldn't work).
8227
8228 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8229
8230         * method-to-ir.c (mono_method_to_ir2): Array methods are
8231         special-cased and must not be invoked indirectly via the (M)RGCTX
8232         when generic sharing is turned on.  Fixes #431413.
8233
8234 2008-10-01  Mark Probst  <mark.probst@gmail.com>
8235
8236         * method-to-ir.c: When generic sharing is active, call
8237         non-interface virtual generic methods via the standard trampoline.
8238
8239         * mini-trampolines.c: Handle virtual generic shared methods.
8240
8241         * mini.h, mini-x86.c, mini-x86.h: New argument for
8242         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
8243         method thunks and which is the trampoline to call if the lookup
8244         fails.  Enable the virtual generic method thunk for x86.
8245
8246         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
8247         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
8248         argument but assert that it's NULL, because these archs don't yet
8249         implement the virtual generic method thunk.  Changes in the IMT
8250         thunk data structures.
8251
8252 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
8253
8254         * aot-compiler.c (emit_globals): Avoid invalid characters in
8255         the static linking symbol.
8256
8257         * objects.cs: Add a test for the range check optimization. Fix warnings.
8258
8259         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
8260         optimization from the current JIT.
8261
8262         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
8263         later in decompose_array_access_opts () to allow more optimizations.
8264
8265         * method-to-ir.c (mono_handle_soft_float): Rename this to 
8266         mono_decompose_soft_float () for consistency.
8267
8268         * mini-ops.h: Fix arguments of OP_STRLEN.
8269
8270         * method-to-ir.c (save_cast_details): Extract the cast details saving code
8271         into a separate function.
8272         (reset_cast_details): Ditto.
8273         (handle_unbox): Save cast details. Fixes #431254.
8274
8275         * method-to-ir.c: Remove some obsolete FIXMEs.
8276
8277 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8278
8279         * ir-emit.h (alloc_dreg): Write a warning before crashing.
8280
8281 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8282
8283         * mini-codegen.c: More work on macros to make them
8284         ready for multiple regbanks.
8285
8286 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8287
8288         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
8289
8290         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
8291
8292 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8293
8294         * mini-codegen.c (mono_spillvar_offset): Proper support for
8295         multiple regbanks.
8296
8297 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
8298
8299         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
8300         the stack overflow changes.
8301
8302 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8303
8304         * mini-codegen.c: Make all bank macros depend on reg_bank.
8305
8306         * mini-codegen.c (mono_local_regalloc): Make free mask
8307         initialization regbank aware.
8308
8309 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8310
8311         * mini-codegen.c (mono_local_regalloc): Extract callee
8312         mask selection to a function and make it regbank aware.
8313
8314 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8315
8316         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
8317         code to deal with many regbanks.
8318
8319 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
8320
8321         * mini-codegen.c: More fp->regbank changes.
8322
8323 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
8324
8325         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
8326         of a hardcoded constant.
8327
8328 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
8329
8330         * method-to-ir.c (type_from_stack_type): Fix typo.
8331
8332 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
8333
8334         * mini-ia64.c (emit_move_return_value): Convert float return values to
8335         double.
8336
8337         * objects.cs: Add a new test.
8338         
8339         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
8340         VARARG methods to fix an assert later.
8341
8342         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
8343         end so it at least compiles.
8344
8345 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
8346
8347         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
8348
8349 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
8350
8351         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
8352         optimization to a new function (emit_optimized_ldloca_ir) and enable
8353         it for both ldloca and ldloca_s.
8354
8355 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
8356
8357         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
8358         gshared CASTCLASS code.
8359
8360         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
8361         amd64, where the libc stack unwinder encounters stack frames referring to
8362         native code in unmapped memory.
8363
8364         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
8365         sharing.
8366
8367         * generics.cs: Add new test.
8368
8369 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
8370
8371         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
8372         add a check that one of the ARM_FPU_ constants is defined.
8373
8374         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
8375         
8376         * mini-exceptions.c: Fix build on non-altstack platforms.
8377
8378         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
8379         sharing of vtypes.
8380
8381         * ir-emit.h: Add a comment to NEW_PCONST.
8382
8383         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
8384
8385         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
8386
8387         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
8388         after the changes to MonoJitDomainInfo.
8389
8390 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8391
8392         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
8393
8394 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8395
8396         * mini-ppc.c: Compiler warning fixes.
8397
8398 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8399
8400         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
8401         for pinvokes.
8402
8403 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8404
8405         * exceptions-ppc.c, mini-ppc.h: Compile
8406         mono_arch_handle_altstack_exception() on Darwin, too.
8407
8408 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8409
8410         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
8411         work on archs which don't have generic sharing implemented, only
8412         without the vtable_arg.
8413
8414 2008-09-26  Mark Probst  <mark.probst@gmail.com>
8415
8416         * mini.c: Added comment explaining why delegate ctor icall
8417         wrappers are compiled.
8418
8419 2008-09-26  Mark Probst  <mark.probst@gmail.com>
8420
8421         * mini.c: Don't produce trampolines to delegate ctor icall
8422         wrappers but compile them upfront.
8423
8424 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
8425
8426         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
8427         runtime-set function when going back to managed code. Currently this
8428         is used to set back the protection on the soft ovf pages and/or to
8429         throw the stack overflow exception that happened in unmanaged code.
8430
8431 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
8432
8433         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
8434         runtime-set function when going back to managed code. Currently this
8435         is used to set back the protection on the soft ovf pages and/or to
8436         throw the stack overflow exception that happened in unmanaged code.
8437
8438 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
8439
8440         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
8441         the support code for restoring stack protection after stack overflows
8442         that happen in unmanaged code. Don't set the exec permission on the
8443         soft overflow area.
8444
8445 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
8446
8447         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
8448         delegate->method_ptr is set. Fixes #428054.
8449
8450 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
8451
8452         * tests.cs: Rename to ratests.cs.
8453
8454         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
8455         emit_get_rgctx_... functions.
8456
8457 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8458
8459         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
8460
8461 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8462
8463         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
8464         before asserting that method is sharable.
8465
8466 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8467
8468         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
8469         whether method needs a static RGCTX wrapper used instead of
8470         complex conditions.
8471
8472         * generic-sharing.c, mini.h: A few functions moved to
8473         metadata/generic-sharing.c.
8474
8475 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8476
8477         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
8478         Generic code sharing for value types, which essentially means
8479         treating value type methods like static methods.  The RGCTX is
8480         passed in the same way.
8481
8482 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
8483
8484         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
8485         opcode when creating multi-dimensional arrays of open types.
8486
8487         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
8488         open generic types.
8489
8490         * generics.cs: Add a test.
8491
8492         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
8493
8494 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
8495
8496         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
8497
8498         * mini.c (mini_method_compile): Set it when running under the debugger. 
8499
8500         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
8501         vreg optimization if the flag is set.
8502
8503         * driver.c (mono_main): Add --attach= option to pass options to
8504         the attach agent.
8505
8506         * mini.c (sigquit_signal_handler): Start the attach agent.
8507
8508         * ssapre.c: Disable this to save space since it is not yet ported to
8509         linear IR.
8510
8511         * regalloc2.c: Disable this to save space.
8512
8513         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
8514
8515 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
8516
8517         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
8518         the -v option useful again.
8519
8520 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
8521
8522         * mini-amd64.c (mono_arch_output_basic_block): Add support for
8523         --break-at-bb.
8524
8525         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
8526         arrays of arrays. Fixes #428406.
8527
8528         * method-to-ir.c (mini_emit_castclass): Ditto.
8529
8530         * objects.cs: Add new test.
8531         
8532 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
8533
8534         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
8535         was wrong at it choked against target_type_is_incompatible for byref types.
8536
8537 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
8538
8539         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
8540         places.
8541
8542 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
8543
8544         * mini-exceptions.c: update a few more exceptions-related counters.
8545
8546 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
8547
8548         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
8549         new functions to allocate from persistent mempools.
8550
8551 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
8552
8553         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
8554         multiple register banks in the future.
8555
8556         * mini-codegen.c (mono_local_regalloc): Fix a warning.
8557
8558 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
8559
8560         * mini.c (type_to_eval_stack_type): Remove duplicated function.
8561
8562         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
8563
8564         * mini.h: Export type_to_eval_stack_type.
8565
8566         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
8567         is only ins->klass of byref types.
8568
8569 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
8570
8571         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
8572         (mini_emit_memcpy2): Ditto.
8573
8574         * mini-amd64.c: Fix a warning.
8575
8576 2008-09-21  Mark Probst  <mark.probst@gmail.com>
8577
8578         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
8579         linking.
8580
8581 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
8582
8583         * method-to-ir.c: Extract stloc micro-optimization to a
8584         function and apply it to all cases.
8585
8586 2008-09-19  Mark Probst  <mark.probst@gmail.com>
8587
8588         * method-to-ir.c: Don't fail generic code sharing in cases we
8589         already support.
8590
8591 2008-09-18  Mark Probst  <mark.probst@gmail.com>
8592
8593         * mini-ppc.c: Handle structs in tailcalls on Darwin.
8594
8595 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
8596
8597         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
8598         implementation.
8599
8600 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
8601
8602         * trace.c: make tracing more useful and correct, with per-thread
8603         id and indent info.
8604
8605 2008-09-15  Mark Probst  <mark.probst@gmail.com>
8606
8607         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
8608         doing a method call and the argument is an R4.
8609
8610 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
8611
8612         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
8613         generic methods.
8614
8615 2008-09-13  Mark Probst  <mark.probst@gmail.com>
8616
8617         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
8618
8619 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
8620
8621         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
8622         (MONO_JUMP_TABLE_FROM_INS): Ditto.
8623
8624 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
8625
8626         * driver.c: Add a --agent argument (not supported yet) to load managed
8627         agent assemblies before loading the main assembly, similarly to how the
8628         Java VM handles agents.
8629
8630 2008-09-11  Mark Probst  <mark.probst@gmail.com>
8631
8632         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
8633         function to do stack layout of local variables.
8634
8635 2008-09-11  Mark Probst  <mark.probst@gmail.com>
8636
8637         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
8638         calculation.
8639
8640 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
8641
8642         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
8643         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
8644         JIT if DISABLE_JIT is defined.
8645
8646         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
8647         defined.
8648
8649 2008-09-10  Mark Probst  <mark.probst@gmail.com>
8650
8651         * iltests.il.in: Disable the fconv test on PPC (the result is
8652         undefined according to ECMA).
8653
8654 2008-09-10  Mark Probst  <mark.probst@gmail.com>
8655
8656         * iltests.il.in: Enable tail call tests for PPC.
8657
8658         * mini.h: Add variable for storing incoming valuetype argument
8659         addresses for tail calls.
8660
8661         * mini-ppc.c: Implement valuetype arguments and return values for
8662         tailcalls on Linux.
8663
8664 2008-09-09  Mark Probst  <mark.probst@gmail.com>
8665
8666         * mini-ppc.c: Partially implement tail calls (struct arguments and
8667         return values not supported).
8668
8669         * method-to-ir.c: Enable tail calls on PPC.
8670
8671 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
8672
8673         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
8674         runtime-invoke wrappers to work around the problem of them getting
8675         assigned to a random class.
8676
8677         * aot-runtime.c (mono_aot_get_method): Ditto.
8678         
8679 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
8680
8681         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
8682         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
8683
8684 2008-09-07  Mark Probst  <mark.probst@gmail.com>
8685
8686         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
8687         until they're implemented properly.
8688
8689         * exceptions-ppc.c: Use arch-independent exception-handling code
8690         instead of custom one.
8691
8692         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
8693         for Linear IR.
8694
8695         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
8696
8697         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
8698         applies when __powerpc__ is defined.
8699
8700 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
8701
8702         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
8703         methods to their code to avoid computing the full name of wrappers and
8704         doing a lookup in a string hash table.
8705
8706 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
8707
8708         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
8709         we identify bblocks before method_to_ir () is ran.
8710
8711         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
8712         Also avoid optimizing branches pointing to themselves.
8713
8714         * mini.c (mini_method_compile): Ditto. Fixes #422947.
8715
8716 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
8717
8718         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
8719
8720 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
8721
8722         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
8723         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
8724         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
8725         'buf'.
8726
8727         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
8728         jumped to the same entry in plt_jump_table.
8729
8730 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
8731
8732         * method-to-ir.c (initialize_array_data): Handle field with RVA from
8733         dynamic images.
8734
8735 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
8736
8737         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
8738         other assignment can be if converted. Saves 1.5% on corlib size and fixes
8739         #421807.
8740
8741 2008-08-29  Geoff Norton  <gnorton@novell.com>
8742
8743         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
8744         segment, and doesn't properly handle .space as .text.  Fixes
8745         AOT Mach/ARM
8746
8747 2008-08-29  Geoff Norton  <gnorton@novell.com>
8748
8749         * mini.c: Disable the mach exception handler when running on 
8750         ARM
8751
8752 2008-08-29  Geoff Norton  <gnorton@novell.com>
8753
8754         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
8755         globals on Darwin/ARM
8756
8757 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
8758
8759         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
8760         since too many things depend on it. Instead, call 
8761         mono_runtime_set_no_exec ().
8762         
8763         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
8764         the new JIT.
8765
8766         * aot-compiler.c: Add an 'asm-only' AOT option.
8767
8768         * mini.c: Avoid initializing the runtime when doing AOT compilation.
8769                 
8770         * aot-compiler.c (compile_method): Disable gshared support for now as it
8771         doesn't yet work.
8772
8773 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
8774
8775         * mini-amd64.h : Fix a compiler warning.
8776
8777         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
8778           Changed to use a callback function to retrieve the unwind info.
8779           This avoids problems observed when code blocks were removed by
8780           unloading an app domain.
8781
8782         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
8783           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
8784           to work properly.
8785
8786         Contributed under MIT/X11 license.
8787
8788 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
8789
8790         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
8791           case to keep the stack aligned to 8.
8792
8793         Contributed under MIT/X11 license.
8794
8795 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
8796
8797         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
8798         avoid repeated linear searches.
8799
8800 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
8801
8802         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
8803         methods it can't handle.
8804         
8805         * aot-compiler.c (add_method): Avoid adding a method twice.
8806         (add_wrappers): Add runtime invoke wrappers for all methods.
8807
8808         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
8809         function to create an aot-compatible version of this trampoline.
8810
8811         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
8812
8813 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
8814
8815         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
8816
8817         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
8818         with a generic sharing failure.
8819
8820         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
8821
8822         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
8823         CEE_RETHROW. Fixes #419634.
8824
8825         * mini.c (mono_method_to_ir): Ditto.
8826
8827         * exceptions.cs: Add a new test.
8828         
8829         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
8830         to mono_type_stack_size_internal () since some callers might not pass in
8831         an rgctx.
8832
8833         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
8834         instrument_prolog. Fixes #419878.
8835
8836         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
8837         doubles in soft float mode volatile.
8838
8839 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
8840
8841         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
8842
8843         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
8844         to handle soft float correctly.
8845
8846         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
8847         the fast path.
8848
8849         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
8850
8851         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
8852         to sp, since the generics catch code requires it.
8853
8854         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
8855         copying.
8856
8857         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
8858         mono_arch_emit_imt_argument ().
8859
8860         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
8861
8862         * mini-arm.c tramp-arm.c: Generic sharing updates.
8863
8864 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
8865
8866         * mini-arm.c: Fix the arm build.
8867
8868         * generic-sharing.c (mini_type_get_underlying_type): New helper function
8869         handling enums, generic instances and generic sharing.
8870         (mini_type_stack_size_full): Ditto.
8871
8872         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
8873         
8874         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
8875
8876         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
8877
8878         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
8879         trampolines.
8880
8881         * mini-arm.c: Various small generic sharing changes.
8882
8883         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
8884         this for x86.
8885         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
8886         custom code.
8887
8888         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
8889         helper function to return a generic class init trampoline.
8890
8891         * method-to-ir.c mini.c: Use it.
8892         
8893         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
8894         arch-specfic function to return a generic class init trampoline.
8895
8896         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
8897         the GENERIC_CLASS_INIT custom code.
8898
8899         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
8900         a fatal error, not a sharing failure.
8901
8902         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
8903         needed.
8904
8905         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
8906         trampoline argument from MONO_ARCH_VTABLE_REG.
8907
8908         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
8909         order of the arguments to the C trampoline: pass 'slot' as the trampoline
8910         argument, and pass the vtable in VTABLE_REG.
8911
8912         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
8913         order of the arguments to the C trampoline: pass 'slot' as the trampoline
8914         argument, and pass the vtable in VTABLE_REG.
8915         (mono_arch_create_trampoline_code_full): Remove some special casing for
8916         the rgctx fetch trampoline.
8917
8918         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
8919         Fixes #419273.
8920
8921         * iltests.il: Add a test for it.
8922
8923 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
8924
8925         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
8926
8927         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
8928         no longer needed.
8929
8930         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
8931         use mono_jit_info_table_find () to avoid recursion.
8932         (mono_delegate_trampoline): Add a sync wrapper here.
8933
8934         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
8935         here.
8936
8937         * mini.c (mono_method_to_ir): Ditto.
8938         
8939         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
8940         add_sync_wrapper argument. Don't add a sync wrapper here.
8941         (mono_create_jump_trampoline): Don't add a sync wrapper here.
8942
8943         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
8944         
8945 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
8946
8947         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
8948           of nonvolatile registers back from MonoContext to CONTEXT.
8949
8950         Contributed under MIT/X11 license.
8951
8952 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
8953
8954         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
8955           arguments on Winx64 there are only 4 argument registers.  For this
8956           logic to work the last argument must be pulled from the stack.  
8957
8958         Contributed under MIT/X11 license.
8959
8960 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
8961
8962         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
8963
8964         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
8965         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
8966         encode/decode_method_ref ().
8967
8968         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
8969
8970         * aot-runtime.c (decode_patch): Ditto.  
8971
8972         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
8973         MONO_PATCH_INFO_METHOD.
8974
8975         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
8976         MonoGenericJitInfo.
8977
8978         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
8979         MonoGenericJitInfo.
8980
8981         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
8982
8983         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
8984         one from the caller.
8985
8986         * aot-runtime.c (decode_generic_inst): New function to decode and
8987         return a interned generic inst.
8988         (decode_klass_ref): Use it.
8989         (decode_method_ref): Ditto.
8990
8991         * aot-compiler.c (emit_exception_debug_info): Save 
8992         jinfo->has_generic_jit_info too.
8993
8994 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
8995
8996         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
8997
8998         * iltests.il.in: Add a test for fconv_to_i.
8999
9000         * liveness.c: Disable the liveness2 pass for now to save space.
9001
9002         * regalloc2.c: Include mempool-internals.h to fix warnings.
9003
9004         * aot-compiler.c (encode_method_ref): Encode the context of generic
9005         instance methods.
9006
9007         * aot-runtime.c (decode_method_ref): Inflate generic methods using
9008         the context saved in the aot file.
9009
9010         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
9011
9012         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
9013
9014         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
9015         volatile so they won't be optimized away.
9016
9017 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
9018
9019         * ssa.c:
9020         * ssa2.c:
9021         * mini.c:
9022         * regalloc2.c:
9023         * dominators.c: Remove duplicated functions that now are in
9024         mempool-internals.h.
9025
9026 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
9027
9028         * aot-compiler.c: Fix warnings.
9029
9030         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
9031
9032         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
9033
9034         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
9035         as the patch type.
9036
9037         * mini.c (mono_resolve_patch_target): Ditto.
9038         
9039         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
9040         (encode_klass_ref): Add support for encoding VARs/MVARs.
9041
9042         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
9043
9044         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
9045         the handling of the got entries into a separate 'decode_got_entry' function.
9046         Add support for RGCTX_FETCH.
9047
9048         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
9049         clobbered by the trampoline code.
9050
9051         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
9052         not clobbered by the indirect calling code.
9053
9054 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
9055
9056         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
9057         to fix the build.
9058
9059 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
9060
9061         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
9062         signature using the compilation mempool otherwise we would leak it.
9063
9064 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
9065
9066         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
9067         mono_emit_abs_call ().
9068
9069         * patch-info.h: Add GENERIC_CLASS_INIT.
9070
9071         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
9072
9073         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
9074         as their target as a near call.
9075
9076         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
9077         ABS handling code.
9078         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
9079
9080         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
9081         call to a runtime function described by a patch.
9082
9083         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
9084         mono_emit_abs_call, this has the advantage that the ABS handling code in
9085         mono_codegen () can handle them both, and can handle other stuff in the
9086         future without additional code.
9087
9088         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
9089         entry.
9090         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
9091         abs addresses.
9092
9093         * mini.h: Add missing bblock related prototypes.
9094
9095         * mini.h (MonoCompile): Remove unused reverse_inst_list and
9096         reverse_inst_list_len fields.
9097
9098         * mini.c: Refactor this file a bit by moving branch optimizations to 
9099         branch-opts.c.
9100
9101         * method-to-ir.c: Merge generic sharing changes missed earlier.
9102
9103         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
9104
9105         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
9106         shared patches. Process METHODCONST as a shared patch.
9107
9108         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
9109         as it crashes on the 2.0 mscorlib.
9110
9111         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
9112         to cause crashes.
9113         
9114         * aot-compiler.c: Use is_plt_patch () in a few additional places.
9115         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
9116         by IMT.
9117
9118         * aot-compiler.c: Reorganize the got handling code to be a bit more
9119         understandable.
9120
9121 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
9122
9123         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
9124         mono_patch_info_equals/hash, and use it to massively simplify
9125         get_plt_index ().
9126
9127         * mini.c (mono_patch_info_hash): Simplify this and add support for
9128         more patch types.
9129
9130         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
9131
9132         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
9133         handling code, since an offset is not enough to identify a trampoline.
9134
9135         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
9136
9137 2008-08-17  Mark Probst  <mark.probst@gmail.com>
9138
9139         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
9140
9141         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
9142
9143         * mini-ops.h: Argument and result types for OVF_CARRY ops.
9144
9145         * decompose.c: PPC decompositions for various ops.
9146
9147         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
9148
9149 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
9150
9151         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
9152         call the generic trampoline code using a call, instead of a jump, to
9153         remove some special casing from the generic trampoline code.
9154
9155         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
9156         (mono_codegen): Ditto.
9157
9158         * aot-compiler.c aot-runtime.c: Ditto.
9159
9160         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
9161
9162         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
9163         helper function to find the offset corresponding to a lazy fetch trampoline.
9164
9165         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
9166         when doing generic sharing.
9167
9168         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
9169         places.
9170         
9171         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
9172         mini-trampolines.c to be with the other trampoline creation functions.
9173
9174         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
9175         as it is equal to method->signature in most cases, add a 
9176         mono_emit_method_call_full variant which takes a signature and an imt
9177         argument as well.
9178
9179 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
9180
9181         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
9182         to this function, since it could be computed easily from the method 
9183         argument.
9184         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
9185         more.
9186
9187         * method-to-ir.c mini.c: Remove references to 
9188         compile_generic_method_wo_context.
9189
9190         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
9191         generic method calls.
9192         
9193         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
9194         dimensional non-szarrays.
9195
9196         * mini.c (mini_init): Register mono_array_new_1.
9197
9198         * jit-icalls.c (mono_array_new_1): New jit icall.
9199
9200         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
9201         pointing to the method.
9202
9203         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
9204         method addresses belonging to METHOD_JUMP patches in the 
9205         jump_target_got_slot_hash.
9206         (mono_aot_load_method): Ditto.
9207
9208         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
9209         METHOD_JUMP patches.
9210
9211         * mini.c (mini_create_jit_domain_info): New helper function which 
9212         initializes/frees domain->runtime_info.
9213         (mini_free_jit_domain_info): Ditto.
9214         (mini_init): Install the domain hook functions with the runtime.
9215
9216         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
9217         information maintained by the JIT.
9218
9219         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
9220         insertion into jump_table_hash into mono_codegen (), also implement proper
9221         locking.
9222
9223         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
9224         tail calls, it is already done by the aot code.
9225         
9226         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
9227         mechanism on amd64.
9228
9229         * iltests.il.in: Make the jmp test a bit more complex.
9230
9231         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
9232         generic instances which doesn't have a token.
9233
9234         * aot-runtime.c (decode_method_ref): Ditto.
9235         
9236         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
9237         can handle this case now.
9238         (handle_box): Ditto.
9239
9240 2008-08-15  Geoff Norton  <gnorton@novell.com>
9241
9242         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
9243         debugging check.
9244
9245 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
9246
9247         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
9248         calling generic methods.
9249
9250         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
9251
9252         * aot-runtime.c (decode_patch_info): Ditto.
9253
9254         * mini.c (mono_resolve_patch_target): Ditto.
9255         
9256         * patch-info.h: Add METHOD_RGCTX.
9257
9258         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
9259
9260 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
9261
9262         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
9263         arguments in registers.
9264
9265         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
9266         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
9267
9268         * mini.c (mini_method_compile): Abort aot compilation for generic
9269         methods if generic sharing is disabled.
9270         
9271         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
9272         an mrgctx.
9273
9274         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
9275         requiring an mrgctx.
9276
9277         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
9278         store instructions when converting a vcall to a normal call.
9279
9280         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
9281         mono_arch_find_jit_info.
9282
9283 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
9284
9285         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
9286         avoid calling mono_method_full_name () for every method even if the
9287         env var is not set.
9288         (check_inline_caller_method_name_limit): Ditto.
9289
9290 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
9291
9292         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
9293         assemblies in one run.
9294
9295         * aot-compiler.c (mono_compile_assembly): Only print out a count of
9296         skipped methods if it is not 0.
9297
9298         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
9299
9300 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
9301
9302         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
9303           MONO_ARCH_HAVE_UNWIND_TABLE.
9304
9305         Contributed under MIT/X11 license.
9306
9307 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
9308
9309         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
9310           from default optimizaton list on Winx64.
9311
9312         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
9313
9314         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
9315           the LMF from the MonoJitTlsData structure.
9316
9317         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
9318
9319         Contributed under MIT/X11 license.
9320
9321 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
9322
9323         * mini.c (sigsegv_signal_handler): Fix the build.
9324
9325         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
9326         assembly->aot_module.
9327
9328         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
9329         hash table. This simplifies and speeds up a lot of code, and fixes support
9330         for .netmodules.
9331
9332         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
9333         with the runtime.
9334
9335         * mini-exceptions.c: Ditto.
9336         
9337         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
9338         'native_offset' argument, since these are computed in the 
9339         mono_find_jit_info () function.
9340
9341         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
9342         is used by exceptions-ppc.c.
9343
9344         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
9345         mono_arch_find_jit_info ().
9346         
9347         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
9348         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
9349         generic code in mini-exceptions.c.
9350
9351 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
9352
9353         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
9354
9355         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
9356         
9357         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
9358         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
9359         called while holding the loader lock. Fixes #415608.
9360         (mono_aot_get_method_from_token_inner): Ditto.
9361
9362 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
9363
9364         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
9365         to reduce differences between this and the generic implementation in
9366         mini-exceptions.c.
9367         (ves_icall_get_frame_info): Ditto.
9368
9369         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
9370
9371         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
9372         longer neccesarry.
9373
9374         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
9375         mono_arch_get_call_filter () and make it non-static, for consistency with the
9376         other architectures.
9377
9378 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
9379
9380         * mini.c:
9381         * local-propagation.c:
9382         * mini-x86.c: Correct the name of arch defines.
9383
9384 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
9385
9386         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
9387         NO_EMULATE_LONG_SHIFT_OPS define.
9388
9389 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
9390
9391         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
9392         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
9393
9394         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
9395         MACH fixes. Merged from the 2.0 branch.
9396
9397         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
9398
9399         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
9400         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
9401
9402         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
9403
9404         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
9405         mono_marshal_get_native_wrapper () signature changes.
9406
9407 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
9408
9409         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
9410         conversion bug under arm.
9411
9412 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
9413
9414         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
9415
9416         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
9417         with overflow checking.
9418
9419 2008-08-05  Marek Habersack  <mhabersack@novell.com>
9420
9421         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
9422         to the genmdesc.pl file
9423
9424 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
9425
9426         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
9427         arg_array in the soft-float versions of the LOAD/STORE macros.
9428
9429         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
9430         implementation.
9431
9432         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
9433
9434 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
9435
9436         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
9437         a float HFA. Fixes #413621.
9438
9439 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
9440
9441         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
9442         frame_size to args_size. Fixes build.
9443
9444 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
9445
9446         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
9447         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
9448
9449         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
9450         the stack are not unaligned. Fixes #413247.
9451         
9452 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
9453
9454         * mini.c: update jitted methods performance counters.
9455
9456 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
9457
9458         * mini-exceptions.c: increase the exceptions thrown performance
9459         counter in mono_handle_exception ().
9460
9461 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
9462
9463         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
9464         can work with netmodules.
9465
9466 2008-07-28  Geoff Norton  <gnorton@novell.com>
9467
9468         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
9469         regression tests.
9470
9471 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
9472
9473         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
9474         correct place.
9475
9476 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
9477
9478         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
9479           The float param registers and other param registers must be the 
9480           same index on Windows x64.
9481
9482         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
9483           ArgValuetypeAddrInIReg argument case.  Setting the argument
9484           op to OP_VTARG_ADDR (OP_REGOFFSET)).
9485
9486         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
9487           variable computed above as the copy length for arguments of storage
9488           type ArgValuetypeAddrInIReg.
9489
9490         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
9491           ArgValuetypeAddrInIReg argument case.  This case will rely on
9492           mono_arch_emit_outarg_vt to emit the correct code later in the process.
9493
9494         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
9495           a 32 byte stack allocation for all calls.  We will omit the adjustment for
9496           jump and tail call instructoins as they do not follow the typical call behavior.
9497
9498         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
9499           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
9500           local variable and pass the local variable by reference to the called method.
9501
9502         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
9503           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
9504           of a struct is passed in a register it must be saved with the other
9505           volatile argument on the stack.
9506
9507         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
9508           frame pointer the stack adjustment value must be saved to the unwind 
9509           info structure.
9510
9511         Contributed under MIT/X11 license.
9512
9513 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
9514
9515         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
9516         which got lost in the merge.
9517
9518 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
9519
9520         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
9521         build.
9522
9523         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
9524         
9525         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
9526         icalls, since they won't be patched.
9527
9528         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
9529         different code sequence when running under valgrind to prevent some valgrind
9530         errors.
9531
9532         * iltests.il.in: Add new regression test.
9533
9534         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
9535         end with a throw.
9536
9537         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
9538         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
9539
9540         * iltests.il.in: Add new test.
9541
9542         * aot-compiler.c: Fix some warnings.
9543
9544         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
9545         Fixes #412494.
9546
9547 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
9548
9549         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
9550         (mini_usage_jitdeveloper): Add a missing --wapi option.
9551
9552 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9553
9554         * mini-codegen.c: Simplify the is_fp macros.
9555         (free_up_ireg): Remove, use free_up_reg instead.
9556         (free_up_reg): Fix the fp case.
9557
9558 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
9559
9560         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
9561         lowered earlier.
9562
9563         * exceptions-x86.c: Merge some changes which seemed to have got lost
9564         in the linear-ir merge.
9565
9566         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
9567
9568         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
9569         long vreg volatile even if the variable was already created.
9570
9571         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
9572         volatile variables.
9573
9574 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
9575
9576         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
9577
9578         * mini.c (mono_jit_compile_method_inner): Add support for 
9579         MONO_EXCEPTION_BAD_IMAGE.
9580
9581         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
9582         mini_method_get_context () returns NULL. Fixes #356531.
9583
9584         * mini.c (mono_method_to_ir): Ditto.
9585         
9586         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
9587         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
9588
9589 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9590
9591         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
9592         in the LDFTN implementation.
9593
9594 2008-07-25  Mark Probst  <mark.probst@gmail.com>
9595
9596         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
9597         code, patch calls to icalls, too, even if they're not in the
9598         shared generic code hash.  Fixes #411962.
9599
9600 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9601
9602         * cpu-x86.md: Increase the length of the fcall opcodes.
9603
9604         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
9605         calls returning floats.
9606
9607         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
9608         on NEWARR.
9609         
9610         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
9611         missed earlier.
9612
9613         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
9614         into the domain->method_code_hash.
9615
9616         * aot-compiler.c: Fix win32 build.
9617
9618         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
9619         
9620         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
9621         gshared NEWARR implementation.
9622
9623         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
9624
9625         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
9626         can be used outside of method_to_ir.
9627
9628         * mini.h (MonoCompile): Add arg_types field.
9629
9630         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
9631         
9632         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
9633         the values of the local arg_array and param_types array.
9634
9635 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
9636
9637         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
9638         got accesses might only get generated later when NEWOBJ is decomposed.
9639         
9640         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
9641         looking up the native code of the target method when a delegate is called
9642         for the first time.
9643
9644         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
9645         optimization.
9646
9647         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
9648
9649         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
9650         AOT work on platforms without a working dlsym implementation.
9651
9652         * mini.h: Bump AOT image format version.
9653         
9654 2008-07-24  Mark Probst  <mark.probst@gmail.com>
9655
9656         * mini-exceptions.c: Free a MonoType with
9657         mono_metadata_free_type() instead of g_free().
9658
9659         * aot-runtime.c: Free a MonoType.
9660
9661 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
9662
9663         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
9664         optimization.
9665
9666         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
9667         fp stack on x86.
9668
9669 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
9670         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
9671         profiler hook.
9672
9673 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
9674
9675         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
9676         NEWOBJ calls on valuetypes.
9677
9678         * iltests.il.in: Add new test.
9679
9680         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
9681
9682 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
9683
9684         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
9685         is no longer needed.
9686
9687         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
9688         non register sized integer arguments.
9689         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
9690         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
9691         emit_memcpy2 ().
9692
9693         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
9694         CEE_MONO_RETOBJ.
9695         
9696         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
9697         two a binop with different sized arguments is emitted.
9698
9699         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
9700         instruction in the ins==NULL case.
9701
9702 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
9703
9704         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
9705
9706         * mini-x86.c: Fix osx build.
9707
9708         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
9709         opcodes as well.
9710
9711         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
9712         instruction for non int sized variables.
9713
9714         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
9715         implementation.
9716
9717 2008-07-23  Robert Jordan  <robertj@gmx.net>
9718
9719         * method-to-ir.c: Fix MSVC build.
9720
9721 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
9722
9723         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
9724         a non int sized type, widen it to an int since newer versions of gcc seem to
9725         generate code which needs this.
9726
9727         * ssa2.c abcremoval2.c: Fix warnings.
9728
9729         * *: Merge the Linear IR branch.
9730
9731         The original branch is at trunk/branches/vargaz/mini-linear-il, and
9732         the ChangeLog file there describes all the changes done over the years. 
9733         Further documentation can be found at www.mono-project.com/Linear_IL.
9734
9735 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
9736
9737         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
9738           The float param registers and other param registers must be the 
9739           same index on Windows x64.
9740
9741         Contributed under MIT/X11 license.
9742
9743 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
9744
9745         * mini.c: Make the previous fix GC safe.
9746
9747 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
9748
9749         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
9750
9751 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
9752
9753         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
9754           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
9755           ArgValuetypeAddrInIReg instead.
9756
9757         Contributed under MIT/X11 license.
9758
9759 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
9760
9761         * mini-codegen.c (get_register_spilling): Fix a warning.
9762
9763 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
9764
9765         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
9766         for types which the initialization fails. Raises the provided exception
9767         at the right stop after cleanup.
9768
9769 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
9770
9771         * aot-compiler.c: Free most of the memory allocated during compilation.
9772
9773         * mini.c (mini_parse_debug_options): Fix a leak.
9774         
9775         * mini.c (mini_method_compile): Don't add the method to the jit info tables
9776         during aot compilation.
9777
9778 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
9779
9780         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
9781         it has too much register pressure.
9782
9783 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
9784
9785         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
9786
9787 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
9788
9789         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
9790         on x86.
9791
9792         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
9793         on amd64 similar to the way it is done on arm.
9794
9795         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9796
9797         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
9798         consistency, normalize error messages, avoid loading aot-only modules in
9799         normal mode.
9800
9801         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
9802         for consistency.
9803
9804         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
9805
9806 2008-07-11  Martin Baulig  <martin@ximian.com>
9807
9808         * debug-debugger.h
9809         (MonoDebuggerInfo): Add `interruption_request'.
9810
9811 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
9812
9813         * aot-compiler.c (emit_plt): Remove some dead code.
9814
9815         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
9816
9817         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
9818         return the plt info offset belonging to a given plt entry.
9819
9820         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
9821         mono_aot_get_plt_info_offset.
9822         
9823         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
9824         similar to the amd64 code by makeing jumps through a separate jump table 
9825         instead of embedding the jump addresses into the code.
9826
9827 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
9828
9829         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
9830         method.
9831
9832 2008-07-10  Martin Baulig  <martin@ximian.com>
9833
9834         * mini.c (mini_method_compile): Disable generics sharing when
9835         running in the debugger.
9836
9837 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
9838
9839         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
9840
9841         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
9842         the local register allocator from running out of registers on x86 when 
9843         using aot.
9844
9845 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
9846
9847         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
9848         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
9849         C4146.
9850
9851         Contributed under MIT/X11 license.
9852
9853 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
9854
9855         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
9856         speed up the assembler.
9857
9858 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
9859
9860         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
9861         support.
9862
9863         * mini.c: Move the soft float handling macros a bit earlier, add 
9864         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
9865         place.
9866
9867         * mini.h: Add prototype for mono_arch_fixup_jinfo.
9868
9869         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
9870         read-only to help catch code allocation requests.
9871         
9872         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
9873         and turn it off when using --aot-only or when compiling with --aot=full.
9874
9875         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
9876         jump table for switches from the normal domain mempool, not the code
9877         manager.
9878
9879         * mini-trampolines.c (get_unbox_trampoline): New function to return an
9880         unbox trampoline which handles aot-only mode too.
9881
9882         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
9883         an AOTed unbox trampoline.
9884
9885         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
9886
9887 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
9888
9889         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
9890         ""
9891
9892         Contributed under MIT/X11 license.
9893
9894 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
9895
9896         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
9897           the unwind information for the method at the end of the allocated block.
9898           
9899         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
9900           MonoCompileArch to hold the unwind info for SEH on Winx64
9901         
9902         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
9903           frame pointer info for the method being compiled.
9904           
9905         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
9906           the call to mono_exception_from_token.
9907           
9908         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
9909           storing the method prolog information in a format that the Winx64 SEH can understand.  This
9910           information is stored a the end of the method block because it is all 32-bit offset based.
9911
9912         Contributed under MIT/X11 license.
9913
9914 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
9915
9916         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
9917
9918         * wapihandles.c: Fix warnings.
9919
9920         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
9921         mode.
9922
9923         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
9924         mono_jit_compile_method in aot-only mode since that calls the type 
9925         initializer.
9926         
9927         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
9928         get_delegate_invoke_impl in aot-only mode.
9929
9930         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
9931
9932 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
9933
9934         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
9935
9936         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
9937         is on by default.
9938
9939         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
9940
9941         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
9942         init trampoline from the AOT file as well.
9943
9944         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
9945         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
9946         code.
9947
9948         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
9949         mono_init.
9950
9951         * exceptions-amd64.c: Add _full variants for the remaining exception code
9952         creation functions as well, allow emission of relocatable code, remove
9953         caching since that is now done by the caller.
9954
9955         * mini-exceptions.c: Add _full variants for the remaining exception code
9956         creation functions as well, add aot-only support.
9957
9958         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
9959         if we can determine a proper token for them.
9960         (add_wrappers): Add a few more wrappers.
9961         (emit_method_code): Remove some dead code.
9962         (emit_trampolines): Emit exception code too.
9963
9964         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
9965
9966         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
9967         mono_array_new_va which avoids varargs.
9968
9969         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
9970
9971         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
9972         mono_arch_create_specific_trampoline () in all places.
9973
9974         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
9975         a bit so it can be used for other things as well.
9976         
9977         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
9978         on demand as well.
9979
9980         * exceptions-amd64.c: Rename the caching from the exception code creation
9981         functions, it is done by the caller instead.
9982         
9983         * exceptions-amd64.c: Change the signature of the exception code creation 
9984         functions to allow the creation of relocatable code later.
9985
9986         * mini-exceptions.c: Add a set of functions to query the various 
9987         runtime-generated exception functions.
9988
9989         * mini.c mini-exceptions.c: Use the newly added functions instead of the
9990         mono_arch_.. () functions.
9991         
9992 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
9993
9994         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
9995
9996         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
9997
9998         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
9999         (mini_get_vtable_trampoline): Ditto.
10000
10001         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
10002         code in the AOT case by returning the code size and a list of relocations to
10003         the caller.
10004
10005         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
10006
10007 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
10008
10009         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
10010           clean the stack.
10011
10012         Contributed under MIT/X11 license.
10013
10014 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
10015
10016         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
10017         so the buffer size can be computed correctly. Fixes #404735.
10018
10019         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
10020         normally as cfg->debug_info is already freed.
10021
10022 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
10023
10024         * mini-amd64.c: For calls returning vtypes in registers, don't store
10025         the return address on the stack, instead allocate a separate local for
10026         it. Fixes #404729.
10027
10028 2008-07-05  Mark Probst  <mark.probst@gmail.com>
10029
10030         * mini-trampolines.c, mini.h: Add an argument to
10031         mono_create_jit_trampoline_in_domain() for turning off the adding
10032         of the sync wrapper.
10033
10034         * mini.c: Use the JIT trampoline without sync instead of
10035         ldftn_nosync in static RGCTX invoke wrappers so that the call can
10036         be patched.
10037
10038 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10039
10040         * driver.c: Turn on GSHARED optimization by default.
10041
10042 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
10043
10044         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
10045         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
10046
10047         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
10048         create a variant of the generic trampoline code callable from AOTed trampolines.
10049
10050         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
10051         trampoline code callable from AOTed trampolines.
10052
10053         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
10054
10055 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10056
10057         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
10058         pass-through manner.
10059
10060         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
10061         and don't fail sharing for them anymore.
10062
10063         * mini-exceptions.c: Handle exceptions in shared generic methods.
10064
10065         * generic-sharing.c: When checking the context of a generic
10066         method, also check its class's context.  Don't treat wrappers as
10067         sharable.
10068
10069         * mini-trampolines.c: Some code factored out to
10070         metadata/generic-sharing.c.  Handle the MRGCTX case.
10071
10072         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
10073         we must deal with the method being of another instantiation of the
10074         class.  Add static rgctx invoke wrappers to generic methods.
10075
10076 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10077
10078         * mini.c: Provide all jit infos of generic shared methods with a
10079         generic jit info.
10080
10081         * mini-exceptions.c: Handle the new situation that a generic info
10082         might be available, but not info about the this/vtable/mrgctx
10083         variable.
10084
10085 2008-07-03  Mark Probst  <mark.probst@gmail.com>
10086
10087         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
10088         generic methods.
10089
10090 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
10091
10092         * dominators.c (check_dominance_frontier): Fix a warning.
10093
10094         * mini.h: Add some missing prototypes.
10095
10096         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
10097
10098         * driver.c (mono_jit_init_version): Correct the comments since the first
10099         argument should be the name of the root domain, not a filename.
10100
10101         * aot-runtime.c (make_writable): Error out if this is called while running
10102         with --aot-only.
10103         (load_aot_module): Ditto.
10104
10105         * aot-compiler.c: Really fix the computation of method indexes.
10106
10107         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
10108         optimizations as this is no longer called frequently.
10109
10110         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
10111         method and the invoke impl code and pass it to the delegate trampoline instead of
10112         just the delegate class.
10113
10114 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
10115
10116         * aot-compiler.c: Fixup the computation of method indexes.
10117         (add_wrappers): Create the base methods of the runtime invoke wrappers using
10118         the method builder infrastructure.
10119
10120         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
10121         has no header.
10122
10123         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
10124         mode, load the method right away instead of creating a trampoline.
10125
10126         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
10127
10128         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
10129         some checks a bit.
10130
10131 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
10132
10133         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
10134         (mono_aot_load_method): Use method_index instead of method->token.
10135
10136         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
10137         can handle icalls etc. properly.
10138
10139         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
10140
10141         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
10142
10143         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
10144         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
10145         JIT_ICALL_ADDR patch type.
10146
10147         * patch-info.h: Add JIT_ICALL_ADDR patch type.
10148
10149         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
10150         request flag.
10151         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
10152
10153         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
10154
10155 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
10156
10157         * mini.c: Use domain->jit_code_hash_lock for controlling access to
10158         domain->jit_code_hash.
10159
10160 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
10161
10162         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
10163
10164 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
10165
10166         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
10167         get_this_arg_from_call, let it compute it when needed.
10168
10169         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
10170         gsctx from code only when needed.
10171
10172         * mini-trampolines.c (get_generic_context): Rename this to 
10173         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
10174         it can be called by the arch backends.
10175
10176         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
10177
10178 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
10179
10180         * driver.c (mono_main): Add experimental --aot-only command line option.
10181
10182         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
10183         set.
10184
10185 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
10186
10187         * driver.c (DllMain): Remove mono_module_handle.
10188
10189         Contributed under MIT/X11 license.
10190
10191 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
10192
10193         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
10194         for emitting methods which are not in the source assembly. Detect and report
10195         failure of assembling+linking.
10196         
10197         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
10198
10199         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
10200
10201 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
10202
10203         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
10204
10205 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
10206
10207         * mini.h: Remove some obsolete prototypes.
10208
10209         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
10210
10211 2008-06-24  Mark Probst  <mark.probst@gmail.com>
10212
10213         * mini.c (get_object_generic_inst): Variable-sized arrays are not
10214         supported by Visual Studio, so use alloca().
10215
10216 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
10217
10218         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
10219         Fixes #402585.
10220
10221 2008-06-23  Mark Probst  <mark.probst@gmail.com>
10222
10223         * mini.c: Fail sharing of a generic method if it contains an open
10224         catch clause (because we don't pass MRGCTXs yet).
10225
10226 2008-06-23  Mark Probst  <mark.probst@gmail.com>
10227
10228         * mini.c: When compiling a method with generic sharing, insert the
10229         method instantiated with an all-Object generic context into the
10230         jit info table, instead of the context of the first instantiation
10231         of the method we happen to compile.
10232
10233 2008-06-18  Martin Baulig  <martin@ximian.com>
10234
10235         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
10236         `major_version' and `minor_version'.
10237
10238 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10239
10240         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
10241         mono_method_is_generic_sharable_impl() takes an additional
10242         argument specifying whether to treat type variables as reference
10243         types.
10244
10245 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10246
10247         * mini.h: Removed obsolete prototypes.
10248
10249 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10250
10251         * mini.c: Don't fail generic sharing for initobj and sizeof - we
10252         already handle them.
10253
10254 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10255
10256         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
10257         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
10258         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
10259         tramp-x86.c: Added a MonoGenericContext* argument to
10260         mono_arch_get_unbox_trampoline() so that it can call other
10261         functions which require it.
10262
10263 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10264
10265         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
10266         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
10267         mono_arch_get_this_arg_from_call() takes a
10268         MonoGenericSharingContext* as well.
10269
10270 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10271
10272         * mini.c: Factor out code for emitting unbox into emit_unbox() and
10273         implement generic sharing of unbox.
10274
10275 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10276
10277         * mini.c: Don't compute the vtable to determine whether a field is
10278         special static, because it might not work for open types.
10279
10280 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10281
10282         * mini.c: Removed the unused token_type and token_source arguments
10283         from get_runtime_generic_context_ptr().
10284
10285 2008-06-17  Marek Habersack  <mhabersack@novell.com>
10286
10287         * mini.c (ADD_BINOP): fix the build
10288
10289 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
10290
10291         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
10292         a widening op.
10293
10294 2008-06-16  Mark Probst  <mark.probst@gmail.com>
10295
10296         * mini.h: Removed class relations enum that's not used anymore.
10297
10298 2008-06-16  Mark Probst  <mark.probst@gmail.com>
10299
10300         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
10301
10302         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
10303         the lazy fetch trampoline access code.
10304
10305 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
10306
10307         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
10308
10309 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
10310
10311         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
10312
10313         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
10314
10315         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
10316
10317 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10318
10319         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
10320         intrinsics.
10321
10322         * mini-ops.h: Add MIN/MAX_UN opcodes.
10323
10324         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
10325         intrinsics.
10326
10327         * basic-math.cs: Add more min/max tests.
10328
10329         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
10330
10331 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10332
10333         * mini.c: Small fix in the prologue of emit_castclass.
10334
10335 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10336
10337         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
10338
10339         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
10340         do not work even for unsigned types. Fixes #400014.
10341
10342         * basic-math.cs: Add regression tests for unsigned Min/Max.
10343
10344 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10345
10346         * mini.c: Added additional context_used argument to several
10347         functions, which will be needed for sharing generic methods.  Use
10348         GET_RGCTX macro wherever appropriate.  Declare only one
10349         context_used in mono_method_to_ir().
10350
10351 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10352
10353         * mini.c, generic-sharing.c: Removed generic class relations.
10354
10355         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
10356         functions due to MRGCTX changes.
10357
10358 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10359
10360         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
10361         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
10362         with calculated IMT.
10363
10364         * mini.c: Generic sharing of calls via generic interfaces.
10365
10366         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
10367         generic method with non-constant MonoGenericContext*.  Instead,
10368         the context is taken out of the method itself.
10369
10370 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10371
10372         * mini.c: Generic sharing of ldvirtftn.
10373
10374 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10375
10376         * mini.c: Generic sharing of ldftn.
10377
10378 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10379
10380         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
10381
10382 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10383
10384         * mini.c: Generic sharing of the special case of ldtoken followed
10385         by a call to GetTypeFromHandle.
10386
10387 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10388
10389         * mini.c: Generic sharing of box for nullable types.
10390
10391 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10392
10393         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
10394         are passed on the stack. Fixes #324807.
10395
10396 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
10397
10398         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
10399         for the ArgValuetypeAddrInIReg case.
10400
10401         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
10402         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
10403
10404         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
10405         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
10406         local variable and pass the local variable by reference to the called method.
10407           
10408         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
10409         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
10410
10411         Contributed under MIT/X11 license.
10412
10413 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
10414
10415         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
10416
10417         * debug-mini.c (mono_debug_print_vars): Release memory after printing
10418         everything.
10419
10420 2008-06-10  Martin Baulig  <martin@ximian.com>
10421
10422         * debug-mini.c
10423         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
10424
10425 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
10426
10427         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
10428         possible error when no arguments are passed.
10429
10430         Contributed under MIT/X11 license.
10431
10432 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
10433
10434         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
10435         where the file name is NULL.
10436
10437 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
10438
10439         * mini.c: Fix s390 build.
10440
10441 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
10442
10443         * trace.c (mono_trace_parse_options): Fix warnings.
10444
10445         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
10446
10447 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
10448
10449         * mini.c (remove_block_if_useless): Avoid printing the method name.
10450         
10451         * mini.c: Remove needless setting of ins->cil_code which is now done by 
10452         MONO_INST_NEW.
10453
10454         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
10455         LMF. Not yet used.
10456
10457         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
10458         translated code after it has been patched.
10459
10460 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
10461
10462         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
10463         avoid problems during code patching on SMP systems.
10464         (emit_call): Avoid adding a patch info which is already added by 
10465         emit_call_body.
10466         (mono_arch_emit_exceptions): Ditto.
10467
10468 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
10469
10470         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
10471         MONO_TYPE_ISSTRUCT already checks for it.
10472
10473 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
10474
10475         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
10476           structs with floats on Winx64 the float registers are not used.  
10477           The integer registers are always used..
10478         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
10479           only one register will be used and only if the size of the struct 
10480           is 1,2,4, or 8 bytes.
10481
10482         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
10483           to work for Winx64.
10484
10485         Contributed under MIT/X11 license.
10486
10487 2008-06-05  Martin Baulig  <martin@ximian.com>
10488
10489         * debug-debugger.c (debugger_lookup_class): Also call
10490         mono_class_setup_methods() here; we're only called from RTI.
10491
10492 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
10493
10494         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
10495         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
10496         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
10497         Post-process object files and add dtrace-generated object, if necessary.
10498
10499         Contributed under MIT/X11 license.
10500
10501 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10502
10503         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
10504         element class.
10505
10506         * mini.c: Generic sharing for unbox.any and castclass.
10507
10508 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10509
10510         * mini.c: Ignore tailcall prefix in shared generic code and when
10511         doing calls which require a vtable/rgctx argument.
10512
10513 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10514
10515         * mini.c: Don't free the JIT info.
10516
10517         * driver.c: Changes in the JIT info table testing code.
10518
10519 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
10520
10521         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
10522         interruption. Fix some warnings.
10523
10524         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
10525         interruption_checkpoint.
10526
10527 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
10528
10529         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
10530         from embedding applications.
10531
10532 2008-06-02  William Holmes  <billholmes54@gmail.com>
10533
10534         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
10535           reserving 32 bytes on the stack when making calls. 
10536
10537         Contributed under MIT/X11 license.
10538
10539 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
10540
10541         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
10542         the linear IL branch.
10543
10544         * driver.c: Print out more information for --version on arm.
10545
10546 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
10547
10548         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
10549         bb_exit instead, since out of line bblocks might not actually be emitted
10550         out-of-line.
10551         
10552         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
10553         maximum epilog size for out of line bblocks if tracing is enabled.
10554
10555         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
10556
10557 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
10558
10559         * arrays.cs: Regression tests for allocating arrays with negative sizes.
10560
10561 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
10562
10563         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
10564         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
10565         opcodes.
10566
10567 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
10568
10569         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
10570         the 'value' to store is a constant.
10571
10572         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
10573
10574         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
10575         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
10576
10577 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
10578
10579         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
10580         for accessing method->generic_container.
10581
10582 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
10583
10584         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
10585         
10586         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
10587
10588         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
10589
10590         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
10591         fails.
10592
10593 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
10594
10595         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
10596
10597         * mini.c: Handle the case when mono_class_vtable () fails.
10598
10599 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
10600         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
10601         the stat profiler.
10602
10603 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10604
10605         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
10606         together with domain sharing.
10607
10608 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10609
10610         * mini.c: Treat callvirts to final methods like non-virtual calls
10611         when doing generic sharing, i.e. look them up in the runtime
10612         generic context.
10613
10614 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10615
10616         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
10617         with computed types (for generic sharing).
10618
10619         * mini.c: Generic sharing for mkrefany and refanyval.
10620
10621 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
10622
10623         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
10624         possible.
10625
10626         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
10627         the generic sharing code.
10628         
10629         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
10630         when needed.
10631
10632 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
10633
10634         * mini.h: Remove the declaration of mono_aot_init_vtable ().
10635
10636 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
10637
10638         * driver.c: updated copyright date
10639
10640 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
10641
10642         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
10643         needed.
10644
10645 2008-05-19  Martin Baulig  <martin@ximian.com>
10646
10647         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
10648         pointing to the new `_mono_debug_using_mono_debugger' variable.
10649
10650         * driver.c
10651         (mono_main): Check mono_debug_using_mono_debugger() rather than
10652         the `MONO_INSIDE_MDB' environment variable to check whether we're
10653         inside the debugger.
10654
10655 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
10656
10657         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
10658         argument.
10659
10660 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
10661
10662         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
10663
10664         * mini.c: Added mini_assembly_can_skip_verification. This
10665         function checks if the assembly requested to skip verification. 
10666         Fixes part of #387274.
10667
10668 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
10669
10670         * mini.c (mini_get_method): Disable the check for open generic classes when
10671         using generic sharing.
10672
10673         * generics.cs: Add a test for #387034.
10674
10675         * mini.c (mini_get_method): Check whenever the method class is an open generic
10676         type, and return NULL in that case, causing a verification error. Fixes
10677         #384123.
10678
10679 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10680
10681         * driver.c (mono_main): Revert r102623. The right
10682         thing to do is to enable the verifier under verifiable
10683         unless a --security flag was passed.
10684
10685         We need this non-trivial behavior for --verify-all otherwise
10686         mcs-compileall won't be able to use it. As it needs everything to
10687         be verified under validil.
10688
10689 2008-05-06  Martin Baulig  <martin@ximian.com>
10690
10691         Fix #383749.
10692
10693         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
10694         (mono_debugger_thread_cleanup): Likewise.
10695         (mono_debugger_extended_notification): Likewise.
10696
10697 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10698
10699         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
10700         against both inflated and non-inflated methods. We need to check against the
10701         generic definition for cases where the instantiated method is not visible.
10702         We need to check against the inflated types for cases where the instantiation
10703         changes any super type. This fixes #382986.
10704
10705         Note that this doesn't need to be applied to other parts of mono_method_to_ir
10706         that check for visibiliy as generic params only appears as the type subject
10707         of tokens on call opcodes. Field manipulation and ldftn must always
10708         target an exact type.
10709
10710 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10711
10712         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
10713         if no related --security flag is passed.
10714
10715 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10716
10717         * mini-arch.h: Prepare support for ppc64.
10718
10719         Contributed under MIT/X11 license.
10720
10721 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10722
10723         * aot-runtime.c: Prepare support for ppc64.
10724
10725         Contributed under MIT/X11 license.
10726
10727 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10728
10729         * mini-ops.h: Prepare support for ppc64.
10730
10731         Contributed under MIT/X11 license.
10732
10733 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
10734
10735         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
10736
10737         Contributed under MIT/X11 license.
10738
10739 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
10740
10741         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
10742         assemblies, since aot_name is not a full path, causing us to load MS.NET 
10743         assemblies on windows.
10744
10745 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
10746
10747         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
10748         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
10749         * main.c: Use UTF-8 encoded command line instead of Windows default code
10750         page on Windows to support Unicode.
10751         * driver.c (DllMain): New function for mixed-mode assembly support.
10752         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
10753         export __stdcall functions without decoration.
10754
10755         Contributed under MIT/X11 license.
10756
10757 2008-04-28  Mark Probst  <mark.probst@gmail.com>
10758
10759         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
10760         saving it very early.
10761
10762 2008-04-28  Mark Probst  <mark.probst@gmail.com>
10763
10764         * mini.h, mini.c: Lots of code for accessing the old RGCTX
10765         deleted.  The only way to access the new RGCTX is via the
10766         trampline.
10767
10768         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
10769         vtable instead of the RGCTX to static methods.
10770
10771         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
10772         accessing the new RGCTX.
10773
10774         * generic-sharing.c: There is no separation between self, type
10775         arguments and other types in the RGCTX anymore.
10776
10777 2008-04-25  Jonathan Chambers <joncham@gmail.com>
10778
10779         * mini-amd64.c (add_general): Remove previous stack adjustment.
10780         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
10781         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
10782         for 32 bytes of stack space reserved for all calls.
10783         
10784         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
10785         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
10786         adjustment.
10787         
10788         Code contributed under MIT/X11 license.
10789
10790 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
10791
10792         * mini.c (mini_method_verify): Only verify non-inflated methods, check
10793         against the root definition, peeling out method and type instantiations.
10794         Cache verify success results, code that fails verification is still
10795         checked multiple times.
10796
10797 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
10798
10799         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
10800
10801 2008-04-23  Jonathan Chambers <joncham@gmail.com>
10802
10803         * mini-amd64.c (add_general): Always increment stack on Win64.
10804         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
10805         on Win64.
10806         
10807         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
10808         stack based argument handling on Win64.
10809         
10810         Code contributed under MIT/X11 license.
10811
10812 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
10813
10814         * Makefile.am (version.h): Add support for git-svn.
10815
10816 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
10817
10818         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
10819         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
10820         avoiding allocations and libc functions which might deadlock.
10821         
10822         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
10823         'no-gdb-backtrace' option is set.
10824
10825         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
10826
10827         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
10828
10829 2008-04-21  Martin Baulig  <martin@ximian.com>
10830
10831         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
10832         and `get_lmf_addr'; `notification_address' is no longer a pointer.
10833
10834 2008-04-21  Martin Baulig  <martin@ximian.com>
10835
10836         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
10837         `thread_vtable', `event_handler_ptr' and `event_handler'.
10838
10839 2008-04-21  Martin Baulig  <martin@ximian.com>
10840
10841         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
10842         allows delayed initialization of the `executable_code_buffer' when
10843         attaching.
10844
10845 2008-04-21  Martin Baulig  <martin@ximian.com>
10846
10847         * mini.h (mono_debugger_create_notification_function): Removed.
10848         * tramp-*.c (mono_debugger_create_notification_function): Removed.
10849
10850         * mdb-debug-info64.s
10851         (MONO_DEBUGGER__notification_function): Added this in the .text section.
10852
10853         * mdb-debug-info32.s
10854         (MONO_DEBUGGER__notification_function): Added this in the .text section.
10855
10856         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
10857         currently only works on x86 and x86_64, so don't create it on ppc.
10858
10859 2008-04-21  Martin Baulig  <martin@ximian.com>
10860
10861         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
10862
10863         * mini.c
10864         (mini_method_compile): In the fp elimination check, check
10865         `debug_options.mdb_optimizations' in addition to
10866         mono_debug_using_mono_debugger().       
10867
10868         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
10869         disable some JIT optimizations which are only disabled when
10870         running inside the debugger.
10871         Added `--help-debug' option to describe the debugging options.
10872         (parse_debug_options): New static function to parse the `--debug'
10873         options, so we can easily add more stuff in future.
10874
10875 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
10876
10877         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
10878         the method has no body.
10879
10880 2008-04-19  Jonathan Chambers <joncham@gmail.com>
10881
10882         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
10883         assembly is not allowed in MSVC 64-bit compiler. 
10884         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
10885         as we get floating point exceptions everywhere.
10886         
10887         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
10888         correctly align arguments for call to throw_exception.
10889         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
10890         
10891         Code contributed under MIT/X11 license.
10892
10893 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
10894
10895         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
10896
10897 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
10898
10899         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
10900
10901         * mini-amd64.c (NEW_INS): Set cil_code.
10902
10903         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
10904         from mini-amd64.c so all debugger related logic is in one place.
10905
10906         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
10907         later won't have a random ip assigned to them.
10908
10909 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
10910
10911         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
10912         the arch specific function initializes code_size.
10913         (mono_create_delegate_trampoline): Ditto.
10914
10915         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
10916         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
10917         platforms.
10918
10919         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
10920         running under the debugger.
10921
10922         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
10923         debugger.
10924
10925         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
10926         debugger. Also move the disabling of optimizations here from driver.c.
10927         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
10928         debugger.
10929
10930         * mini.h (MonoCompile): Add a few new flags.
10931
10932 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
10933
10934         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
10935         so the cil_code field of created MonoInst's is properly set.
10936         (mini_select_instructions): Ditto.
10937
10938         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
10939         (MONO_INST_NEW_CALL): Ditto.
10940
10941         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
10942         in many places so the ins->cil_code field is properly initialized.
10943
10944         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
10945         place.
10946
10947 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
10948
10949         * mini.c (mini_method_compile): Print a different message when compiling a 
10950         shared method.
10951         
10952         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
10953         > 1.
10954
10955 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
10956
10957         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
10958         SSE2 instructions.
10959
10960         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
10961         
10962 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
10963
10964         * mini.c (handle_stack_args): Make this return void since its return value was
10965         never used. Also set cfg->unverifiable for invalid IL instead of calling
10966         G_BREAKPOINT ().
10967
10968 2008-04-10  Mark Probst  <mark.probst@gmail.com>
10969
10970         * mini.c: Make sure "this" is live in catch clauses with type
10971         variables in shared generic code.
10972
10973 2008-04-08  Mark Probst  <mark.probst@gmail.com>
10974
10975         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
10976         generic_class_is_reference_type() to ensure the proper behaviour
10977         when sharing generic code and the type in question is a type
10978         argument.
10979
10980 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
10981
10982         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
10983         race conditions when printing thread dumps. Fixes #377738.
10984
10985 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
10986         
10987         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
10988         shows up when both MonoInst arguments can cause aliasig.
10989         There is likely no way in the current JIT to trigger this problem, but
10990         it showed up in the development of generics sharing, when in a new
10991         opcode both args of an OP_GROUP can be aliases (addresses of a local).
10992         When the generics sharing code will be committed, its tests will be
10993         valid also for this bug.
10994
10995 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
10996
10997         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
10998         PATCH_INFO_METHOD.
10999
11000         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
11001         NULL.
11002
11003 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
11004
11005         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
11006         use a more detailed exception message for InvalidCastException.
11007
11008         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
11009
11010         * driver.c (mono_main): Add --debug=casts option to turn on better 
11011         InvalidCastException message details.
11012
11013         * mini.c (mini_get_debug_options): New helper function to return the address of
11014         the debug_options variable.
11015
11016         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
11017         the jit_tls TLS variable.
11018
11019         * mini.c (mono_jit_tls): New TLS variable.
11020
11021         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
11022         option is used.
11023
11024 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
11025
11026         * mini.h: Removed verifer related stuff. This code was moved to verify.c
11027
11028         * mini.c: Removed verifer related stuff, code moved to verify.c.
11029
11030         * driver.c: Using code from verify.c instead of mini.c.
11031
11032 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
11033
11034         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
11035         longer valid.
11036
11037 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
11038
11039         * mini.c (check_for_method_verify): Enabling verification of
11040         corlib if mono_verify_all is set. Bugs in the verifier preventing that
11041         have been fixed.
11042
11043 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
11044
11045         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
11046         caller saved registers as well.
11047         
11048         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
11049         saved registers as well.
11050
11051 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
11052
11053         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
11054
11055         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
11056         code.
11057
11058 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
11059
11060         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
11061         to get_call_info.
11062         (get_call_info): Take a gsctx argument instead of 'cfg'.
11063
11064 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
11065
11066         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
11067         mono_verify_all is set.
11068
11069         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
11070
11071         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
11072
11073 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
11074
11075         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
11076         an exception.
11077
11078         * driver.c mini.c mini.h: Add a --verify-all development option to test the
11079         verifier and the code generated by the compiler.
11080
11081 2008-03-25  Mark Probst  <mark.probst@gmail.com>
11082
11083         * mini.c: Generic sharing of the non-nullable case of the box
11084         instruction.
11085
11086 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
11087
11088         * inssel.brg: Fix the build.
11089
11090         * iltests.il.in: Add a test for lconv.ovf.u8.un.
11091
11092 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
11093
11094         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
11095         Array:Address. Fixes #372410.
11096
11097         * iltests.il.in: New tests for readonly prefix.
11098
11099 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
11100
11101         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
11102         mini-trampolines.c.
11103
11104         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
11105         mini-exceptions.c.
11106
11107         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
11108         
11109         * mini.c (mono_decompose_op_imm): New helper function.
11110
11111         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
11112         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
11113         return value.
11114
11115         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
11116         mono_arch_output_basic_block. Fix warnings.
11117
11118         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
11119         for now.
11120
11121 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
11122
11123         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
11124         since the extra frame is now detected automatically inside the loop.
11125
11126         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
11127         opts which are now in mono_peephole_ins ().
11128         
11129         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
11130
11131         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
11132         frames and skip duplicate managed-to-native frames. Fixes #367665.
11133
11134         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
11135         opts which are now in mono_peephole_ins ().
11136         (mono_arch_peephole_pass_2): Ditto.
11137
11138         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
11139
11140         * mini-codegen.c (mono_peephole_ins): New helper function containing the
11141         arch independent peephole optimizations.
11142
11143         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
11144         opts which are now in mono_peephole_ins ().
11145
11146         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
11147         
11148         * mini-s390.c (mono_arch_output_basic_block): Fix build.
11149
11150         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
11151         pattern.
11152
11153         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
11154         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
11155         opcode. 
11156
11157 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
11158
11159         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
11160         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
11161         return value.
11162
11163         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
11164         mono_arch_output_basic_block. Fix warnings.
11165
11166 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11167
11168         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
11169         conv.ovf.u.un.
11170
11171 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11172
11173         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
11174         conv.ovf.u.un.
11175
11176         * iltests.il: Add new tests.
11177
11178 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
11179
11180         * mini.c: Removed Windows version macros.
11181
11182 2008-03-20  Mark Probst  <mark.probst@gmail.com>
11183
11184         * generic-sharing.c: Put reflection types in the extensible part
11185         of the runtime generic context.
11186
11187         * mini.c: Generic sharing of the GetTypeHandle special case of the
11188         ldtoken instruction.
11189
11190 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11191
11192         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
11193
11194         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
11195         
11196         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
11197         consistency with the other version on the linear IR branch.
11198
11199         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
11200
11201         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
11202
11203         * iltests.il.in: Add new tests.
11204
11205 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
11206
11207         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
11208
11209         * iltests.il.in: Add new tests.
11210
11211 2008-03-19  Mark Probst  <mark.probst@gmail.com>
11212
11213         * mini.c: Two variables with the same name were declared in
11214         nesting contexts and one wasn't initialized.  Fixed.
11215
11216 2008-03-19  Mark Probst  <mark.probst@gmail.com>
11217
11218         * mini.c: Generic sharing of the initobj instruction.
11219
11220 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
11221
11222         * mini.c: make the test to optimize ldtoken from typeof() more
11223         precise.
11224
11225 2008-03-18  Mark Probst  <mark.probst@gmail.com>
11226
11227         * mini.c: Generic sharing of the initobj instruction for reference
11228         types.
11229
11230 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
11231
11232         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
11233         the mono_breakpoint_clean_code() code to perform bound checks.
11234
11235 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
11236
11237         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
11238         mono_arch_patch_callsite() to include the start of the managed method
11239         to be able to perform bound checks.
11240
11241 2008-03-17  Mark Probst  <mark.probst@gmail.com>
11242
11243         * mini.c: Generic sharing for the isinst instruction.
11244
11245 2008-03-17  Mark Probst  <mark.probst@gmail.com>
11246
11247         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
11248         inssel-long32-mips.brg: Added opcodes for doing indirect calls
11249         with the runtime generic context argument.
11250
11251         * mini.c: Share calls to several types of unsharable methods by
11252         putting the address of the method code in the runtime generic
11253         context and doing an indirect call.
11254
11255         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
11256         to switches.
11257
11258 2008-03-16  Mark Probst  <mark.probst@gmail.com>
11259
11260         * generic-sharing.c: Change due to a change in the runtime genric
11261         context API.
11262
11263 2008-03-15  Martin Baulig  <martin@ximian.com>
11264
11265         * tramp-x86.c
11266         (mono_arch_nullify_class_init_trampoline): Add call to
11267         mono_breakpoint_clean_code() to make things work when running
11268         inside the debugger.
11269
11270         * tramp-amd64.c
11271         (mono_arch_nullify_class_init_trampoline): Add call to
11272         mono_breakpoint_clean_code() to make things work when running
11273         inside the debugger.
11274
11275 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
11276
11277         * inssel-long.brg (reg): Fix 64 bit build.
11278
11279 2008-03-14  Mark Probst  <mark.probst@gmail.com>
11280
11281         * mini.c, mini.h: Share static generic code by passing it an
11282         implicit argument pointing to the runtime generic context.
11283
11284         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
11285         inssel-long32-mips.brg: New opcodes for calling shared static,
11286         which need to be passed the runtime generic context.
11287
11288         * mini-amd64.c, mini-x86.c: Save the runtime generic context
11289         argument on the stack in the prologue if needed.  New function for
11290         finding the runtime generic context argument from the registers
11291         saved by the trampoline.
11292
11293         * mini-amd64.h, mini-x86.h: Specify which register to use for the
11294         runtime generic context argument.
11295
11296         * tramp-amd64.c: Also restore the register used for the runtime
11297         generic context argument.
11298
11299         * mini-trampoline.c: Resolve shared static calls by consulting the
11300         runtime generic context via the new argument.
11301
11302         * generic-sharing.c: Add an argument to sharability-checking
11303         functions that specifies whether type variables should be treated
11304         as sharable type arguments.
11305
11306         * inssel-x86.brg: Removed a superfluous, buggy rule.
11307
11308         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
11309         to switches.
11310
11311 2008-03-14  Martin Baulig  <martin@ximian.com>
11312
11313         * debug-debugger.c (main_thread_handler): Call
11314         mono_runtime_run_main() without sending any notifications.
11315
11316         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
11317
11318 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
11319
11320         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
11321
11322 2008-03-14  Mark Probst  <mark.probst@gmail.com>
11323
11324         * tramp-x86.c: Fixed register restore offsets in the trampoline
11325         code for ECX and EDX.
11326
11327 2008-03-12  Geoff Norton  <gnorton@novell.com>
11328
11329         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
11330         different ucontext_t implementations.
11331         * exceptions-arm.c: Use the above defines to get exceptions working on 
11332         iPhone (based on a patch by Luke Howard lukeh@padl.com)
11333         * mini-arm.c: Implement iPhone icache support (based on a patch by
11334         Luke Howard lukeh@padl.com)
11335
11336 2008-03-12  Mark Probst  <mark.probst@gmail.com>
11337
11338         * mini.c: Enable generic sharing of calls to non-static
11339         non-interface non-generic non-value-type methods.
11340
11341         * mini-trampolines.c: Resolve calls from shared generic code.
11342
11343 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
11344
11345         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
11346
11347         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
11348
11349 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
11350
11351         * mini.c: some fixes for the AOT compiler.
11352
11353 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
11354
11355         * cpu-amd64.md: Add clob:1 to some float opcodes.
11356
11357 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
11358
11359         * mini.h: Added MiniVerifierMode enumeration.
11360
11361         * mini.c: Added mini_verifier_set_mode to control
11362         the usage of the new verifier.
11363
11364         * mini.c (mono_method): Integrated the new verifier.
11365
11366         * driver.c: Extended --security option with validil and
11367         verifiable options to activate the new verifier.
11368
11369 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
11370
11371         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
11372         optimization to ctors taking 0 or 2 arguments too.
11373
11374         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
11375         a bit.
11376
11377         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
11378
11379         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
11380
11381 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
11382
11383         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
11384         non-aot case as well.
11385
11386         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
11387
11388         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
11389         changes.
11390
11391         * aot-compiler.c (encode_patch): Ditto.
11392
11393         * mini.h (G_MININT32): Fix the definition of this.
11394
11395 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
11396
11397         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
11398
11399         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
11400
11401 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
11402
11403         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
11404         methods returning vtypes in registers.
11405         (mono_arch_allocate_vars): Ditto.
11406
11407         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
11408
11409         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
11410
11411         * generics.cs: Add a test from the linear IR branch.
11412
11413         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
11414
11415         * mini.c (inline_method): Cache failed inline attempts.
11416
11417 2008-03-04  Mark Probst  <mark.probst@gmail.com>
11418
11419         * mini.c: For shared methods of generic classes put the location
11420         of "this" into the MonoGenericJitInfo.
11421
11422         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
11423         register out of a MonoContext by register number.  Add the generic
11424         sharing context as an argument to mono_arch_find_this_argument().
11425
11426         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
11427         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
11428         for new arch function.
11429
11430         * mini-exception.c: Handle open exception clauses in shared
11431         generic code.
11432
11433         * mini-trampolines.c: Supply additional argument to
11434         mono_arch_find_this_argument().
11435
11436 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
11437
11438         * Makefile.am (regtests): Run the bench.exe tests last.
11439
11440 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
11441
11442         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
11443         a bit.
11444
11445 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
11446
11447         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
11448         with MS.
11449
11450         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
11451         
11452         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
11453
11454         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
11455         whose class has no cctor.
11456
11457         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
11458
11459 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
11460
11461         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
11462         unverified.
11463
11464 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
11465
11466         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
11467         to be in sync with the code on the linear IR branch.
11468
11469         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
11470
11471         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
11472
11473 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
11474
11475         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
11476
11477         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
11478
11479         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
11480
11481         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
11482
11483         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
11484         
11485         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
11486         body.
11487
11488 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
11489
11490         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
11491         OP_LOADR4_MEMBASE emission.
11492
11493         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
11494         (mono_spillvar_offset_float): Ditto.
11495
11496         * mini-mips.c (mono_arch_emit_prolog): Ditto.
11497
11498         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
11499         emission.
11500
11501         * basic-long.cs: Add regression tests for them.
11502
11503         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
11504         use.
11505         (mono_arch_allocate_vars): Fix representation of single-precision float
11506         argument.
11507         (mono_arch_output_basic_block): Ditto.
11508
11509         * inssel-mips.brg: Ditto, remove duplicate items.
11510
11511         * mini-mips.c (emit_load_volatile_arguments): New function to handle
11512         arguments of tail calls as on other platforms.
11513         (mono_arch_output_basic_block): Handle tail calls.
11514
11515         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
11516         register.
11517
11518         * objects.cs (test_5_pass_static_struct): Add test for it.
11519
11520         Contributed under MIT/X11 license.
11521
11522 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
11523
11524         * Makefile.am: Use gmcs for compiling the regression tests.
11525
11526         * *.2.cs *.2.il: Rename to *.cs and *.il.
11527
11528 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
11529
11530         * regalloc.h: Make the vassign array smaller.
11531
11532         * mini.c (mini_method_compile): Remove an unused field in cfg.
11533
11534         * mini-codegen.c: Add a bunch of micro optimizations.
11535
11536 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
11537
11538         * regalloc.h: Remove some unused fields.
11539
11540 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
11541
11542         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
11543
11544         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
11545
11546 2008-02-22  Mark Probst  <mark.probst@gmail.com>
11547
11548         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
11549
11550         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
11551         trampoline: Fetch an entry from the runtime generic context.  If
11552         it's NULL, jump to the actual trampoline to fill the runtime
11553         generic context.  Otherwise, return it.
11554
11555         * mini.c: Call the lazy fetch trampoline to get entries out of the
11556         runtime generic context.
11557
11558         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
11559         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
11560         tramp-sparc.c: Stubs for the lazy fetch trampoline.
11561
11562 2008-02-21  Mark Probst  <mark.probst@gmail.com>
11563
11564         * mini.c: Fetch data out of the extensible part of the runtime
11565         generic context instead of calling a helper function.
11566
11567         * generic-sharing.c: Some functions moved into
11568         metadata/generic-sharing.c.  Helper function for fetching other
11569         types now checks and asserts against extensible rgctx (just for
11570         debugging purposes - the helper function isn't called anymore
11571         unless for debugging).
11572
11573 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
11574
11575         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
11576         for tail calls up to the point that the tests in iltests.exe run. Also add a
11577         dummy CKFINITE implementation.
11578         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
11579         needed for trampoline LMF frames.
11580
11581         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
11582         trampoline LMF frames.
11583
11584 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
11585
11586         * mini.c (inline_method): clean any pending loader error when inlining fail.
11587         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
11588
11589 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
11590
11591         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
11592
11593         * aot-runtime.c (decode_patch_info): Ditto.
11594
11595         * mini.c (mono_resolve_patch_target): Ditto.
11596         
11597         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
11598         icall wrappers.
11599
11600         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
11601         
11602         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
11603         if it references an icall address.
11604
11605 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
11606
11607         * cpu-s390x.md: Remove some more unused opcodes.
11608         
11609         * cpu-s390x.md: Remove some unused opcodes.
11610
11611         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
11612         mono_op_imm_to_op ().
11613
11614         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
11615         instead of a switch statement.
11616         
11617         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
11618         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
11619
11620         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
11621         
11622         * mini-codegen.c: Remove unused mono_regstate2_... functions.
11623
11624         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
11625         -1.
11626
11627 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
11628
11629         * driver.c (mono_main): Improve error reporting when an assembly cannot be
11630         opened. Fixes #362607.
11631
11632         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
11633
11634         * iltests.il.in: Add a test for static methods in interfaces.
11635
11636 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
11637
11638         * genmdesc.c (build_table): Fix a crash on older glib versions.
11639
11640         * cpu-sparc.md: Remove some unused opcodes.
11641         
11642         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
11643         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
11644
11645         * cpu-amd64.md: Remove some unused opcodes.
11646
11647         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
11648         like the other opcodes.
11649
11650 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
11651
11652         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
11653
11654         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
11655
11656         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
11657         variables 'cfg' instead of 'm' for consistency.
11658
11659         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
11660
11661         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
11662         argument holding the vtype return address, to avoid the ambigious use of
11663         cfg->ret for this purpose.
11664
11665         * mini.c (NEW_RETLOADA): Use vret_addr if set.
11666
11667         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
11668         
11669         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
11670         new mono_print_ins () function which only takes one argument.
11671
11672 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
11673
11674         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
11675         macro arguments.
11676
11677 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
11678
11679         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
11680
11681         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
11682
11683         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
11684         opcodes and other small changes.
11685
11686         * mini-ops.h: Add some new opcodes from the linear IR branch.
11687
11688         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
11689
11690         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
11691         opcodes, use the REG_MEMBASE opcodes instead.
11692         
11693         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
11694         opcodes, use the REG_MEMBASE opcodes instead.
11695         
11696         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
11697         linear IR branch.
11698
11699         * mini.c (mono_op_imm_to_op): New helper function.
11700
11701         * mini-ops.h: Add some opcodes from linear IR branch.
11702
11703 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
11704
11705         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
11706         <tsv@solvo.ru>.
11707
11708 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
11709
11710         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
11711         OP_ICONV_TO_R4/R8.
11712
11713         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
11714
11715 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
11716
11717         * aot-compiler.c (emit_method_code): Add an assert.
11718
11719         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
11720         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
11721         methods.
11722
11723 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
11724
11725         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
11726         some load/store opcodes so they are consistent. 
11727         (mono_arch_emit_prolog): Simplify some code.
11728
11729         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
11730
11731         * objects.cs: Add tests for large argument offsets on ARM.
11732
11733         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
11734         stack offsets. Fixes #359651.
11735
11736         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
11737
11738         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
11739
11740         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
11741
11742         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
11743
11744         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
11745
11746         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
11747         rid of CEE_CONV_R_UN.
11748
11749         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
11750
11751 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
11752
11753         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
11754
11755         * mini.c (mono_normalize_opcodes): Add some more opcodes.
11756
11757         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
11758
11759         * cpu-amd64.md: Remove some unused opcodes.
11760
11761         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
11762
11763         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
11764
11765         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
11766         arch specific functions for its parts. Call the peephole pass after local
11767         regalloc so the prolog can compute a more accurate max_offset.
11768         
11769         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
11770         the corresponding OP_I/OP_L opcodes.
11771
11772         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
11773
11774         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
11775
11776 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
11777
11778         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
11779         as they are handled in mini.c.
11780
11781         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
11782         
11783         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
11784         case since it is handled in mini.c.
11785
11786         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
11787
11788         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
11789
11790         * *.c: Use the new opcodes in the IR and back end code.
11791
11792         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
11793
11794         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
11795
11796 2008-02-06  Mark Probst  <mark.probst@gmail.com>
11797
11798         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
11799         an assert because it has a race condition.
11800
11801 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
11802
11803         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
11804
11805         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
11806
11807         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
11808
11809         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
11810         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
11811
11812 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
11813
11814         * cpu-amd64.md (move): Correct the maximum size of move.
11815
11816 2008-02-05  Mark Probst  <mark.probst@gmail.com>
11817
11818         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
11819         the generic class init trampoline to return quickly if the class
11820         is already inited.
11821
11822 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
11823
11824         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
11825         issues where an 32 bit callsite cannot be patched by a 64 bit address.
11826
11827 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
11828
11829         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
11830         branch.
11831
11832 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
11833
11834         * objects.cs: Add some soft-float tests.
11835
11836         * mini.c: Fix a couple more soft-float issues.
11837
11838         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
11839
11840         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
11841         avoid a REX prefix.
11842
11843 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
11844
11845         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
11846         exception happens while compiling a virtual method.
11847
11848 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
11849
11850         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
11851         
11852         * mini-sparc.c: Fix build.
11853
11854         * mini-sparc.c (get_call_info): Add support for generic sharing.
11855
11856         * mini-exceptions.c: Add a FIXME.
11857
11858 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
11859
11860         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
11861         altstack handling code.
11862
11863         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
11864         
11865         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
11866
11867         * mini-s390.c: Add support for generic sharing.
11868
11869         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
11870         Fix CAS on s390.
11871         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
11872
11873         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
11874
11875         * mini-s390x.c: Add support for generic sharing.
11876         
11877         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
11878         Fix CAS on ia64.
11879         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
11880
11881         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
11882         can be used since it takes a 16 bit signed immediate.
11883
11884         * inssel-s390x.brg: Fix OP_SETRET.
11885
11886         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
11887
11888         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
11889
11890         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
11891
11892         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
11893
11894         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
11895         in one place.
11896
11897         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
11898         stuff.
11899
11900         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
11901         of the unused mono_arch_patch_delegate_trampoline stuff.
11902
11903 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
11904
11905         * basic-long.cs: Move the fp related tests to basic-float.cs.
11906
11907         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
11908
11909         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
11910
11911         * basic-calls.cs: Add a test for proper float argument passing.
11912
11913         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
11914         if the context corresponds to an exception received through a signal.
11915
11916         * exceptions.cs: Add a test for nullref handling at the start of a try
11917         clause.
11918
11919         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
11920
11921         * jit-icalls.c (mono_break): New JIT icall.
11922
11923         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
11924
11925         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
11926
11927 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
11928
11929         * cpu-*.md: Get rid of unused opcodes.
11930
11931         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
11932
11933         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
11934         by all platforms.
11935
11936         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
11937         define.
11938
11939         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
11940         the arch independent trampoline code in mini-trampolines.c.
11941
11942         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
11943
11944         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
11945
11946         * mini-s390.h: Remove an unused define.
11947         
11948         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
11949         the arch independent trampoline code in mini-trampolines.c.
11950
11951         * mini-arm.c (mono_arch_emit_prolog): Fix build.
11952
11953 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
11954
11955         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
11956
11957         * mini-s390.c (mono_arch_emit_prolog): Fix build.
11958
11959         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
11960
11961         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
11962
11963         * cpu-amd64.md: Use smaller sizes for int opcodes.
11964
11965         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
11966
11967         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
11968         objects.cs.
11969
11970         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
11971         debugging.
11972
11973         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
11974         instead of though a pointer to save an indirection when accessing elements of
11975         the array.
11976
11977         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
11978         some typos.
11979         (NOT_IMPLEMENTED): New helper macro.
11980         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
11981         of a bb.
11982
11983         * *.c: Use the new helper macro.
11984
11985 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
11986
11987         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
11988
11989 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
11990
11991         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
11992         stack slots.
11993
11994 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
11995
11996         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
11997         profiling is enabled.
11998         
11999         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
12000         the end.
12001         (mono_arch_emit_prolog): Add more first bblock optimizations.
12002
12003         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
12004         in order if possible.
12005         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
12006         bblock, since the arguments are still in their original registers.
12007
12008         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
12009
12010 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
12011
12012         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
12013         as well.
12014
12015         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
12016         offset 0.
12017
12018         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
12019
12020         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
12021         process async exceptions received while in unmanaged code.
12022
12023         * mini.c (mini_init): Install a callback with the runtime which will be called
12024         when a thread receives an async exception while in unmanaged code.
12025
12026         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
12027
12028         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
12029
12030 2008-01-16  Wade Berrier  <wberrier@novell.com>
12031
12032         * cpu-g4.md:
12033         * cpu-arm.md:
12034         * cpu-s390x.md:
12035         fix build
12036
12037 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
12038
12039         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
12040         compilation with sun cc.
12041
12042         * cpu-*.md: Fix the build.
12043
12044         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
12045
12046         * mini-amd64.h: Add some comments to the MonoLMF structure.
12047
12048         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
12049         
12050         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
12051         in the LMF structure if possible. This saves two instructions in the
12052         managed->native wrappers.
12053
12054         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
12055
12056 2008-01-16  Mark Probst  <mark.probst@gmail.com>
12057
12058         * generic-sharing.c: New type argument lookup code which uses the
12059         runtime generic context template.
12060
12061 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
12062
12063         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
12064
12065         * mini-arm.c (add_general): Fix arm eabi parameter passing.
12066         (mono_arch_output_basic_block): Fix localloc implementation.
12067
12068         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
12069
12070         * mini-ia64.c (peephole_pass): Fix ia64 build.
12071
12072         * mini-amd64.c (peephole_pass): Fix a warning.
12073         
12074         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
12075         at a constant offset from sp/fp.
12076
12077         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
12078         instead of obtaining it from *lmf in the managed method case.
12079
12080 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
12081
12082         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
12083
12084 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
12085
12086         * mini.h (MonoInstList): New type.
12087         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
12088         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
12089         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
12090         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
12091         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
12092         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
12093         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
12094         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
12095         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
12096         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
12097         MONO_INST_LIST_FOR_EACH_ENTRY,
12098         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
12099         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
12100         mono_inst_list_first, mono_inst_list_last,
12101         mono_inst_list_next, mono_inst_list_prev): New instruction
12102         list handling interfaces.
12103         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
12104         list head 'ins_list'.
12105         (MonoInst): Replace next pointer with list head 'node'.
12106         (MonoCallInst): Make 'out_args' a MonoInstList.
12107         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
12108         (MonoCompile): Delete reverse_inst_list and
12109         reverse_inst_list_len.
12110         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
12111         mono_arch_lowering_pass, mono_arch_local_regalloc,
12112         mono_arch_output_basic_block, mono_arch_emit_prolog):
12113         Convert to new instruction lists.
12114         (insert_after_ins): Delete.
12115         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
12116         instruction lists.
12117         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
12118         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
12119         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
12120         mono_emulate_opcode, mono_emit_load_got_addr,
12121         inline_method, mono_method_to_ir, mono_print_bb_code,
12122         print_dfn, decompose_pass, nullify_basic_block,
12123         replace_out_block_in_code, remove_block_if_useless,
12124         merge_basic_blocks, move_basic_block_to_end,
12125         try_unsigned_compare, optimize_branches, mono_print_code,
12126         mini_select_instructions, remove_critical_edges): Likewise.
12127         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
12128         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
12129         mono_arch_output_basic_block, mono_arch_emit_prolog):
12130         Likewise.
12131         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
12132         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12133         mono_arch_output_basic_block): Likewise.
12134         (inst_list_prepend, insert_after_ins): Delete.
12135         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
12136         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
12137         instruction lists.
12138         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
12139         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
12140         mono_arch_emit_prolog): Likewise.
12141         * cfold.c (mono_constant_fold): Likewise.
12142         * liveness.c (visit_bb, mono_analyze_liveness,
12143         optimize_initlocals): Likewise.
12144         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
12145         * graph.c (mono_draw_code_cfg): Likewise.
12146         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
12147         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
12148         mono_ssa_cprop): Likewise.
12149         * abcremoval (get_relations_from_previous_bb, process_block):
12150         Likewise.
12151         * local-propagation (mono_cprop_invalidate_values,
12152         mono_local_cprop_bb): Likewise.
12153         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
12154         peephole_pass, mono_arch_output_basic_block,
12155         mono_arch_emit_prolog): Likewise.
12156         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
12157         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12158         mono_arch_emit_prolog): Likewise.
12159         (insert_after_ins): Delete.
12160         * aliasing.c (print_code_with_aliasing_information,
12161         mono_build_aliasing_information, mono_aliasing_deadce):
12162         Convert to new instruction lists.
12163         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
12164         peephole_pass, NEW_INS, mono_arch_lowering_pass,
12165         mono_arch_local_regalloc, mono_arch_output_basic_block):
12166         Likewise.
12167         (insert_after_ins): Delete.
12168         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
12169         peephole_pass, mono_arch_output_basic_block): Convert to
12170         new instruction lists.
12171         * mini-codegen (InstList, inst_list_prepend,
12172         insert_after_ins): Delete.
12173         (insert_before_ins, get_register_force_spilling,
12174         get_register_spilling, free_up_ireg, free_up_reg,
12175         create_copy_ins, create_spilled_store, alloc_int_reg,
12176         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
12177         to new instruction lists.
12178         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
12179         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12180         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
12181         (insert_after_ins): Delete.
12182         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
12183         mono_arch_local_regalloc, mono_arch_output_basic_block,
12184         mono_arch_call_opcode): Convert to new instruction lists.
12185         (insert_after_ins): Delete.
12186         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
12187         peephole_pass, mono_arch_output_basic_block,
12188         mono_arch_emit_prolog): Convert to new instruction lists.
12189
12190 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
12191
12192         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
12193
12194         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
12195         Fixes #353182.
12196
12197         * Makefile.am (version.h): Make this work with non-bash shells.
12198
12199 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
12200
12201         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
12202
12203 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
12204
12205         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
12206         the InitializeArray optimization.
12207
12208 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
12209
12210         * mini.c driver.c: Don't include os/gc_wrapper.h.
12211
12212 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
12213
12214         * mini.c (print_jit_stats): Print GC statistics if available.
12215
12216 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
12217
12218         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
12219
12220 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
12221
12222         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
12223
12224 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
12225
12226         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
12227         
12228         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
12229
12230         * driver.c (mono_main): Ditto.
12231
12232 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
12233
12234         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
12235
12236         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
12237         in the vtable can't be encoded.
12238         (compile_method): Ditto.
12239
12240 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
12241
12242         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
12243         defined.
12244
12245         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
12246         lmf->rbp.
12247
12248         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
12249         the top LMF entry belongs to the current method.
12250
12251         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
12252
12253 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
12254
12255         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
12256         
12257         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
12258
12259         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
12260
12261         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
12262
12263         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
12264
12265         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
12266         implementation.
12267
12268         * basic-float.cs: Add an ulong->double cast test.
12269
12270 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
12271
12272         * mini.c (mono_method_to_ir): Fix a warning.
12273
12274 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
12275
12276         * mini-ops.h: Add OP_SWITCH.
12277
12278         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
12279         CEE_SWITCH in back-end code, use OP_SWITCH instead.
12280
12281 2007-12-11  Geoff Norton  <gnorton@novell.com>
12282
12283         * mini-s390x.c: Minor change to the MAX() define to allow
12284         it to compile with other gcc versions.
12285
12286 2007-12-11  Geoff Norton  <gnorton@novell.com>
12287
12288         * cpu-s390x.md:
12289         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
12290
12291 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
12292
12293         exceptions-arm.c (mono_arch_get_restore_context): Restore
12294         the frame pointer.
12295
12296         exceptions-arm.c (throw_exception): Save the frame pointer.
12297         This is a partial fix for #323747. Only the client side is
12298         fixed.
12299
12300 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
12301
12302         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
12303         was using an unrelated variable to log the class which
12304         needed the cctor to be called. This was crashing on arm.
12305
12306 2007-12-09  Robert Jordan  <robertj@gmx.net>
12307
12308         * mini-x86.c (mono_arch_emit_epilog):
12309         Consider all kinds of 64-bit types. Fixes #323114.
12310
12311 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
12312
12313         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
12314
12315 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12316
12317         * mini-amd64.c (peephole_pass): Add a missing instruction check.
12318
12319 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
12320
12321         * mini.c: run type ctor before allocating an object, not only
12322         when running it's constructor method (fixes at least part of bug #342507).
12323
12324 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12325         
12326         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
12327         
12328         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
12329         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
12330         function.
12331
12332         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
12333         mono_generic_class_init_trampoline () the same as it is done with the other
12334         trampolines.
12335
12336         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
12337         aot-runtime.c aot-compiler.c: Implement AOT support.    
12338
12339 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12340
12341         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
12342         build for archs which don't have the vtable trampoline defined
12343         yet.
12344
12345 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12346
12347         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
12348
12349         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
12350
12351         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
12352
12353         * tramp-<ARCH>.c: Use the new helper function.
12354
12355 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12356
12357         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
12358         trampoline call, which takes a vtable argument.
12359
12360         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
12361         OP_TRAMPCALL_VTABLEs like other calls.
12362
12363         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
12364         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
12365         call.  Implemented a support function which fetches the vtable
12366         from a register set.
12367
12368         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
12369         Implemented a generic class init trampoline, using the
12370         OP_TRAMPCALL_VTABLE opcode.
12371
12372         * mini.c: Implemented static field access when sharing generic
12373         code.  This implies initing the class using the new
12374         OP_TRAMPCALL_VTABLE call.
12375
12376 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12377
12378         * mini.c: Don't compile methods with sharing enabled if their
12379         classes are disabled for sharing.
12380
12381 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
12382
12383         * inssel.brg: Add a missing sign extension to the GETCHR and array access
12384         opcodes. Fixes #346563.
12385
12386         * objects.cs: Add a new test.
12387
12388         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
12389
12390         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
12391         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
12392
12393 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
12394
12395         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
12396
12397 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
12398
12399         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
12400         code stream.
12401
12402 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
12403
12404         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
12405
12406         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
12407         optimization in the AOT case.
12408         
12409 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
12410
12411         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
12412         
12413         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
12414
12415         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
12416
12417         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
12418
12419         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
12420         is created by the inlined delegate ctor.
12421
12422         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
12423
12424         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
12425
12426 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
12427
12428         * cpu-x86.md: Fix the length of ckfinite.
12429
12430 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
12431
12432         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
12433         
12434         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
12435         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
12436
12437         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
12438
12439         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
12440         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
12441
12442 2007-11-28  Martin Baulig  <martin@ximian.com>
12443
12444         * mini-x86.c
12445         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
12446         after creating the trampoline.
12447
12448 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
12449
12450         * aot-runtime.c (load_aot_module): Check runtime version if needed.
12451
12452         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
12453         the same version.
12454
12455         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
12456         instead of the calling method to help AOT.
12457
12458         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
12459
12460 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
12461
12462         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
12463         is defined.
12464
12465 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
12466
12467         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
12468         
12469         * aot-compiler.c (compile_method): Correct check for generic method definitions.
12470         (encode_method_ref): No need to handle generic method definitions specially.
12471
12472         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
12473
12474         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
12475         decode_klass_info.
12476
12477         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
12478         encode_klass_info.
12479         (compile_method): Enable generic sharing.
12480
12481 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
12482
12483         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
12484         (mini_method_compile): Add preliminary support for AOTing shared generic code.
12485
12486         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
12487         generic code.
12488
12489         * mini-trampolines.c: Fix a warning.
12490
12491         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
12492         NEW_PCONST.
12493         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
12494         (generic_class_is_reference_type): Remove unused function.
12495
12496         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
12497         in the generic vtable trampoline case.
12498
12499         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
12500         
12501         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
12502         return an AOT method based on a vtable slot.
12503
12504         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
12505
12506         * mini.c (mini_get_vtable_trampoline): Export this.
12507
12508 2007-11-22  Martin Baulig  <martin@ximian.com>
12509
12510         * debug-debugger.h
12511         (MonoDebuggerInfo): Move `debugger_version' up.
12512
12513 2007-11-22  Martin Baulig  <martin@ximian.com>
12514
12515         * mini-amd64.c
12516         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
12517
12518         * mini-trampolines.c
12519         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
12520         after compiling the method.
12521
12522 2007-11-20  Martin Baulig  <martin@ximian.com>
12523
12524         * debug-mini.c
12525         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
12526         (mono_debugger_remove_breakpoint): Likewise.
12527         (mono_debugger_check_breakpoints): Likewise.
12528
12529         * debug-debugger.c: Implement the new breakpoint interface here.
12530
12531 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
12532
12533         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
12534         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
12535
12536         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
12537
12538 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
12539
12540         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
12541
12542         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
12543         mini.c.
12544
12545         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
12546         mini.c.
12547
12548         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
12549         returning a vtype in a register.
12550
12551         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
12552         here from the arch specific code.
12553
12554         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
12555         mini.c.
12556
12557         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
12558         (mono_arch_emit_prolog): Increment maximum prolog size.
12559
12560         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
12561         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
12562
12563         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
12564         MonoGenericSharingContext.
12565
12566         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
12567         MonoGenericSharingContext. Allocate memory from the cfg mempool.
12568
12569 2007-11-15  Mark Probst  <mark.probst@gmail.com>
12570
12571         * mini.c, mini.h, generic-sharing.c: Functions for producing code
12572         which extract fields out of the runtime generic context.  Full
12573         sharing of the NEWARR opcode.
12574
12575 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
12576
12577         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
12578         --enable-minimal=ssa.
12579
12580 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
12581
12582         * mini-trampolines.c (mono_delegate_trampoline): Update after 
12583         mono_marshal_get_delegate_invoke () signature change.
12584
12585 2007-11-13  Mark Probst  <mark.probst@gmail.com>
12586
12587         * mini.c: Removed the shared context in favor of the generic
12588         sharing context.  Allocate the MonoJitInfo structure with room for
12589         the generic sharing context if it's needed.
12590
12591         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
12592         domain-internals.h now.
12593
12594         * mini-x86.c: Pass the generic sharing context to get_call_info ().
12595
12596         * generic-sharing.c: Several changes for working without a shared
12597         context and instead operating on open types instead.
12598
12599 2007-11-12  David S. Miller  <davem@davemloft.net>
12600
12601        * inssel-sparc.brg: Fix double instruction emit.
12602
12603 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
12604
12605         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
12606         Get/Set/Address methods.
12607         
12608         * mini.c debug-debugger.c mini-trampolines.c: Update after 
12609         mono_marshal_get_delegate_invoke signature change.
12610
12611 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
12612
12613         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
12614         This can happens with dynamic methods. Fixes the other bug in #322722.
12615
12616 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
12617
12618         * tramp-arm.c (mono_arch_patch_callsite): Support patching
12619         BX call sequence.
12620
12621         * mini-arm.c (arm_patch): Implement patching of BX call
12622         sequence. Fixes one of the bugs in #322722.
12623
12624 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
12625
12626        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
12627        under Linux.  We only need to flush every 32-byte cache line.    
12628
12629 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
12630
12631         * mini.c:
12632         move_basic_block_to_end: Add branches when needed, eventually creating
12633         a new BB.
12634         optimize_branches: added a parameter that tells if it's ok to create
12635         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
12636         and avoid calling move_basic_block_to_end when it's not ok.
12637         Fixes bug 318677.
12638
12639 2007-11-07  Mark Probst  <mark.probst@gmail.com>
12640
12641         * mini.c: Abort inlining call to InitializeArray if something
12642         looks wrong.  Let the icall handle it, which now has proper safety
12643         checks.
12644
12645 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
12646
12647         * mini.c (mono_spill_call): add support for soft-float.
12648
12649         * mini.c (mono_method_to_ir): add support for soft-float
12650         to inlined functions that return float.
12651
12652         * mini.c (mono_method_to_ir): add support for soft-float
12653         to cee_stsfld opcode on float fields.
12654
12655 2007-11-05  Geoff Norton  <gnorton@novell.com>
12656
12657         * mini-x86.h: Fix the structure access for X86 Leopard.
12658
12659
12660 2007-11-05  Martin Baulig  <martin@ximian.com>
12661
12662         * mini-trampolines.c
12663         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
12664         after compiling the method to notify the debugger.
12665
12666 2007-11-05  Martin Baulig  <martin@ximian.com>
12667
12668         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
12669
12670 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
12671
12672         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
12673         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
12674
12675 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
12676
12677         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
12678         native-to-managed wrappers.
12679         
12680 2007-11-01  Geoff Norton  <gnorton@novell.com>
12681
12682         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
12683         members.
12684
12685 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
12686
12687         * mini.c, mini-x86.c: when getting back from unmanaged code
12688         to managed via a marshaled delegate we also need to set the
12689         right domain.
12690
12691 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
12692
12693         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
12694         for amd64.
12695
12696 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
12697
12698         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
12699         let the debugger or other external agents to tell the JIT when
12700         a sw breakpoint has been inserted in the code that the JIT needs
12701         to be able to inspect.
12702
12703 2007-10-31  Martin Baulig  <martin@ximian.com>
12704
12705         * debug-debugger.h
12706         (MonoDebuggerInfo): Remove `runtime_class_init'.
12707
12708 2007-10-30  Martin Baulig  <martin@ximian.com>
12709
12710         * debug-mini.h
12711         (mono_debugger_thread_created): Added `MonoThread *' argument.
12712         (mono_debugger_extended_notification): New public method.
12713         (mono_debugger_trampoline_compiled): New public method.
12714
12715         * debug-mini.c
12716         (MonoDebuggerThreadInfo): Added `thread' and
12717         `extended_notifications' fields.
12718
12719         * debug-debugger.c
12720         (debugger_executable_code_buffer): New static variable.
12721
12722         * debug-debugger.h
12723         (MonoDebuggerInfo): Added `executable_code_buffer',
12724         `executable_code_buffer_size', `breakpoint_info_area',
12725         `breakpoint_table' and `breakpoint_table_size'.
12726
12727 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
12728
12729         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
12730         that IP  either is an unused value or the vtable pointer. IMT 
12731         calls use vtable + offset now. Reduced by almost half the size
12732         of IMT entries.
12733
12734 2007-10-26  Jonathan Chambers <joncham@gmail.com>
12735
12736         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
12737         defines to access param registers. Replace long usage with
12738         gsize as sizeof(long) != sizeof(void*) on Win64.
12739
12740         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
12741         on Win64. Fix intrinsic, use _AddressOfReturnAddress
12742         instead of non-existant _GetAddressOfReturnAddress.
12743
12744         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
12745         param registers. Save/restore %rdi and %rsi in MonoLMF.
12746
12747         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
12748         param registers. Modify (throw_exception) signature to take 
12749         %rdi and %rsi on Win64. 
12750
12751         Code is contributed under MIT/X11 license.
12752
12753 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
12754
12755         * helpers.c: unlink debugging output files.
12756
12757 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
12758
12759         * mini.c: Move mono_create_ftnptr () to object.c.
12760
12761 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
12762
12763         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
12764         optional. This function can now be used to disassemble code generated
12765         outside the JIT such as trampolines and IMT thunks.
12766
12767         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
12768
12769         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
12770         vtable pointer from a ldr instruction.
12771
12772         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
12773         new IMT call sequence.
12774
12775         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
12776         call sequence for interface invocations.
12777
12778         * mini-arm.c (mono_arch_emit_imt_argument): added, required
12779         for imt support. This function is empty since IMT on ARM requires no
12780         special handling on the IR side.
12781
12782         * mini-arm.c (mono_arch_find_imt_method): added, required for
12783         imt support.
12784
12785         * mini-arm.c (mono_arch_find_this_argument): added, required
12786         for imt support.
12787
12788         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
12789         a ldr instruction to load a value stored in the code stream.
12790
12791         * mini-arm.c (mono_arch_build_imt_thunk):added, required
12792         for imt support.
12793
12794
12795 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
12796
12797         * mini.c (mini_init): Install the jump trampoline callback.
12798
12799 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12800
12801         * mini-trampolines.c: handle synchronized methods with the common
12802         vtable trampoline (bug #335601).
12803
12804 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
12805
12806         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
12807
12808         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
12809         64 bit platforms.
12810
12811         * mini-ia64.h mini-ia64.c: Add support for IMT.
12812
12813         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
12814         prolog. Fixes #331958.
12815
12816 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
12817
12818         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
12819
12820 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12821
12822         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
12823         trampoline.
12824
12825 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12826
12827         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
12828         trampoline.
12829
12830 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
12831
12832         * mini-x86.c, mini-x86.h: x86 support for the common vtable
12833         trampoline.
12834
12835 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
12836
12837         * mini-trampolines.c: changed the magic rampoline to understand
12838         the common vtable trampoline method: the method to invoke is
12839         determined by the vtable displacement of the call.
12840
12841 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12842
12843         * mini.c, mini.h: register the common vtable trampoline if the
12844         architecture supports it.
12845
12846 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12847
12848         * cpu-amd64.md: use the correct max length for tls_get.
12849
12850 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
12851
12852         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
12853         CEE_STELEM_ANY. Fixes #333696.
12854
12855 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
12856
12857         * exceptions-x86.c: provide more graceful handling of the case where
12858         we followed a bogus function pointer from managed code (bug #332866).
12859
12860 2007-10-11  Mark Probst  <mark.probst@gmail.com>
12861
12862         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
12863         replaces the generic_shared flag and will carry more information
12864         in the future.
12865
12866         * generic-sharing.c: Added mini_type_stack_size() which allows
12867         allows open types if given a generic sharing context.
12868         mini_get_basic_type_from_generic() takes a
12869         MonoGenericSharingContext* instead of a MonoCompile* now.
12870
12871         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
12872         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
12873         mini-sparc.c, mini-x86.c: Trivial changes required by the two
12874         changes above.  Just passing arguments through to the right
12875         places.
12876
12877 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
12878
12879         * mini-arm.c: unify the call emission to emit_code_seq().
12880
12881 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
12882
12883         * tramp-arm.c: reduced the trampoline size.
12884
12885 2007-10-10  Mark Probst  <mark.probst@gmail.com>
12886
12887         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
12888         variable handling out of arch-specific code.
12889
12890 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
12891
12892         * mini-arm.c: implemented fast delegate dispatch.
12893
12894 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
12895
12896         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
12897         that fp elimination is turned off if the space required by locals is too
12898         big. Fixes #331958.
12899
12900 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
12901
12902         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
12903         ARM to the new style trampoline.
12904
12905 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
12906
12907         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
12908
12909         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
12910
12911 2007-10-09  Martin Baulig  <martin@ximian.com>
12912
12913         * debug-debugger.h
12914         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
12915         `field_info_offset_offset'.     
12916
12917 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
12918
12919         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
12920         removed more internal usage of the r11 register and made it available
12921         to the register allocator.
12922
12923 2007-10-08  Mark Probst  <mark.probst@gmail.com>
12924
12925         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
12926         when sharing generics and treat type variables as references.
12927
12928 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
12929
12930         * mini-ppc.c: started removing the internal uses of register r11
12931         to eventually allow the register allocator to manage it as an
12932         additional available register.
12933
12934 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
12935
12936         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
12937
12938 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
12939
12940         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
12941         specific trampolines as they are not performance critical as a jump
12942         target (maybe align as before only for AOT code?). This saves about
12943         200 KB of native code on x86 for monodevelop startup.
12944
12945 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
12946
12947         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
12948         monodevelop startup.
12949
12950 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
12951
12952         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
12953
12954         * mini-sparc.h mini-sparc.c: Implement IMT support.
12955
12956         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
12957         its smaller and doesn't clobber sparc_g1.
12958
12959         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
12960
12961 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
12962
12963         * mini-ppc.c: optimized the size of the IMT thunks a bit.
12964
12965 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
12966
12967         * mini-ppc.c: implemented fast delegate invocation.
12968
12969 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
12970
12971         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
12972
12973 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
12974
12975         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
12976         code to the new style trampoline in preparation for IMT support.
12977
12978 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
12979
12980         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
12981         systems already. This also reduces the specific trampiline sizes and
12982         prepares for the use of r12 as the IMT identifier register.
12983
12984 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12985
12986         * mini-mips.h: endianess fix (simplified from a patch by
12987         Thomas Kunze <thommy@tabao.de>, bug #323737).
12988
12989 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
12990
12991         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
12992         to access ucontext fields and enable netbsd support
12993         (partially from Magnus Henoch <mange@freemail.hu>).
12994
12995 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12996
12997         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
12998         use the preprocessor from the CPP env var if it is set.
12999
13000 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
13001
13002         * mini-trampolines.c: fixed an assertion and moved it earlier in the
13003         code, before interface_offset gets used.
13004
13005 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
13006
13007         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
13008         mono_class_setup_vtable () before accessing klass->vtable.
13009
13010 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
13011
13012         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
13013         hackish.
13014
13015 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13016
13017         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
13018         IMT slots (this saves hundreds of KB of memory in programs like
13019         IronPython and Monodevelop).
13020
13021 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
13022
13023         * mini.c: print the delegate counter.
13024
13025 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
13026
13027         * mini-x86.c: make it easier to enable the debugging code for IMT
13028         slots.
13029
13030 2007-09-28  Martin Baulig  <martin@ximian.com>
13031
13032         * debug-debugger.h
13033         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
13034         `mono_method_klass_offset' and `mono_method_token_offset'.
13035
13036 2007-09-20  Mark Probst  <mark.probst@gmail.com>
13037
13038         * mini.c: First generics sharing implementation.  Can only share
13039         in very simple cases.  If sharing doesn't work it falls back to
13040         dedicated compilation.
13041
13042         * mini.h: Flag in MonoCompile to specify whether generic
13043         compilation is shared.  Flags enum for marking which generic inst
13044         of a context is used.  Prototypes for helper functions.
13045
13046         * generic-sharing.c: Helper functions for generic method sharing.
13047
13048         * optflags-def.h: Optimization flag (gshared) for enabling generic
13049         method sharing added.
13050
13051         * Makefile.am: generic-sharing.c added.
13052
13053 2007-09-19 Daniel Nauck <dna@mono-project.de>
13054
13055         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
13056
13057 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
13058         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
13059         fixes bug 325507.
13060
13061 2007-09-19  Martin Baulig  <martin@ximian.com>
13062
13063         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
13064         mono_debug_cleanup() is now part of mono_cleanup().
13065
13066 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
13067
13068         * driver.c (mono_main): Fix a warning.
13069
13070 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
13071
13072         * aot-compiler.c: Optimize various parts when processing large assemblies.
13073         Fixes ##325568.
13074
13075         * mini.c (mono_patch_info_hash): Improve hash function.
13076
13077 2007-09-14  Jonathan Chambers <joncham@gmail.com>
13078
13079         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
13080         
13081         Code is contributed under MIT/X11 license.
13082
13083 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
13084
13085         * mini.c (mini_init): Fix a leak.
13086
13087         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
13088
13089 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13090
13091         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
13092
13093 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
13094
13095         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
13096
13097 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
13098
13099         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
13100         variance tests.
13101
13102         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
13103
13104         * mini.c (handle_alloc): Enable managed allocators in AOT code.
13105
13106         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
13107
13108         * aot-runtime.c (decode_patch_info): Ditto.
13109
13110 2007-09-12  Jonathan Chambers <joncham@gmail.com>
13111
13112         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
13113         static case. Cache delegates in architecture specific code, 
13114         based on number of parameters.
13115         
13116         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
13117         in architecture specific code, based on number of parameters.
13118         
13119         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
13120         caching happen in architecture specific code now.
13121         
13122         Code is contributed under MIT/X11 license.
13123
13124 2007-09-12  Jonathan Chambers <joncham@gmail.com>
13125
13126         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
13127         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
13128         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
13129
13130         Code is contributed under MIT/X11 license.
13131
13132 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
13133         * mini.c: (mono_thread_abort) Fixed bug #82416.
13134
13135 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
13136
13137         * mini.: hook the new managed GC allocation feature into the JIT.
13138
13139 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
13140
13141         * mini.c: implementation for the new runtime tls opcode.
13142
13143 2007-09-11  Martin Baulig  <martin@ximian.com>
13144
13145         * debug-debugger.h
13146         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
13147         `mono_method_inflated_offset'.
13148
13149 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
13150
13151         * driver.c mini.h mini.c: Add a new devel command line option for injecting
13152         async exceptions into a method.
13153
13154         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
13155         purpose of testing whenever the unwinder works at every instruction.
13156
13157 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
13158
13159         * mini.c: check accessibility of method used in ldftn (fixes
13160         bug #82635).
13161
13162 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
13163
13164         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
13165
13166         * inssel.brg: Fix a warning.
13167
13168 2007-09-03  Martin Baulig  <martin@ximian.com>
13169
13170         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
13171         now takes the `main_method' as argument.
13172
13173 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
13174
13175         * cpu-sparc.md (endfilter): Add missing src1:i argument.
13176
13177 2007-08-30  Jonathan Chambers <joncham@gmail.com>
13178
13179         * driver.c: include the cil-coff.h header on Windows.
13180         
13181         Code is contributed under MIT/X11 license.
13182
13183 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
13184
13185         * mini.c, driver.c: don't include the cil-coff.h header.
13186
13187 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
13188
13189         * mini.c: flag places that needs fixes fo soft-float support.
13190
13191 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
13192
13193         * mini.h, inssel-float.brg: fix soft-float constant loads on big
13194         endian systems (partially from Dean Jenkins, bug #81924).
13195
13196 2007-08-28  Mark Probst  <mark.probst@gmail.com>
13197
13198         * mini.c (check_linkdemand): Remove embedded reference object in
13199         call to LinkDemandSecurityException.
13200         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
13201         with an IntPtr instead of a reference object.
13202
13203 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
13204
13205         * mini.c (handle_initobj): Handle alignment properly.
13206
13207         * inssel.brg (mini_emit_memset): Ditto. 
13208
13209         * inssel.brg (mini_emit_memcpy): Ditto. 
13210
13211         * inssel-sparc.brg: Ditto.              
13212
13213         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
13214
13215 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
13216
13217         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
13218         exceptions raised in unmanaged code. Fixes part of #82594.
13219
13220 2007-08-24  Mark Probst  <mark.probst@gmail.com>
13221
13222         * mini.c (mono_method_to_ir), declsec.c
13223         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
13224
13225 2007-08-22  Martin Baulig  <martin@ximian.com>
13226
13227         * debug-mini.h
13228         (MonoDebuggerThreadInfo): New typedef.
13229         (mono_debugger_thread_table): New global variable.
13230         (mono_debugger_thread_created): New public function.
13231         (mono_debugger_thread_cleanup): New public function.
13232
13233         * debug-debugger.h
13234         (MonoDebuggerInfo):
13235         - removed `get_current_thread' and `lookup_assembly'.
13236         - removed `data_table'.
13237         - added `thread_table'.
13238
13239         * mini.c
13240         (mono_thread_start_cb): Call mono_debugger_thread_created().
13241         (mono_thread_attach_cb): Likewise.
13242         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
13243         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
13244         initial domain.
13245
13246         * driver.c (mono_main): Move mono_debug_init() up, before calling
13247         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
13248
13249 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13250
13251         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
13252         together when passing several arguments of type double (gives a small
13253         speedup and saves a few bytes of generated code).
13254
13255 2007-08-20  Jb Evain  <jbevain@novell.com>
13256
13257         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
13258
13259 2007-08-20  Jb Evain  <jbevain@novell.com>
13260
13261         * mini.c (mono_method_to_ir): throw MethodAccessException
13262         and FieldAccessException instead of InvalidProgramException.
13263
13264 2007-08-20  Mark Probst  <mark.probst@gmail.com>
13265
13266         * mini.c: CoreCLR security checks.
13267
13268         * mini.h: Removed MonoSecurityMode (moved to
13269         metadata/security-manager.h) and mono_security_mode global var
13270         (replaced by set/get functions in security-manager.h).
13271
13272         * driver.c: Added "core-clr-test" security mode for testing.  Used
13273         set-function for setting security mode.
13274
13275 2007-08-17  Mark Probst  <mark.probst@gmail.com>
13276
13277         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
13278         the new jit_info_table.
13279
13280         * driver.c: Test code for the new jit_info_table (enabled by the
13281         define MONO_JIT_INFO_TABLE_TEST).
13282
13283 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
13284
13285         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
13286         detection of call <REG> instruction sequence. Fixes build on freebsd.
13287
13288 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
13289
13290         * mini-exceptions.c: Fix a warning.
13291
13292 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
13293
13294         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
13295         stack overflow handling code on amd64 too.
13296
13297         * mini-exceptions.c (mono_setup_altstack): Make this use 
13298         mono_thread_get_stack_bounds ().
13299
13300         * mini-x86.h: Disable sigaltstack on solaris x86.
13301
13302 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
13303
13304         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
13305
13306 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
13307
13308         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
13309
13310 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
13311
13312         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
13313
13314         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
13315
13316 2007-08-03  Neale Ferguson <neale@sinenomine.net>
13317
13318         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
13319         due to alignment.
13320
13321 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
13322
13323         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
13324         to be emitted (bug #82281).
13325
13326 2007-08-01  Martin Baulig  <martin@ximian.com>
13327
13328         Merged the `debugger-dublin' branch.
13329
13330         * debug-debugger.h (MonoDebuggerInfo):
13331         Removed the `old_*' compatibility entries.
13332         Added `debugger_version' and `data_table'.
13333         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
13334         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
13335
13336         * debug-mini.c
13337         (MiniDebugMethodBreakpointInfo): Add `address_list'.
13338         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
13339         instead of a `gconstpointer'.
13340         (mono_debugger_insert_method_breakpoint): Return a
13341         `MonoDebugMethodAddressList *'.
13342
13343 2007-06-28  Martin Baulig  <martin@ximian.com>
13344
13345         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
13346
13347 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
13348
13349         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
13350         __builtin_frame_address () since it is broken on older gcc versions.
13351
13352 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
13353
13354         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
13355         on the stack overflow handling and made the managed stack overflows
13356         catchable in most cases using soft guard pages.
13357         * exceptions-x86.c: added code to restore the protection in the soft
13358         guard pages at the end of exception handling.
13359
13360 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
13361
13362         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
13363
13364 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13365
13366         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
13367         exception handling.
13368
13369 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13370
13371         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
13372         signal handling support until it has been ported to the new mechanism.
13373         * mini.c: fixed stack overflow detection and use the new
13374         architecture code  to handle signals on the altstack.
13375
13376 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
13377
13378         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
13379         stack overflows on the alt stack.
13380
13381 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
13382
13383         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
13384         stack overflows on the alt stack.
13385
13386 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
13387
13388         * exceptions-ppc.c: cleanup preparing for altstack support.
13389
13390 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
13391
13392         * exceptions-arm.c: cleanup preparing for altstack support.
13393
13394 2007-07-27  Mark Probst  <mark.probst@gmail.com>
13395
13396         * mini.c (print_jit_stats): Output hazard pointer stats.
13397
13398 2007-07-26  Mark Probst  <mark.probst@gmail.com>
13399
13400         * driver.c, mini.c: Replaced security mode flags with a single
13401         enum variable.
13402
13403 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13404
13405         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
13406
13407 2007-07-25  Mark Probst  <mark.probst@gmail.com>
13408
13409         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
13410         (which doesn't do anything yet) for activating Core CLR
13411         (Silverlight) security.
13412
13413 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
13414
13415         * mini-codegen.c: work around a possible gcc bug on arm.
13416
13417 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
13418
13419         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
13420         message for platforms that don't support AOT compilation.
13421
13422 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
13423
13424         * mini.h, mini.c, driver.c: temporary smcs hack.
13425
13426 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
13427
13428         * mini-arm.h, mini-arm.c: arm EABI fixes.
13429
13430 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
13431
13432         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
13433         case.
13434
13435         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
13436         trampolines taking a method argument.
13437
13438         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
13439
13440         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
13441         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
13442
13443         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
13444         JIT compilation throws an exception. Fixes #82050.
13445
13446 2007-07-19  Mark Probst  <mark.probst@gmail.com>
13447
13448         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
13449         with the MONO_EXCEPTION_ defines.
13450
13451 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
13452
13453         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
13454         #82117.
13455         
13456         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
13457         the cause of an assertion.
13458
13459 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
13460
13461         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
13462         removed.
13463
13464 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
13465
13466         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
13467         assert. Should fix #82103.
13468
13469 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
13470
13471         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
13472         here too. Fixes #82095.
13473
13474         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
13475         addresses.
13476
13477         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
13478
13479         * mini-amd64.h: Enable IMT for amd64.
13480         
13481         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
13482
13483 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
13484
13485         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
13486
13487 2007-07-12  Mark Probst  <mark.probst@gmail.com>
13488
13489         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
13490         as soon as check_linkdemand sets an exception_type.
13491
13492 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
13493
13494         * mini-x86.c: fixed offsets for IMT call sequence.
13495         * mini-x86.h: enable IMT again.
13496
13497 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
13498
13499         * trace.c (mono_trace_enter_method): Decode MonoType too.
13500
13501         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
13502
13503         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
13504
13505         * mini-amd64.c: Add preliminary IMT implementation.
13506         
13507 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
13508
13509         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
13510         understand the new IMT-base interface invocation (thanks to
13511         Daniel Nauck for the report and the remote debugging session).
13512
13513 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
13514
13515         * mini-x86.c: size and speed optimizations for the IMT bsearch.
13516
13517 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
13518
13519         * Makefile.am (aotcheck): Make this actually use the AOTed code.
13520
13521 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
13522
13523         * mini-trampolines.c: implement AOT IMT support.
13524         * mini-x86.h: enable IMT support for wider testing.
13525
13526 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
13527
13528         * inssel.brg (emit_imt_argument): Add aot support here.
13529
13530         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
13531
13532 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
13533
13534         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
13535         of the IMT implementation, partially from massi, with my
13536         implementation of the bsearch sequence. Disabled by default until
13537         the AOT code is implemented.
13538
13539 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
13540
13541         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
13542
13543         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
13544
13545 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13546
13547         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
13548         arch-independent IMT JIT code from Massimiliano
13549         Mantione (massi@ximian.com) with small cleanups from me.
13550
13551 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
13552
13553         * Makefile.am: fix svn invocation to get the svn revision to be
13554         independent of the local language (build fix).
13555
13556 2007-07-09  Mark Probst  <mark.probst@gmail.com>
13557
13558         * mini.c (inline_method): Reset cfg->exception_type if the
13559         inlining is aborted.  Fixes: 82049.
13560
13561 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
13562
13563         * mini.c: remove assert from exception handling code when exception_ptr
13564         is not set.
13565
13566 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
13567
13568         * mini.c (mono_codegen): Add an assert.
13569
13570         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
13571         enter and leave code.
13572         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
13573
13574 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13575
13576         * mini-ppc.c: fixed memory corruption for localloc(0)
13577         (bug #81852).
13578
13579 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
13580         
13581         * mini.c: Fix warnings.
13582
13583 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
13584
13585         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
13586         to emit better double->int conversions.
13587
13588 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
13589
13590         * mini.c: the provided Min/Max optimizations are valid for unisgned
13591         ints.
13592
13593 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
13594
13595         * 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
13596
13597 2007-06-28  Miguel de Icaza  <miguel@novell.com>
13598
13599         * mini.c (mono_running_on_valgrind): Add support for reporting the
13600         method and  its boundaries to valgrind.
13601
13602 2007-06-28  Martin Baulig  <martin@ximian.com>
13603
13604         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
13605
13606 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
13607
13608         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
13609
13610         * generic.2.cs: Add new test case.
13611
13612 2007-06-25  Martin Baulig  <martin@ximian.com>
13613
13614         Merged the `debugger-dublin' branch.
13615
13616         * debug-mini.c
13617         (mono_debugger_insert_method_breakpoint): New public method.
13618         (mono_debugger_remove_method_breakpoint): Likewise.
13619         (mono_debugger_check_breakpoints): New static method.
13620         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
13621
13622         * debug-debugger.h (MonoDebuggerInfo):
13623         Renamed (to keep backward compatibility in the vtable):
13624         `insert_breakpoint' -> `old_insert_breakpoint'.
13625         `remove_breakpoint' -> `old_remove_breakpoint'.
13626         `create_string' -> `old_create_string'.
13627         `lookup_class' -> `old_lookup_class'.
13628         `lookup_type' -> removed; changed into a dummy field.
13629         `lookup_assembly' -> `old_lookup_assembly'.
13630         Added (same functionality, but different signature):
13631         `create_string', `lookup_class', `lookup_assembly'
13632         Added new:
13633         `get_method_addr_or_bpt', `remove_method_breakpoint',
13634         `runtime_class_init'.
13635
13636         * debug-debugger.c: Merged the `debugger-dublin' branch.
13637
13638 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
13639
13640         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
13641         well.
13642         (peephole_pass): Likewise.
13643
13644 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
13645
13646         * driver.c: hopefully make setaffinity work also for ancient
13647         versions of linux.
13648
13649 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
13650
13651         * driver.c : win32 build fix.
13652
13653 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
13654
13655         * driver.c: check for the MONO_NO_SMP env var and bind to a single
13656         processor if it is set.
13657
13658 2007-06-21  Martin Baulig  <martin@ximian.com>
13659
13660         * debug-mini.h: New file.
13661
13662         * debug-mini.c
13663         (mono_debugger_insert_breakpoint_full): Moved here from
13664         ../metadata/mono-debug-debugger.c.
13665         (mono_debugger_remove_breakpoint): Likewise.
13666         (mono_debugger_breakpoint_callback): Likewise.
13667
13668 2007-06-15  Raja R Harinath  <rharinath@novell.com>
13669
13670         * jit-icalls.c (mono_helper_compile_generic_method): Update to
13671         changes in MonoGenericClass.
13672
13673 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
13674
13675         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
13676
13677 2007-06-14  Raja R Harinath  <rharinath@novell.com>
13678
13679         * jit-icalls.c (mono_helper_compile_generic_method): Update to
13680         removal of MonoGenericMethod.
13681
13682 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13683
13684         * mini-exceptions.c: hooks for the exception events profiling API.
13685
13686 2007-06-14  Randolph Chung  <tausq@debian.org>
13687
13688         * Makefile.ma: Add hppa target.
13689         * mini-arch.h: Include mini-hppa.h
13690         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
13691         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
13692         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13693
13694 2007-06-14  Randolph Chung  <tausq@debian.org>
13695
13696         * inssel.brg: Add rules for "chained" compare-branch operations so that
13697         a single compare op can affect multiple branches.  Adjust cost for
13698         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
13699         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
13700         cost for some rules so that they can more easily be overridden by
13701         per-arch rules (with fixes from lupus).
13702         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13703
13704 2007-06-13  Randolph Chung  <tausq@debian.org>
13705
13706         * mini-ops.h: Reorder branch ops so that they match the order of the
13707         corresponding CEE_* ops.  The code expects them this way.
13708         Add new ops for HPPA target.
13709         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13710
13711 2007-06-13  Randolph Chung  <tausq@debian.org>
13712
13713         * mini-exceptions.c: Handle cases where the stack grows towards
13714         larger addresses.
13715         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13716
13717 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
13718
13719         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
13720         counter.
13721         * driver.c: explain where a non-matching corlib is found.
13722
13723 2007-06-13  Mark Probst  <mark.probst@gmail.com>
13724
13725         * mini.c (print_jit_stats): Output dynamic code allocation stats.
13726
13727 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
13728
13729         * mini-exceptions.c: Generate a method profile leave event during
13730         an exception to ensure that the profiler gets notified.
13731
13732 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
13733
13734         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
13735         branch.
13736
13737         * cpu-amd64.md: Add long_and/or/xor opcodes.
13738
13739 2007-06-06  Wade Berrier  <wberrier@novell.com>
13740
13741         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
13742         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
13743         length of instruction shr_imm (expected 8, got 10)
13744
13745 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
13746
13747         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
13748
13749 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13750
13751         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
13752         MonoInternalHashTable again (fixed bug in the internal hash table
13753         code).
13754
13755 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13756
13757         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
13758         Have to figure out what makes it crash the SWF regression.
13759
13760 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
13761
13762         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
13763
13764 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13765
13766         * mini.c: optimize out the type check when storing null in a
13767         reference array.
13768
13769 2007-06-04  Mark Probst  <mark.probst@gmail.com>
13770
13771         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
13772         MonoInternalHashTable.
13773
13774 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
13775
13776         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
13777         signed integer methods.
13778
13779 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
13780
13781         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
13782         permanently since the current approach doesn't work.
13783
13784 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
13785
13786         * inssel.brg (stmt): Only call delegate->invoke_impl if 
13787         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
13788
13789 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
13790
13791         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
13792         the sreg2==rdx case.
13793         
13794         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
13795         account if it contains a rex prefix.
13796         (peephole_pass): Handle OP_FMOVE as well.
13797
13798 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
13799
13800         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
13801         as it causes regressions.
13802
13803 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
13804
13805         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
13806         static case as well.
13807
13808         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
13809
13810         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
13811         (mono_arch_get_this_arg_from_call): Ditto.
13812
13813         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
13814
13815         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
13816         invoke_impl field.
13817
13818         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
13819         (mono_arch_get_this_arg_from_call): Ditto.
13820
13821         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
13822         
13823         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
13824         try to create optimized invoke code and use that for further invocations. 
13825         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
13826
13827         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
13828
13829 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
13830
13831         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
13832         sealed classes or methods.
13833         *devirtualization.cs: tests for the new optimization
13834
13835 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
13836
13837         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
13838         by the update_volatile () function.
13839
13840 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
13841
13842         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
13843         require it.
13844
13845         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
13846
13847 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
13848
13849         * mini.c: Add configure checks for header files.
13850         * mini-x86.c: Add configure checks for header files.
13851         * trace.c: Add configure checks for header files.
13852         * aot-runtime.c: Add configure checks for header files.
13853         * aot-compiler.c: Add configure checks for header files.
13854         * driver.c: Add configure checks for header files.
13855         * mini-codegen.c: Add configure checks for header files.
13856         
13857         Code is contributed under MIT/X11 license.
13858
13859 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
13860
13861         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
13862         icompare_imm -128 + op_iclt. Fixes #81703.
13863
13864 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
13865
13866         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
13867
13868 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
13869
13870         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
13871         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
13872         so that all isinst checks now use "interface_bitmap".
13873
13874 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
13875
13876         * cpu-amd64.md (jmp): Fix a warning.
13877
13878         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
13879
13880         * basic.cs: Add new regression test.
13881
13882         * basic.cs: Remove test which is now in basic-long.cs.
13883
13884         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
13885
13886         * basic-long.cs: Add new test.
13887         
13888 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
13889
13890         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
13891
13892 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
13893
13894         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
13895
13896         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
13897         places.
13898         
13899         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
13900         throwing code a bit.
13901
13902         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
13903         the exception throwing code a bit.
13904
13905         * mini-x86.c (get_call_info): Allocate result from a mempool.
13906
13907 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
13908
13909         * aot-compiler.c (find_typespec_for_class): Fix the assert.
13910
13911         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
13912
13913         * mini.h (MonoCompile): Add 'token_info_hash' field.
13914
13915         * mini.c: Save token->method associations during compilation so the AOT 
13916         compiler can use it.
13917         
13918         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
13919         which reference generic classes and methods.
13920
13921 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
13922
13923         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
13924
13925         * aot-compiler.c (compile_method): Fix a typo in a comment.
13926
13927         * aot-runtime.c (decode_cached_class_info): Skip generic types.
13928
13929         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
13930         everything generic.
13931
13932         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
13933
13934 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
13935
13936         * mini.h (MonoCompile): Add 'args' field.
13937
13938         * mini.c (mono_compile_create_vars): Store variables representing the arguments
13939         into cfg->args.
13940
13941         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
13942
13943 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
13944
13945         * mini.c (mono_compile_get_interface_var): Remove this unused function.
13946
13947         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
13948
13949         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
13950         opcodes for some opcodes.
13951
13952         * mini.h *.brg *.c: Use the new opcodes.
13953
13954 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
13955
13956         * mini.h: Bumped aot revision.
13957
13958         * inssel.brg: modified code generation of type checks for interfaces
13959         to use the new "MonoClass.interface_bitmap" instead of the old
13960         "MonoClass.interface_offsets".
13961
13962 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
13963
13964         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
13965
13966 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
13967
13968         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
13969         64 bit platforms.
13970
13971 2007-04-27  Neale Ferguson <neale@sinenomine.net>
13972
13973         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
13974
13975 2007-04-27  Wade Berrier  <wberrier@novell.com>
13976
13977         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
13978         mini.h) to fix build.
13979
13980 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
13981
13982         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
13983         
13984         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
13985         causes the corlib unit tests to fail.
13986
13987 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
13988
13989         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
13990
13991         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
13992
13993         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
13994         opcodes to the comparison relations.
13995
13996         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
13997         opcodes to their types.
13998         
13999         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
14000
14001         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
14002         it in cfg->arch.cinfo.
14003
14004         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
14005
14006         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
14007         cfg->cil_offset_to_bb.
14008
14009 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
14010
14011         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
14012         created becase of initlocals.
14013
14014 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
14015
14016         * mini-alpha.c cpu-alpha.md: More alpha port work from 
14017         Sergey Tikhonov <tsv@solvo.ru>.
14018
14019 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
14020
14021         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
14022
14023 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
14024
14025         * cpu-s390.md (break): Correct the length of break instruction.
14026
14027 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14028
14029         * mini.c: fix a couple of soft-float issues and comments.
14030
14031 2007-04-15  Miguel de Icaza  <miguel@novell.com>
14032
14033         * trace.c (is_filenamechar): - is also a filename char.
14034
14035 2007-04-15  Neale Ferguson <neale@sinenomine.net>
14036
14037         * mini-s390.c: Correct checking for enum type in return value processing.
14038
14039 2007-04-14  Raja R Harinath  <rharinath@novell.com>
14040
14041         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
14042         (version.h): Makefile is in the build directory.
14043
14044 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
14045
14046         * mini-amd64.h: fix for assertion failure on Solaris/amd64
14047
14048 2007-04-11  Martin Baulig  <martin@ximian.com>
14049
14050         * mini.c (can_access_member): Fix handling of generic classes;
14051         fixes #81259.
14052
14053 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
14054
14055         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
14056
14057 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
14058
14059         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
14060
14061 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
14062
14063         * mini-codegen.c: make sure the right spill amount is
14064         used for fp or integer registers (fixes the float_sub_spill() on ppc).
14065
14066 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
14067
14068         * mini-ppc.c: fixes for the fp_branch_nan test.
14069
14070 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
14071
14072         * basic.cs: Comment out new test which still fails on ia64.
14073
14074 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14075
14076         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
14077
14078 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14079
14080         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
14081
14082 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
14083
14084         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
14085         on 64 bit machines. Fixes part of #80738.
14086
14087         * basic.cs: Add regression test.
14088
14089 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
14090
14091         * inssel.brg basic.cs: Revert previous change to fix build.
14092
14093         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
14094         platforms.
14095         
14096         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
14097
14098         * basic.cs: Add new regression test.
14099
14100 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
14101
14102         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
14103         many arguments.
14104
14105 2007-03-16  Neale Ferguson <neale@sinenomine.net>
14106
14107         * cpu-s390x.md: Correct length of break instruction.
14108
14109 2007-03-16  Neale Ferguson <neale@sinenomine.net>
14110
14111         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
14112         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
14113
14114 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
14115
14116         * *.c: Begin WIN64 port.
14117         * mini.c:  Use correct register in profiler.
14118         * mini-amd64.c: No inline assembly on Win64.
14119         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
14120         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
14121         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
14122         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
14123         mono_arch_ip_from_context for Win64.
14124         
14125         Contributed under MIT/X11 license.
14126
14127 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
14128
14129         * exceptions-amd64.c (seh_handler): Ditto.
14130
14131         * exceptions-x86.c (seh_handler): Fix a memory leak.
14132
14133 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
14134
14135         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
14136         mini-s390x.c: fixed peephole optimizations to deal
14137         correctly with 1 and 2 byte reload avoidance.
14138
14139 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
14140
14141         * cpu-s390.md, cpu-s390x.md: update localloc length.
14142
14143 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
14144
14145         * cpu-g4.md: added missing descriptions.
14146
14147 2007-03-14  Miguel de Icaza  <miguel@novell.com>
14148
14149         *  Makefile.am: Add support so the tail tests are not executed on
14150         PowerPC as that is a known limitation of the PowerPC port.
14151
14152 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
14153
14154         * runmdesc.bat:  Move to msvc directory.
14155         
14156 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
14157
14158         * runmdesc.bat:  Run executable that was produced by the current
14159         target and sent via an argument.
14160         
14161 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
14162
14163         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
14164         #81102.
14165
14166         * generics.2.cs: Add regression test.
14167
14168 2007-03-09  Wade berrier  <wberrier@novell.com>
14169
14170         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
14171
14172 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
14173
14174         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
14175         AOT code depends on this.
14176
14177 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
14178
14179         * mini.c: more precise tracking of types in the eval stack
14180         (part of fix for bug #81044).
14181
14182 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
14183
14184         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
14185
14186         * aot-compiler.c (encode_patch): Remove an obsolete comment.
14187
14188 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
14189
14190         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
14191
14192         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
14193
14194 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
14195
14196         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
14197         a pointer on 64 bit systems. Fixes #80190.
14198
14199         * iltests.il: Add new regression test.
14200
14201 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14202
14203         * mini.c: inline a constant for Environment.IsRunningOnWindows.
14204
14205 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
14206
14207         * trace.c: Remove an erroneous alignemnt check when tracing.
14208           Fixes --trace on OSX86.
14209
14210 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
14211
14212         * mini-$(arch).h: initialize SP in context for all the archs.
14213
14214 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
14215
14216         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
14217         regressions in the thread tests.
14218
14219 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
14220
14221         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
14222         - fixed implementation of LOCALLOC opcode
14223         - implemented non-un compare for floats
14224         - code cleanup
14225         - implementation of FDIV and CKFINITE opcodes
14226         - fixes for latest mono updates
14227         - additional arch opcodes
14228
14229 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
14230
14231         * Makefile.am: simplify and merge rules for cross-compilation.
14232
14233 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
14234
14235         * local-propagation.c: Actually *apply* the fix for bug 80591...
14236
14237 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
14238
14239         * mini-exceptions.c: backuot part of the last change
14240         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
14241
14242 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
14243         * inssel.brg: Fix bug 59286.
14244
14245
14246 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
14247
14248         * mini-exceptions.c: patch from Zoltan to correctly check for
14249         stack boundaries (using the stack register, not the frame register),
14250         fixes bugs #80724, #79717.
14251
14252 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
14253
14254         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
14255         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
14256
14257         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
14258         presence of frame pointer elimination.
14259
14260 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
14261         
14262         * mini-x86.h: NetBSD UCONTEX_REG defines.
14263
14264 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
14265
14266         * inssel-amd64.brg: Fix amd64 build.
14267
14268 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
14269
14270         * mini.h: remove extern to workaround what looks likes gcc bug 26905
14271         on amd64.
14272
14273 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
14274
14275         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
14276         ends.
14277
14278         * mini-<ARCH>.c: Use mono_is_regsize_var ().
14279
14280 2007-01-30 Mark Mason <mason@broadcom.com>
14281
14282            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
14283            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
14284            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
14285            beginning support for CEE_JMP [not quite working yet]
14286            * tramp-mips.c: LMF handling now works
14287         
14288 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
14289
14290         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
14291
14292         * mini.h (NULLIFY_INS): New macro.
14293
14294 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14295
14296         * mini.c: statistical profiler fix for windows, patch
14297         from Tor Lillqvist (tml@novell.com).
14298
14299 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
14300         * local-propagation.c: Fix bug 80591.
14301
14302 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
14303
14304         * Makefile.am: put back the --export-dynamic option as with
14305         the previous gmodule flags (thanks to Robert Jordan).
14306
14307 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
14308
14309         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
14310
14311         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
14312         simplify and speed up the local register allocator. Also rename some fields
14313         like iassign->vassign.
14314         
14315         * regalloc.c: Remove some functions which are no longer used since their
14316         inlined version is in mini-codegen.c.
14317         
14318         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
14319
14320         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
14321
14322 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
14323
14324         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
14325         narrowing. Fixes #80622.
14326
14327         * iltests.il: Add new regresssion test. 
14328
14329 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
14330
14331         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
14332         debug-debugger.c, debug-debugger.h: warning fixes.
14333         * driver.c: updated copyright year and made it fit in one line.
14334
14335 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
14336
14337         * aot-runtime.c: updated to use mono-dl instead of gmodule.
14338
14339 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
14340
14341         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
14342
14343         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
14344
14345         * iltests.il: Add new test for bug #80507.
14346
14347 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14348
14349         * mini-arm.h: use soft-float also on vfp for now.
14350
14351 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
14352
14353         * mini.c: fix some more soft-float issues.
14354
14355 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
14356
14357         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
14358
14359 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
14360         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
14361         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
14362         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
14363
14364 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
14365
14366         * mini-arm.c: typo fix.
14367
14368 2007-01-23  Neale Ferguson <neale@sinenomine.net>
14369
14370         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
14371
14372 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
14373
14374         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
14375         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
14376
14377         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
14378
14379         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
14380
14381         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
14382         
14383         * inssel.brg: Fix a warning.
14384
14385         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
14386
14387         * abcremoval.c ssa.c ssapre.c: Update after this change.
14388         
14389         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
14390
14391         * dominators.c (df_set): Use mono_bitset_union_fast.    
14392
14393 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
14394
14395         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
14396         mini-codegen.c: reduce relocations and memory usage for the cpu
14397         description.
14398
14399 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
14400
14401         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
14402
14403         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
14404         to reduce their size.
14405
14406 2007-01-19 Mark Mason <mason@broadcom.com>
14407
14408         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
14409         * mini-mips.c: more configuration macros, support long conditional branches, additional
14410         asserts, fix epilog instrumentation.
14411         * mini-mips.h: use standard stack walk
14412         * cpu-mips.md: increase size of div, rem and conditional branches
14413         
14414 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
14415
14416         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
14417         to cpu spec data.
14418
14419 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
14420
14421         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
14422         (compile_method): Ditto.
14423
14424         * aot-runtime.c (decode_klass_info): Ditto.
14425
14426         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
14427         needed by the code generated by inssel.brg. Also fix a warning.
14428
14429 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
14430
14431         * mini.c: deal with enums that become genericinsts by
14432         being nested in a generic class (bug #79956).
14433
14434 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
14435
14436         * mini.c: match the generic definition to check for
14437         private access with generic types (bug #78431).
14438
14439 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
14440
14441         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
14442         to make life easier for people cross-compiling that insist on not
14443         using scratchbox.
14444
14445 2007-01-17 Mark Mason <mason@broadcom.com>
14446
14447         * inssel-long.brg: patch to deal with mips missing flags
14448         * inssel-long32-mips.brg: implement overflow checks
14449         * insset-mips.brg: implement overflow checks
14450         * mini-mips.h: implement conditional exception handling
14451         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
14452           Remove unused code, minor cleanups.
14453         * exceptions-mips.c: minor cleanups
14454         * mini-ops.h: add mips conditional exception ops
14455         * cpu-mips.md: add mips conditional exception ops
14456
14457         
14458 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
14459
14460         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
14461         to deal with mips missing of flags.
14462
14463 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
14464
14465         * exceptions-ppc.c: execute fault handlers.
14466
14467 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
14468
14469         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
14470
14471 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
14472
14473         * mini.c: handle also floating point values in initialize_array.
14474
14475 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
14476
14477         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
14478         array initialization and make it conditional on the intrins option.
14479
14480 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
14481
14482         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
14483         relocations and put the patch info names close to the enum definition.
14484
14485 2007-01-15 Mark Mason <mason@broadcom.com>
14486
14487         * basic.cs, exceptions.cs: break up large tests to increase debugability.
14488
14489 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14490
14491         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
14492
14493 2007-01-12  Raja R Harinath  <rharinath@novell.com>
14494
14495         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
14496
14497 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
14498
14499         * Makefile.am: distribute the mips sources.
14500
14501 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14502
14503         * mini-codegen.h: handle bug #80489 here, by excluding ecx
14504         directly.
14505
14506 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
14507
14508         * cpu-x86.md: back out for now as this triggers other regressions.
14509
14510 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
14511
14512         * cpu-x86.md: force src1 and dest regpair for long shift instructions
14513         to eax:edx, so ecx can't get allocated to them (bug #80489).
14514
14515 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
14516
14517         * mini.c, mini-exceptions.c: enabled running fault handlers
14518         (bug #80469).
14519
14520 2007-01-03  Miguel de Icaza  <miguel@novell.com>
14521
14522         * driver.c: If nothing fail, do not use the string "failed",
14523         because it makes it very annoying to view test result logs on the
14524         web. 
14525
14526 2006-12-30  Miguel de Icaza  <miguel@novell.com>
14527
14528         * debug-debugger.c (mono_debugger_main): Rename "main" to
14529         "main_method" to prevent a warning.
14530
14531         Remove a warning for unused field.
14532
14533 2006-12-28  Martin Baulig  <martin@ximian.com>
14534
14535         * debug-debugger.c
14536         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
14537
14538 2006-12-22  Martin Baulig  <martin@ximian.com>
14539
14540         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
14541         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
14542         seperate `.mdb_debug_info' section, so we can access it from the
14543         debugger even if the binary is stripped.
14544
14545         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
14546         from the `.mdb_debug_info' here to prevent the linker from
14547         removing that section.
14548
14549         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
14550         mdb-debug-info64.s.
14551
14552 2006-12-19  Robert Jordan  <robertj@gmx.net>
14553
14554         * mini-x86: enable the code to return small structures in
14555         registers for FreeBSD as well. Fixes bug #80278.
14556         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
14557
14558 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14559
14560         * mini-x86.c: align the stack when calling the profiler
14561         function instrumenting the prolog (on OSX).
14562
14563 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
14564
14565         * mini.c: emit a break opcode where Debugger.Break () is called.
14566
14567 2006-12-13  Miguel de Icaza  <miguel@novell.com>
14568
14569         * mini.c (mono_method_to_ir): Provide useful information on this
14570         assert, to prevent others from debugging like I did.
14571
14572 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14573
14574         * mini.c: enable code which was incorrectly commented
14575         (bug #80235).
14576
14577 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
14578
14579         * mini-x86.c: enable on OSX, too, the code to return small
14580         structures in registers.
14581
14582 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14583
14584         * mini-x86.c: remove the use of the dynamic code manager here, too.
14585
14586 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
14587
14588         * mini.h, debug-debugger.c, tramp-*.c: fixed 
14589         mono_debugger_create_notification_function() to use
14590         mono_global_codeman_reserve () instead of a dynamic code manager.
14591
14592 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
14593
14594         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
14595         ves_array_element_address() jit icall and use a generated
14596         managed method instead (which is about 4 times faster for a rank 3
14597         array access).
14598
14599 2006-11-29  Mark Mason  <mason@broadcom.com>
14600
14601         * basic-calls.cs: additional tests for passing
14602         structures as function arguments.
14603
14604 2006-11-29  Mark Mason  <mason@broadcom.com>
14605
14606         * mini-mips.h: disable custom exception handling
14607         * mini-mips.c: throw/rethrow should use jalr to call
14608         exception stubs.  Fixed bug with passing structures
14609         by value. More support for tracing floating point
14610         functions.
14611
14612 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14613
14614         * mini.c: fixed typo in the soft-float ldind.r4 handling
14615         (bug #80086).
14616
14617 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
14618
14619         * mini.c, mini.h, driver.c: added --runtime command line
14620         option to select a different runtime than the autodetected one.
14621         * jit.h: added API for embedders to initialize with a specific
14622         runtime version.
14623
14624 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
14625
14626         * mini.c: handle also boxing of r4 values (bug #80024).
14627
14628 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14629
14630         * mini-ppc.c: force indirect calls until we reserve
14631         enough address space for all the generated code.
14632
14633 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
14634
14635         * exceptions-arm.c: workaround bugs in the libc definition
14636         of struct ucontext.
14637
14638 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14639
14640         * inssel.brg: fixes from me and Mark Mason.
14641
14642 2006-11-23  Dick Porter  <dick@ximian.com>
14643
14644         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
14645         semaphore display now we've fixed the initial value
14646
14647 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14648
14649         * inssel.brg: partially revert the last change to fix the build.
14650
14651 2006-11-21  Mark Mason  <mason@broadcom.com>
14652
14653         * inssel.brg: Add and use compare-and-branch macros to support
14654         architectures that do not have condition code registers (ie. MIPS).
14655         * *-mips.{c,brg,md}: Fix copyright statements
14656
14657 2006-11-20  Mark Mason  <mason@broadcom.com>
14658
14659         * Makefile.am: remove mini-codegen.c from list of MIPS sources
14660         * mini.c: Allow GET_CONTEXT to be specified by the arch port
14661         * mini.h: Added declaration for mono_print_ins()
14662         * mini-codegen.c: added ins_spec initializer for MIPS
14663         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
14664         vreg to be virtual and hreg to be non-virtual.
14665         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
14666         is not yet working/implemented correctly.
14667         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
14668         non-static, fixup calls to print_ins() from other parts in the file.
14669
14670 2006-11-20  Mark Mason  <mason@broadcom.com>
14671
14672         * basic-calls.cs: added tests for passing structures as arguments
14673         to calls.
14674
14675 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14676
14677         * inssel-long32.brg: optimize signed division by power of two.
14678
14679 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
14680
14681         * mini-arm.c: added support for interworking with thumb code
14682         (mono must be still be built using the ARM instruction encoding).
14683
14684 2006-11-19  Miguel de Icaza  <miguel@novell.com>
14685
14686         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
14687         verifier has different rules for it.   Fixes a few verifier issues
14688         in the test suite.
14689
14690         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
14691         at the end, so people know what happened.
14692
14693 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
14694
14695         * brach-opts.c: in optimize_exception_target() make sure we
14696         are in a catch clause (fixes bug #79871).
14697
14698 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14699
14700         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
14701         more soft-float support fixes.
14702
14703 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
14704
14705         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
14706         that are passed half on the stack and half in registers.
14707
14708 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
14709
14710         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
14711         more mips integration work from Mark E Mason 
14712         <mark.e.mason@broadcom.com>.
14713
14714 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
14715
14716         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
14717         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
14718         tramp-mips.c: added sources for the mips port, not
14719         integrated in the build yet. Contributed by
14720         Mark E Mason <mark.e.mason@broadcom.com>.
14721
14722 2006-11-14  Neale Ferguson <neale@sinenomine.net>
14723
14724         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
14725
14726 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14727
14728         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
14729         put the soft-float rules in its own file since it seems to
14730         break s390 compilation.
14731
14732 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14733
14734         * mini-arm.c: fixed wrnings.
14735
14736 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
14737
14738         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
14739         inssel-arm.brg: ARM support for soft-float.
14740
14741 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
14742
14743         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
14744         loads and stores of 32 bit fp values.
14745
14746 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
14747
14748         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
14749
14750         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
14751         works. Fixes #79852 and #79463.
14752
14753 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14754
14755         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
14756         more soft-float support WIP and fixes.
14757
14758 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
14759
14760         * mini-arm.c: some VFP updates.
14761
14762 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
14763
14764         * mini-exceptions.c: 0 is a valid local var offset in some
14765         architectures, don't assert (bug #78508).
14766
14767 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
14768
14769         * exceptions-arm.c: fixed off by one error in stack walk code.
14770
14771 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
14772
14773         * mini.h, mini.c: more precise tracking of type load exceptions.
14774
14775 2006-11-03  Robert Jordan  <robertj@gmx.net>
14776
14777         * Makefile.am: [WIN32] Add monow.exe target.
14778         * driver.c: [WIN32] Don't detach the console when debugging.
14779         Fixes bug #79797.
14780         
14781 2006-10-30  Miguel de Icaza  <miguel@novell.com>
14782
14783         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
14784
14785 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
14786
14787         * aot-compiler.c (emit_method_info): Add a case missed earlier.
14788
14789         * driver.c (mini_regression): Fix --regression with AOT.
14790
14791         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
14792
14793 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
14794
14795         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
14796
14797         * mini-sparc.h: Don't use sigaction on sparc/linux.
14798
14799         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
14800
14801         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
14802
14803         * mini-exceptions.c: Add proper include files for getpid ().
14804
14805 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
14806
14807         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
14808         address instead of a MonoJitInfo* to avoid decoding the exception info for the
14809         method.
14810
14811         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
14812         name cache to reduce its size.
14813
14814         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
14815
14816 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
14817
14818         * mini-x86.c: Save/restore the current LMF structure more efficiently using
14819         the mono_lmf TLS variable.
14820
14821         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
14822         trampoline lmf frames.  
14823
14824         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
14825
14826 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
14827
14828         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
14829         the mono_lmf TLS variable.
14830
14831         * mini-exceptions.c: Access the LMF structure through accessors.
14832
14833         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
14834         variable instead of in jit_tls->lmf.
14835
14836         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
14837         
14838         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
14839         trampoline lmf frames.
14840
14841         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
14842
14843 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
14844
14845        * mini.c trace.c mini-x86.c: Revert these too.
14846         
14847        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
14848        signature change.
14849
14850 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
14851
14852         * genmdesc.c: removed now dead code.
14853
14854 2006-10-09  Robert Jordan <robertj@gmx.net>
14855
14856         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
14857
14858 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
14859
14860         * mini.h: do not leave gaps in the opcode values.
14861
14862 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
14863
14864         * jit-icalls.h: flag functions as internal here, too.
14865
14866 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
14867
14868         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
14869         functions with the internal attribute.
14870
14871 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
14872
14873         * aot-compiler.c: fclose the file descriptor in the profile read loop.
14874
14875 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
14876
14877         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
14878         for soft-float.
14879
14880 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
14881
14882         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
14883         tail calls as on other platforms.
14884
14885         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
14886
14887         * iltests.il: Add a few tailcall tests.
14888
14889 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
14890
14891         * driver.c: fix loop for old compilers (bug #79521).
14892
14893 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
14894
14895         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
14896
14897         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
14898
14899         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
14900         metadata without any code.
14901
14902         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
14903         more precise debugging information using gdb.
14904
14905 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
14906
14907         * inssel-ia64.brg: Make the helper methods static.
14908
14909 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
14910
14911         * inssel-x86.brg: make the helper methods static.
14912
14913 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
14914
14915         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
14916
14917 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
14918
14919         * mini.c: updates for monoburg changes.
14920         * inssel.brg: make a few helper functions static as they should.
14921
14922 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
14923
14924         * Makefile.am: Move mini-codegen.c to common_sources.
14925
14926 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
14927
14928         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
14929         instructions.
14930         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
14931         mini-ppc.h: port to use the common local register allocator.
14932
14933 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14934
14935         * mini.h: Remove the comment too then.
14936
14937 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
14938
14939         * mini.h: put back backend.data which is to be used shortly and
14940         doesn't increase the size of MonoInst. If any 64 bit arch aligned
14941         pointers on 4 byte boundaries it'd have much bigger issues running
14942         and you can ifdef it out anyway.
14943
14944 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14945
14946         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
14947         MonoInst size by 4 bytes on 64 bit machines.
14948
14949 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
14950
14951         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
14952         replacement with more meaningful field names. Arch maintainers, please
14953         check the assigned names are good enough for your arch.
14954
14955 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14956
14957         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
14958         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
14959
14960 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
14961
14962         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
14963         relocations and memory requirements, put the optimization flags
14964         definitions in their own file.
14965
14966 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
14967
14968         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
14969
14970         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
14971
14972 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
14973
14974         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
14975
14976 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
14977
14978         * inssel.brg: use the correct function to get the size of an item
14979         in an array, given an element class.
14980         * aot-compiler.c: do not access class->class_size directly.
14981
14982 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
14983
14984         * mini.h, debug-mini.c: added a debugging function to print
14985         info about local variables and arguments in a jitted method.
14986
14987 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
14988
14989         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
14990
14991         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
14992
14993 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
14994
14995         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
14996         inner and outer loops when passing vtypes.
14997
14998 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
14999
15000         * mini-ppc.c: take into account the cpu errata for cache flushing
15001         which caused some random errors (bug #79381).
15002
15003 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
15004
15005         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
15006         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
15007
15008 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
15009
15010         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
15011         loaded.
15012
15013         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
15014         freebsd ports tree.
15015
15016         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
15017         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
15018
15019         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
15020         displacement.
15021
15022 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
15023
15024         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
15025
15026 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
15027
15028         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
15029         macro does not have to be changed during debugging.
15030
15031         * 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>.
15032
15033         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
15034
15035         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
15036         
15037         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
15038         MONO_ARCH_NO_EMULATE_MUL is defined.
15039
15040         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
15041
15042         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
15043
15044         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
15045
15046         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
15047         
15048 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
15049
15050         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
15051         stuff to mini-exceptions.c where it is used.
15052
15053         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
15054         setup code, the real one is in mini-exceptions.c.
15055
15056         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
15057         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
15058         some changes from the freebsd ports tree.
15059
15060         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
15061         constants.
15062         
15063         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
15064
15065 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
15066
15067         * mini.c: on Linux, check for /proc to be mounted
15068         (bug# 79351, novell bug#201204).
15069
15070 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
15071
15072         * mini.c: handle cases where pthread_attr_getstack() behaves
15073         incorrectly (bug #78096).
15074
15075 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
15076
15077         * mini-arm.c: support larger stack frames (bug #79272).
15078
15079 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
15080
15081         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
15082
15083         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
15084         tokens.
15085
15086         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
15087         mono_class_from_name () to find a class from its name.
15088
15089         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
15090
15091 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
15092
15093         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
15094
15095 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
15096
15097         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
15098
15099 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
15100
15101         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
15102         callinfo->trampoline.
15103
15104         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
15105         fixes #79271.
15106         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
15107         future.
15108
15109 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
15110
15111         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
15112
15113 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
15114
15115         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
15116         stats.method_trampolines, it is already done by the generic trampoline code.
15117
15118         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
15119         
15120 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
15121
15122         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
15123
15124         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
15125
15126         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
15127
15128         * mini.c (print_jit_stats): Print mscorlib mempool size too.
15129         
15130         * mini.c (print_jit_stats): Print new stats.
15131
15132         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
15133
15134 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
15135
15136         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
15137         Address on two dimensional arrays. Fixes #78729.
15138
15139         * mini.h (MonoCompile): Add a 'skip_visibility' field.
15140
15141         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
15142         a method.
15143
15144         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
15145
15146         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
15147         #79130.
15148         
15149         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
15150         a race condition.
15151         (mini_get_ldelema_ins): Ditto.
15152
15153 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
15154
15155         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
15156         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
15157         Fixes #79213.
15158
15159 2006-08-29 Neale Ferguson <neale@sinenomine.net>
15160
15161         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
15162         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
15163
15164         * exceptions-s390x.c: Cosmetic change.
15165
15166         * tramp-s390.c: Fix warning.
15167
15168         * cpu-s390.md: Correct length of mul_imm.
15169
15170 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
15171
15172         * aot-compiler.c: added binary writer with ELF backend
15173         implementation (only on Linux/x86 for now).
15174
15175 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
15176
15177         * Makefile.am: Don't run net 2.0 AOT tests.
15178
15179         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
15180         (mono_compile_assembly): Skip net 2.0 assemblies as well.
15181
15182         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
15183
15184 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
15185
15186         * aot-compiler.c: simplified and refactored the asm-writing code
15187         to allow different backends.
15188
15189 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
15190
15191         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
15192
15193         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
15194         little. Share patches of type TYPE_FROM_HANDLE as well.
15195
15196         * mini.c (mono_patch_info_equal): New helper function.
15197         (mono_patch_info_hash): Ditto.
15198
15199         * aot-compiler.c (emit_method_code): Fix s390 build.
15200
15201         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
15202         is not handled because it is stored as a flag and not as a type ctor. Fixes
15203         #79016.
15204
15205 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
15206
15207         * aot-compiler.c: Fix computation of GOT slot statistics.
15208         
15209         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
15210         Also remove support for not PIC AOT.
15211
15212         * mini.h: Bump AOT file format version.
15213
15214         * objects.cs: Add a test for #78990.
15215
15216         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
15217         (peter.dettman@iinet.net.au). Fixes #79087.
15218
15219         * basic-long.cs: Add a test for the above.
15220
15221 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
15222
15223         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
15224         
15225         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
15226         code somewhat.
15227
15228 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
15229
15230         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
15231         exceptions.
15232
15233 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
15234
15235         * mini.c: Don't verify COM proxy invoke calls
15236         
15237
15238 2006-08-10  Dick Porter  <dick@ximian.com>
15239
15240         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
15241         which process is holding semaphores locked.
15242
15243 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
15244
15245         * mini-ia64.c mini-amd64.c: Fix #79027.
15246
15247         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
15248
15249         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
15250
15251         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
15252         implicit arguments in a vararg call. Fixes #79027.
15253
15254 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
15255
15256         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
15257         (mono_get_array_new_va_signature): Ditto.
15258
15259 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
15260
15261         * aot-runtime.c: Call init_plt lazily.
15262
15263         * inssel-long.brg: Fix unsigned long->int conversion.
15264
15265         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
15266
15267         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
15268         that most data is now in the .rss/.data section.
15269
15270 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
15271
15272         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
15273
15274         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
15275
15276         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
15277
15278         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
15279
15280         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
15281         virtual call. Fixes #79010.
15282
15283         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
15284         and use the result as the this argument in the real call.
15285
15286         * generics.2.cs: Add a new test for #79010.
15287         
15288 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
15289
15290         * mini-x86.c: Fix a warning.
15291
15292         * aot-compiler.c: Add a bunch of statistics.
15293
15294         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
15295
15296 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
15297
15298         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
15299
15300 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
15301
15302         * 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>.
15303
15304 2006-07-13  Miguel de Icaza  <miguel@novell.com>
15305
15306         * mini.c (mono_method_to_ir): Obtain the original method in the
15307         CIL stream and use this to perform validation.
15308
15309         Fixed: #78816
15310
15311 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
15312
15313         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
15314         (mono_arch_call_opcode): Ditto.
15315
15316         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
15317         #78826.
15318
15319         * mini.c (mono_patch_info_dup_mp): New helper function.
15320         
15321         * aot-compiler.c (compile_method): Fix some of the memory allocated during
15322         compilation. Fixes #78827.
15323
15324 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
15325
15326         * declsec.c: Use original security informations for
15327           MONO_WRAPPER_MANAGED_TO_MANAGED.
15328
15329 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
15330
15331         * mini.c: Allow Com Interop methods/classes and
15332         don't verify COM wrapper calls
15333         
15334
15335 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
15336
15337         * inssel-long32.brg: Fix long->i4 checked conversion.
15338
15339         * exceptions.cs: Add a test for the above.
15340
15341 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
15342
15343         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
15344
15345         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
15346         leaks.
15347
15348         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
15349         #78775.
15350
15351 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
15352
15353         * mini.c: Fix solaris/x86 exception handling.
15354
15355         * Makefile.am: Get rid of $(ICU_LIBS).
15356
15357 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
15358
15359         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
15360         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
15361         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
15362
15363         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
15364
15365         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
15366         this function causes a SIGSEGV.
15367
15368 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
15369
15370         * mini.c: Remove unused solaris/x86 includes.
15371
15372 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
15373
15374         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
15375
15376 2006-06-20  Jb Evain  <jbevain@gmail.com>
15377
15378         * cpu-g4.md: fix max length of start_handler instruction.
15379
15380 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
15381         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
15382
15383 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
15384         * ssa.c: Fixed bug 78653 for SSA based deadce.
15385         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
15386         MonoInst.flags, used in SSA based deadce.
15387         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
15388         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
15389
15390 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
15391
15392         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
15393         it can end up using non executable memory on ppc64 systems
15394         running ppc32 userspace (fix from Johannes Berg).
15395
15396 2006-06-14  Dick Porter  <dick@ximian.com>
15397
15398         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
15399         4.1.1
15400
15401 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
15402         * mini.c: Made so that inline is locally disabled if it would
15403         trigger a .cctor, because too many apps depend on this behavior
15404         (which seems to be also the one of the MS CLR).
15405
15406 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
15407
15408         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
15409         No idea why this worked before.
15410
15411         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
15412         which branch to outer exception clauses since they could skip the
15413         inner finally clauses. Fixes #78633.
15414
15415         * exceptions.cs: Add a test for the above.
15416
15417         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
15418         Fixes #78629.
15419
15420         * iltests.il: Add a test for the above.
15421
15422 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
15423
15424         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
15425         after the end of a try bblock, to prevent asserts in mini_method_compile ().
15426
15427         * iltests.il: Add a test for the above.
15428
15429 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
15430
15431         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
15432         
15433         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
15434         methods as instrinsics.
15435
15436 2006-06-09  Wade Berrier <wberrier@novell.com>
15437
15438         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
15439         (simple-cee-ops.h ssapre-mini-ops.h)
15440
15441 2006-06-09  Neale Ferguson <neale@sinenomine.net>
15442
15443         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
15444         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
15445         instruction).
15446         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
15447         * cpu-s390x.md: Fix max. length values for a couple of instructions.
15448
15449 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
15450
15451         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
15452
15453 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
15454
15455         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
15456         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
15457         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
15458         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
15459         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
15460         of opcodes, so that bug 78549 should not happen again.
15461         * ssapre.c: Updated to use the renamed files.
15462
15463 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
15464
15465         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
15466         in OP_ATOMIC_EXCHANGE_I4.
15467
15468 2006-06-07  Wade Berrier <wberrier@novell.com>
15469
15470         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
15471         in mono_debugger_create_notification_function)
15472
15473 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
15474
15475         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
15476         
15477         * mini.c (type_from_stack_type): Disable some changes which do not
15478         seem to work.
15479
15480         * driver.c: Reenable opts.
15481
15482         * mini.h (MonoStackSlot): New structure to keep track of the verification state
15483         of the evaluation stack.
15484         
15485         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
15486         evaluation stack trace at entry to the bblock.
15487
15488         * mini.c (merge_stacks): New function to perform verification of stack merges.
15489         Turned off by default.
15490
15491         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
15492         STACK_MP.
15493         
15494 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
15495
15496         * local-propagation.c: Fixed bug 78549.
15497
15498 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
15499
15500         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
15501
15502 2006-06-02  Miguel de Icaza  <miguel@novell.com>
15503
15504         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
15505         tramp-arm.c, tramp-ia64.c
15506         (mono_debugger_create_notification_function): Update signature to
15507         new signature and use new protocol for creating the notification
15508         function.  
15509
15510         Should fix the build.
15511
15512 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
15513
15514         * exceptions-ppc.c (mono_jit_walk_stack)
15515         (ves_icall_get_frame_info): Fix the build
15516
15517 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
15518
15519         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
15520
15521 2006-05-31  Raja R Harinath  <rharinath@novell.com>
15522
15523         * il2tests.2.il: New file for generics CIL tests.  Add test for
15524         #78019.
15525         * Makefile.am: Update.
15526
15527         Fix #78019
15528         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
15529         to nullable types.
15530
15531 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
15532
15533         * aliasing.c: Fixed bug 78311.
15534
15535 2006-05-29  Martin Baulig  <martin@ximian.com>
15536
15537         * mini-exceptions.c (mono_find_jit_info): When computing the
15538         native offset, check whether we're actually inside the method's
15539         code; call mono_debug_print_stack_frame() to format the frame.
15540         (ves_icall_System_Exception_get_trace): Call
15541         mono_debug_print_stack_frame() to format the stack frame.
15542         (ves_icall_get_trace): Update to the new debugging API.
15543         (mono_jit_walk_stack_from_ctx): Likewise.
15544         (ves_icall_get_frame_info): Likewise.
15545
15546         * mini.c (get_method_from_ip): Use the new debugging API.
15547         (mono_print_method_from_ip): Likewise.
15548
15549         * exceptions-ppc.c
15550         (mono_jit_walk_stack): Use the new debugging API.
15551         (ves_icall_get_frame_info): Likewise.   
15552
15553 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
15554
15555         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
15556
15557 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
15558
15559         * mini.c: Added "limitator" to inline for debugging.
15560
15561 2006-05-24  Martin Baulig  <martin@ximian.com>
15562
15563         * debug-debugger.c (mono_debugger_init): Create a private,
15564         malloc()-based code manager for the notification function and
15565         intentionally leak it on exit.  This fixes the crash-on-exit race
15566         condition.
15567
15568         * tramp-amd64.c
15569         (mono_debugger_create_notification_function): Added
15570         `MonoCodeManager *' argument.
15571
15572         * tramp-x86.c
15573         (mono_debugger_create_notification_function): Added
15574         `MonoCodeManager *' argument.
15575
15576 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
15577
15578         * aliasing.c: Fixed 64 bit issue.
15579         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
15580         default since all known bugs are fixed (one more time!).
15581
15582 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
15583
15584         * mini.c: write barrier support.
15585
15586 2006-05-23  Martin Baulig  <martin@ximian.com>
15587
15588         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
15589         check at the top of the file.
15590
15591 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
15592
15593         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
15594         reverting changes without reason and without changelog entries.
15595
15596 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
15597
15598         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
15599         to a few opcodes. Fixes #78439.
15600
15601         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
15602         consistency with other archs.
15603
15604         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
15605
15606 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
15607
15608         * debug-debugger.c: fix the build.
15609
15610 2006-05-17  Martin Baulig  <martin@ximian.com>
15611
15612         * debug-debugger.c
15613         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
15614         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
15615         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
15616         (debugger_attach): Call GC_mono_debugger_add_all_threads().
15617
15618 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
15619
15620         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
15621
15622 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
15623
15624         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
15625         MONO_TYPE_GENERICINST.
15626         
15627         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
15628         MONO_TYPE_GENERICINST.
15629
15630 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
15631
15632         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
15633         #78325.
15634
15635 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
15636
15637         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
15638         mempool.
15639         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
15640
15641 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
15642
15643         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
15644         mono_trace_cleanup ().
15645
15646         * iltests.il: Fix problem with the newly added test.
15647
15648         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
15649         due to register constraints, free up the previous hreg. Fixes #78314.
15650
15651         * iltests.il: Add new test for #78314.  
15652
15653         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
15654         Interlocked.Add. Fixes #78312.
15655
15656         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
15657         
15658 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
15659
15660         * inssel.brg (mini_emit_virtual_call): Fix a warning.
15661
15662 2006-05-05  Martin Baulig  <martin@ximian.com>
15663
15664         * debug-mini.c (mono_debug_open_block): New method.
15665
15666         * mini-amd64.c
15667         (mono_arch_output_basic_block): Call mono_debug_open_block() at
15668         the beginning of each basic block.
15669
15670         * mini-x86.c
15671         (mono_arch_output_basic_block): Call mono_debug_open_block() at
15672         the beginning of each basic block.
15673
15674 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
15675
15676         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
15677         default until I understand why they break the build on amd64.
15678
15679 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
15680
15681         * mini.c (mini_cleanup): Call mono_cleanup ().
15682
15683         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
15684         errors.
15685
15686 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
15687
15688         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
15689         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
15690         default since all known bugs are fixed, and I cannot reproduce bug
15691         77944... I'm asking Matt Hargett to test again after this commit.
15692
15693 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
15694
15695         * mini-codegen.c: Fixed typo that thrashed inline.
15696
15697 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
15698
15699         * dominators.c (compute_dominators): Avoid using a worklist since
15700         it is not correct in some cases. Instead, iterate over all bblocks as
15701         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
15702
15703 2006-04-28  Miguel de Icaza  <miguel@novell.com>
15704
15705         * mini.c (mono_jit_compile_method_inner): Use
15706         mono_prepare_exception_from_error that resets the value
15707         internally.
15708
15709 2006-04-27  Miguel de Icaza  <miguel@novell.com>
15710
15711         * mini.c: Move the mini_loader_error_to_exception to metadata. 
15712         
15713 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
15714
15715         * aliasing.c: Fixed bug 78210.
15716
15717 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
15718
15719         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
15720         default until all their problems (or the ones they trigger) are fixed.
15721
15722 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
15723
15724         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
15725         
15726         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
15727         as loaded only after resolving patches since that could invoke the same method.
15728
15729         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
15730
15731         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
15732         functions.
15733
15734         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
15735         AOT loader.
15736
15737         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
15738         stack.
15739
15740         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
15741         made from AOT code through the PLT table.
15742
15743         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
15744         holding the plt offset when a call is made to the aot plt trampoline.
15745         
15746 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
15747
15748         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
15749         amd64 AOT support.
15750
15751         * Makefile.am (common_sources): Fix build breakage.
15752
15753         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
15754         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
15755         intra-assembly calls if possible.
15756         
15757         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
15758
15759         * mini-trampolines.c: Handle PLT entries.
15760
15761         * mini.c: Avoid creating a GOT var for calls.
15762
15763         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
15764         from mscorlib code.
15765
15766         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
15767         from mscorlib code.
15768
15769         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
15770         AOT code.       
15771
15772         * mini.h: Bump AOT file format version.
15773         
15774         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
15775         covers more cases.
15776
15777 2006-04-25  Martin Baulig  <martin@ximian.com>
15778
15779         * driver.c: Disable copyprop, consprop and inline when running
15780         inside the debugger.
15781
15782 2006-04-25  Martin Baulig  <martin@ximian.com>
15783
15784         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
15785         with `get_current_thread' and added `detach'.
15786         (MonoDebuggerMetadataInfo): Added `thread_size',
15787         `thread_tid_offset', `thread_stack_ptr_offset' and
15788         `thread_end_stack_offset'.
15789
15790 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
15791
15792         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
15793         aot-runtime.c.
15794
15795         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
15796         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
15797
15798         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
15799
15800         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
15801
15802         * aot.c: Add support for ADJUSTED_IID.  
15803
15804 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
15805
15806         * aot.c (emit_method_order): Don't align method_order_end.
15807
15808         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
15809         the interface ID changes.
15810
15811 2006-04-21  Dick Porter  <dick@ximian.com>
15812
15813         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
15814         cleaning up a thread.  Fixes the new part of bug 77470.
15815
15816 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
15817
15818         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
15819         to managed wrapper.
15820                      
15821 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
15822
15823         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
15824         
15825         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
15826         SIGSEGV. Fixes #78072.
15827
15828         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
15829         unregister our SIGABRT handler.
15830
15831 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
15832
15833         * mini.c: Disabled inline where it can alter the call stack in a
15834         way visible from managed code.
15835         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
15836         default.
15837
15838 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
15839
15840         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
15841         on other platforms. Fixes #78089.
15842
15843 2006-04-13  Martin Baulig  <martin@ximian.com>
15844
15845         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
15846         determine whether we're inside the debugger.
15847
15848         * debug-debugger.h
15849         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
15850
15851 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
15852
15853         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
15854         handler clauses. Fixes #78024.
15855
15856         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
15857         in the CALL_MEMBASE opcodes. Fixes #78088.
15858         (mono_arch_get_vcall_slot_addr): Ditto.
15859
15860 2006-04-10  Martin Baulig  <martin@ximian.com>
15861
15862         * debug-debugger.c: The thread handling code has now been moved
15863         into ../metadata/threads.c.
15864
15865 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
15866
15867         * driver.c (mono_main): Fix --with-gc=none build.
15868
15869         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
15870         (mono_spillvar_offset_float): Ditto.
15871         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
15872         hreg, not when its !global, since on ia64, there is a third category: stacked
15873         registers.      
15874
15875 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
15876
15877         * mini.c: set MonoInst->klass for load field address and a few other
15878         places.
15879
15880 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
15881
15882         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
15883
15884 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
15885
15886         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
15887         the branch opt changes.
15888
15889 2006-04-06  Dick Porter  <dick@ximian.com>
15890
15891         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
15892         
15893         * wapihandles.c (mini_wapi_seminfo): 
15894         * driver.c (mono_main): Add semaphore info option
15895
15896 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
15897
15898         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
15899         branch optimization changes. Fixes #78009.
15900
15901 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
15902
15903         * mini.c: ignore accessibility of methods in managed->native wrappers.
15904
15905 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
15906
15907         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
15908         
15909         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
15910
15911 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
15912
15913         * mini.c: Modify the branch optimizations to preserve the invariant that
15914         the entries inside the in_bb and out_bb arrays are unique.
15915         (mono_unlink_bblock): Avoid creation of new arrays.
15916
15917 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
15918
15919         * mini.c (mono_unlink_bblock): Fix regression caused by previous
15920         change (#77992).
15921
15922 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
15923
15924         * mini.c (optimize_branches): Remove the "optimizations" in
15925         the cbranch1/cbranch2 -> branch cases which were causing several
15926         problems in the past. Fixes #77986.
15927
15928 2006-03-31  Chris Toshok  <toshok@ximian.com>
15929
15930         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
15931         default optimizations :(
15932
15933 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
15934
15935         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
15936         branch.
15937
15938 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
15939
15940         * local-propagation.c: Added comments to structs and removed
15941         "Mono" prefixes from local tree mover types.
15942
15943 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
15944
15945         * Makefile.am (arch_sources): Define this for each architecture so 
15946         libmono_la_SOURCES is defined in one place.
15947
15948 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
15949
15950         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
15951         from handles/.
15952
15953 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
15954
15955         * driver.c: print the GC name supplied by configure.
15956
15957 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
15958
15959         * local-propagation.c: Added tree mover, and moved here all the
15960         local propagation code from mini.c
15961         * mini.c: Added support for treeprop, and moved all the local
15962         propagation code to local-propagation.c
15963         * mini.h: Added support for treeprop
15964         * driver.c: Added support for treeprop, enabled consprop, copyprop,
15965         treeprop, inline and deadce by default
15966         * Makefile.am: Added local-propagation.c
15967
15968 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
15969
15970         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
15971
15972 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
15973
15974         * debug-debugger.c: make it compile without the Boehm GC.
15975
15976 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
15977
15978         * mini.c: fixed issue with mismatch when an icall is registered
15979         with multiple names but same address.
15980
15981 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
15982
15983         * declsec.c, mini-exceptions.c: use write barrier to set reference
15984         fields of managed objects.
15985
15986 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
15987
15988         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
15989         (can_access_internals): Fix a warning.
15990
15991         * mini.c (print_method_from_ip): Rename this to 
15992         mono_print_method_from_ip so it gets exported.
15993
15994         * trace.c: Deal with strings inside StringBuilder's containing garbage
15995         and fix memory leaks. Fixes #77848.
15996
15997 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
15998
15999         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
16000         fixes #77787.
16001
16002 2006-03-16 Neale Ferguson <neale@sinenomine.net>
16003         
16004         * mini-s390.c: Remove OP_X86_TEST_NULL.
16005
16006 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
16007
16008         * mini.c: use the correct GetHashCode() for the moving collector.
16009
16010 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
16011
16012         * liveness.c: Regalloc spill cost tuning.
16013
16014 2006-03-15 Neale Ferguson <neale@sinenomine.net>
16015         
16016         * mini-s390x.h: Correct S390_LONG macro.
16017
16018         * mini-s390x.c: Cleanup unused code.
16019
16020 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
16021
16022         * jit-icalls.h: New file.
16023
16024         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
16025         icalls and include that instead of including jit-icalls.c.
16026
16027         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
16028         OP_X86 opcodes.
16029
16030 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
16031
16032         * mini.c: when checking for member accessibility, also check for
16033         friend assemblies and for explicit interface implementations.
16034
16035 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
16036
16037         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
16038
16039         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
16040
16041         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
16042         common cases are done first.    
16043
16044         * mini-ops.h: Only define platform specific opcodes on the given platform.
16045
16046         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
16047         branch.
16048         
16049 2006-03-14  Martin Baulig  <martin@ximian.com>
16050
16051         Revert Paolo's change from r57348:
16052
16053         * mini.h: don't use gboolean for bitfields.
16054         * mini.c: verifier changes for fields and methods accessibility.
16055
16056 2006-03-13  Neale Ferguson <neale@sinenomine.net>
16057
16058         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
16059
16060         * mini-s390x.c: Fix conv_r_un.
16061
16062         * cpu-s390, cpu-s390x.md: Fix lengths.
16063
16064 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
16065
16066         * mini.c: nested types have access to all the nesting
16067         levels, not just the enclosing types.
16068
16069 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16070
16071         * mini.c: added a few more verification checks.
16072
16073 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
16074
16075         * liveness.c: Merge optimizations from the linear-il branch.
16076
16077 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
16078
16079         * mini-ia64.c (emit_call): Add a comment.
16080
16081         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
16082
16083         * tramp-ia64.c: Fix some warnings.
16084
16085 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
16086
16087         * mini.h: don't use gboolean for bitfields.
16088         * mini.c: verifier changes for fields and methods accessibility.
16089
16090 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
16091
16092         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
16093         lazy icall wrapper changes.
16094
16095         * dominators.c: Replace all the dominator algorithms with faster
16096         ones from the linear-il branch.
16097
16098         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
16099         the mempool.
16100
16101         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
16102         common cases are done first.
16103
16104         * mini-amd64.c: Fix some warnings.
16105
16106         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
16107         from the mempool.
16108
16109         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
16110         added code.
16111
16112         * mini.h: Add a missing prototype.
16113
16114 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
16115
16116         * mini.c: Compile icall wrappers lazily.
16117
16118         * mini-codegen.c: Use printf instead of g_print since its much faster.
16119
16120         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
16121         function.
16122
16123         * mini.c (optimize_branches): Cache the negative result from 
16124         remove_block_if_useless ().
16125
16126         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
16127         Also fix some bblock linking issues.
16128
16129         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
16130         assembly files.
16131
16132         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
16133
16134         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
16135         accessed fields first, for better cache behavior.
16136         
16137 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16138
16139         * mini.c: speedup IList<T> array accesses.
16140
16141 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
16142
16143         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
16144         inline_costs counter. Fixes #77190.
16145
16146 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
16147
16148         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
16149         trace messages. Fixes #77706.
16150
16151 2006-03-04  Martin Baulig  <martin@ximian.com>
16152
16153         * tramp-amd64.c, tramp-x86.c
16154         (mono_debugger_create_notification_function): Use
16155         mono_global_codeman_reserve() to allocate a buffer at runtime and
16156         return it.
16157
16158         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
16159
16160         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
16161         notification function at runtime and then call `initialize' in the
16162         `MONO_DEBUGGER__debugger_info' vtable.
16163
16164 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
16165
16166         * iltests.il: Fix a visibility problem.
16167
16168 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
16169
16170         * driver.c, mini.c: add hooks for the counters API.
16171
16172 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
16173
16174         * driver.c: show disabled options.
16175
16176 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16177
16178         * linear-scan.c: always use cost-driven selection.
16179
16180 2006-02-28  Raja R Harinath  <rharinath@novell.com>
16181
16182         * jit-icalls.c (helper_compile_generic_method): Revert change from
16183         2006-02-24.
16184
16185 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
16186
16187         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
16188
16189 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
16190
16191         * inssel.brg: style fixes, mostly to force the updated monoburg
16192         to run for people using svn.
16193
16194 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
16195
16196         * mini.c: match monoburg changes.
16197
16198 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16199
16200         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
16201         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
16202         declaration in the header file.
16203
16204 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
16205
16206         * helpers.c: reduce relocations and mem usage.
16207
16208 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
16209
16210         * mini.h, mini-codegen.c: disable logging features if
16211         requested by configure.
16212
16213 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
16214
16215         * mini.c: tiny verifier changes.
16216
16217 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
16218
16219         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
16220         cpu-pentium.md: stack alignment changes for osx/x86,
16221         partially from Geoff Norton <gnorton@customerdna.com>.
16222
16223 2006-02-24  Raja R Harinath  <harinath@gmail.com>
16224
16225         * jit-icalls.c (helper_compile_generic_method): Update to changes
16226         in metadata/class.c.
16227
16228 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
16229         
16230         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
16231         
16232         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
16233         interface calls with large offsets.
16234
16235 2006-02-23  Raja R Harinath  <rharinath@novell.com>
16236
16237         * jit-icalls.c (helper_compile_generic_method): Document the
16238         special-case we depend on so that we can inflate the method twice
16239         with the same context with no bad side-effects.
16240
16241 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
16242
16243         * mini-x86.c, mini-amd64.c: fix for case when xen support
16244         is disabled.
16245
16246 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
16247
16248         * mini-x86.c, mini-amd64.c: generate code to access tls items
16249         in a faster way for Xen systems.
16250
16251 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
16252
16253         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
16254         updates and compilation fixes for the OSX/x86 port, mostly from
16255         Geoff Norton <gnorton@customerdna.com>.
16256
16257 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16258
16259         * inssel.brg: faster interface call implementation
16260         to sync with the interface_offsets MonoVTable changes.
16261
16262 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
16263
16264         * mini.c: more verification checks.
16265
16266 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
16267
16268         * mini.c: added a few more verification checks.
16269
16270 2006-02-17      Neale Ferguson <neale@sinenomine.net>
16271
16272         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
16273         facility on the processor and use it if available.
16274
16275 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
16276
16277         * driver.c, aot.c, mini.c: throw exception if the IL code is
16278         invalid or unverifiable.
16279
16280 2006-02-17  Raja R Harinath  <rharinath@novell.com>
16281
16282         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
16283         m.StructField.
16284
16285 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
16286
16287         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
16288
16289 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16290
16291         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
16292         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
16293         handling of instantiated generic valuetypes.
16294
16295 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
16296
16297         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
16298         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
16299         instead.
16300
16301         * generics.2.cs: Revert the nullable reftypes tests.
16302
16303 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
16304
16305         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
16306         using __builtin_frame_address (1) as it doesn't work in the presence
16307         of optimizations. Hopefully fixes #77273.
16308
16309         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
16310         -> generics.cs change as it doesn't work with some automake versions.
16311
16312 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16313
16314         * mini.c: handle systems that sue a different way to
16315         retrieve the stack address of the current thread.
16316
16317 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
16318
16319         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
16320         it specially in the makefile.
16321
16322         * generics.2.cs: Add tests for nullable reference types.
16323
16324 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16325
16326         * mini.c: always handle the case when mono_jit_init()
16327         is called in a thread different from the main thread,
16328         confusing libgc (bug #77309).
16329
16330 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
16331
16332         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
16333
16334 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16335
16336         * mini.c: change optimize_branches () to use a single loop
16337         and introduce a new optimization to simplify some range checks.
16338
16339 2006-02-03  Martin Baulig  <martin@ximian.com>
16340
16341         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
16342         and merged with debugger_thread_manager_add_thread().
16343         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
16344         inform the debugger about the main thread.
16345
16346 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
16347
16348         * basic.cs: Add test for div.un/rem.un constant folding.
16349
16350 2006-02-03  Neale Ferguson <neale@sinenomine.net>
16351
16352         * cpu-s390x.md: correct int_xor_imm length
16353
16354 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
16355
16356         * generics.2.cs: New test for #77442.
16357
16358         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
16359         #77442.
16360
16361 2006-02-02  Martin Baulig  <martin@ximian.com>
16362
16363         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
16364         <mono/metadata/mono-debug-debugger.h>   
16365
16366         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
16367
16368 2006-02-02  Martin Baulig  <martin@ximian.com>
16369
16370         * debug-debugger.h: New header file for debug-debugger.c.
16371
16372         * debug-debugger.c: Big API cleanup; don't run the managed Main()
16373         function is a separate thread anymore; add support for attaching.
16374
16375 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
16376
16377         * tramp-x86.c: Fix a warning.
16378
16379 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
16380
16381         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
16382         on very large methods.
16383
16384         * aot.c (load_patch_info): Fix a warning.
16385
16386 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
16387
16388         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
16389         mini-ops.h: alu membase optimizations.
16390
16391 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
16392
16393         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
16394         to speedup StringBuilder.
16395
16396 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
16397
16398         * dominators.c (mono_compute_natural_loops): Fix detection of
16399         loop body start blocks.
16400
16401         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
16402
16403 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
16404
16405         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
16406         #75145.
16407
16408 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
16409
16410         * aliasing.c: Fixed aliasing issue on 64 bit archs.
16411
16412 2006-01-25  Martin Baulig  <martin@ximian.com>
16413
16414         * debug-debugger.c: Moved the `MonoDebuggerManager' and
16415         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
16416         started to cleanup this file a little bit.
16417
16418 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
16419
16420         * mini.c: optimize a codepath frequently happening in generics code.
16421
16422 2006-01-23  Martin Baulig  <martin@ximian.com>
16423
16424         * Makefile.am: Only compile debug-debugger.c on supported platforms.
16425
16426         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
16427         functions directly.
16428
16429         * driver.c: debug-debugger.c is only available if
16430         `MONO_DEBUGGER_SUPPORTED' is defined.   
16431
16432 2006-01-23  Martin Baulig  <martin@ximian.com>
16433
16434         * debug-debugger.c: Only enable this on platforms where the Mono
16435         Debugger is working (x86 and x86_64).
16436
16437 2006-01-21  Martin Baulig  <martin@ximian.com>
16438
16439         The Mono Debugger is now using the normal `mono' instead of the
16440         `mono-debugger-mini-wrapper' when executing managed code.
16441
16442         * debug-debugger.c: New file; previously known as
16443         debugger/wrapper/wrapper.c.
16444
16445         * debug-mini.c (mono_init_debugger): Removed.
16446
16447         * driver.c (mono_main): Added new `--inside-mdb' command line
16448         argument which is used when running inside the debugger.
16449
16450 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
16451
16452         * liveness.c (mono_analyze_liveness): Remove some unused data
16453         structures.
16454
16455 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
16456
16457         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
16458
16459 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
16460
16461         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
16462         depends on implementation details of monobitset.
16463
16464         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
16465         Fixes #77271.
16466
16467 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
16468
16469         * liveness.c: Update after monobitset changes.
16470
16471 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
16472
16473         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
16474
16475 2006-01-11 Neale Ferguson <neale@sinenomine.net>
16476
16477         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
16478
16479         * mini-s390x.c: Remove warning messages.
16480
16481 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
16482
16483         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
16484
16485 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
16486
16487         * generics.2.cs: Add ldelem/stelem_any test.
16488
16489 2006-01-10 Neale Ferguson <neale@sinenomine.net>
16490
16491         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
16492
16493 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
16494
16495         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
16496         
16497 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
16498
16499         * generics.2.cs: Reenable vtype tests.
16500
16501         * inssel-x86.brg: Remove an icorrect valuetype rule.
16502
16503 2006-01-06 Neale Ferguson <neale@sinenomine.net>
16504
16505         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
16506         initial support for OP_ABS.
16507
16508 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16509
16510         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
16511
16512 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16513
16514         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
16515         conversion and implement LADD/LSUB.
16516
16517         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
16518         architectures.
16519
16520 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16521
16522         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
16523
16524         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
16525         architectures.
16526
16527 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16528
16529         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
16530         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
16531         (stack walk problem).
16532
16533 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
16534
16535         * aot.c (mono_aot_load_method): Fix a warning.
16536
16537 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16538
16539         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
16540
16541 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
16542
16543         * iltests.il: Add test for #77148.
16544
16545         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
16546         #77148.
16547
16548 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16549
16550         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
16551
16552 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16553
16554         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
16555         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
16556
16557         * basic-long.cs: Add lconv-to-r4/r8 tests.
16558
16559 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
16560
16561         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
16562
16563         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
16564         here as on other archs.
16565
16566 2005-12-29 Neale Ferguson <neale@sinenomine.net>
16567
16568         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
16569
16570 2005-12-29 Neale Ferguson <neale@sinenomine.net>
16571
16572         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
16573         
16574         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
16575
16576         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
16577         instrument_prolog; Add memory_barrier instruction.
16578
16579 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
16580
16581         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
16582
16583 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
16584
16585         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
16586
16587         * aliasing.c inssel.brg: Fix warnings.
16588
16589         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
16590         could skip initialization of some parts of memory.
16591
16592         * mini.c mini-ia64.c: Fix warnings.
16593
16594         * inssel-sparc.brg: Add an implementation of lneg which actually works.
16595
16596 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
16597
16598         * aliasing.c (mono_build_aliasing_information): Add a workaround for
16599         a crash seen on sparc.
16600
16601         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
16602         
16603         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
16604
16605 2005-12-21 Neale Ferguson <neale@sinenomine.net>
16606
16607         * mini-ops.h: Add s390_backchain instruction
16608
16609         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
16610
16611         * cpu-s390.md: Add s390_backchain instruction
16612
16613         * mini-s390.c: Significant ABI changes
16614
16615         * mini-s390.h: Cater for zero length structures
16616
16617 2005-12-20 Neale Ferguson <neale@sinenomine.net>
16618
16619         * mini-s390.c: ABI fixes
16620
16621         * inssel-s390.brg: Remove debug statements
16622
16623         * cpu-s390.md: Fix length of ATOMIC_xx operations
16624
16625 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
16626
16627         * basic-float.cs: Add float<->long conversion tests.
16628
16629 2005-12-16 Neale Ferguson <neale@sinenomine.net>
16630
16631         * mini-s390.c: Fix LOCALLOC processing.
16632
16633         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
16634
16635 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
16636
16637         * iltests.il: Add tests for some opcodes not covered by the other
16638         tests.
16639
16640 2005-12-15 Neale Ferguson <neale@sinenomine.net>
16641
16642         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
16643         register loading for Tail processing; Correct trace output.
16644
16645         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
16646
16647         * cpu-s390.md: Correct size of jmp instruction. 
16648
16649 2005-12-13 Neale Ferguson <neale@sinenomine.net>
16650
16651         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
16652
16653 2005-12-13 Neale Ferguson <neale@sinenomine.net>
16654
16655         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
16656           Bring s390 up to current level.
16657
16658 2005-12-12  Zltan Varga  <vargaz@gmail.com>
16659
16660         * generics.2.cs: Disable the newly added tests as they do not work yet.
16661         
16662         * generics.2.cs: Add valuetype tests.
16663
16664 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
16665
16666         * basic-long.cs: Add i4->u8 test.
16667
16668         * objects.cs: Add tests for JIT intrinsic.
16669
16670         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
16671         optimizations lost by a mistake.
16672
16673 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
16674
16675         * basic-long.cs: Remove a test moved to objects.cs.
16676
16677         * arrays.cs: Add more array tests.
16678
16679 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
16680
16681         * arrays.cs: Add new tests for multi-dimensional arrays.
16682
16683 2005-12-06  Raja R Harinath  <rharinath@novell.com>
16684
16685         * Makefile.am (test_sources2): Add generics.2.cs.
16686         (EXTRA_DIST): Add test_sources2.
16687
16688 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
16689
16690         Support for boxing and unboxing nullable types as well as the
16691         isinst operation on nullables, per the CLI ammendment.
16692
16693         * inssel.brg (CEE_ISINST): Special case for nullable
16694
16695         * mini.c (handle_unbox_nullable): new method
16696         (handle_box): Special case for nullable types
16697         (mono_method_to_ir): Call handle_unbox_nullable in correct
16698         places.
16699
16700         * generics.2.cs: New test suite
16701
16702         * Makefile.am: Support for regression tests with generics.
16703
16704 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
16705
16706         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
16707         allocated to registers. Fixes #76800.
16708
16709 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
16710
16711         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
16712
16713 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
16714
16715         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
16716         of platforms.
16717
16718 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
16719
16720         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
16721         objects.cs.
16722
16723         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
16724         
16725         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
16726 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
16727
16728         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
16729         single precision before storing to a single precision location.
16730
16731 2005-11-28  Raja R Harinath  <rharinath@novell.com>
16732
16733         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
16734
16735 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
16736
16737         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
16738         correct files.
16739
16740         * basic.cs: Remove test_0_byte_compares test which was moved to
16741         objects.cs a long time ago.
16742
16743 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
16744
16745         * aliasing.c: Fixed aliasing issue on 64 bit archs.
16746
16747 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
16748
16749         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
16750         handlers are called.
16751
16752         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
16753         throwing code.
16754
16755          * mini-ia64.c: Add support for the throw->branch exception 
16756         optimization.   
16757
16758         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
16759
16760 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
16761
16762         * mini.c: Enabled "fastpath" deadce :-)
16763         
16764 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
16765
16766         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
16767         alias analysis pass to support it.
16768         * mini.h: Likewise.
16769         * ssa.c: Likewise.
16770         * liveness.c: Likewise (liveness computation can use aliasing
16771         information to be more accurate).
16772         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
16773         moreover made so that "--compile-all" uses the given optimization
16774         flags and not the default ones.
16775         * aliasing.c: Alias analysis (new file).
16776         * aliasing.h: Likewise.
16777         * Makefile.am: added "aliasing.c" and "aliasing.h".
16778         
16779 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
16780
16781         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
16782         OP_L opcodes.
16783
16784 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
16785
16786         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
16787         fp >= end_of_stack exit condition, as it is not needed, and it might
16788         become true for fp eliminated frames.
16789
16790 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
16791
16792         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
16793         coded offsets.
16794
16795 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
16796
16797         * mini-arm.c: fixed alignment of doubles/longs to match
16798         the C ABI (bug #76635).
16799
16800 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
16801
16802         * aot.c: fix compilation with --enable-minimal=aot.
16803
16804 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
16805
16806         * mini-arm.c: fixed compatibility with the new
16807         floating point emulator package for compares.
16808
16809 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
16810
16811         * mini.c : reverted sig->pinvoke changes (r51396-51397).
16812
16813 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
16814
16815         * mini-exceptions.c (print_stack_frame): Output to stderr.
16816         (mono_handle_native_sigsegv): Ditto.
16817
16818 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
16819
16820         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
16821         OP_LCONV_TO_OVF_I implementation.
16822
16823         * mini-amd64.c: Add support for the throw->branch exception 
16824         optimization.
16825
16826         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
16827         when the catch clause catches a more general exception, i.e. Object.
16828
16829 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
16830
16831         * cpu-ia64.md: Remove unused opcodes.
16832
16833         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
16834         specific defines for architectures defining USE_SIGACTION.
16835
16836         * mini-ia64.c: Fix some warnings.
16837
16838         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
16839         version seemed to skip a frame.
16840
16841 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
16842
16843         * mini.c: Clean up the usage of sig->pinvoke flag. Now
16844         only calls which are made to native code use this flag.
16845
16846 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
16847
16848         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
16849         varargs methods as well.
16850         
16851         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
16852         which have save_lmf set. Reorganize methods prologs a bit.
16853
16854         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
16855         debugger to the proper place.
16856
16857 2005-10-29  Martin Baulig  <martin@ximian.com>
16858
16859         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
16860         when running inside the debugger until the debugger has support
16861         for it.
16862
16863 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
16864
16865         * mini.h: Fix a warning.
16866
16867 2005-10-24  Miguel de Icaza  <miguel@novell.com>
16868
16869         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
16870         we expose publicly, this returns the string.
16871
16872 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
16873
16874         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
16875         with fp elimination.
16876
16877 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
16878
16879         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
16880         native stacktrace using the glibc 'backtrace' function if available.
16881
16882 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
16883
16884         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
16885
16886         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
16887         handle SIGSEGVs received while in native code.
16888
16889         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
16890         code, call mono_handle_native_sigsegv which will abort the runtime
16891         after printing some diagnostics, instead of converting it into a
16892         confusing NullReferenceException.
16893
16894 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
16895
16896         * cpu-pentium.md: Remove unused opcodes.
16897
16898 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
16899
16900         * mini-amd64.h (MonoLMF): Add rsp field.
16901
16902         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
16903         the lmf too.
16904
16905 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
16906
16907         * mini-codegen.c (get_register_spilling): Fix some warnings.
16908
16909 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
16910
16911         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
16912         elimination during exception handling. Enable fp elimination by
16913         default.
16914
16915         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
16916         elimination.
16917
16918 2005-10-16  Martin Baulig  <martin@ximian.com>
16919
16920         * mini-exceptions.c
16921         (mono_debugger_run_finally): New public method for the debugger.
16922
16923 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
16924
16925         * debug-mini.c (mono_debug_init_method): Fix warning.
16926
16927         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
16928         the 'exname' parameter const to fix some warnings.
16929
16930 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
16931
16932         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
16933         introduced by the previous patch.
16934
16935 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
16936
16937         * basic-float.cs: Add test for precision of float arithmetic.
16938
16939         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
16940         when loading/storing single values from/to memory.
16941
16942         * mini.c (mono_jit_compile_method_with_opt): Create the function
16943         pointers in the correct domain.
16944
16945 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
16946
16947         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
16948         introduced by previous patch.
16949         
16950         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
16951         when out_filter_idx is NULL.
16952
16953         * mini-exceptions.c: Don't run filter clauses twice during exception
16954         handling. Fixes #75755.
16955
16956 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
16957
16958         * aot.c: Add support for ldflda wrappers.
16959
16960         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
16961         #75902.
16962
16963 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
16964
16965         * mini.c, mini.h: do not consider exception handlers blocks when
16966         setting up interface variables.
16967
16968 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
16969
16970         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
16971
16972 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
16973
16974         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
16975         causes a regression.
16976
16977         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
16978
16979 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
16980
16981         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
16982         of the OP_P definitions.
16983
16984         * TODO: Add a proposal for dealing with the CEE/OP mess.
16985
16986         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
16987         optimizations from the x86 port.
16988
16989         * cpu-amd64.md: Ditto.
16990
16991         * basic.cs basic-long.cs: Add tests.
16992
16993 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
16994
16995         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
16996         Patrik Torstensson's implementation of my exception-handling
16997         optimization idea, when the exception object is not used
16998         (bug #62150).
16999
17000 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
17001
17002         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
17003         of the mul_imm optimizations from the old jit.
17004
17005 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
17006
17007         * mini.c, liveness.c: patch by Patrik Torstensson and
17008         Zoltan Varga to improve performance in methods with
17009         exception clauses.
17010
17011 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
17012
17013         * driver.c: Remove 'Globalization' entry from --version.
17014
17015 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
17016
17017         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
17018         there is a profiler interested in JIT events.
17019
17020         * aot.c: Load profile files produced by the AOT profiling module, and
17021         reorder methods based on the profiling info. Add a 'method_order' table
17022         to the AOT file to make mono_aot_find_jit_info work with the reordered
17023         methods.
17024
17025         * mini.h: Bump AOT file version info.
17026
17027 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
17028
17029         * mini-arm.h: work around what looks like a gcc bug when optimizations
17030         are enabled.
17031
17032 2005-09-28  Raja R Harinath  <rharinath@novell.com>
17033
17034         * Makefile.am (AM_CFLAGS): Don't use += to append inside
17035         conditionals.  Use ...
17036         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
17037
17038 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
17039
17040         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
17041         to determine the amount of memory to copy when passing valuetypes.
17042
17043         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
17044         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
17045
17046 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
17047
17048         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
17049         information about aot.
17050
17051 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
17052
17053         * *.c: Replace the use of {Enter,Leave}CriticalSection with
17054         macros. This will allow a deadlock debugger to easily be plugged
17055         in.
17056
17057 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
17058
17059         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
17060
17061 2005-09-27  Raja R Harinath  <rharinath@novell.com>
17062
17063         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
17064         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
17065         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
17066         ($(arch_built)) [CROSS_COMPILING]: Error out.
17067
17068 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
17069
17070         * aot.c: Add support for the no_special_static flag for classes.
17071
17072 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
17073
17074         * Reapply reverted patches.
17075
17076         * *: Revert r50174 as well.
17077
17078         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
17079
17080 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
17081
17082         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
17083
17084 2005-09-23  Miguel de Icaza  <miguel@novell.com>
17085
17086         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
17087         part of the SIG_HANDLER_SIGNATURE.  
17088
17089 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
17090
17091         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
17092         statistics.
17093
17094         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
17095         introduced by previous patch.
17096
17097 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
17098
17099         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
17100         saved registers too.
17101
17102         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
17103         upon the information returned by get_call_info ().
17104         
17105         * mini-x86.c (add_float): Fix stack size calculation.
17106         (mono_arch_call_opcode): Rewrite this so it works based up the
17107         information returned by get_call_info ().
17108         (mono_arch_get_this_vret_args): Ditto.
17109
17110 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
17111
17112         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
17113         in cinfo to determine the registers which need to be used.
17114
17115 2005-09-20  Miguel de Icaza  <miguel@novell.com>
17116
17117         * driver.c (mono_main): Add --server and --desktop flags. 
17118
17119 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
17120
17121         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
17122         registers as global registers.
17123
17124         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
17125         longer needed with the new register allocator.
17126
17127         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
17128
17129         * cpu-ia64.md: Remove unused opcodes.
17130         
17131         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
17132         
17133 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
17134
17135         * cpu-amd64.md: Remove unused opcodes.
17136
17137         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
17138         needed with the new register allocator.
17139
17140         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
17141         reg-reg moves.
17142
17143 2005-09-16  Raja R Harinath  <rharinath@novell.com>
17144
17145         * Makefile.am (check-local): Don't invoke semdel-wrapper.
17146
17147 2005-09-16  Martin Baulig  <martin@ximian.com>
17148
17149         * exceptions-amd64.c
17150         (throw_exception): Don't call mono_debugger_throw_exception() if
17151         we're a rethrow - see the FIXME in the code.
17152
17153 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
17154
17155         * mini.c (mono_init_exceptions): This only works on some architectures.
17156         
17157 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
17158
17159         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
17160         on ia64.
17161
17162         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
17163
17164         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
17165         now in mini-exceptions.c.
17166
17167 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
17168
17169         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
17170         now in mini-exceptions.c.
17171
17172 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
17173
17174         * exceptions-x86.c: Applied patch from Patrik Torstensson 
17175         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
17176
17177         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
17178         code into mini-exceptions.c. Add some assertions to it.
17179
17180 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
17181
17182         * aot.c (emit_section_change): Applied patch from "The Software Team" 
17183         (<software@solmersa.com>). Fix as errors on windows.
17184
17185 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
17186
17187         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
17188         method info into the LMF.
17189
17190 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
17191         
17192         * mini-ia64.c: Add proper unwind info for method epilogs.
17193
17194         * exceptions-ia64.c: Add some code to help debugging.
17195         
17196         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
17197
17198         * mini-exceptions.c: Fix warning.
17199
17200 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
17201
17202         * mini.c: Really fix build.
17203
17204         * mini-x86.c mini-amd64.c: Fix build.
17205
17206 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
17207
17208         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
17209
17210         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
17211         some Interlocked methods as intrinsics.
17212
17213         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
17214         for Thread methods as well.
17215
17216         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
17217
17218         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
17219
17220         * mini-ia64.c mini-x86.c mini-amd64.c 
17221         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
17222         OP_MEMORY_BARRIER.
17223         
17224         * mini.c (mono_init_exceptions): Fix build breakage.
17225
17226 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
17227
17228         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
17229         of instructions. Use the new ia64_unw_op macros for emitting unwind
17230         info.
17231
17232         * mini.c (mono_init_exceptions): Initialize exception handling
17233         related trampolines at startup.
17234
17235 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
17236
17237         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
17238
17239 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
17240
17241         * mini.c: Handle type loading errors gracefully during compilation and
17242         throw the appropriate exception.
17243
17244 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
17245
17246         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
17247         for the mono binary.
17248
17249 2005-09-09  Martin Baulig  <martin@ximian.com>
17250
17251         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
17252         the release.
17253
17254 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
17255
17256         * mini-arm.h: use emulation for conv.r.un for the release.
17257
17258 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
17259
17260         * mini-arm.c, objects.cs: more fixes and tests for them.
17261
17262 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
17263
17264         * mini-arm.c: align structures to at least 4 bytes to be able
17265         to keep our current optimized memcpy.
17266
17267 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
17268
17269         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
17270
17271 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17272
17273         * mini.c: ignore SIGPIPE.
17274
17275 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
17276
17277         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
17278
17279         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
17280
17281 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
17282
17283         * mini.h: Add prototype for mono_allocate_stack_slots_full.
17284
17285 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
17286
17287         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
17288         exception handling support.
17289         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
17290         patch by Brian Koropoff <briank@marakicorp.com>).
17291
17292 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
17293
17294         * mini.c: revert another 'optimization' which breaks when
17295         items on the eval stack need to be saved at a basic block end
17296         (bug #75940).
17297
17298 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
17299
17300         * jit-icalls.c: for arrays, ensure we always provide
17301         lower bounds.
17302
17303 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
17304
17305         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
17306         
17307         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
17308
17309 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
17310
17311         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
17312         arguments in their original register.
17313
17314 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
17315
17316         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
17317         memset/memcpy.
17318
17319         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
17320         when ssapre is enabled.
17321
17322         * inssel-long.brg: Fix bug in previous patch.
17323
17324         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
17325         multiplication by a constant.
17326
17327 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
17328
17329         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
17330         icc.
17331
17332         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
17333         saving registers.
17334
17335 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
17336
17337         * inssel-arm.brg: apply changes tested by Brian Koropoff
17338         <briank@marakicorp.com>.
17339
17340 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
17341
17342         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
17343         
17344 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
17345
17346         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
17347         to the same register if dreg is just a base register.
17348         (print_ins): Improve printing of membase opcodes.
17349
17350         * inssel-x86.brg: Add optimized ldind(reg) rules.
17351
17352         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
17353
17354 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
17355
17356         * mini.c: when running under valgrind, set the stack bottom for
17357         the GC at the actual approximate stack for the app (fixes running
17358         mono with valgrind).
17359
17360 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
17361
17362         * mini.c: do no break at the first valuetype to init found
17363         (fixes bug #75791).
17364
17365 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
17366
17367         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
17368
17369 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
17370
17371         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
17372
17373 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
17374
17375         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
17376
17377 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17378
17379         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
17380
17381         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
17382         code.
17383
17384         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
17385         code.
17386
17387         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
17388         methods.
17389
17390 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
17391
17392         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
17393
17394 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17395
17396         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
17397         in the tail recursion optimization.
17398
17399         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
17400         debug info into the assembly file.
17401
17402         * iltests.il: Add test for filter regions.
17403
17404         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
17405         initial stack of filter regions. Fixes #75755.
17406
17407 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
17408
17409         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
17410         stack requirements.
17411
17412 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17413
17414         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
17415         the check for an already compiled method on non-ia64 platforms.
17416         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
17417         proper domain.
17418
17419         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
17420
17421         * inssel-x86.brg: Add some optimized call rules.
17422
17423 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
17424
17425         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
17426         method here.
17427
17428         * mini.h mini-trampolines.c: Pass the trampoline argument to 
17429         mono_arch_patch_delegate_trampoline.
17430
17431         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
17432
17433         * mini-trampolines.c: Fix build.
17434
17435         * mini-amd64.h: Add delegate trampolines.
17436
17437         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
17438
17439         * inssel-amd64.brg: Add optimized call rules.
17440         
17441         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
17442
17443         * inssel-ia64.brg: Add optimized ldind(reg) rules.
17444
17445 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
17446
17447         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
17448         change.
17449
17450         * mini-ia64.c: Remove LMF fixmes.
17451
17452         * mini-ia64.h: Remove most fields from LMF.
17453
17454         * inssel-ia64.brg (stmt): Fix unaligned access errors.
17455
17456         * mini-trampolines.c: Add support for IA64 function descriptors.
17457
17458         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
17459         for IA64 function descriptors.
17460
17461 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
17462
17463         * tramp-arm.c: patch the vtable for virtual calls. Added
17464         support code to register/unregister the LMF.
17465         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
17466         more LMF work.
17467
17468 2005-08-19  Dick Porter  <dick@ximian.com>
17469
17470         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
17471         bit value if needed.
17472
17473 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
17474
17475         * mini.c (mini_get_method): Move handling of wrapper data here.
17476
17477         * mini.c (mono_method_to_ir): Add support for dynamic methods.
17478
17479         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
17480         virtual.
17481
17482         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
17483         bblock->code does not remain empty.
17484
17485 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
17486
17487         * arrays.cs: Add regression test for #75832.
17488
17489         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
17490         rules. Fixes #75832.
17491
17492         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
17493         instruction scheduling.
17494
17495 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
17496
17497         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
17498
17499 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
17500
17501         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
17502
17503         * mini-codegen.c: Fix VC build.
17504
17505         * cpu-pentium.md: Increase length of atomic_exhange_i4.
17506
17507 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17508
17509         * mini.h: fix signature for mono_register_opcode_emulation.
17510
17511 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
17512
17513         * mini.c: Get rid of most of the helper_sig_... constants using
17514         mono_create_icall_signature ().
17515
17516 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
17517
17518         * jit-icalls.c (helper_ldstr): New helper function.
17519
17520         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
17521
17522         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
17523         throw, load the string using a helper call instead of creating a string object.
17524
17525         * aot.c: Update after LDSTR changes.
17526
17527         * mini.h: Bump AOT file version.
17528         
17529         * aot.c: Save class size info into the AOT file. Print more statistics during
17530         compilation.
17531
17532         * mini.h: Bump AOT file version.
17533
17534         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
17535         ordering of disasm cases. Fixes #74957.
17536
17537 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
17538
17539         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
17540         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
17541         the generic code needed for the ARM port.
17542
17543 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
17544
17545         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
17546         inssel-arm.brg: more ARM features and fixes.
17547
17548 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
17549
17550         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
17551         ARM port work in progress.
17552
17553 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
17554
17555         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
17556
17557         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
17558
17559         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
17560
17561         * inssel.brg (mini_emit_memset): Add support for unaligned access.
17562
17563         * *-ia64.*: Ongoing IA64 work.
17564         
17565         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
17566
17567 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
17568
17569         * TODO: Remove out-of-data todo stuff.
17570
17571         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
17572         dead code.
17573
17574         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
17575
17576         * mini.h: Bump corlib version.
17577
17578 2005-07-27  Martin Baulig  <martin@ximian.com>
17579
17580         * mini-codegen.c
17581         (create_copy_ins): Added `const unsigned char *ip' argument; set
17582         `copy->cil_code' from it.
17583
17584 2005-07-27  Martin Baulig  <martin@ximian.com>
17585
17586         * mini-exceptions.c (mono_handle_exception): Don't call
17587         mono_debugger_handle_exception() for filters.
17588
17589 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
17590
17591         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
17592         as well.
17593
17594 2005-07-26  Martin Baulig  <martin@ximian.com>
17595
17596         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
17597
17598         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
17599         helper_compile_generic_method() if the method is actually virtual
17600         and non-final.
17601
17602 2005-07-26  Martin Baulig  <martin@ximian.com>
17603
17604         * mini.c
17605         (trampoline_code): Renamed to `mono_trampoline_code' and made it
17606         public; this is now accessed directly by the debugger.
17607         (mono_generic_trampoline_code): Removed.
17608
17609         * debug-mini.c
17610         (mono_debug_init_method): Also add interncalls and wrappers.
17611
17612 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
17613
17614         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
17615
17616 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
17617
17618         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
17619
17620 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
17621
17622         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
17623
17624 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
17625
17626         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
17627         getting TLS offsets on AMD64 too.
17628
17629 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
17630
17631         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
17632
17633 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
17634
17635         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
17636         inssel-arm.brg, mini-arm.h: ARM port work in progress.
17637
17638 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
17639
17640         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
17641
17642         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
17643         to mini.c.
17644
17645         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
17646         mono_sparc_is_virtual_call ().
17647         
17648         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
17649
17650         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
17651         trampoline parameters.
17652
17653         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
17654         
17655         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
17656         to mono_arch_get_vcall_slot_addr.
17657
17658         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
17659         trampoline code.
17660
17661         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
17662
17663 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
17664
17665         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
17666
17667 2005-07-19  Martin Baulig  <martin@ximian.com>
17668
17669         * exceptions-amd64.c (throw_exception): Call
17670         mono_debugger_throw_exception() here like we're doing it on i386.
17671
17672 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
17673
17674         * mini-ia64.c: Add optimized TLS access support.
17675
17676 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
17677
17678         * mini-exceptions.c: Ongoing IA64 work.
17679
17680         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
17681
17682         * mini.c: Use the default optimization set when embedding. Fixes
17683         #75194.
17684
17685 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
17686
17687         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
17688         of trampolines to a separate file.
17689
17690         * mini-trampolines.c: New file.
17691
17692         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
17693         separate file.
17694         
17695         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
17696         amd64/ia64 code.
17697
17698         * mini-codegen.c: Fix cygwin build.
17699
17700 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
17701
17702         * mini.c: Add some minor changes needed by the IA64 port.
17703
17704         * *-ia64.*: Ongoing IA64 work.
17705
17706 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
17707
17708         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
17709         trampolines into arch-independent and arch-dependent parts.
17710
17711         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
17712
17713 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
17714
17715         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
17716
17717         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
17718         the xp-regalloc-branch for amd64.
17719
17720         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
17721         xp-regalloc-branch for x86.
17722
17723 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
17724
17725         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
17726
17727 2005-07-06  Martin Baulig  <martin@ximian.com>
17728
17729         * mini.c
17730         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
17731         (mono_jit_runtime_invoke): Likewise.
17732
17733 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
17734
17735         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
17736         on x86 too.
17737         
17738         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
17739         without loading their metadata. Reorganize the file format so exception handling+
17740         debug info is kept separate from normal method info. Create MonoJitInfo 
17741         structures for methods lazily.
17742
17743         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
17744         loading metadata.
17745         (x86_class_init_trampoline): Patch AOT class init trampolines too.
17746
17747         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
17748
17749         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
17750         in AOT code.
17751
17752         * mini.h: Bump AOT file version.
17753
17754 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
17755
17756         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
17757
17758 2005-07-01  Raja R Harinath  <rharinath@novell.com>
17759
17760         * Makefile.am (check-local): Call semdel-wrapper.
17761
17762 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
17763
17764         * mini-x86.c: Revert the last change as it seems to break the build..
17765
17766 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
17767
17768         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
17769         
17770         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
17771
17772 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
17773
17774         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
17775         outside of the macro, so strange stuff doesn't happen with gcc4
17776         (NEW_AOTCONST_TOKEN): Likewise.
17777
17778 2005-06-28  Martin Baulig  <martin@ximian.com>
17779
17780         * mini.c (mini_class_is_system_array): New static method; use this
17781         instead of `klass->parent == mono_defaults.array_class' everywhere
17782         since this also works for the new generic array class.
17783
17784 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
17785
17786         * inssel.brg: Remove warnings.
17787
17788 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
17789
17790         * mini-ia64.c: Ongoing IA64 work.
17791
17792         * basic-float.cs: Add float->i1 conversion test.
17793
17794         * iltests.il: Add conv.u4 test.
17795
17796 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
17797
17798         * inssel-long.brg: Fix bug caused by last change.
17799
17800 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
17801
17802         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
17803         BSDs.  Allows the x86 JIT to work on OSX86
17804
17805 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
17806
17807         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
17808         u4->i8 conversion.
17809
17810         * mini-ia64.c: Ongoing IA64 work.
17811
17812 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
17813
17814         * mini-ia64.c: Ongoing IA64 work.
17815
17816         * driver.c: Clean up jit_code_hash as well when using --regression.
17817
17818         * inssel-long.brg: Fix long->i4/u4 conversion rules.
17819
17820         * basic-long.cs: Add tests for long->u4 conversion.
17821
17822 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
17823
17824         * mini.c: Take mono_get_domainvar out of macros. This makes sure
17825         that we do not depend on undefined C behavior: the order stuff
17826         gets evaluated within an expression. Fixes mono when compiled on
17827         GCC 4.
17828
17829 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
17830
17831         * *-ia64.*: Ongoing IA64 work.
17832
17833         * aot.c: Lower memory usage while loading AOT methods.
17834
17835         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
17836
17837         * mini.h: Bump AOT file format version.
17838
17839 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
17840
17841         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
17842
17843 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
17844
17845         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
17846         not on callee assembly). Fixed some comments.
17847
17848 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
17849
17850         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
17851         it gets proper disassembly.
17852         (emit_method_info): Remove some dead code.
17853
17854         * mini.c (mini_method_compile): Allways allocate the GOT var in
17855         mono_method_to_ir for emulating opcodes.
17856
17857 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
17858
17859         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
17860         before freeing the code memory. Fixes #74990.
17861
17862         * objects.cs: Add regression test for #74992.
17863
17864         * liveness.c: Extend live ranges of arguments to the beginning of the
17865         method. Fixes #74992.
17866
17867         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
17868         so it points into the faulting instruction.
17869
17870 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
17871
17872         * jit-icalls.c (mono_imul_ovf): Add exception handling.
17873
17874         * *-ia64.*: Ongoing IA64 work.
17875
17876         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
17877
17878 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
17879
17880         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
17881
17882         * *-ia64.*: Ongoing IA64 work.
17883
17884 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
17885
17886         * basic-long.cs: Add tests for add/sub.ovf.
17887
17888         * basic.cs: Add tests for sub.ovf.
17889
17890         * *-ia64.*: Ongoing IA64 work.
17891
17892 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
17893
17894         * *-ia64.*: Ongoing IA64 work.
17895
17896         * basic.cs: Add conv.ovf.i4.un test.
17897
17898 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
17899
17900         * mini.c: (remove_block_if_useless) Fixed bug 75061.
17901         
17902 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17903
17904         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
17905
17906 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
17907
17908         * *-ia64.*: Ongoing IA64 work.
17909
17910 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17911
17912         * trace.[ch]:
17913         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
17914
17915 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
17916
17917         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
17918
17919 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
17920
17921         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
17922
17923         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
17924         of a call is callable by a near call.
17925
17926 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
17927
17928         * mini-ia64.c: Ongoing IA64 work.
17929
17930 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
17931
17932         * genmdesc.c: Make the generated array non-static.
17933
17934         * inssel-long.brg: Fix LSHR_IMM rule.
17935
17936         * *-ia64.*: Ongoing IA64 work.
17937
17938         * *-ia64.*: Ongoing IA64 work.
17939
17940 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
17941
17942         * *-ia64.*: Ongoing IA64 work.
17943
17944         * *-ia64.*: Ongoing IA64 work.
17945         
17946         * mini-ia64.c: Ongoing IA64 work.
17947
17948         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
17949
17950 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
17951
17952         * objects.cs basic-calls.cs: Move some tests to objects.cs.
17953         
17954         * objects.cs basic-long.cs: Move some tests to objects.cs.
17955
17956 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
17957
17958         * *-ia64.*: Ongoing IA64 work.
17959
17960         * iltests.il: Add a new test.
17961
17962         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
17963         newobj. Fixes #75042.
17964
17965 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
17966
17967         * *-ia64.*: Ongoing IA64 work.
17968         
17969         * *-ia64.*: Ongoing IA64 work.
17970         
17971         * *-ia64.*: Ongoing IA64 work.
17972
17973         * basic.cs objects.cs: Move tests accessing static variables as well.
17974
17975         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
17976
17977 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
17978
17979         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
17980
17981         * driver.c: Always print failed tests.
17982
17983         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
17984         frame pointer.
17985
17986         * *ia64*: Ongoing IA64 work.
17987
17988 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
17989
17990         * basic.cs: Add tests for add.ovf. Fix warnings.
17991
17992 2005-05-18  Miguel de Icaza  <miguel@novell.com>
17993
17994         * driver.c (mono_main): Avoid crash if no argument is passed to
17995         --break;  Do not use g_error, but f_printf.   And fix all other
17996         ocurrences of the same crash.
17997
17998 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
17999
18000         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
18001         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
18002         Fixes #74742.
18003
18004 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
18005
18006         * *-ia64.*: Add beginnings of IA64 backend.
18007
18008         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
18009
18010 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
18011
18012         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
18013         Fixes #74925.
18014
18015         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
18016
18017         * mini-amd64.c: Fix a warning.
18018
18019 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
18020
18021         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
18022         in float_neg. Fixes #74897.
18023
18024         * mini-amd64.c (emit_call): Fix another near call bug.
18025
18026 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
18027
18028         * declsec.c: Keep the appdomain information in the structure. Added a 
18029         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
18030         value gets overwritten).
18031         * declsec.h: Set the default MonoArray for the the stack to 6. Added
18032         an MonoAppDomain member to MonoSecurityFrame.
18033         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
18034         used in the stack walk. Now use a MonoArray which grow (double) when
18035         it gets full.
18036
18037 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
18038
18039         * mini.c: Re-enabled runtime cleanup, since running threads should
18040         now properly stop when exiting.
18041
18042 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
18043
18044         * mini-codegen.c: New file contaning the arch-independent local
18045         register allocator. Not used by any architectures yet.
18046
18047         * mini.h linear-scan.c: Merge some changes from the 
18048         mini-xp-local-regalloc branch.
18049
18050 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
18051
18052         * mini-amd64.c (emit_call): Fix calls to native functions when the
18053         runtime is compiled as a shared library. Fixes #74756.
18054
18055         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
18056         on a literal field. Fixes #74751.
18057
18058 2005-04-25  Raja R Harinath  <rharinath@novell.com>
18059
18060         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
18061
18062 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
18063
18064         * objects.cs: Add missing null casting test.
18065
18066 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
18067
18068         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
18069         in wrapper methods. Also rename 'address' variable to 'offset'.
18070
18071 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
18072
18073         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
18074         warnings.
18075         
18076         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
18077
18078         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
18079         work on windows.
18080
18081 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
18082
18083         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
18084
18085 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
18086
18087         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
18088         just the last bytes.
18089
18090 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
18091
18092         * aot.c (mono_compile_assembly): Fix warning.
18093
18094         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
18095         by the _MSC_VER stuff.
18096
18097 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
18098
18099         * inssel-long.brg: Fix #74588.
18100
18101         * cpu-amd64.md: Fix #74591.
18102
18103         * iltests.il: Add new regression tests.
18104
18105 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
18106
18107         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
18108         valuetype.
18109
18110 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
18111
18112         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
18113
18114         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
18115         from Bill Middleton <flashdict@gmail.com>.
18116
18117 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
18118
18119         * arrays.cs: Add new regression test. Fix warnings.
18120
18121 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
18122
18123         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
18124         and leakage in CKFINITE.
18125
18126         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
18127         this to a null op since it is called on amd64 too.
18128
18129         * exceptions-amd64.c (get_throw_trampoline): Align stack.
18130
18131         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
18132         body since this is not used on amd64.
18133         
18134         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
18135
18136         * mini-amd64.c: Remove obsolete fixmes.
18137
18138         * mini.c (print_method_from_ip): Fix debugging support.
18139
18140 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18141
18142         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
18143         so that expressions that don't give much gain are not reduced.
18144         * ssapre.h: Likewise.
18145
18146 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
18147
18148         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
18149
18150         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
18151
18152         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
18153
18154 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
18155
18156         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
18157
18158         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
18159
18160 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
18161
18162         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
18163         stack touching.
18164
18165         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
18166
18167         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
18168
18169         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
18170
18171         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
18172         MONO_ARCH_USE_SIGACTION. Fixes #74252.
18173
18174         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
18175
18176         * mini-x86.c: Fix up stack overflow handling.   
18177
18178         * exceptions.cs: Add new regression test.
18179
18180 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
18181
18182         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
18183         mono_jit_thread_attach.
18184
18185         * mini.c (mono_method_to_ir): Verify called method is not abstract.
18186
18187 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
18188
18189         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
18190         avoid calling constructors using callvirt.
18191
18192         * inssel.brg: Fix #74073.
18193
18194 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
18195
18196         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
18197         compilation with non-GCC compilers.
18198         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
18199         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
18200
18201 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
18202
18203         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
18204         klass->interface_offsets (will likely fix bug#74073).
18205
18206 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
18207
18208         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
18209
18210 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
18211
18212         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
18213         to amd64_div_reg_size ().
18214         
18215         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
18216
18217 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
18218
18219         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
18220
18221 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
18222
18223         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
18224
18225 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
18226
18227         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
18228         
18229         * mini.c (mono_precompile_assembly): Load and precompile referenced
18230         assemblies as well. Fixes #74015.
18231
18232 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
18233
18234         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
18235
18236 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
18237
18238         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
18239         a lot of checks and (anyway) permissions cannot work until corlib is 
18240         loaded.
18241
18242 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
18243
18244         * mini-ppc.c: fixed ABI issue on sysv/ppc.
18245
18246 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
18247
18248         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
18249         calls (fixes bug#72824).
18250
18251 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18252
18253         * mini.c: fix tail recursion elimination (see test in bug#73936).
18254
18255 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
18256
18257         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
18258         some fp functions in sse2 mode.
18259
18260 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
18261
18262         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
18263
18264 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
18265
18266         * mini.h mini.c: Add mono_get_jit_tls_key ().
18267
18268         * mini-x86.c: Enable fast TLS support on windows.
18269
18270 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
18271
18272         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
18273         * mini.c: Check for p/invoke method when generating code. If a
18274         p/invoke method, or it's class, isn't decorated with [Suppress
18275         UnmanagedCodeSecurity] then generate code to call System.Security.
18276         UnmanagedDemand (only if the security manager is active).
18277
18278 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
18279
18280         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
18281         last change as it seems to cause strange crashes.
18282         
18283 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18284
18285         * *.c: handle unsafe function pointers where needed.
18286
18287 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
18288
18289         * mini.c (mono_jit_free_method): Remove the fixme too.
18290
18291 2005-03-15  Miguel de Icaza  <miguel@novell.com>
18292
18293         * mini.c: As discussed, make the code actually free the delegate
18294         thunk now, to enable the debugging of delegate problems, use
18295         MONO_DEBUG=1 when running Mono. 
18296
18297         This takes also care of parts of the leaks as seen by Joe.
18298
18299 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
18300
18301         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
18302         thread_tls_offset calculation.
18303
18304 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
18305
18306         * declsec.c: Reworked linkdemand checks for icall. The previous code
18307         was using the declaration code (untrusted) and didn't work as expected
18308         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
18309         specific case.
18310
18311 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
18312
18313         * iltests.il: Add new localloc test.
18314
18315         * mini-amd64.c: Handle large stack allocations the same way as on
18316         windows if stack overflow handling is working.
18317         
18318         * mini-amd64.c: Allocate the signal stack using mmap.
18319
18320         * mini.c (sigsegv_signal_handler): Fix reading of context.
18321
18322         * mini-exceptions.c: Fix up stack overflow handling.
18323
18324         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
18325
18326         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
18327
18328         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
18329
18330         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
18331
18332         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
18333         tramp_init functions as they are no longer needed.
18334
18335 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
18336
18337         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
18338         
18339         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
18340
18341         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
18342         
18343         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
18344         support that now.
18345
18346         * mini-ops.h: Add OP_LMUL_IMM.
18347
18348         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
18349         long mul/div opcodes as intrinsic.
18350
18351         * mini-amd64.c (emit_call): Handle the case when the callee might be
18352         an AOT method.
18353
18354 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
18355
18356         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
18357         extra safe.
18358         
18359         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
18360
18361         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
18362
18363 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
18364
18365         * mini.c (mono_codegen): Don't leak here, to help people running
18366         monogrind.
18367
18368 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
18369
18370         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
18371         conversions in sse2 mode.
18372
18373         * basic-float.cs: Add regression test.
18374         
18375         * mini-amd64.c: Reenable sse2.
18376
18377 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
18378
18379         * mini-amd64.c: Disable sse2 until some regressions are fixed.
18380
18381 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
18382
18383         * driver.c: Copyright text should include 2005.
18384         
18385 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
18386
18387         * cpu-amd64.md (load_membase): Fix more max lengths.
18388
18389 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
18390
18391         * cpu-amd64.md (load_membase): Fix max length.
18392
18393         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
18394
18395         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
18396
18397         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
18398         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
18399
18400         * basic-float.cs: Add rounding regression test.
18401
18402         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
18403
18404 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
18405
18406         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
18407         structures in registers for pinvoke wrappers.
18408
18409 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
18410
18411         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
18412
18413 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
18414
18415         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
18416         wrapper to mono_jit_thread_attach.
18417
18418         * mini.c (mini_jit_thread_attach): New jit icall.
18419
18420         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
18421         native->managed wrappers.
18422
18423         * exceptions.cs: Add new regression test.
18424
18425         * mini.c (optimize_branches): Check regions in the cbranch to throw
18426         block case as well. Fixes #73242.
18427
18428 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18429
18430         * mini.c: thread safety fixes.
18431
18432 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
18433
18434         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
18435         patching stuff, since delegates use jump trampolines so there is
18436         no caller.
18437
18438         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
18439         jump trampolines.
18440         
18441         * tramp-amd64.c: Fix build.
18442
18443         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
18444         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
18445
18446         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
18447         Rename this to mono_arch....
18448         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
18449
18450         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
18451
18452         * mini-amd64.c (emit_call): If both the caller and the callee is
18453         guaranteed to have 32 bit addresses, emit a normal call.
18454
18455         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
18456
18457         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
18458         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
18459         method_ptr inside delegates.
18460
18461 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
18462
18463         * mini.c (mono_jit_free_method): Free the method info even if the native code is
18464         invalidated. Fixes #73001.
18465
18466         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
18467
18468         * mini-x86.c: Only use stdcall for pinvokes on windows.
18469
18470 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
18471
18472         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
18473         * mini-x86.c: remove unreliable __thread var offset detection,
18474         use the correct accessors and enable by default.
18475
18476 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
18477
18478         * mini.c (mono_jit_free_method): Fix memory leak.
18479
18480 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
18481
18482         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
18483
18484 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
18485
18486         * cpu-amd64.md: Fix lengths of atomic opcodes.
18487
18488 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
18489
18490         * driver.c: try to not imply using ICU is any good.
18491
18492 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
18493
18494         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
18495         functions as inline ops.
18496
18497         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
18498         some Interlocked functions as inline ops.
18499
18500         * mini.c (move_basic_block_to_end): Fix bug in last patch.
18501
18502         * mini.h (MonoBasicBlock): Reorganize fields a bit.
18503
18504         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
18505
18506         * mini.c: Add support for OP_NOT_TAKEN.
18507
18508         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
18509         structures in registers for pinvoke wrappers.
18510
18511         * mini-amd64.c: Fix warnings.
18512
18513 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
18514
18515         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
18516
18517         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
18518
18519         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
18520         address instead of loading the address from it.
18521
18522         * mini-x86.c: Add support for returning small structs in registers
18523         on Win32. Fixes part of #70864.
18524         
18525 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
18526
18527         * trace.c (get_token): Improve error checking.
18528
18529 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
18530
18531         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
18532
18533 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
18534  
18535         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
18536         it can be reused for MonoClass.
18537         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
18538         _LINKDEMAND.
18539
18540 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
18541
18542         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
18543         instead of a MonoReflectionMethod. The method information wasn't used
18544         when displaying SecurityException details (but will be now).
18545
18546 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
18547
18548         * Makefile.am : windows build fix.
18549
18550 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
18551
18552         * iltests.il: Add new regression test.
18553
18554         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
18555         #72522.
18556
18557 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
18558  
18559         * mini.c: Moved linkdemand check into helper function check_linkdemand
18560         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
18561         LDFTN, LDVIRTFTN).
18562
18563 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
18564
18565         * declsec.c: Added statistics counter for different kinds of 
18566         LinkDemands.
18567         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
18568         (and commented) declaration.
18569         * mini.c: Added statistics counter for security Demand code 
18570         generation. Added display of security statistics.
18571
18572 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
18573
18574         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
18575         Fix compilation errors under gcc-2.95.
18576
18577 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
18578
18579         * mini.c, driver.c: Use the new jit trampoline hashtable
18580
18581 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18582
18583         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
18584
18585 2005-02-11  Martin Baulig  <martin@ximian.com>
18586
18587         * debug-mini.c (mono_debug_close_method): Free the line number array.
18588
18589 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
18590
18591         * aot.c: Break up large methods into smaller ones. Share GOT slots for
18592         icalls.
18593
18594         * mini.h: Bump AOT file format version. 
18595
18596 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
18597
18598         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
18599         APTC and P/Invoke.
18600         * declsec.h: Added macros to get/set lazyly initialized security 
18601         informations about assemblies. Added new enum for different type of
18602         possible LinkDemand violation. Added function to check LinkDemands.
18603         * mini.h: Added a field to MonoCompile to hold any security violation
18604         detected when JITting a method (so it can be thrown later).
18605         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
18606         and CEE_CALLVIRT. Added code to throw exception at the end of
18607         mini_method_compile (note: the exception is unhandled right now).
18608
18609 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
18610
18611         * mini.c, jit-icalls.c: use the managed implementation of
18612         memset for initobj and memset, to avoid managed <-> unmanaged
18613         transitions.
18614
18615 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
18616
18617         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
18618         optimization if it would need a GOT var.
18619
18620         * basic.cs: Add tests for constant propagation and switch statements.
18621
18622         * ssa.c: Fix out-of-range constant propagation and switch statements.
18623
18624 2005-02-09    <vargaz@freemail.hu>
18625
18626         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
18627
18628 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
18629
18630         * cpu-amd64.md (load_membase): Fix max length of load_membase.
18631
18632 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18633
18634         * mini.c: update to new signature of mono_class_get_allocation_ftn().
18635
18636 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
18637
18638         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
18639         arithmetic operations.
18640
18641 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
18642
18643         * mini-ppc.c: add a workaround for broken user code that
18644         DllImports vararg functions with non-vararg signatures.
18645
18646 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18647
18648         * mini.c (mono_jit_compile_method_inner): Add detection and a 
18649         meaningfull error message for assemblies written in Managed C++.
18650
18651         * tramp-amd64.c mini-amd64.h: Add support for 
18652         create_trampoline_from_token ().
18653
18654         * aot.c mini-x86.c abcremoval.c: Applied patch from
18655         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
18656
18657 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
18658
18659         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
18660         which takes a MonoImage/token as parameter instead of a MonoMethod.
18661
18662         * aot.c: Use the new trampoline for initializing vtables.
18663
18664         * aot.c: Add support for ldfld/stfld_remote wrappers.
18665
18666         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
18667         rules for compare <MEM>, IMM.
18668
18669         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
18670
18671         * aot.c: Handle inherited finalizers correctly.
18672
18673 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
18674
18675         * inssel.brg (stmt): Add a missing _setup_... ().
18676
18677         * aot.c: Save some parts of the class state to the AOT file and use it
18678         to recompute that state when a class is initialized.
18679
18680         * mini.c: Install AOT hooks into the runtime.
18681
18682         * mini.h: Bump AOT file format version.
18683         
18684         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
18685         Fixes #72148.
18686
18687         * iltests.il: Add new test.
18688
18689 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
18690
18691         * mini.c: fix typo.
18692
18693 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
18694
18695         * mini.c: setup the statistical profiler in the thread attach
18696         callback to cope with the new single thread code.
18697
18698 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
18699
18700         * mini-ppc.c: ensure we have enough room for the profiler
18701         calls (fixed bug#72084).
18702
18703 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
18704
18705         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
18706         it.
18707
18708 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18709
18710         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
18711
18712 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18713
18714         * ssapre.c: Fixed an issue with down safety (this allows IronPython
18715         to succesfully execute parrotbench).
18716         * ssapre.h: Likewise.
18717
18718 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18719
18720         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
18721         variable for stores to method arguments (fixes a SSAPRE issue).
18722
18723 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18724
18725         * mini.c: handle value types in dup, fixes gen-112.cs.
18726
18727 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
18728
18729         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
18730         sequence for calls in dynamic methods to avoid thunks.
18731
18732 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18733
18734         * mini.c: correctly remove dynamic methods from the hashtable.
18735
18736 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18737
18738         * driver.c: Disabled SSAPRE until fix the bug that appears
18739         in IronPython's parrotbench.
18740
18741 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
18742
18743         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
18744
18745         * mini.c (mono_method_to_ir): Revert the previous change.
18746         
18747         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
18748         when AOT compiling.
18749
18750         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
18751         mono_jit_info_table_find () etc. when running under valgrind.
18752
18753         * inssel.brg: Fix warnings.
18754
18755         * mini-exceptions.c: Fix warnings.
18756
18757 2005-01-31  Martin Baulig  <martin@ximian.com>
18758
18759         * driver.c (compile_all_methods_thread_main): Don't try to compile
18760         generic methods or anything which has type parameters.
18761
18762 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
18763
18764         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
18765
18766         * TestDriver.cs: Add --verbose flags.
18767
18768         * graph.c ssa.c: Fix 64 bit warnings.
18769         
18770         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
18771         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
18772         Fix 64 bit warnings.
18773
18774         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
18775         variable not spotted by gcc.
18776         
18777         * mini-amd64.c inssel-amd64.brg: Applied patch from  
18778         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
18779         X86_COMPARE_MEMBASE opcodes.
18780
18781         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
18782
18783 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
18784
18785         * *: MonoMethod->signature might be NULL now. You *MUST* use
18786         mono_method_signature.
18787
18788 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18789
18790         * driver.c (compile_all_methods_thread_main): Compile the methods
18791         without invoking cctors.
18792
18793 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18794
18795         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
18796         * basic-calls.cs: test for the above.
18797
18798 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18799
18800         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
18801         MonoJitInfo changes.
18802
18803 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
18804
18805         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
18806         eagerly if it contains dynamic methods.
18807         
18808         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
18809
18810         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
18811         trace, it is now computed by an icall from trace_ips.
18812         
18813         * mini-exceptions.c: Fix a warning.
18814
18815 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
18816
18817         * mini-exceptions.c: don't bother getting stack trace info if
18818         it's not going to be used.
18819
18820 2005-01-27  Raja R Harinath  <rharinath@novell.com>
18821
18822         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
18823         ssapre-mini-ops.h.
18824
18825 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
18826
18827         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
18828
18829         * aot.c: Avoid calling mono_method_get_header () if not needed.
18830
18831         * mini.h: Bump AOT file format version.
18832         
18833         * mini.c (mono_emit_native_call): Allocate a GOT var here.
18834
18835         * mini.c (mono_print_tree): Print more info for calls.
18836
18837 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
18838
18839         * declsec.h: Remove warning by adding missing include for marshal.h
18840
18841 2005-01-26  Martin Baulig  <martin@ximian.com>
18842
18843         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
18844         `ip' twice.
18845
18846 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
18847
18848         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
18849         flags.
18850
18851         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
18852
18853         * aot.c (mono_compile_assembly): Fix a warning.
18854
18855 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
18856
18857         * declsec.c: Look for security attributes on the original MonoMethod 
18858         (and not the wrapped one). This fix permissions on icalls.
18859
18860 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
18861
18862         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
18863
18864         * mini.c (mono_allocate_stack_slots): Add a fixme.
18865
18866         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
18867
18868 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18869
18870         * inssel.brg: optimize casts of sealed types (more
18871         optimizations waiting for fixes in remoting).
18872
18873 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
18874
18875         * inssel.brg (stmt): Add another dummy rule.
18876
18877         * driver.c: Fix warnings.
18878
18879         * driver.c (mono_main): If running under valgrind, instruct glib to use
18880         the system allocation functions so valgrind can track the memory
18881         allocated by the g_... functions.
18882
18883         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
18884
18885         * mini-ops.h: Add OP_DUMMY_STORE opcode.
18886
18887         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
18888
18889         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
18890         variables in try regions.
18891
18892         * mini.c (mini_method_compile): Don't disable optimizations on large
18893         methods when AOT compiling.
18894
18895         * mini.c (mono_allocate_stack_slots): New arch independent method to 
18896         allocate stack slots. Not yet used.
18897
18898 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
18899
18900         * debug-mini.c (mono_debug_close_method): Plug some leaks.
18901
18902 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
18903
18904         * mini-ppc.c: make the branch info relative as the code
18905         buffer can be reallocated.
18906
18907 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
18908
18909         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
18910         * driver.c: Removed the AOT/security restriction. Now initialize the
18911         security manager (in metadata) if --security is used.
18912         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
18913         rather than the pointer to declarative security, when AOT is used.
18914
18915 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
18916
18917         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
18918         basic blocks, reduced intrinsic exception throwing code size.
18919
18920 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
18921
18922         * driver.c (mini_usage): Reorder the usage screen.
18923
18924 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
18925
18926         * mini.c (mono_resolve_patch_target): Fix warning.
18927
18928 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
18929
18930         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
18931         previous patch.
18932
18933         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
18934
18935         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
18936         breaks the amd64 build.
18937
18938         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
18939         register allocation. Fixes #71454.
18940
18941         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
18942
18943         * arrays.cs: Add new regression test.   
18944
18945 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18946
18947         * ssapre.c: Turned usage of snprintf to GString.
18948         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
18949         (I left it on by mistake in my previous commit).
18950
18951 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
18952
18953         * mini.c, cfold.c, basic-calls.cs: preserve side effects
18954         on cond branch optimization (fixes bug# 71515).
18955
18956 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18957
18958         * abcremoval.c: Fixed bug 71062.
18959         * abcremoval.h: Likewise.
18960
18961 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18962
18963         * mini.c: Added a new functionality to optimize_branches, the removal
18964         of useless basic blocks, and fixed some problem in the removal of
18965         critical edges; some utility functions added for both purposes.
18966         * ssapre.c: Added complex expression support, and fixed bug 70637.
18967         * ssapre.h: Likewise.
18968         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
18969         enabled in SSAPRE.
18970         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
18971         * driver.c: Re-enabled SSAPRE.
18972
18973 2005-01-19  Martin Baulig  <martin@ximian.com>
18974
18975         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
18976         the result of mono_get_method_constrained().
18977
18978 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
18979
18980         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
18981         manager.
18982
18983 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
18984
18985         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
18986         be detected.  Fixes #59296.
18987
18988 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18989
18990         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
18991         which can happen. Fixes #71361.
18992
18993 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18994
18995         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
18996         manager.
18997
18998 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
18999
19000         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
19001         appdomain-unload.exe to fail.
19002         
19003         * mini.c: Fix some memory leaks.
19004
19005 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
19006
19007         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
19008         Fixed bug and sped up some codepaths.
19009
19010 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
19011
19012         * mini.c: Fix some memory leaks.
19013
19014         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
19015         conversion.
19016
19017         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
19018
19019         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
19020         #71320.
19021
19022         * iltests.il: Add regression test for #71320.
19023
19024 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
19025
19026         * mini.c (mono_codegen): Fix installation of profiler hooks.
19027
19028         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
19029
19030 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
19031
19032         * mini.h, mini.c, cfold.c: optimize access to enum
19033         readonly fields, too. Eval conditional branches if possible
19034         to perform unreachable code removal in more cases.
19035
19036 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
19037
19038         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
19039
19040         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
19041         code manager.
19042
19043         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
19044         WinXP DEP. Fixes #71244.
19045
19046 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
19047
19048         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
19049
19050 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
19051
19052         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
19053
19054 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
19055
19056         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
19057         changes.
19058
19059         * mini.h: Bump AOT version.
19060
19061         * mini.h (MonoCompile): Change exvar to a hash table.
19062
19063         * mini.c: Allocate a separate exvar for each handler block.
19064
19065         * mini.c: Get rid of the computation of filter_lengths, its not needed.
19066
19067         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
19068         ex var with the pending exception and only throw if the two are equal.
19069         Fixes #68552.
19070         
19071         * exceptions.cs: Add tests for rethrow and nested catch clauses.
19072
19073         * mini-x86.c: Fix warnings.
19074
19075         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
19076         used by all the ports now.
19077
19078         * aot.c: Add write-symbols and save-temps options.
19079
19080 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
19081
19082         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
19083
19084 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
19085
19086         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
19087         operations.
19088
19089         * tramp-s390.c: Check vtable slot belongs to the domain.
19090
19091         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
19092         as per other platforms.
19093
19094         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
19095
19096 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
19097
19098         * driver.c: we don't run the Main() code in a subthread anymore.
19099
19100 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
19101
19102         * mini.c: added experimental rtc support in the statistical
19103         profiler: if the user has the permission, more accurate statistics
19104         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
19105         The MONO_RTC value must be restricted to what the linux rtc allows:
19106         power of two from 64 to 8192 Hz.
19107
19108 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
19109
19110         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
19111
19112 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
19113
19114         * mini-ppc.c: better icache flush for smp.
19115
19116 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
19117
19118         * mini-amd64.c (emit_move_return_value): Fix memory leak.
19119
19120         * mini-x86.c (get_call_info): Add the get_call_info () code from the
19121         amd64 port, not yet used.
19122
19123 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
19124
19125         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
19126         a struct type.
19127
19128 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
19129
19130         * driver.c: Added --security option to activate the security manager.
19131         Right now this will allow code generation for declarative demands and
19132         is disabled when AOT is specified.
19133         * mini.c: Add code generation for declarative security demands.
19134         * mini.h: Add mono_use_security_manager as an extern gboolean.
19135
19136 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
19137
19138         * aot.c (mono_compile_assembly): Speed up compilation a bit by
19139         emitting more dense assembly code.
19140
19141         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
19142         exception throwing stuff.
19143
19144 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
19145
19146         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
19147         dead code.
19148
19149         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
19150         left in by mistake.
19151
19152         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
19153         fixed.
19154
19155         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
19156
19157         * tramp-*.c: Only patch vtable slots if the object is in the current
19158         domain. Fixes appdomain-unload.exe.
19159
19160         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
19161         
19162         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
19163         x86 branch.
19164
19165 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
19166
19167         * mini.c (reverse_branch_op): New helper function.
19168
19169         * mini.c (optimize_branches): Run the new optimization only on 
19170         platforms which support it. Also reverse all kinds of branches.
19171
19172         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
19173
19174         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
19175         a throw statement.
19176
19177         * mini.c (optimize_branches): Reverse not-equals branches if the false
19178         bblock is a throw. This happens a lot of time with argument checking in
19179         corlib.
19180
19181         * mini.c (mono_codegen): Add support for placing basic blocks after
19182         the function epilogue.
19183
19184         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
19185         function epilogue.
19186         
19187 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
19188
19189         * mini.c (setup_stat_profiler): Only set this up if the platform
19190         supports ITIMER_PROF.
19191
19192 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
19193
19194         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
19195         previous patch.
19196
19197         * inssel.brg: Fix a warning.
19198
19199 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
19200
19201         * mini.c: added support for statistical profiler 
19202         (run with: --profile=default:stat).
19203
19204 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
19205
19206         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
19207
19208         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
19209
19210         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
19211         related to global registers from the amd64 port.
19212
19213 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
19214
19215         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
19216
19217         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
19218         with global registers.
19219         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
19220
19221         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
19222
19223 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
19224
19225         * debug-mini.c (encode_value): Fix off-by-one.
19226
19227         * aot.c (encode_value): Likewise.
19228
19229         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
19230
19231 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
19232
19233         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
19234         AOT.
19235
19236         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
19237         
19238         * aot.c (emit_method_info): Increase size of temp buffer.
19239
19240         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
19241         the AOT case.
19242
19243 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
19244
19245         * aot.c (emit_method_info): Fix build.
19246         
19247         * aot.c: Further rework of the AOT file format to reduce the size of
19248         the method info data.
19249
19250         * mini.h: Bump AOT file format version.
19251
19252 2004-12-27  Martin Baulig  <martin@ximian.com>
19253
19254         * mini.c (mini_get_method): New static method; call
19255         mono_get_method_full() and mono_get_inflated_method().
19256         (mono_method_to_ir): Use mini_get_method() instead of
19257         mono_get_method_full(). 
19258
19259 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
19260
19261         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
19262
19263 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
19264
19265         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
19266
19267         * inssel-amd64.brg: Add some optimization rules.
19268
19269 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
19270
19271         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
19272         standard not GC'd stuff is fine.
19273
19274 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
19275
19276         * aot.c: Rework the AOT file format to get rid of most of the global
19277         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
19278
19279         * mini.h: Bump AOT file format version.
19280         
19281 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
19282
19283         * mini.h: Bump AOT file format version.
19284
19285         * aot.c (mono_aot_is_got_entry): New function to determine if an 
19286         address is inside a GOT.
19287
19288         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
19289
19290         * cpu-pentium.md: Increase the maximum size of some instructions which
19291         might involve a got access.
19292         
19293         * mini.c (get_method_from_ip): Another debug helper function.
19294
19295         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
19296         when got var accesses are created during the decompose phase.
19297
19298         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
19299
19300         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
19301         argument mini_compile_method and to MonoCompile, and use this to
19302         determine whenever a given method is compiled for AOT. This allows the
19303         other methods compiled during AOT compilation to be free of AOT stuff,
19304         so the backends does not need to add special support for them by
19305         creating a fake GOT etc.
19306
19307         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
19308         longer needed.
19309
19310 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
19311
19312         * mini.c (mono_method_to_ir): It turns out that some of the
19313         x-appdomain wrappers are lax with types, so just ignore this for
19314         all wrappers.
19315
19316         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
19317         at the vtable->klass. If it is non-shared code we can just use the
19318         vtable.
19319
19320 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
19321
19322         * mini-ppc.c: access MonoDomain from tls, too.
19323
19324 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
19325
19326         * declsec.c: Removed unused variable (and related warning ;-)
19327
19328 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
19329
19330         * iltests.il: New test for LDELEMA on an array of ref types.
19331
19332         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
19333         all ldelema's on reftypes.
19334         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
19335         it was the wrong place to put it.
19336
19337         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
19338         register to pop to make this cleaner, at the request of Paolo.
19339
19340 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
19341
19342         * mini-ops.h (OP_GETHASHCODE): New op.
19343
19344         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
19345
19346         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
19347         operation.
19348
19349         For a microbenchmark, this reduces the cost of Hashtable.get_Item
19350         by 25%.
19351         
19352         * mini-x86.c (mono_arch_output_basic_block): Rather than
19353
19354         add ebp, 4
19355
19356         Emit
19357
19358         pop edx
19359
19360         The first is 3 bytes while the second is 1. This saves 36 kb on
19361         mscorlib, quite a big saving. When bootstraping mcs, I was able to
19362         see a small boost because of icache locality.
19363
19364         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
19365
19366 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
19367
19368         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
19369         started code sharing with the generic code.
19370
19371 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
19372
19373         * mini-ppc.c, cpu-g4.md: added code for direct access to
19374         tls data slots.
19375
19376 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
19377
19378         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
19379          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
19380         to OP_TLS_GET.
19381
19382 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
19383
19384         * declsec.c|h: Added functions to cache the declarative stack modifiers
19385         in MonoJitInfo and to create a security frame from a MonoJitInfo 
19386         structure.
19387         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
19388         created. Register internal calls for System.Security.SecurityFrame::
19389         _GetSecurityFrame and _GetSecurityStack.
19390         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
19391         the definitions for the new stack walk/callback mechanism.
19392         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
19393         first security frame for LinkDemands and InheritanceDemands) and
19394         GetSecurityStack for Demands. Both use the new mono_walk_stack code
19395         from lupus.
19396         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
19397         walk initialization (lupus).
19398
19399 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
19400
19401         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
19402         idiom.
19403         (handle_loaded_temps): Do not create a temporary variable for
19404         things that we know are temps. They will never be modified.
19405         (mono_spill_call): Set MONO_INST_IS_TEMP
19406         (mono_emulate_opcode): ditto
19407         (emit_tree): ditto
19408         (mono_method_to_ir.CEE_DUP): ditto
19409
19410 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
19411
19412         * mini.c (type_to_eval_stack_type): Make this handle the void type
19413         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
19414         (emit_tree): use ip_in_bb to special case some common idioms
19415         Update all callers to pass in the IP.
19416         (mono_method_to_ir): Make CEE_CALL* do the above as well.
19417
19418         This gives us a nice 2% speedup in mcs bootstrap.
19419
19420         * mini-x86.c (peephole_pass): Peephole pass to make
19421         mov  [foo], eax
19422         push [foo]
19423
19424         into
19425
19426         mov [foo], eax
19427         push eax
19428
19429         * mini.c (ip_in_bb): new method.
19430         (mono_method_to_ir): use this method rather than doing the hash
19431         lookup ourselves.
19432
19433         * linear-scan.c (mono_linear_scan): When expiring actives, you
19434         don't need to keep around variables that expire on this
19435         instruction. This makes it so that:
19436              a = b + 1
19437         will turn into:
19438              store (ebx add (ebx, 1))
19439         which will become
19440              add ebx, 1
19441
19442 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
19443
19444         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
19445         combination to avoid doing two copies. Fix up problems with previous
19446         patch.
19447
19448         * mini.c: Fix 64 bit warnings.
19449
19450         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
19451
19452 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
19453
19454         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
19455         changes from the x86 code.
19456
19457         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
19458
19459 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
19460
19461         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
19462         throwing code to reduce its size, unify the AOT and non-aot code and 
19463         get rid of relocations in the AOT case.
19464
19465         * mini-x86.h mini.c exceptions-x86.c 
19466         (mono_arch_get_throw_corlib_exception): New arch specific function to 
19467         raise corlib exceptions which doesn't require relocations in the 
19468         caller.
19469
19470         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
19471
19472 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
19473
19474         * mini.c (mono_emit_method_call): Only allocate the got var when it is
19475         needed.
19476
19477         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
19478         in the AOT case.
19479
19480 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19481
19482         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
19483         with add function when used from Inc/dec atomic 
19484         functions. Re-enabled optimization on x86.
19485         * mini-ops.h: renamed atomic_add functions to
19486         allow _add to match the Interlocked::Add and
19487         _add_next to match Interlocked::Inc/Dec.
19488
19489 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
19490
19491         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
19492         linking of BBs to the end BB, and enabled SSAPRE also with
19493         consprop and copyprop (which was prevented by that bug).
19494
19495 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19496
19497         * mini-x86.c: disabling the Interlocked optimizing code. 
19498
19499 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
19500
19501         * aot.c (load_aot_module): Move reading of got_addr after the AOT
19502         file version check.
19503         
19504 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19505
19506         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
19507         interlocked optimization due lack of support on x86, rewrote 
19508         exchange to take into account that base may be in eax.
19509         
19510         xsp works again; activated Interlocked optimizing code.
19511         
19512 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
19513
19514         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
19515
19516 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
19517
19518         * mini-ops.h: Add new opcodes.
19519
19520         * mini.h: Add new patch types. Add got_var to MonoCompile.
19521
19522         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
19523         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
19524         make it work with all kinds of patchable code.
19525
19526         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
19527         address of the GOT, and referencing entries in the GOT.
19528
19529         * mini.c: Add code to load the GOT address if needed by an opcode.
19530
19531         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
19532         independent AOT code on the x86 using an elf-style Global Offset Table.
19533
19534 2004-12-14  Raja R Harinath  <rharinath@novell.com>
19535
19536         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
19537
19538 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19539
19540         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
19541         when running xsp.
19542
19543 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
19544
19545         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
19546         of Interlocked:Increment/Decrement/Add as inline ops.
19547         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
19548
19549 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
19550
19551         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
19552         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
19553
19554 2004-12-12  Duncan Mak  <duncan@ximian.com>
19555
19556         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
19557         again. `patch_info->table_size' is no longer valid after Zoltan's
19558         commit #37636.
19559
19560 2004-12-12  Martin Baulig  <martin@ximian.com>
19561
19562         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
19563         if we are the "real" method, ie. not an inlined method inside it.
19564
19565 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
19566
19567         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
19568         before we look in the special fields table. This fixes
19569         ../tests/thread-static-init.cs.
19570
19571 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19572
19573         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
19574         for Array get_Rank and get_Length. Fixes bug #70465.
19575
19576 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
19577
19578         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
19579         separate structure to reduce the size of MonoJumpInfo.
19580
19581 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
19582
19583         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
19584
19585 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
19586
19587         * mini.c (mini_get_inst_for_method): Changed to allow ports
19588         to return a MonoInst instead of opcode 
19589         (renamed mini_get_opcode_for_method to better reflect the new functionality)
19590         
19591         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
19592         Allow ports to return a created MonoInst instead of op-code, will enable
19593         new optimizations.
19594         (renamed mini_get_opcode_for_method to better reflected the functionality)
19595
19596 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
19597
19598         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
19599
19600 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19601
19602         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
19603         Fixes #69985.
19604
19605 2004-12-08  Martin Baulig  <martin@ximian.com>
19606
19607         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
19608         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
19609
19610 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19611
19612         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
19613         correctly.
19614
19615         * exceptions.cs: Disable some tests which depend on properties of x86 fp
19616         arithmetic.
19617
19618 2004-12-08  Raja R Harinath  <rharinath@novell.com>
19619
19620         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
19621
19622 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
19623
19624         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
19625         bug introduced by the previous patch.
19626
19627 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
19628
19629         * mini-ppc.c, objectc.cs: handle large structs passed by value
19630         (fixes bug #69972).
19631
19632 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
19633
19634         * mini-ppc.c: OP_ARGLIST implementation from
19635         Geoff Norton  <gnorton@customerdna.com>.
19636
19637 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
19638
19639         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
19640         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
19641
19642 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
19643
19644         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
19645
19646 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19647
19648         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
19649         support.
19650
19651 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
19652
19653         * mini-sparc.c: Zero out localled-ed memory.
19654
19655         * iltests.il: Add tests for zeroing out localloc-ed memory.
19656
19657 2004-12-04  Martin Baulig  <martin@ximian.com>
19658
19659         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
19660         mono_method_get_signature_full().       
19661
19662 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
19663
19664         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
19665         and some utility functions (always for SSAPRE), integrated SSAPRE.
19666         * mini.h: Likewise.
19667         * driver.c: Added ssapre option.
19668         * ssa.c: Small fix on OP_ARG handling.
19669         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
19670         * Makefile.am: Likewise.
19671
19672 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
19673
19674         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
19675         now in the xp code.
19676
19677         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
19678         icall.
19679
19680 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19681
19682         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
19683         
19684         * cpu-s390.md : Increase instruction length of oparglist.
19685
19686         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
19687
19688 2004-11-30  Martin Baulig  <martin@ximian.com>
19689
19690         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
19691         virtual generic methods.  We call a special helper_compile_generic_method()
19692         icall to retrieve the method from the vtable, inflate and compile
19693         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
19694
19695         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
19696
19697 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
19698
19699         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
19700
19701 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
19702
19703         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
19704         Fixes #69929.
19705
19706 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
19707
19708         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
19709         platforms with PIC aot.
19710
19711 2004-11-28  Martin Baulig  <martin@ximian.com>
19712
19713         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
19714         Fixes gen-112.cs.
19715
19716 2004-11-28  Martin Baulig  <martin@ximian.com>
19717
19718         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
19719         the result of mono_type_get_underlying_type() to check whether
19720         we're byref.
19721
19722 2004-11-26  Martin Baulig  <martin@ximian.com>
19723
19724         * mini.c
19725         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
19726         in the g_assert().
19727
19728 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
19729
19730         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
19731         the same way as the other arguments so they won't get clobbered.
19732
19733         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
19734         calls through R11 since it is clobbered by the trampoline code.
19735
19736 2004-11-26  Raja R Harinath  <rharinath@novell.com>
19737
19738         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
19739         pick up in-tree mscorlib.dll.
19740
19741 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
19742
19743         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
19744
19745         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
19746         runtime data/code are now stored in a table similar to the GOT in ELF. 
19747         This allows the code itself to be position independent.
19748
19749         * aot.c: Fix loading of referenced assemblies after the lazy assembly
19750         loading changes.
19751
19752         * aot.c: Attach ELF type (object/function) directives to all global
19753         symbols.
19754
19755         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
19756
19757         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
19758
19759         * mini-amd64.h: Turn on PIC AOT code.
19760
19761         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
19762         returning the offset within an OP_AOTCONST instruction where the GOT
19763         offset needs to be added.
19764
19765         * mini.h: Bump AOT file format version.
19766
19767 2004-11-25  Martin Baulig  <martin@ximian.com>
19768
19769         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
19770         uninflated generic methods.
19771
19772 2004-11-25  Martin Baulig  <martin@ximian.com>
19773
19774         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
19775
19776 2004-11-24  Martin Baulig  <martin@ximian.com>
19777
19778         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
19779         original klass (this only applies for generic instances).
19780
19781 2004-11-24  Martin Baulig  <martin@ximian.com>
19782
19783         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
19784         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
19785         that array).
19786
19787 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
19788
19789         * mini.c (mono_method_to_ir): Disable inlining for methods containing
19790         localloc. Fixes #69678.
19791
19792         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
19793         
19794 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
19795
19796         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
19797         used SSE registers on pinvoke calls. Fixes #69774.
19798
19799 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
19800
19801         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
19802         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
19803
19804 2004-11-23  Raja R Harinath  <rharinath@novell.com>
19805
19806         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
19807         Refer directly to the mcs/ tree.
19808
19809 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19810
19811         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
19812         Check if a trampoline for a synchronized method is required. 
19813
19814 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
19815
19816         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
19817         with localloc if needed. Throe arithmetric exception in
19818         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
19819         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
19820
19821 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
19822
19823         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
19824         types before switching on type.  Fixes #69622.
19825
19826 2004-11-19  Raja R Harinath  <rharinath@novell.com>
19827
19828         * Makefile.am (check-local): New.  Integrate into 'make check'.
19829         (MCS,RUNTIME): Define using in-tree mono and mcs.
19830         (ILASM): New.
19831         (%.exe): Use $(ILASM).
19832
19833 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
19834
19835         * mini-ppc.c: adjust initial prolog size (bug #69691).
19836
19837 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
19838
19839         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
19840         #69664.
19841
19842 2004-11-17  Raja R Harinath  <rharinath@novell.com>
19843
19844         * Makefile.am (clean-local): Rename from 'clean'.
19845
19846 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19847
19848         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
19849         to mono_arch_is_int_overflow. 
19850         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
19851         SIGFPE events.
19852
19853 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
19854
19855         * declsec.c|h: New files to support declarative security attributes.
19856         Added function to check if a method has (applicable) security.
19857         * mini.c|h: Add check for declarative security attributes in
19858         mono_method_check_inlining.
19859         * Makefile.am: Added declsec.c and declsec.h to the build.
19860
19861 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
19862
19863         * mini.c, mini.h: update to keep dynamic code info per-domain.
19864
19865 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
19866
19867         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
19868         (mini_init): Get rid of it from here too.
19869
19870 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
19871
19872         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
19873         implemented OP_RETHROW (patch by Geoff Norton
19874         <gnorton@customerdna.com>).
19875
19876 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
19877
19878         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
19879         between appdomains.  Fixes appdomain-unload on PPC.
19880
19881 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
19882
19883         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19884         mini-exceptions.c: handle the new wrapper types.
19885         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
19886         token value as a MonoClass* when compiling a wrapper.
19887         mono_jit_create_remoting_trampoline now takes an additional
19888         MonoRemotingTarget parameter.
19889         
19890 2004-11-10  Martin Baulig  <martin@localhost>
19891
19892         * mini.c (mono_method_to_ir): Use `generic_container->context'
19893         rather than creating a new one.
19894
19895 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19896
19897         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
19898
19899         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
19900
19901 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
19902
19903         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
19904         the experimental aot cache stuff.
19905
19906 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
19907
19908         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19909         mini-exceptions.c: update to exception clause structure changes.
19910
19911 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19912
19913         * exceptions-x86.c (throw_exception): Fix warnings.
19914
19915         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
19916         for OP_RETHROW.
19917
19918 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19919
19920         * exceptions-sparc.c (get_throw_exception): Really fix this.
19921
19922 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
19923
19924         * tramp-*.c: we no longer support icalls without wrappers, so
19925         a bit of code can be removed here
19926
19927 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
19928
19929         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
19930         patch.
19931
19932         * cpu-sparc.md: Add op_rethrow.
19933
19934         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
19935
19936         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
19937
19938         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
19939         * mini-ops.h: Add OP_RETHROW.
19940
19941         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
19942
19943         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
19944
19945 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
19946         
19947         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
19948         Makes the output much easier to read
19949
19950 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
19951
19952         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
19953         prevents another huge leak when compiling with ssa. Secondly, the
19954         performance of doing this rather than freeing the lists is much
19955         better. GList does a lock every time you allocate a list link,
19956         so that it can use a memory pool. So, it is better to just use
19957         a memory pool of our own.
19958         
19959         * ssa.c, linear-scan.c: replace g_list_remove_link with
19960         g_list_delete.  The remove one does not free the GList, so we were
19961         leaking memory. On -O=all --compile-all with corlib, this cut down
19962         3 MB of allocations.
19963
19964 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
19965
19966         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
19967
19968         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
19969
19970         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
19971         into a new function mono_create_jit_trampoline ().
19972
19973 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
19974
19975         * trace.c (get_spec): Allow tracing of classes without a namespace.
19976
19977 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
19978
19979         * mini.c: Fix pointer overwrite in mini_method_compile.
19980
19981 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
19982
19983         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
19984         The darwin ABI needs some special handling for 1 and 2 byte structs
19985         Lets use lbz/lhz instead of lwz everywhere.
19986         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
19987         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
19988         Use stb/sth for the former, and put the latter always on stack instead of in
19989         argument registers.
19990
19991 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
19992
19993         * trace.c (is_filenamechar): Add '_'.
19994
19995 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
19996
19997         * mini-s390.c: Fix prolog length to allow for large trace requirements.
19998
19999         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
20000
20001 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
20002
20003         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
20004         depends on libmonogc. Fixes #68805.
20005
20006 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
20007
20008         * mini.c (mono_jit_free_method): Provide extra information for
20009         this error.  Currently this leaks, but will be turned into a
20010         developer option in the future.
20011
20012 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
20013
20014         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
20015
20016 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
20017
20018         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
20019         boundary. Fixes reading of PATCH_INFO_R4 and R8.
20020         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
20021
20022 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
20023
20024         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
20025         trampolines for AOT code.
20026
20027 2004-10-22    <vargaz@freemail.hu>
20028
20029         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
20030         constructed types. Fixes #68136.
20031
20032 2004-10-21  Martin Baulig  <martin@ximian.com>
20033
20034         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
20035         if it returns true, unwind the stack to the call instruction.
20036
20037 2004-10-21    <vargaz@freemail.hu>
20038
20039         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
20040
20041         * mini.h: Bump AOT version number.
20042
20043         * objects.cs: Add another test for unbox trampolines.
20044
20045         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
20046         valuetype methods.
20047
20048 2004-10-20    <vargaz@freemail.hu>
20049
20050         * driver.c: Add SHARED to the set of optimizations tested.
20051
20052         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
20053
20054         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
20055         used by CEE_NEWARR.
20056
20057         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
20058
20059 2004-10-20  Martin Baulig  <martin@ximian.com>
20060
20061         * mini-exceptions.c (mono_handle_exception): Call
20062         mono_debugger_handle_exception() to tell the debugger about
20063         catch/finally clauses.
20064
20065 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
20066
20067         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
20068
20069         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
20070         #68447.
20071
20072 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
20073
20074         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
20075         methods as their native size, fixed bug #57543, #57545.
20076         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
20077         This saves a temporary register and mullw call down into 1 (minor perf
20078         increase for cases like sum = sum * 5;  This use to translate into:
20079             li r11,5
20080             mullw r28,r28,r11
20081         It now translates to
20082             mulli r28,r28,5
20083
20084 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
20085
20086         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
20087         #68388.
20088
20089 2004-10-11  Martin Baulig  <martin@ximian.com>
20090
20091         * mini.c (mono_method_to_ir): If we're a generic method, get the
20092         MonoGenericContainer from our MonoMethodNormal and create a
20093         MonoGenericContext from it.
20094
20095 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
20096
20097         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
20098
20099         * basic-long.cs: Add test for checked i8->i2 cast.
20100
20101 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20102
20103         * inssel-ppc.brg: added a couple of speedup rules.
20104
20105 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
20106
20107         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
20108         to speed up rebuilds.
20109
20110 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20111
20112         * mini-s390.c: Minor fix to OP_OR_IMM.
20113
20114 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
20115
20116         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
20117         better. Fixes appdomain-unload.exe on sparc.
20118
20119 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
20120
20121         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
20122         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
20123         see bug 67324.
20124
20125 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
20126
20127         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
20128
20129 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
20130
20131         * mini.c: Always generate a field read/write wrapper for members
20132         of the class MarshalByRefObject since the actual instance could
20133         be a CBO.
20134
20135 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
20136
20137         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
20138
20139 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
20140
20141         * driver.c mini.h trace.c: Move the setting of the main assembly into
20142         a separate function called mono_trace_set_assembly () and call it after
20143         actually loading the main assembly. Fixes #66872.
20144
20145 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
20146
20147         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
20148         using the code manager.
20149
20150 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
20151
20152         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
20153
20154 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
20155
20156         * cpu-amd64.md: Fix bug in previous patch.
20157         
20158         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
20159         #66650.
20160
20161 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
20162
20163         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20164         mini-exceptions.c: updates for changed stack walk interface.
20165
20166 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20167
20168         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
20169
20170 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
20171
20172         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
20173
20174 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
20175
20176         * driver.c (mini_regression_list): Do not call mono_assembly_close 
20177         since assemblies can't be unloaded.
20178         
20179 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20180
20181         * cpu-amd64.md: Fix more instruction lengths.
20182
20183         * cpu-amd64.md: Fix lengths of some instructions.
20184
20185 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
20186
20187         * inssel.brg: Make the array ldelema check aot friendly.
20188
20189 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20190
20191         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
20192
20193         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
20194
20195 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
20196
20197         * mini-x86.c: Fix build.
20198
20199         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
20200         mono_type_get_underlying_type () helper function to simplify code.
20201         
20202 2004-09-09  Martin Baulig  <martin@ximian.com>
20203
20204         * mini-amd64.c: Don't access `type->data.klass' directly, call
20205         mono_class_from_mono_type() instead since the type may be a
20206         generic instance.
20207
20208 2004-09-09  Martin Baulig  <martin@ximian.com>
20209
20210         * mini-amd64.c (get_call_info): Fix support for generic instances.
20211         (add_valuetype): Use mono_class_from_mono_type() to get the class
20212         since we can be a generic instance.
20213
20214 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
20215
20216         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
20217
20218 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
20219
20220         * liveness.c: reset spill costs on each scan: bug 62107
20221
20222 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
20223
20224         * exceptions-sparc.c (mono_arch_find_jit_info): remove
20225         unnecessary line that doesn't compile
20226
20227 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20228
20229         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
20230         trampolines, make them call an error function so people can fix their
20231         code.
20232
20233 2004-09-06  Martin Baulig  <martin@ximian.com>
20234
20235         * mini.c (mono_method_to_ir): When initializing locals, handle a
20236         generic instances like a valuetype if it's a valuetype and like a
20237         class if it's a class.
20238
20239 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20240
20241         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
20242         stack. Fixes #64674.
20243
20244         * exceptions.cs: Add test for unwinding of call arguments.
20245
20246 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
20247
20248         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
20249         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
20250         set the carry/borrow flag). The sparc and s390 implementations
20251         can now use optimized versions (and simplify the code). ppc bugfixes.
20252
20253 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20254
20255         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
20256
20257 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
20258
20259         * inssel-amd64.brg: Remove leftover 32 bit rule.
20260
20261         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
20262
20263 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
20264
20265         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
20266         mono_arch_find_jit_info functions into a new function. Fix a memory
20267         leak.
20268
20269         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
20270         refactored code.
20271         
20272 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20273
20274         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
20275         as well.
20276         
20277         * exceptions.cs: Add array size tests.
20278
20279         * mini.c: Allocate a separate icall wrapper for each arity of 
20280         mono_array_new_va. Fixes #59509.
20281
20282         * exceptions.cs: Add testcase for 64578.
20283
20284         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
20285
20286         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
20287         
20288 2004-09-02  Martin Baulig  <martin@ximian.com>
20289
20290         * mini.c (mono_method_to_ir): When initializing the locals, call
20291         handle_initobj() on the generic instance itself, not its
20292         underlying type.
20293
20294 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20295
20296         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
20297         MonoJitInfo for dynamic methods.
20298
20299         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
20300
20301         * mini.c: Add support for freeing JIT data for dynamic methods.
20302         
20303 2004-09-01  Martin Baulig  <martin@ximian.com>
20304
20305         * mini-x86.c (is_regsize_var): Added support for generic
20306         instances.
20307         (mono_arch_emit_prolog): Make this compile again, use
20308         `x86_push_imm_template (code)'.
20309
20310 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
20311
20312         * mini-x86.c: make all push_imm instructions that get
20313         patched always emit the long form
20314
20315 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
20316
20317         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
20318         in a per-domain hash.
20319
20320         * mini-amd64.c (merge_argument_class_from_type): Handle generic
20321         types.
20322
20323 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
20324
20325         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
20326         work.
20327         
20328         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
20329         work.
20330
20331         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
20332         Beginnings of SSE2 support.
20333
20334         * exceptions.cs: Add more tests for checked int<->uint casts.
20335
20336 2004-08-28  Martin Baulig  <martin@ximian.com>
20337
20338         * mini-x86.c (mono_arch_instrument_epilog): Added support for
20339         generic instances.
20340
20341         * mini.c
20342         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
20343         Handle generic instances recursively.
20344
20345 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20346
20347         * iltests.il: test for conv.u8 on a constant
20348
20349 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20350
20351         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
20352         LCONV_x4 (shrun_32 (membase)).
20353
20354 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20355
20356         * inssel-x86.brg: c&p rules for push/setret of long
20357
20358 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
20359
20360         * inssel-x86.brg: c&p rules for compare (base, regvar) and
20361         compare (regvar, base)
20362
20363         * inssel-x86.brg: more burg love
20364
20365         * inssel.brg: more cleanup
20366
20367         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
20368
20369 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
20370
20371         * basic-long.cs, basic-calls.cs: new tests for optimization.
20372
20373 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
20374
20375         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
20376         patch.
20377
20378 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20379
20380         * mini-amd64.c (read_tls_offset_from_method): Add another case.
20381         
20382 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
20383
20384         * inssel.brg (mini_emit_memcpy): use 
20385         NO_UNALIGNED_ACCESS to disable memcpy optimization
20386
20387 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20388
20389         * mini-amd64.c: Handle generic types in various places.
20390
20391         * mini.c (mono_method_to_ir): Handle generic types in init locals.
20392
20393 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
20394
20395         * mini.c (handle_box): Fix warning.
20396
20397         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
20398
20399         * mini-amd64.h: Enable the emit_state optimization.
20400
20401         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
20402
20403         * mini-amd64.c: Add some new 64 bit peephole opts.
20404
20405         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
20406
20407         * cpu-amd64.md: sreg1 of div instructions must be %rax.
20408
20409         * mini-amd64.c: Register allocator fixes.
20410
20411         * mini.c: Add an optimization to emit_state to avoid allocation of new
20412         registers on some platforms.
20413
20414 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
20415
20416         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
20417
20418         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
20419         allocation. Fixes #63085.
20420
20421         * basic-long.cs: Add new regression test.
20422
20423         * mini-amd64.c: Register allocator improvements.
20424
20425 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
20426
20427         * mini-amd64.c (read_tls_offset_from_method): Add another code
20428         sequence.
20429
20430         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
20431         instruction sequence for nullifying class init trampolines.
20432
20433         * objects.cs: Add new regalloc test.
20434
20435         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
20436
20437 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20438
20439         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
20440         
20441         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
20442         arguments.
20443
20444         * driver.c: Fix profiling after TLS changes.
20445         
20446         * driver.c (mono_main): Set mono_stats.enabled if needed.
20447
20448         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
20449         CEE_BOX.
20450
20451 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
20452
20453         * mini-x86.c: use a 1 op rather than a 2 op tls access
20454         instruction -> faster.
20455
20456 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20457
20458         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
20459         x86 backend.
20460
20461 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
20462
20463         * exceptions-sparc.c (throw_exception): fix typo
20464
20465 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
20466
20467         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
20468         set tree->dreg correctly with tls. Allow any
20469         register to be used.
20470
20471         * mini-x86.c (read_tls_offset_from_method): add new code
20472         generation pattern seen with GCC.
20473
20474
20475 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
20476
20477         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
20478         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20479         exceptions-sparc.c: fix some performance issues in exception
20480         handling and setting of the stack trace for exceptions that were
20481         already thrown.
20482
20483 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20484
20485         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
20486         x86 backend.
20487         
20488         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
20489         registers.
20490
20491 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20492
20493         This patch inlines tls access, when possible.
20494         
20495         * mini.h: new arch functions for TLS intrinsics.
20496         All platforms updated with a stub.
20497
20498         * mini.c: use the new intrinsics
20499
20500         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
20501         arch specific intrinsic for tls variables
20502
20503 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20504
20505         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
20506         under windows.
20507
20508 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20509
20510         * mini.c: thread local allocation
20511
20512 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
20513
20514         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
20515
20516         * Makefile.am: Link against the static version of libmonogc.
20517         
20518         * Makefile.am: Link the static versions of the convenience libraries
20519         into the mono executable.
20520
20521         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
20522
20523 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
20524
20525         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
20526         on integer overflow.
20527
20528         * mini-amd64.c: Reorganize function call code.
20529
20530         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
20531
20532 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20533
20534         * inssel-x86.brg: use xor eax,eax.
20535         
20536         * basic.cs: new tests
20537
20538 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20539
20540         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
20541         in exception throwing code.
20542         
20543 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20544
20545         * inssel-x86.brg: use xor esi,esi.
20546
20547 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20548
20549         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
20550         can trace methods compiled during mini_init () too.
20551
20552         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
20553         CEE_CONV_U4.
20554
20555 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20556
20557         * Makefile.am: static link on x86 (r=zoltan)
20558
20559 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20560
20561         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
20562         code since it causes some programs to fail.
20563
20564 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
20565
20566         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
20567
20568 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
20569
20570         * mini.c: ovfops_op_map - add STACK_OBJ case for
20571         CONV_I 
20572         * basic.cs: add test_0_pin_string as test
20573         case for above.
20574
20575 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
20576
20577         * Makefile.am: build C# if srcdir != builddir
20578
20579 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
20580
20581         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
20582         fall-through blocks.
20583
20584 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20585
20586         * driver.c: enable loop by default again and include abcrem in -O=all.
20587
20588 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
20589
20590         * iltests.il: Add some localloc tests.
20591
20592         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
20593
20594         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
20595         Fixes #62574.
20596
20597         * inssel-amd64.brg: Add some optimizations.
20598
20599         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
20600         for gcc-3.4.
20601
20602         * Makefile.am: Statically link mono against libmono on AMD64.
20603         
20604         * mini-amd64.c inssel-amd64.brg: Optimizations.
20605
20606 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
20607
20608         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
20609
20610         * tramp-amd64.c: Patch calling code in trampolines.
20611
20612 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
20613
20614         * mini-amd64.c: pinvoke struct passing fixes.
20615
20616 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
20617
20618         * mini-sparc.c: redo change, make mono_arch_cpu_init call
20619         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
20620
20621 2004-08-05  Duncan Mak  <duncan@ximian.com>
20622
20623         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
20624         CEE_LDELEM_ANY.
20625
20626 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20627
20628         * mini-amd64.c (emit_move_return_value): Move return value for normal
20629         calls too.
20630
20631 2004-08-05  Martin Baulig  <martin@ximian.com>
20632
20633         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
20634         `type->type'; just modify `type' itself when dealing with enums
20635         and generic instances.
20636         (check_call_signature): Make `simple_type' a `MonoType *'.
20637
20638 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20639
20640         * mini.c: Use OP_PADD to add offsets to addresses.
20641
20642         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
20643
20644 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
20645
20646         * mini-sparc.c (mono_arch_emit_epilog): fix check
20647         for folding last op into restore instruction
20648
20649 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20650
20651         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
20652         helper methods using the code manager.
20653         
20654         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
20655
20656         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
20657
20658 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20659         
20660         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
20661           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
20662
20663         * mini-s390.c: fix tail processing
20664
20665 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
20666
20667         * mini-ppc.c: mul.ovf.un exception name fix.
20668
20669 2004-08-03  Martin Baulig  <martin@ximian.com>
20670
20671         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
20672         instances; before jumping to `handle_enum', also modify `ptype'.
20673
20674 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
20675
20676         * cpu-sparc.md: fcall maximal length too small.
20677
20678 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
20679
20680         * mini-amd64.c mini.h: Add initial support for passing/returning 
20681         structures to/from pinvoked methods.
20682
20683 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
20684
20685         * mini-ppc.c: reg allocator fix.
20686
20687 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
20688
20689         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
20690
20691         * inssel.brg: Optimize memset on 64 bit machines.
20692
20693         * mini-amd64.c: Fix some vararg cases.
20694
20695 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20696
20697         * mini-s390.c: Corrected macro in emit_float_to_int
20698
20699         * s390-abi.cs: Tests to exercise the s390 ABI
20700
20701 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20702
20703         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
20704         caller saved regs.
20705
20706         * basic.cs: Add a test for add.ovf.un.
20707
20708 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
20709
20710         * mini-sparc.c: add case for OP_IDIV_UN
20711
20712 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20713
20714         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
20715         
20716         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
20717
20718 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
20719
20720         * basic.cs: regression tests.
20721
20722         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
20723         regressions.
20724
20725 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20726
20727         * basic.cs: Add a new test.
20728
20729         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
20730         and AOT. Various fixes and optimizations.
20731
20732         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
20733
20734 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20735
20736         * mini-ppc.c: make sure temp regs are not used for global reg
20737         allocation.
20738
20739 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
20740
20741         * cpu-sparc.md: conv_i8 fix for 64bits
20742
20743         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
20744
20745 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
20746         
20747         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
20748         add opcode for cmp BYTE PTR [eax], imm.
20749
20750         * inssel.brg: Make memcpy and memset takes bases.
20751
20752 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
20753
20754         * *-amd64.*: More AMD64 work.
20755         
20756 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
20757
20758         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
20759         add a compare-not-equal opcode.
20760         
20761 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
20762
20763         * mini.c: Use mono_init_from_assembly instead of mono_init.
20764         
20765 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
20766
20767         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
20768
20769         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
20770
20771         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
20772
20773         * inssel.brg: 64 bit fixes.
20774
20775         * mini.h (MonoCallInst): Add some AMD64 specific data.
20776
20777         * mini.h: Add some OP_P opcodes.
20778
20779 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
20780
20781         * basic.cs: tests for 61797 and 61740
20782
20783 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
20784
20785         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
20786         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
20787
20788 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
20789
20790         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
20791
20792         * *-amd64*.*: Ongoing AMD64 work.
20793
20794 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
20795
20796         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
20797
20798         * *-amd64*: Ongoing AMD64 work.
20799
20800         * mini-arch.h: Add AMD64 support.
20801
20802         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
20803
20804         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
20805
20806         * mini-ops.h: Add new opcodes.
20807
20808         * Makefile.am: Add AMD64 support.
20809
20810         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
20811         rules into the inssel-long*.brg files.
20812
20813         * *-amd64.*: Add beginnings of AMD64 backend.
20814
20815 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
20816
20817         * mini.c (print_dfn): commenting out the code that prints
20818         the cil. With -O=deadce, this makes -v -v crash.
20819         
20820         * cpu-pentium.md: make checkthis have a length of 2
20821
20822 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
20823
20824         * mini-sparc.h: fix implementations of __builtin
20825         functions for Sun compiler for V9.
20826
20827 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
20828
20829         * mini.c: use the new stelem.ref wrapper
20830         * exceptions.cs, arrays.cs: new stelem.ref tests
20831
20832 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20833
20834         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
20835         new XSP should work with these changes).
20836
20837 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
20838         
20839         * inssel-{long32,x86,}.brg: trivial optimizations.
20840         
20841 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
20842
20843         * mini.c: load value when emitting box operation in
20844         constrained calls.
20845
20846 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
20847
20848         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
20849         is one byte shorter than cmp DWORD PTR [eax], 0.
20850
20851 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
20852
20853         * inssel-ppc.brg: arguments on the stack are always
20854         relative to the stack pointer (spotted by Neale Ferguson).
20855
20856 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20857
20858         * exceptions-x86.c: delay appending the method name to the trace until
20859         after mono_jit_info_table_find is called, as this gets the real
20860         MonoMethod.
20861
20862 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
20863
20864         * aot.c: register roots
20865
20866 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20867
20868         * aot.c : I could just use PLATFORM_WIN32 flag.
20869
20870 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20871
20872         * aot.c : Reverting the previous fix. This time it broke linux build.
20873
20874 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20875
20876         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
20877
20878 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
20879
20880         * mini.c (handle_stack_args): Remove some more debugging code.
20881         
20882         * mini.c (handle_stack_args): Remove debug output left in by mistake.
20883
20884         * driver.c mini.h aot.c: Allow additional options to be specified with
20885         --aot and pass them to mono_compile_assembly.
20886
20887         * aot.c: Add experimental code to AOT compile all loaded assemblies
20888         on demand and save the code into a cache in the filesystem.
20889
20890         * aot.c: Add support for more wrapper methods.
20891         
20892         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
20893         58863.
20894
20895         * cpu-*.md: Remove removed opcodes.
20896
20897         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
20898         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
20899         related icalls to marshal.c.
20900
20901 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
20902
20903         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
20904
20905         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
20906
20907         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
20908
20909 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
20910         * liveness.c: If liveness is recomputated we need to reset the information
20911         for each variable. This way, if the liveness range has been narrowed
20912         by optimizations that happened after the last computation, we can return
20913         a smaller range.
20914         
20915         For example, if you have
20916         
20917         {
20918                 int i = 0;
20919                 
20920                 // Tons of code that does not affect i
20921                 
20922                 i = foo ();
20923                 ...
20924         }
20925         
20926         i = 0 is dead code and will be removed by SSA. However, when
20927         linear scan gets to the code, i will still appear to be live
20928         throughout the entire block. This prevents good register allocation.
20929
20930 2004-07-06  Martin Baulig  <martin@ximian.com>
20931
20932         * debug-mini.c (mono_debug_init_method): Allow
20933         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
20934         (mono_debug_add_icall_wrapper): New method.
20935
20936         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
20937
20938 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
20939
20940         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
20941         optimization.
20942
20943 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
20944
20945         * aot.c (mono_aot_load_method): Fix loading of debug info.
20946
20947 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
20948
20949         * aot.c: Add logging support.
20950
20951 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
20952
20953         * mini.h: Add prototype for mono_print_method_from_ip.
20954
20955         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
20956
20957         * inssel.brg: 64 bit fixes.
20958
20959         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
20960         inssel-long32.brg.
20961
20962         * Makefile.am: Add SPARC64 support.
20963
20964 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
20965
20966         * aot.c: Fix alignment problems on 32 bit platforms.
20967
20968 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
20969
20970         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
20971         SPARC64.
20972
20973         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
20974         problems.
20975
20976         * mini.h: Bump AOT file version. Some 64 bit fixes.
20977
20978 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
20979
20980         * inssel-sparc.brg: Add new rule to avoid register moves.
20981
20982         * inssel.brg: Add ldind_to_load_membase helper function.
20983
20984 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
20985
20986         * mini.c: OffsetToStringData intrinsic.
20987         
20988 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
20989
20990         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
20991
20992         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
20993         regression tests.
20994
20995         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
20996 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
20997
20998         * mini.c: reinstated mono_compile_get_interface_var()
20999         on x86, too, since the change breaks the Gtk# build there as well.
21000
21001 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21002
21003         * driver.c: remove loop from the default optimizations: it seems to
21004         interact badly with some of the other options (see bug #60613).
21005
21006 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
21007
21008         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
21009         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
21010
21011 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
21012
21013         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
21014         vararg-using methods.
21015
21016 2004-06-21  Martin Baulig  <martin@ximian.com>
21017
21018         * mini/mini-exceptions.c
21019         (mono_handle_exception): Added `gpointer original_ip' argument.
21020         After calling mono_unhandled_exception(), call
21021         mono_debugger_unhandled_exception() and if that returns true,
21022         restore the context and return.
21023
21024 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
21025
21026         * mini-ppc.c: prefer the use of relative branches so
21027         they won't need to be patched in aot code (patch from Patrick Beard).
21028
21029 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
21030
21031         * aot.c: patch from Patrick Beard to make the output assembly
21032         more correct for the MacOSX assembler. Small tweak to
21033         generate sane images on Linux/PPC, too.
21034
21035 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21036
21037         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
21038         case until bug #59509 is fixed (shows up in #60332).
21039
21040 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21041
21042         * mini.c: make sure the needed wrappers are compiled, too, with
21043         precomp.
21044
21045 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
21046
21047         * driver.c: remove NPTL reference in --version output.
21048
21049 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21050
21051         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
21052         generate valid assembly for the Mach-O assembler.
21053
21054 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
21055
21056         * driver.c: don't include abcrem in the all optimization specifier
21057         since it slows down jit compilation too much for now.
21058
21059 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
21060
21061         * mini.c: use BIGMUL only if both operands have the same signage.
21062         * iltests.il: Test for bug 60056. (errors related to signage in
21063         BIGMUL).
21064
21065         r=lupus.
21066
21067 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
21068
21069         * mini.c, aot.c: memory leak fixes.
21070
21071 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21072
21073         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
21074
21075 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
21076
21077         * Makefile.am: remove the -static hack completely, it links in
21078         statically glib as well.
21079
21080 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
21081
21082         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
21083         * exceptions.cs: make it compile with new mcs/csc.
21084
21085 2004-06-03 Massimiliano Mantione <massi@ximian.com>
21086         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
21087         and added relevant test case.
21088
21089 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
21090
21091         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
21092         regressions in gtk-sharp.
21093
21094 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
21095
21096         * exceptions.cs: New regression tests.
21097
21098         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
21099
21100 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
21101
21102         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
21103
21104 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
21105
21106         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
21107
21108         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
21109
21110 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
21111
21112         * mini.c (mono_jit_runtime_invoke): Init class in this
21113         method instead of trusting mono_jit_compile_method to
21114         do the work (because wrappers can be in object class)
21115
21116 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
21117
21118         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
21119
21120         * basic-long.cs: New regression test.
21121
21122 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
21123
21124         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
21125         and div/rem checks.
21126
21127 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
21128
21129         * Makefile.am: fix miguel's change to build mono statically against
21130         libmono (track build dependencies).
21131
21132 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21133
21134         * cfold.c: Some glib versions do not have G_MININT32.
21135
21136 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
21137
21138         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
21139         with precision of tan, atan, sin and cos, and implemented related
21140         regressions tests (fixes bug 54467, but one new problem appeared and
21141         is not fixed yet).
21142
21143 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21144
21145         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
21146
21147         * exceptions.cs: Add test for constant folding && division by zero.
21148
21149         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
21150         since driver.c is in libmono too, so the optimization was useless.
21151
21152         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
21153         variable to driver.c so the compiler can emit more efficient code to
21154         access them.
21155
21156 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21157
21158         * Makefile.am: don't distribute generated inssel.[ch] files.
21159
21160 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21161
21162         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
21163         into the default appdomain. Fixes #58707.
21164
21165         * jit-icalls.c: Remove the broken approximation for truncl, doing
21166         no conversion is better.
21167
21168         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
21169         Fixes #58863.
21170
21171 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
21172
21173         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
21174         of the mcrxr instruction which is not available on some processors
21175         even if it's documented to be. Implement add and sub overflow correctly
21176         (still not complete for long unsigned). Speed up icalls a bit.
21177
21178 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
21179
21180         * mini.c (mono_jit_compile_method_with_opt): Make sure that
21181         we run .cctor in the current domain instead of target_domain.
21182         
21183         Fixes bug #58558, .cctor not being called in -O=shared.
21184
21185 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21186
21187         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
21188
21189 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
21190
21191         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
21192         which can be done with an imm8, do it that way.
21193         (mono_arch_output_basic_block): ditto for a jmp
21194         (mono_arch_emit_prolog): Computate maximum offset of a label.
21195
21196 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
21197
21198         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
21199         now tries to allocate prefered physical reg's for virtual
21200         regs. This reduces the number of emited spills/loads with
21201         20-30% on our core assemblies.
21202
21203 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21204
21205         * jit-icalls.c: truncl() is not needed and trunc() is
21206         the correct thing to do anyway (bug #58287).
21207
21208 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
21209
21210         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
21211         if available.
21212
21213 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
21214
21215         * driver.c: enable loop optimizations by default.
21216
21217 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
21218
21219         * mini-x86.c: fix calc of max loop size when aligning loops start.
21220
21221 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
21222
21223         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
21224         the stack.
21225
21226 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
21227
21228         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
21229         should set carry.
21230
21231         * basic-long.cs: Add tests for add/subtract of immediates with carry.
21232
21233         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
21234         
21235         * mini.c (inline_method): Allways inline some wrappers even if the cost
21236         is too large. Fixes #58785.
21237
21238         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
21239         
21240 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
21241
21242         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
21243         (crichton@gimp.org). Beginning of support for sparc/linux.
21244
21245         * mini-sparc.c: Optimize retrieval of LMF address.
21246
21247 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
21248
21249         * exceptions-ppc.c:  handle alloca in methods with clauses.
21250
21251 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
21252
21253         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
21254
21255 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
21256
21257         * mini.c: Delegate most of the abort signal work to 
21258           mono_thread_request_interruption, which also handles Stop and Suspend
21259           states.
21260
21261 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
21262
21263         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
21264         supports the save/restore lmf opcodes.
21265
21266 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
21267
21268         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
21269         by gcc-3.4 as well.
21270
21271         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
21272
21273 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21274
21275         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
21276         methods which contain array accesses.
21277
21278         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
21279         boundaries. Fixes #58537.
21280
21281         * iltests.il: Add regression test for #58537.
21282
21283 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
21284
21285         * mini-x86.c (mono_arch_local_regalloc): Last part of
21286         fix for bug #58633 (releasing register to early).
21287
21288 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
21289
21290         * basic-long.cs: Add new regression test.
21291
21292 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
21293
21294         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
21295         register too early on the chain.
21296
21297 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21298
21299         * mini.c (create_helper_signature): Use a helper function to reduce
21300         the code which needs to be written. Also set the calling convention of
21301         icalls on windows. Fixes #57840.
21302
21303 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
21304
21305         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
21306         exceptions-ppc.c: added helper function to get the instruction address
21307         from a signal handler context.
21308
21309 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21310
21311         * helpers.c: use g_get_tmp_dir. Invokes happyness 
21312         from gonzalo.
21313
21314 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21315
21316         * helpers.c: Add new env variable to pass args to objdump.
21317         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
21318
21319 2004-05-17  Radek Doulik  <rodo@ximian.com>
21320
21321         * Makefile.am (common_sources): added abcremoval.h so it get
21322         disted and daily mono packages on go-mono.com will build again
21323
21324 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
21325
21326         * abcremoval.c: Fixed coding style, added copyright header.
21327
21328         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
21329
21330         * mini.h: Added prototype for abc removal main function.
21331
21332         * build_relations_propagation_table.pl: Added copyright header.
21333
21334 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
21335
21336         * basic-long.cs: reg test for complex ceq_long bug.
21337
21338 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
21339
21340         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
21341         reg in long and clob case (bug #58343). Fixed/added comments.
21342
21343 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
21344
21345         * mini.c (mono_jit_runtime_invoke): Follow new convention
21346         of calling the invoke method with an function pointer.
21347
21348 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
21349
21350         * ChangeLog: Fix author of memory leak patch.
21351
21352 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
21353
21354         * Makefile.am: fix make dist as well...
21355
21356
21357 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
21358
21359         * cfold.c: Made so that conversions from pointer to int4 are no-ops
21360         on archs where pointers are 4 bytes long.
21361
21362         * Makefile.am: Added abcremoval.c source file.
21363
21364         * abcremoval.c: Added abcremoval.c.
21365
21366         * abcremoval.h: Added abcremoval.h.
21367
21368         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
21369
21370         * inssel.brg: Enabled bounds check removal.
21371
21372         * mini.c: Added support for abcrem optimization.
21373
21374         * mini.h: Added abcrem optimization label.
21375
21376         * driver.c: Added support for abcrem optimization.
21377
21378         * propagated_relations_table.def: Added propagated_relations_table.def.
21379
21380 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
21381
21382         * mini.c, cfold.c: fix style.
21383
21384 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21385
21386         * mini.c: handle issue with the low-level implementation of
21387         some long opcodes (bug #54209).
21388
21389 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
21390
21391         * basic.cs: test for my new cmov stuff.
21392
21393 2004-05-13      Patrik Torstensson
21394
21395         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
21396         opt and added peephole documentation.
21397
21398 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
21399
21400         * tramp-ppc.c: rewrote the generic trampoline code.
21401
21402 2004-05-11      Patrik Torstensson
21403
21404         * mini-x86.c: optimize long shl/shr asm code (one less branch)
21405
21406 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
21407
21408         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
21409
21410         * mini.h mini.c dominators.c: Applied patch from Derek Woo
21411         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
21412
21413         * mini.c: Add new icalls for AsAny marshalling.
21414
21415 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
21416
21417         * tramp-ppc.c, mini-ppc.c: more cleanups.
21418
21419 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21420
21421         * mini.c: no warnings.
21422
21423 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21424
21425         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
21426
21427 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
21428
21429         * mini.c: In the thread abort signal handler, if the thread is in the
21430         process of being stoped, don't throw the Abort exception, just stop the
21431         thread.
21432
21433 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
21434
21435         * tramp-ppc.c: removed old code.
21436
21437 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21438
21439         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
21440         do some simple speed optimizations on ppc.
21441
21442 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
21443
21444         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
21445         and large offsets in load/store.
21446
21447 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
21448
21449         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
21450         it causes regressions.
21451
21452 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
21453
21454         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
21455         support.
21456
21457 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21458
21459         * jit-icalls.c: remove warnings.
21460         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
21461         speedups for unsafe code.
21462
21463 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21464
21465         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
21466
21467 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
21468
21469         * basic-calls.cs: Add new regression test.
21470
21471         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
21472         more portable.
21473
21474         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
21475
21476         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
21477         is no longer used.
21478
21479 2004-05-06      Patrik Torstensson
21480
21481         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
21482         long reg allocation in any reg (not only eax:edx) and implemented 
21483         long shl/shr ops in asm instead of helpers.
21484
21485 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
21486
21487         * mini-sparc.h: Fix warnings.
21488
21489         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
21490         stack.
21491
21492         * mini-exceptions.c (mono_handle_exception): Call the filter in a
21493         separate statement for clarity.
21494
21495         * mini-sparc.c: Update status.
21496
21497 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
21498
21499         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
21500         here.
21501
21502 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21503
21504         * inssel-ppc.brg: another small pre-release workaround:
21505         we don't do overflow detection for long_sub_un.
21506
21507 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21508
21509         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
21510         (also works around a weird ppc bug: 57957).
21511
21512 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
21513
21514         * tramp-ppc.c: trampoline fixes.
21515
21516 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
21517
21518         * mini-ppc.c: fixed typos.
21519
21520 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21521
21522         * mini-ppc.c, exceptions-ppc.c: more code saves registers
21523         at the top of the stack. Fixed typos. Use a frame registers
21524         for all the methods with exception clauses.
21525
21526 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21527
21528         * exceptions-ppc.c: restore fp registers.
21529
21530 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
21531
21532         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
21533         order from the stack top (moved the stack room to save the
21534         return value for trace after the param area). Fixed corruption
21535         in restoring registers on unwind.
21536
21537 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21538
21539         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
21540
21541 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21542
21543         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
21544         and prolog/epilog for methods that use it. Allow
21545         enough param area room for varargs methods. Fix miguel's
21546         breakage in exception handling.
21547
21548 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21549
21550         * Makefile.am: run genmdesc only on current arch.
21551
21552 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21553
21554         * exceptions-x86.c:
21555         * mini-x86.h: fix the build on windows.
21556
21557 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
21558
21559         * 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.
21560
21561         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
21562
21563         * mini-exceptions.c: New file.
21564         
21565         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
21566         Move some parts of the x86 exception handling code to an 
21567         arch-independent file so it can be shared with other ports.
21568
21569 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
21570
21571         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
21572
21573 2004-04-26  David Waite  <mass@akuma.org>
21574
21575         * driver.c: remove comma from end of enumeration declaration
21576
21577 2004-04-26  Jackson Harper  <jackson@ximian.com>
21578
21579         * driver.c: parse config file before loading first assembly. This
21580         allows the user gac to be enabled/disabled. 
21581         
21582 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
21583
21584         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
21585         simpler mechanism: we do not care what is encoded initially
21586         (branch absolute or relative), we care about the code and its
21587         target.  I kept the old code for reference for now.
21588
21589         The new code tries first to determine if the jump is anywhere in
21590         the -/+32 absolute meg range, if it succeeds, it encodes using the
21591         absolute branch;  If not, it tried to find something in the
21592         relative range, if not, it uses the handle_thunk code. 
21593
21594 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
21595
21596         * exceptions-ppc.c: use the correct ip register on macosx.
21597
21598 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
21599
21600         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
21601
21602 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
21603
21604         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
21605         Raise exception on integer divide by zero by hand since the hw
21606         doesn't support it. Handle NaNs in FP compares.
21607
21608 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
21609
21610         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
21611         code reducing duplication between the platforms and enabled
21612         signal exception handling (on linux for now).
21613
21614 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
21615
21616         * exceptions-ppc.c: more macosx support.
21617
21618 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21619
21620         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
21621
21622 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
21623
21624         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
21625
21626 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
21627
21628         * iltests.il: more tests.
21629
21630 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21631
21632         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
21633         vars as well.
21634
21635 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21636
21637         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
21638
21639 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21640
21641         * liveness.c: Mark variables as volatile in all basic blocks reachable
21642         from exception clauses.
21643
21644 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
21645
21646         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
21647         inlining.
21648
21649 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
21650
21651         * iltests.il, basic.cs: more tests for regalloc.
21652
21653 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21654
21655         * iltests.il: Some tests for register allocation modifications
21656         I have locally.
21657
21658 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
21659
21660         * exceptions.cs: Add regression test for bug #56782.
21661
21662         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
21663         original stack trace if an exception is rethrown. Fixes #56782. Oh,
21664         the beauty of fixing the same thing in 5 different files...
21665
21666 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
21667
21668         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
21669         methods.
21670
21671 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
21672
21673         * mini.c: Add support for STRWLPARRAY marshalling convention.
21674
21675 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
21676
21677         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
21678         to init the context to setup the regs pointer).
21679
21680 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21681
21682         * exceptions-ppc.c: more exceptions work.
21683
21684 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21685
21686         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
21687         not allowed.
21688
21689 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
21690
21691         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
21692         can use the memory directly.
21693
21694         * cpu-pentium.md: Update documentation from a post from Zoltan. 
21695
21696         add x86_add_membase, x86_sub_membase, x86_mul_membase
21697
21698 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
21699
21700         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
21701         GENERAL_REGS they were also hardcoded for all PPC ports.
21702
21703         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
21704
21705         Remove hard-coded limit for floating point registers, use
21706         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
21707
21708         Notice that in MacOS X calling conventions you can fit a lot more
21709         floating point values in registers, so I should update the PInvoke
21710         test to excercise the passing of floating point values on the
21711         stack (currently broken).
21712         
21713 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
21714
21715         * tramp-ppc.c (create_trampoline_code): Added
21716         JUMP_TRAMPOLINE_SIZE. 
21717         (ppc_magic_trampoline): Follow the pattern from
21718         x86_magic_trampoline: if code is set to zero, return. 
21719         (create_trampoline_code): Always pass MonoMethod to the jump
21720         trampoline, before it was passing a null.
21721         (mono_arch_create_jump_trampoline): Implement the jump stub, could
21722         share the code with mono_arch_create_jit_trampoline. 
21723
21724         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
21725         implemented.
21726         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
21727         implemented.  
21728
21729         * cpu-g4.md: Added length for jmp instruction, the worst case
21730         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
21731         for save_lmf).
21732
21733 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
21734
21735         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
21736
21737 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
21738
21739         * mini.c: Only set bblock->real_offset when adding a new bblock, and
21740         before each IL instruction.
21741
21742         * mini.c (CEE_BOX): Fix warnings.
21743
21744 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21745
21746         * mini.c: removed a few unused vars and extra whitespace.
21747
21748 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
21749
21750         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
21751         checks.
21752         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
21753         index.
21754         (OP_GETCHR): use the above
21755         (CEE_LDELEMA): use the above.
21756
21757         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
21758         version of the generic impl.
21759         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
21760         (CEE_LDELEMA): use the above.
21761
21762 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
21763
21764         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
21765         Fixes #56317.
21766
21767         * iltests.il: Added new regression test for #56317.
21768
21769 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
21770
21771         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
21772         under NetBSD. Fixes #56450.
21773
21774         * liveness.c (update_gen_kill_set): Fix previous patch.
21775
21776 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21777
21778         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
21779
21780 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
21781
21782         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
21783         ldsfld and ldsflda.
21784
21785         * inssel-sparc.brg: Add more optimizations.
21786
21787         * mini-sparc.c: Replace multiply/divide with shifts if possible.
21788
21789 2004-04-01  Martin Baulig  <martin@ximian.com>
21790
21791         * mini.c (handle_box): New static function; moved the
21792         implementation of CEE_BOX here.
21793         (mono_method_to_ir): Added `constrained_call' variable.
21794         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
21795         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
21796         mono_method_get_constrained() to get the method.
21797
21798 2004-04-01  Martin Baulig  <martin@ximian.com>
21799
21800         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
21801         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
21802         (mono_method_to_ir): We don't need these macros anymore since
21803         mono_class_get_full() already takes care of it. 
21804
21805 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21806
21807         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
21808         use @function (as doesn't accept #function here) and check the return
21809         value of system and stop if fails.
21810
21811 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21812
21813         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
21814
21815 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
21816
21817         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
21818
21819         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
21820
21821         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
21822         #56223.
21823
21824         * basic-long.cs: Add test for negation of Int64.MinValue.
21825
21826 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
21827
21828         * mini-sparc.c: Update status.
21829
21830         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
21831
21832         * exceptions-sparc.c: Fix return value in filters.
21833
21834         * inssel-sparc.brg: Fix register allocation in some rules.
21835
21836 2004-03-28  Martin Baulig  <martin@ximian.com>
21837
21838         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
21839         if neccessary.  
21840
21841 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
21842
21843         * mini-x86.c (mono_arch_patch_code): Fix warnings.
21844         
21845         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
21846         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
21847         remove unused conv_u4 opcode.
21848
21849         * mini-x86.c: Remove valgrind workaround since it slows down things
21850         even when mono is not run under valgrind.
21851
21852 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
21853
21854         * mini-sparc.c: Update status.
21855
21856         * inssel-sparc.brg: Add some optimizations.
21857
21858         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
21859         future delay slot filling. Add support for varargs, tail calls and JMP.
21860
21861         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
21862         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
21863
21864         * inssel.brg: Fix register allocation in OP_ARGLIST.
21865
21866         * inssel.brg: Fix warnings.
21867
21868 2004-03-25  Martin Baulig  <martin@ximian.com>
21869
21870         * mini.c (inflate_generic_field): Removed.
21871         (mini_get_method): Removed, use mono_get_method_full(),
21872         (mini_get_class): Removed, use mono_class_get_full().
21873         (mono_method_to_ir): Pass our generic context to
21874         mono_field_from_token().        
21875
21876 2004-03-25  Martin Baulig  <martin@ximian.com>
21877
21878         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
21879         of a `MonoMethod *'.
21880         (mini_get_method): Take a `MonoGenericContext *' instead
21881         of a `MonoMethod *'.
21882         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
21883         a new local variable called `generic_context' which holds the
21884         current `MonoGenericContext *'; use it to lookup things.
21885
21886 2004-03-24  Martin Baulig  <martin@ximian.com>
21887
21888         * mini.c (mini_get_class): New static method; if we're inside a
21889         generic instance, inflate the class if neccessary.
21890         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
21891
21892 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
21893
21894         * iltests.il: New regression test for #55976.
21895
21896         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
21897         #55976.
21898
21899 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
21900
21901         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
21902         output.
21903
21904 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
21905
21906         * liveness.c: Consider SSA stores as well as loads when making vars
21907         volatile.
21908
21909         * exceptions.cs: New regression tests for register allocation.
21910         
21911 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
21912
21913         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
21914         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
21915           domain lock only to protect puntual access to data structures.
21916           Added access lock for sighash, jit_icall_hash_name, 
21917           jit_icall_hash_addr and domain->code_mp.
21918
21919 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
21920
21921         * driver.c: Print SIGSEGV handling method.
21922
21923         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
21924
21925         * mini.c (setup_jit_tls_data): Handle case when this is called
21926         multiple times for a thread.
21927
21928         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
21929         is different from fbxx_un. Fixes #54303. Also use constants instead of
21930         magic numbers in a lot of places.
21931
21932 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
21933
21934         * exceptions.cs: Fix cctor test when --regression is used.
21935
21936 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
21937
21938         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
21939         for Linux/ppc.
21940
21941 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
21942
21943         * inssel-ppc.brg: fixed register assignments for some rules.
21944
21945 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
21946
21947         * exceptions.cs: Add test for exceptions in static constructors.
21948
21949         * mini.c (mono_jit_compile_method_with_out): Move the calling of
21950         static constructors outside the domain lock. Fixes #55720.
21951
21952 2004-03-17  Martin Baulig  <martin@ximian.com>
21953
21954         * mini.c (get_generic_field_inst): Removed, this'll never happen.
21955         (inflate_generic_field): Take the `MonoMethod *' instead of the
21956         `MonoClass *' and added support for generic method.
21957         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
21958         have a `field->parent->gen_params', only inflate the field if it's
21959         an open constructed type.
21960
21961 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
21962
21963         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
21964         exception object instead of the preconstructed ones.
21965
21966 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21967
21968         * mini.c: reverted changed to sigsegv_signal_handler commited
21969         accidentally in the previous patch.
21970
21971 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21972
21973         * mini.c:
21974         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
21975         running --aot with an old assembly.
21976
21977 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
21978
21979         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
21980         point values.
21981
21982         * mini-sparc.c: Add support for v9 branches with prediction.
21983
21984 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
21985
21986         * mini.c (mini_init): #warning is GNUC only
21987
21988         * mini-sparc.h: implement __builtin_frame_address
21989         and __builtin_return_address for Sun C compiler
21990
21991 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
21992
21993         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
21994
21995 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
21996
21997         * basic-calls.cs: Add test for unaligned byref long argument passing.
21998
21999         * mini-ops.h: Add sparcv9 compare and branch instructions.
22000
22001         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
22002         v9 instructions if we have a v9 cpu.
22003
22004         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
22005         registers for global allocation.
22006
22007         * exceptions-sparc.c: Fixes.
22008         
22009 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
22010
22011         * liveness.c (mono_analyze_liveness): Optimized version.
22012
22013         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
22014
22015         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
22016         sparc work.
22017
22018         * basic-float.cs basic-calls.cs: New regression tests.
22019
22020 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
22021
22022         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
22023         sigaltstack implementation.
22024
22025         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
22026         
22027         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
22028         stuff if SIGSEGV_ON_ALTSTACK is not defined.
22029
22030 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
22031
22032         * mini.c: Fix warnings.
22033         
22034         * mini.c (mono_resolve_patch_target): New function which contains the
22035         arch independent part of the patching process.
22036
22037         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
22038         patching code to a separate function.
22039
22040 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
22041
22042         * mini.c (add_signal_handler): ifdef out on Windows
22043
22044 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
22045
22046         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
22047         cpu-sparc.md: Add exception handling support + other fixes.
22048
22049         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
22050         typed GC detection in --version.
22051
22052         * basic.cs exceptions.cs: New regression tests.
22053
22054         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
22055         the arch specific code can store data during a compilation.
22056
22057         * mini-ops.h: Add OP_SETFRET.
22058
22059         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
22060         function, register a separate icall for each arity, so the icalls can
22061         get a wrapper.
22062         
22063         * mini.c (mono_print_tree): Print negative offsets in a more readable
22064         form.
22065         
22066         * mini.c: Make signal handling work on sparc.
22067         
22068         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
22069
22070         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
22071
22072         * jit-icalls.c: Emulate truncl by aintl on solaris.
22073
22074         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
22075
22076 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
22077
22078         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
22079
22080 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
22081
22082         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
22083         a MarshalByRef type, inline a method that performs the check, taking into
22084         account that the object can be a proxy. Also implemented tow new opcodes:
22085         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
22086         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
22087         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
22088
22089 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
22090
22091         * mini-ppc.c: if a relative branch displacement is too big
22092         but it points to and area reachable with an absolute branch, 
22093         avoid the thunks.
22094
22095 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
22096
22097         * mini.c: optimize small copies in cpblk.
22098
22099 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
22100
22101         * basic-calls.cs basic-float.cs: New regression tests.
22102
22103         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
22104         negative offsets from %fp. Implement localloc. Fix local register 
22105         allocation. Fix the case when the this argument needs to be saved to
22106         the stack. Implement some missing opcodes.
22107
22108 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
22109
22110         * mini.c (mini_method_compile): Reenable global regalloc in methods
22111         with exception handlers.
22112
22113         * linear-scan.c (mono_varlist_sort): Fix warning.
22114
22115         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
22116
22117         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
22118         regalloc costs.
22119
22120         * liveness.c: Make all variables uses in exception clauses volatile, to
22121         prevent them from being allocated to registers. Fixes #42136.
22122
22123 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
22124
22125         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
22126         causes regressions.
22127
22128         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
22129         argument to mono_arch_regalloc_cost.
22130
22131         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
22132         precisely.
22133
22134 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
22135
22136         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
22137         Make the cost of allocating a variable to a register arch dependent.
22138
22139         * basic-calls.cs: Fix compilation of tests.
22140         
22141         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
22142         helper function to cut back on the number of #ifdefs needed.
22143
22144         * mini-ppc.c: Fix compilation.
22145
22146         * basic-calls.cs: New regression tests.
22147
22148         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
22149
22150         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
22151         of l0 since that is callee saved.
22152
22153         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
22154         to virtual calls.
22155
22156         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
22157         of delay instruction.
22158
22159         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
22160
22161         * mini.h (MonoCallInst): Add 'virtual' flag.
22162
22163         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
22164
22165 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
22166
22167         * *.cs: New regression tests.
22168
22169         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
22170         work.
22171
22172         * mini.c (mono_runtime_install_handlers): Fix build.
22173
22174         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
22175         'signal_stack_size' members.
22176
22177         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
22178         alternate signal stack.
22179
22180         * exceptions-x86.c: Add stack overflow handling.
22181
22182         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
22183         functions to arch independent code.
22184
22185         * mini.c (mono_print_tree): Print more detailed info for load_membase
22186         opcodes.
22187         
22188 2004-02-23  Martin Baulig  <martin@ximian.com>
22189
22190         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
22191
22192 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
22193
22194         * mini-x86.c: fixed reg allocation for div/rem.
22195
22196 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
22197
22198         * driver.c (mono_main): Report some configuratio options on --version.
22199
22200 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
22201
22202         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
22203         low in the address space. Correctly flush memory in thunks where we
22204         output native code.
22205
22206 2004-02-20  Martin Baulig  <martin@ximian.com>
22207
22208         * mini.c (mini_get_method): New static method; inflate all generic
22209         methods and methods in open generic instances.
22210         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
22211         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
22212
22213 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
22214
22215         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
22216
22217         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
22218
22219 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
22220
22221         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
22222
22223         * mini-sparc.c (flushi mono_arch_output_basic_block): make
22224         it compile using Sun's compiler.
22225
22226 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
22227
22228         * 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.
22229
22230         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
22231
22232 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
22233
22234         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
22235         code.
22236         * mini-ppc.c: handle calls outside of the allowed range with thunks
22237         allocated using the code manager.
22238         * tramp-ppc.c: use the code manager to hold generated native code.
22239         Fixed the magic trampoline to just patch vtable entries.
22240
22241 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
22242
22243         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
22244         independent file.
22245
22246 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
22247
22248         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
22249         PPC.
22250
22251         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
22252         if we have a working __thread implementation.
22253
22254         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
22255         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
22256
22257 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
22258
22259         * mini-x86.c: Fix compilation under gcc 2.
22260         
22261 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
22262
22263         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
22264         contains a call to the wrapped function.
22265
22266         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
22267         OP_<CALL>_IMM opcodes, and use them under X86.
22268         
22269         * mini.c (mono_jit_find_compiled_method): Fix warning.
22270
22271         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
22272
22273         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
22274
22275         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
22276         functionality to mini.c.
22277
22278         * mini.c (mono_create_jump_trampoline): New function to create a jump
22279         trampoline. Return a compiled method instead of a trampoline if it
22280         exists. Add a cache for jump trampolines.
22281
22282         * mini.c (mono_jit_find_compiled_method): New function to return a
22283         compiled method if it exists.
22284
22285         * mini-x86.c: Call mono_create_jump_trampoline instead of 
22286         mono_arch_create_jit_trampoline.
22287
22288         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
22289         a jump trampoline. Fixes #52092.
22290         
22291 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
22292
22293         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
22294         which is not up-to-date. Add check_corlib_version () instead.
22295
22296         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
22297         have to call it.
22298         
22299         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
22300         since newer valgrind versions do not need it.
22301
22302         * mini.c (mono_jit_compile_method_with_opt): New helper function to
22303         compile a method with a given set of optimizations.
22304
22305         * mini.c: Compile icall wrappers on-demand instead of at startup.
22306
22307         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
22308         wrapper for an icall.
22309
22310 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
22311
22312         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
22313         #54063.
22314
22315         * iltests.il: Add test for non-empty stack before switch instruction.
22316
22317 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
22318
22319         * mini.c: Add support for new stringbuilder marshalling conventions.
22320
22321         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
22322
22323 2004-02-01  Martin Baulig  <martin@ximian.com>
22324
22325         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
22326         in `ginst->mtype_argv'.
22327
22328 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
22329
22330         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
22331         facilitate grepping.
22332
22333 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
22334
22335         * mini.c: fixed buglet in initobj generic implementation for references.
22336
22337 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
22338
22339         * Makefile.am: make the version script conditional.
22340         * jit-icalls.c: handle missing truncl().
22341
22342 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
22343
22344         * exceptions.cs: Add more tests for double->int conversion.
22345
22346         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
22347         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
22348
22349 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
22350
22351         * driver.c: make --verbose --version emit an error
22352         if the loaded corlib doesn't match the runtime version.
22353
22354 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
22355
22356         * mini-ppc.h: export ppc_patch().
22357         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
22358         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
22359         on par or better than on MacOSX.
22360
22361 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
22362
22363         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
22364         mono_lookup_pinvoke_call.
22365
22366         * mini-x86.c: Under windows, the default pinvoke calling convention is
22367         stdcall. Fixes #52834.
22368
22369         * mini.c (optimize_branches): Add an upper bound to the number of
22370         iterations to prevent infinite loops on strange loops. Fixes #53003.
22371
22372 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
22373
22374         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
22375         and ISINST. Fixes #52093.
22376
22377         * objects.cs (test_0_vector_array_cast): New tests.
22378         
22379 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
22380
22381         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
22382         checking in Array.Set ().
22383
22384         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
22385         #52590.
22386
22387         * object.cs (test_0_multi_array_cast): New regression test.
22388
22389 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
22390
22391         * exceptions-ppc.c: fix build on Linux/PPC.
22392
22393 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
22394
22395         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
22396         running under valgrind.
22397         (x86_magic_trampoline): Fix build bustage.
22398
22399         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
22400         negative values as well. This is needed for the encoding of the line number
22401         info, since sometimes the line numbers are not in increasing order.
22402
22403 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
22404
22405         * cpu-pentium.md (localloc): Increase the size of the localloc 
22406         instruction since it is a loop under Win32.
22407
22408         * debug-mini.c (record_line_number): Get rid of unneccesary memory
22409         allocation.
22410
22411 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
22412
22413         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
22414         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
22415         Max Horn (max@quendi.de). Fix file names in comments.
22416
22417 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
22418
22419         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
22420         avoid stack overflow.
22421         (replace_usage): Avoid uninitialized variable warnings.
22422
22423         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
22424         and taking the address of valuetype variables.
22425
22426 2004-01-03  Patrik Torstensson
22427
22428         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
22429         for other purposes than FP later on.
22430
22431 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
22432
22433         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
22434         of tail calls.
22435
22436 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
22437
22438         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
22439
22440 2003-12-30  Patrik Torstensson <p@rxc.se>
22441
22442         * mini-x86.h: Decreased number of availiable fp regs.
22443         Solves corner cases with FP spilling.
22444
22445 2003-12-23  Patrik Torstensson <p@rxc.se>
22446
22447         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
22448         for floating point stack tracking / spilling on x86. 
22449         Fixes bug #49012.
22450         
22451         * basic-float.cs: added float mul overflow test.
22452
22453 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
22454
22455         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
22456
22457 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
22458
22459         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
22460         supports for cond branches that overflow the immediate
22461         overflow offset. mcs can compile simple programs.
22462
22463 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
22464
22465         * exceptions-ppc.c: exception handling support wip:
22466         finally handlers get run on exception.
22467
22468 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
22469
22470         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
22471         profiling.
22472
22473 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
22474
22475         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
22476         initial support for stack walking and unwinding.
22477
22478 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
22479
22480         * driver.c (mono_main): Make corlib-out-of-sync message more 
22481         descriptive. Also remove verify_corlib call.
22482
22483 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
22484
22485         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
22486         not overlap with other call's arguments, too.
22487
22488 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
22489
22490         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
22491         move to arch-specific code the choice of arch-specific
22492         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
22493         * mini.c: ensure emulation calls will not interleave
22494         with other calls.
22495
22496 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
22497
22498         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
22499         the magic trampoline stack frame is dropped before executing
22500         the new method.
22501
22502 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
22503
22504         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
22505         and integer to fp conversions. Added support for overflowing
22506         arguments on the stack. Reserve a couple more registers as temps.
22507         Added support for aot compilation (as output still needs to be
22508         tweaked, though).
22509
22510 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22511
22512         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
22513         Don't overwrite return register in some corner cases.
22514
22515 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
22516
22517         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
22518         static constructors when AOT compiling.
22519
22520         * driver.c (mono_main): Call mono_check_corlib_version.
22521
22522 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
22523
22524         * cpu-g4.md, basic.cs: fixed div target register.
22525
22526 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
22527
22528         * mini-ppc.c, basic.cs: shl_imm fix with test.
22529
22530 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
22531
22532         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
22533         structures by value. Misc fixes.
22534         * objects.cs: more tests.
22535
22536 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
22537
22538         * mini-ppc.c: lconv.ovf.i implemented.
22539
22540 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22541
22542         * mini.c:
22543         (mini_init): don't error out if someone already called g_thread_init.
22544
22545 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
22546
22547         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
22548         to be any type per the spec. Fix abnormal memory usage when
22549         the same object is repeatedly thrown.
22550
22551 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
22552
22553         * mini.c: check for overruns in IL code.
22554
22555 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
22556
22557         * TODO: Add/remove some todo entries.
22558
22559 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
22560
22561         * driver.c (mono_main): Call mono_verify_corlib.
22562
22563 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
22564
22565         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
22566         This has been moved to mini.c
22567         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
22568         type being casted is marshalbyref it could be a proxy, so instead of
22569         emitting the type check code, emit a call to a runtime method that will
22570         perform the check by calling CanCastTo if needed.
22571
22572 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
22573
22574         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
22575         methods with large stack frames under Win32.
22576
22577 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
22578
22579         * Makefile.am: Distribute regression tests.
22580
22581         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
22582         at the end instead of inserting each variable into the sorted list.
22583
22584         * linear-scan.c (mono_varlist_sort): New helper function.
22585         
22586 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
22587
22588         * mini.c: ensure arguments and locals are within bounds.
22589
22590 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22591
22592         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
22593         related fixes.
22594
22595 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
22596
22597         * mini.c (mono_cprop_copy_values): Fix crash.
22598
22599         * aot.c: Set verbosity back to 0.
22600         
22601 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22602
22603         * regalloc.c: complete memory leak fix by Laurent Morichetti
22604         (l_m@pacbell.net).
22605
22606 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
22607
22608         * driver.c (main_thread_handler): Revert the previous patch.
22609
22610         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
22611         under valgrind.
22612
22613         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
22614         memory from the memory pool.
22615
22616         * driver.c (main_thread_handler): Turn on all optimizations when
22617         --aot is used.
22618
22619         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
22620         an array for better performance.
22621
22622         * regalloc.c (mono_regstate_assign): Fix memory leak.
22623
22624         * debug-mini.c (mono_debug_serialize_debug_info): New function to
22625         serialize the debug info.
22626
22627         * debug-mini.c (mono_debug_add_aot_method): New function to load the
22628         debug info from the serialized representation.
22629
22630         * aot.c: Save debug info into the generated file and load it when 
22631         loading a method.
22632
22633         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
22634
22635 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
22636
22637         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
22638         More FP-related fixes.
22639
22640 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
22641
22642         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
22643         and register allocation buglet. Hello world now runs.
22644
22645 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
22646
22647         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
22648         * tramp-ppc.c: fixed class init trampoline.
22649         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
22650
22651 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
22652
22653         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
22654         mini.c: more ppc changes/fixes.
22655
22656 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
22657
22658         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
22659         Also optimize the case when the arguments are the same in the caller 
22660         and in the callee.
22661
22662         * iltests.il: Add tests for tail calls with valuetype arguments.
22663
22664 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
22665
22666         * mini-ppc.c: fixes for struct return type.
22667
22668 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
22669
22670         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
22671         mono_spillvar_offset() to arch-specific code.
22672
22673 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
22674
22675         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
22676
22677 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
22678
22679         * exceptions-x86.c: Fix stack space leaks.
22680         
22681         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
22682         registers from the lmf if the method has save_lmf set.
22683
22684 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
22685
22686         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
22687         of icall wrappers into InvokeInDomain, since these are now per-domain.
22688
22689 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
22690
22691         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
22692         make some opcode emulation and intrinsic ops enabled/disabled 
22693         according to the architecture. More fixes.
22694
22695 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
22696
22697         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
22698
22699 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
22700
22701         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
22702         arch-specific handling for 'this' and struct return type to
22703         arch-specific code.
22704
22705 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22706
22707         * aot.c: prevent divide by zero error when reporting (it happened with
22708         Accessibility.dll).
22709
22710 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
22711
22712         * mini.h (inst_switch): Remove unused macro.
22713
22714 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22715
22716         * aot.c:
22717         (load_aot_module): free 'info->methods' and 'info' properly. No more
22718         "free(): invalid pointer blah" messages when you have an old aot
22719         compiled assembly.
22720
22721 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
22722
22723         * jit-icalls.c, mini.c: Added support for context static fields.
22724
22725 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
22726
22727         * mini.c (mono_method_blittable): Methods which set LastError are not 
22728         blittable either. Fixes #51108.
22729         
22730 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
22731
22732         * mini.c: flush icache.
22733         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
22734
22735 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
22736
22737         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
22738
22739 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
22740
22741         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
22742         safe on IA32.
22743
22744         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
22745         vararg calls.
22746
22747         * inssel.brg (CEE_MKREFANY): Fix AOT case.
22748
22749 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
22750
22751         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
22752         instruction when the result is discarded.
22753
22754         * iltests.il (test_0_div_regalloc): New regression test.
22755
22756         * arrays.cs: Fix compilation error.
22757
22758 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
22759
22760         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
22761         float rules to inssel-x86.brg: sane architectures with FP registers
22762         don't need to implement these rules.
22763
22764 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
22765
22766         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
22767
22768 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22769
22770         * mini.h, inssel-long32.brg: fixed endianess issues in int64
22771         implementation of 32 bit systems.
22772
22773 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
22774
22775         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
22776         (Jeroen Zwartepoorte).
22777
22778 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
22779
22780         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
22781         the caller and the callee matches.
22782         
22783         * mini.c (mono_method_to_ir): Add comment.
22784
22785         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
22786         signbit is missing on some platforms.
22787
22788 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
22789
22790         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
22791
22792         * mini.c (setup_jit_tls_data): Call the new function.
22793         
22794         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
22795
22796         * mini-x86.c: Add experimental support for fast access to the lmf
22797         structure under NPTL/Linux 2.6.x.
22798
22799 2003-11-06  Martin Baulig  <martin@ximian.com>
22800
22801         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
22802         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
22803         the debugger.
22804
22805 2003-11-02  Martin Baulig  <martin@ximian.com>
22806
22807         * mini.c (inflate_generic_field): New static method.
22808         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
22809         generic instance and the field is declared in a generic type, call
22810         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
22811
22812 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
22813
22814         * mini.h mini.c (mono_method_same_domain): New function to return
22815         whenever the caller and the callee are in the same domain.
22816
22817         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
22818
22819 2003-10-30  Martin Baulig  <martin@ximian.com>
22820
22821         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
22822         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
22823         method parameters.
22824         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
22825         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
22826
22827 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
22828
22829         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
22830         propagation.
22831
22832         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
22833         object here, so it is in the correct appdomain etc.
22834
22835 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
22836
22837         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
22838         already done.
22839         (mono_method_to_ir): Avoid freeing the type created returned from
22840         mono_type_create_from_typespec, since it is put into an internal cache
22841         by the function. Fixes pointer.exe.
22842
22843         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
22844         trampolines for icalls and pinvokes as well. Fixes #33569.
22845
22846 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
22847
22848         * mini.c: Update after appdomain changes.
22849
22850         * mini.c (mono_jit_compile_method_inner): Allways compile native
22851         method wrappers in the root domain, since there can only be one
22852         instance of them, whose address is stored in method->info.
22853
22854 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
22855
22856         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
22857         environment variable. Instead detect automatically whenever running
22858         under valgrind using the magic macro RUNNING_ON_VALGRIND from
22859         valgrind.h.
22860
22861 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
22862
22863         * trace.c, trace.h: New files that implement the new trace option
22864         parsing. 
22865
22866         * driver.c: Document new --trace options.
22867
22868         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
22869         mini-x86.c: Apply:
22870
22871         -       if (mono_jit_trace_calls)
22872         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
22873
22874         * mini.h: prototypes.
22875         
22876 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
22877
22878         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
22879
22880         * mini.c inssel.brg: Implement typedefbyref opcodes.
22881
22882         * mini.c (mono_jit_compile_method): Remove unused local variable.
22883
22884         * mini.c (mono_jit_compile_method_inner): Ditto.
22885         
22886 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
22887
22888         * tramp-x86.c (x86_class_init_trampoline): Fix build.
22889         
22890         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
22891
22892 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
22893
22894         * mini.c (mono_no_aot): Remove unused global variable.
22895
22896         * mini.c: Thread safety fixes.
22897
22898 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
22899
22900         * mini.c (mono_create_class_init_trampoline): Add a lock around
22901         class_init_hash_addr.
22902
22903         * arrays.cs (test_0_newarr_emulation): Add new regression test for
22904         #30073.
22905
22906         * mini.c: Decompose the NEWARR instruction before decomposing its
22907         arguments. Fixes #30073.
22908
22909 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
22910
22911         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
22912         convention.
22913
22914 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
22915
22916         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
22917
22918         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
22919
22920         * driver.c: Add support for compiling icall wrappers to --compile.
22921
22922 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
22923
22924         * inssel.brg: The empty value in class->interface_offsets is -1, not
22925         0. Fixes #49287.
22926
22927 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
22928
22929         * objects.cs: New test for 'is' operator on an array of interfaces.
22930
22931 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
22932
22933         * tramp-ppc.c: update trampoline code to support jumps
22934         and class initialization.
22935
22936 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
22937
22938         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
22939
22940         * inssel.brg (OP_UNBOXCAST): Fix #46027.
22941
22942         * inssel.brg (OP_UNBOX): Remove unused rule.
22943
22944         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
22945         region instead of one for each method. Fixes #47813.
22946
22947 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
22948
22949         * exceptions.cs (test_0_nested_finally): New regression test for
22950         nested exception handlers.
22951
22952         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
22953
22954         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
22955
22956         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
22957         inlining.
22958
22959         * mini.c (mono_method_check_inlining): Make the inlining limit 
22960         configurable by an environment variable.
22961         
22962         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
22963
22964         * mini.h: Bump AOT file version.
22965
22966         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
22967         token, store the image along with the token, since the token might not 
22968         refer to the same image as the method containing the relocation, 
22969         because of inlining.
22970
22971 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
22972
22973         * mini.c (mono_precompile_assemblies): New function to compile
22974         all methods in all loaded assemblies.
22975
22976         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
22977
22978         * regalloc.h regalloc.c (MonoRegState): Change the type of 
22979         iassign and fassign to int*, since they can contain large negative
22980         values if the register is spilled. Also added some comments. Fixes
22981         #45817.
22982
22983         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
22984         under Win32. Fixes #42964.
22985
22986 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
22987
22988         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
22989
22990         * aot.c: Added support for AOT compiling methods which contain calls
22991         to wrappers. Currently, only remoting-invoke-with-check wrappers are
22992         handled.
22993         
22994         * driver.c (compile_all_methods): Run the compilation in a thread
22995         managed by mono. Fixes #44023.
22996
22997         * mini.c (mono_codegen): Print full method name in verbose output.
22998
22999         * mini-x86.c (mono_arch_patch_code): Fix warning.
23000         
23001         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
23002         jumps, since the method we are jumping to might be domain-specific.
23003
23004         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
23005
23006 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23007
23008         * inssel.brg: string chars are unsigned.
23009
23010 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
23011
23012         * TODO: New todo item.
23013
23014         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
23015         which calls mono_runtime_class_init and patches the call site to
23016         avoid further calls.
23017         (mono_arch_create_class_init_trampoline): New arch specific function 
23018         to create a class init trampoline.
23019         (create_trampoline_code): Generalized so it can create
23020         class init trampolines as well.
23021
23022         * mini.c (helper_sig_class_init_trampoline): New helper variable.
23023         (mono_create_class_init_trampoline): New function to create and cache
23024         class init trampolines.
23025         (mono_find_class_init_trampoline_by_addr): New function to lookup the
23026         vtable given the address of a class init trampoline. Used by the
23027         patching process.
23028         (mono_codegen): Generate a call to a trampoline instead of
23029         mono_runtime_class_init in LDSFLD[A].
23030         (mono_codegen): Add relocations for the new trampoline.
23031         
23032         * mini.h mini-x86.c aot.c: Added a new relocation type: 
23033         MONO_PATCH_INFO_CLASS_INIT.
23034
23035         * mini.h: Bump AOT version number.
23036
23037         * aot.c: Create a copy of the loaded code instead of using the original
23038         so methods which call each other will be close in memory, improving
23039         cache behaviour.
23040         
23041         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
23042         patch since it breaks the regression tests.
23043         
23044         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
23045         for the register saving instruction sequence since the 
23046         frame_state_for function in glibc 2.3.2 don't seem to detect it.
23047
23048 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
23049
23050         * TODO: Fix todo item && remove another.
23051
23052 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
23053
23054         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
23055         previous checkin.
23056
23057         * aot.c: Moved the check for MONO_LASTAOT into the initialization
23058         function of the module.
23059
23060         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
23061         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
23062         --no-aot command line option.
23063
23064 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
23065
23066         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
23067         by Bernie Solomon (bernard@ugsolutions.com).
23068
23069         * inssel.brg: Refactor the interface offset table related code into
23070         its separate functions and add support for the AOT case.
23071
23072 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
23073
23074         * aot.c (mono_aot_get_method_inner): Fix memory leak.
23075         
23076         * aot.c: Added mono_aot_verbose variable and made all debugging
23077         output depend on the value of this variable.
23078
23079         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
23080         method_label and info_label.
23081
23082         * mini.h mini-x86.c aot.c: Added a new relocation type 
23083         MONO_PATCH_INFO_IID for klass->interface_id.
23084
23085         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
23086         the MonoJitInfo structure.
23087
23088         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
23089         a non-root appdomain in shared mode.
23090
23091 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
23092
23093         * aot.c: make aot loader less verbose. Remove free of unused variable.
23094
23095 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
23096
23097         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
23098
23099         * .cvsignore: Added *.dll.
23100
23101         * mini.c (mono_print_tree_nl): New function callable while debugging.
23102
23103         * mini.c (mono_print_code): Export this.
23104
23105         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
23106         patched code.
23107
23108 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
23109
23110         * mini.h (MonoCompile): Added 'jit_info' field.
23111
23112         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
23113         the cfg structure, since it is needed by the AOT compiler.
23114
23115         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
23116
23117         * aot.c: A major rewrite. Changes include:
23118         - save exception tables for methods which have them.
23119         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
23120         to g_module_symbol.
23121         - reworked the file format so it is now much smaller and needs
23122         fewer relocation entries.
23123         
23124 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
23125
23126         * aot.c (load_aot_module): Fix build bustage on platforms without
23127         Boehm GC.
23128
23129 2003-09-04  Martin Baulig  <martin@ximian.com>
23130
23131         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
23132
23133 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
23134
23135         * TODO: Some new optimization ideas.
23136
23137         * aot.c: Move AOT module loading logic here from mono_assembly_open.
23138
23139         * aot.c: Save the optimization flags used to compile the code into
23140         the AOT module.
23141
23142         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
23143         support emitting domain specific code.
23144         
23145         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
23146         no longer domain neutral. It can be made domain neutral by compiling 
23147         with --optimize=shared.
23148
23149         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
23150         between appdomains.
23151
23152         * driver.c mini.h mini.c: New --no-aot debugging option which disables
23153         loading of AOT code.
23154
23155         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
23156         
23157         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
23158         if there is no domain neutrality information.
23159
23160 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
23161
23162         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
23163         format version into the generated library.
23164
23165         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
23166         callee method into the caller since one of them could be shared.
23167
23168         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
23169         system exceptions from AOT code now works.
23170
23171         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
23172         method if it is domain neutral and the callee is not.
23173
23174         * graph.c (cfg_emit_one_loop_level): Fix warning.
23175
23176 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
23177
23178         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
23179         last checkin.
23180
23181 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
23182
23183         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
23184         is needed  by code which is executed before mono_runtime_init ().
23185         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
23186         
23187         * mini.c (mono_thread_abort): Fix warning.
23188         (mono_jit_compile_method): Call static constructor in the AOT case too.
23189
23190         * aot.c (mono_compile_assembly): Fix warning.
23191
23192 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23193
23194         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
23195
23196 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
23197
23198         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
23199
23200         * cpu-pentium.md: Fix the length of call opcodes so they include the
23201         ESP restoring instruction. Fixes #47968.
23202
23203 2003-08-28  Martin Baulig  <martin@ximian.com>
23204
23205         * mini-x86.c (mono_arch_call_opcode): Added support for
23206         MONO_TYPE_GENERICINST.
23207
23208         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
23209
23210 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
23211
23212         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
23213         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
23214
23215         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
23216         metadata_section.
23217
23218 2003-08-26  Martin Baulig  <martin@ximian.com>
23219
23220         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
23221         when reporting an error, set this to the actual error location.
23222         (mono_method_to_ir): Report the correct error location if
23223         get_basic_blocks() returned an error.
23224
23225 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
23226
23227         * mini.c (mono_type_blittable): OBJECT is not blittable.
23228         (mono_method_blittable): Methods which have marshalling descriptors
23229         are not blittable either. Fixes #47842.
23230
23231 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
23232
23233         * driver.c mini.c: Use an environment variable instead of a global 
23234         variable. Also fix the build.
23235
23236         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
23237         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
23238         reporting this. 
23239
23240         * driver.c mini.c: Added --with-valgrind option to turn off some
23241         code which prevents mono from running under valgrind.
23242
23243         * mini.c (mono_emit_call_args): Fixed warning.
23244
23245         * mini.c (mono_emulate_opcode): Fixed warning.
23246
23247 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23248
23249         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
23250         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
23251         regalloc.c, regalloc.h: specify available registers in arch-specific
23252         code and support floats in the regallocator (patch by Laurent Morichetti 
23253         <l_m@pacbell.net>)
23254
23255 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
23256
23257         * mini.c: mono_thread_current() can be called only after
23258         mono_runtime_init(): rearrange code to not call it early on.
23259
23260 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23261
23262         * mini.c: allocate jump tables in the code mempools.
23263
23264 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23265
23266         * mini.c, mini.h: make sure per-thread data allocated by the jit is
23267         freed.
23268
23269 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
23270
23271         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
23272         12 to 16.  This fixes bug #47453.
23273
23274
23275 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
23276
23277         * mini-ppc.c: fixed indexed load and unsigned compares.
23278
23279 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
23280
23281         * mini.c: reenabled installation of handler for
23282           thread abort signal.
23283
23284 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23285
23286         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
23287         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
23288         until it's fixed and actually useful.
23289
23290 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23291
23292         * inssel-long32.brg: couple more opcodes implemented.
23293
23294 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
23295         
23296         * mini-sparc.c: Even more opcodes implemeted.
23297
23298 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
23299
23300         * mini-sparc.c: More opcodes implemented.
23301
23302 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
23303
23304         * mini-sparc.c: More opcodes implemented.
23305
23306 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
23307
23308         * inssel-sparc.brg: Add some needed rules.  Direct
23309         copy from PPC.
23310         * Makefile.am: Use inssel-sparc.brg
23311         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
23312         an assert happy for now.
23313
23314 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
23315
23316         * mini-sparc.c: Fixed compile errors.
23317         * exceptions-sparc.c: Same.  We now produce a mono binary 
23318         on sparc-linux.  Yea.
23319
23320 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
23321
23322         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
23323         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
23324         They compile, but do not work.
23325
23326 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23327
23328         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
23329         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
23330         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
23331         (ct@gentoo.org).
23332
23333 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23334
23335         * mini.c: more opcodes implemented and better support for generics.
23336
23337 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
23338
23339         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
23340         * mini.c, mini.h: first cut at generics support: some new instructions 
23341         added and changed the behaviour of some of the existing ones.
23342
23343 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
23344
23345         * mini.c: Removed definition of metadata_shared mutex here.
23346
23347 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
23348
23349         * mini-x86.c: make vararg calls work for instance methods.
23350
23351 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
23352
23353         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
23354         returns the arguments in a separte list, now.
23355
23356 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23357
23358         * aot.c, mini.c: updates for array type representation changes.
23359
23360 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
23361
23362         * mini.c: register function to perform jit shutdown.
23363
23364 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23365
23366         * mini.c: use a faster allocator if possible.
23367
23368 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
23369
23370         * aot.c: some cleanups and portability changes.
23371
23372 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23373
23374         * mini.c: use faster allocation for CEE_BOX if possible.
23375
23376 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
23377
23378         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
23379         Moved inlined mempcy code to its own function so that is can be
23380         reused. Added an inline memset function as well (optimized initobj).
23381         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
23382
23383 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23384
23385         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
23386
23387 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
23388
23389         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
23390         arch code can setup the cpu for CLR execution, if needed.
23391         We use it on x86 to set the precision of FP operations.
23392
23393 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
23394
23395         * mini.c: disable some optimizations if we can guess they'll cost too
23396         much for a given method.
23397
23398 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
23399
23400         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
23401         
23402 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
23403         * mini.h mini.c mini-x86.c: Added instruction level coverage 
23404         info collection support.
23405
23406 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23407
23408         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
23409         is now implemented in the profiling API. Get rid of a couple of
23410         unnecessary global variables.
23411
23412 2003-06-15  Nick Drochak <ndrochak@gol.com>
23413
23414         * basic-long.cs: tests for negative values for bigmul, and unsigned.
23415         * cpu-g4.md: add op_bigmul and op_bigmul_un
23416         * cpu_pentium.md: add op_bigmul_un
23417         * inssel-long32.brg: add rule for unsigned bigmul
23418         * mini-ops.h: define OP_BIGMUL_UN
23419         * mini-x86.c: THE BUG: handle (un)signed properly
23420         * mini.c: choose unsigned opcode if needed.
23421         This set of patches fixes bug #44291
23422
23423 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
23424
23425         * mini.c (optimize_branches): improved to handle all kinds of
23426         conditional branches.
23427
23428 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
23429
23430         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
23431         don't raise exceptions.
23432
23433 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23434
23435         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
23436         to arch-specific files.
23437
23438 2003-06-09  Martin Baulig  <martin@ximian.com>
23439
23440         * Makefile.am (libs): Added $(LIBGC_LIBS).
23441
23442 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
23443
23444         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
23445         and OP_ATAN (fixes bug#44293).
23446
23447 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
23448
23449         * Makefile.am, mini-x86.c: rename cpu description array to
23450         pentium_desc, since some compilers define the 'pentium' preprocessor
23451         symbol.
23452
23453 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
23454
23455         * mini.c (mini_select_instructions): add explicit branch if the
23456         following block is not the false target of a conditional branch -
23457         we need this with any optimization that reorder or remove bblocks
23458
23459         * mini.c (optimize_branches): bug fixes
23460
23461 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
23462
23463         * mini.c (mono_method_to_ir): inline static readonly fields
23464
23465         * ssa.c (fold_tree): start cfold support for long (very simple
23466         cases only)
23467
23468         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
23469
23470 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23471
23472         * inssel.brg: fixed memcpy (bug #44219).
23473
23474 2003-06-05  Dick Porter  <dick@ximian.com>
23475
23476         * driver.c: Set the glib log levels to not abort if g_message
23477         recurses.
23478
23479         g_set_prgname() has to happen before mini_init() so that the
23480         process handle gets the info.
23481         
23482 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23483
23484         * driver.c: add intrins to the default optimizations to get wider
23485         exposure.
23486
23487 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
23488
23489         * mini.h: some large basic blocks will overflow a 16-bit
23490         integers for symbolic registers.
23491
23492 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
23493
23494         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
23495         (mono_arch_output_basic_block): fix bug 43499 
23496
23497 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
23498
23499         * mini.c: kill duplicated definition of mono_debug_format.
23500
23501 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
23502
23503         * mini-x86.c, arrays.cs: fixed register allocation bug.
23504
23505 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
23506
23507         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
23508
23509         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
23510
23511 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23512
23513         * mini.c:
23514         (print_method_from_ip): also print source location information if
23515         available.
23516
23517 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
23518
23519         * mini.c (mono_find_block_region): bug fix in region code
23520         (mini_method_compile): enable removing unreachable code again, but
23521         only in methods without exception clauses.
23522
23523 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
23524
23525         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
23526         Implemented arglist opcode and handling of TypedReference type.
23527         Fixed x86 call convention when a structure is returned.
23528         Minimal support for calling static vararg methods.
23529
23530 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
23531
23532         * mini.c (mini_method_compile):  always remove unreachable code,
23533         because the code in them may be inconsistent  (access to dead
23534         variables for example).
23535
23536 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
23537
23538         * driver.c, debug-mini.c: warning fixes.
23539
23540 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
23541
23542         * Makefile.am, jit.h, mini.h: install header for embedding mono.
23543
23544 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
23545
23546         * mini.c: thread-static fields are registered in mono_class_vtable(),
23547         so ensure the function is called before checking for them.
23548
23549 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
23550
23551         * mini.c (optimize_branches): fix for bug 43586
23552
23553         * jit-icalls.c (mono_llmult_ovf): added an additional check for
23554         overflow (fixes Bug #43639)
23555
23556 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23557
23558         * mini.c, objects.cs: allow the use of stobj for primitive types.
23559
23560 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23561
23562         * mini.c: be less strict about argument checking until we support
23563         running the verifier.
23564
23565 2003-05-27  Nick Drochak <ndrochak@gol.com>
23566
23567         * basic-long.cs: tests for (ulong)int * (ulong)int also
23568         * mini.c: use the same trick for (ulong)int * (ulong)int
23569
23570 2003-05-27  Nick Drochak <ndrochak@gol.com>
23571
23572         * basic-long.cs: add regression test for (long)int * (long)int
23573         * cpu-pentium.md: add op_bigmul specification
23574         * inssel-long32.brg: add OP_BIGMUL rule
23575         * mini-ops.h: add OP_BIGMUL
23576         * mini-x86.c: register allocator: handle case where src1 needs to be
23577         in EAX.
23578         * mini.c: substitute special BIGMUL opcode in the tree for 
23579         (long)int * (long)int
23580
23581 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
23582
23583         * jit-icalls.c: call the type ctor on field access if needed.
23584
23585 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
23586
23587         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
23588         to a method (including results of ldelema, bug#43207).
23589
23590 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
23591
23592         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
23593         colors to show exception handler blocks.
23594
23595         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
23596         (fix for pinvoke7.cs).
23597
23598 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23599
23600         * mini.h, mini.c: ensure correct initialization order for types that
23601         require it. Prepare for lazy compilation of jit icall wrappers.
23602         Provide a name for opcode emulation to reduce unneeded mallocing.
23603
23604 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
23605
23606         * mini-x86.c: better register restoring code and profiling
23607         support for tail calls.
23608
23609 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23610
23611         * mini.h, driver.c: prepare for leaf methods optimization.
23612
23613 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
23614
23615         * mini.c: get targets of branches before converting a method.
23616
23617 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
23618
23619         * mini.c (optimize_branches): added some experimental code (disbaled) 
23620
23621 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
23622
23623         * mini.c (optimize_branches): fix branch to branch optimization 
23624
23625         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
23626
23627         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
23628
23629         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
23630
23631         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
23632         if needed.
23633
23634 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
23635
23636         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
23637         enable use of interface variables again.
23638
23639         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
23640         I1 to registers because there is no simply way to sign extend 8bit
23641         quantities in caller saved registers on x86.
23642
23643         * inssel-float.brg: set costs of some rules to 2 so
23644         that monobure always select the arch. specific ones if supplied,
23645         regardless of the order we pass the files to monoburg.
23646
23647 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
23648
23649         * mini.c, mini-x86.c: since the magic trampoline for jumps
23650         can't patch the code directly, we do it as soon as the
23651         method gets compiled.
23652
23653 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
23654
23655         * mini-x86.c, mini.h: introduce a new patching method
23656         to support CEE_JMP and tail calls.
23657         * mini.c: obey tail.call. Don't precompile methods target
23658         of CEE_JMP.
23659         * tramp-x86.c: new trampoline code to handle methods
23660         reached through a jump.
23661
23662 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
23663
23664         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
23665         bit values to registers
23666
23667 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
23668
23669         * mini.c (mono_compile_get_interface_var): share interface
23670         variables if possible.
23671
23672 2003-05-16  Martin Baulig  <martin@ximian.com>
23673
23674         * debug-mini.c (mono_init_debugger): New function to initialize
23675         the debugger.  This is not in the debugger since it needs to
23676         access some of mini's internals.
23677
23678 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
23679
23680         * mini.c (mono_method_to_ir): inlining fixes/cleanups
23681
23682 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
23683
23684         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
23685         for value type handling.
23686
23687 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
23688
23689         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
23690         (mono_method_check_inlining): enable inlining of all kinds of wrappers
23691
23692 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
23693
23694         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
23695           the constructor through a proxy.
23696
23697 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23698
23699         * jit-icalls.c, inssel.brg: fixes to array element address
23700         calculations.
23701
23702 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
23703
23704         * mini-x86.c (is_regsize_var): allocate pointer to registers
23705
23706 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23707
23708         * driver.c: fixed typo, added intrins to the set of optimizations
23709         tested with regressions.
23710
23711 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
23712
23713         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
23714         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
23715         test case.
23716
23717 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
23718
23719         * inssel.brg: remove some common pop instructions without side effects
23720
23721 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23722
23723         * inssel-x86.brg: fixed thinko in int to double conversions.
23724
23725 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
23726
23727         * mini.c, jit-icalls.c: added runtime thread-static variable support.
23728
23729 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
23730
23731         * inssel-long32.brg: two more missing instructions.
23732
23733 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
23734
23735         * mini.c (mono_emit_call_args): set the cil_code for all arguments
23736         if not already set.
23737
23738 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
23739
23740         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
23741         correctly.
23742
23743         * basic-float.cs: Added tests for negative zero.
23744
23745 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23746
23747         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
23748         a couple of missing operations for long casts, with test cases.
23749
23750 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23751
23752         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
23753
23754 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
23755
23756         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
23757         code size estimation.
23758
23759 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
23760
23761         * mini.c (mono_jit_create_remoting_trampoline): make it work with
23762         abstract methods (fix bug 42542)
23763
23764         * aot.c: add ability to handle array types
23765         
23766 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
23767
23768         * mini.c: Call the _specific versions of the object allocation
23769         functions if possible.
23770
23771 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
23772
23773         * driver.c: call setlocale ().
23774
23775 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
23776
23777         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
23778         windows build.
23779
23780 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
23781
23782         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
23783
23784         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
23785         wrappers (fix bug 42122)
23786
23787 2003-05-04  Martin Baulig  <martin@ximian.com>
23788
23789         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
23790
23791         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
23792         s/mini_set_defaults/mono_set_defaults/g.
23793
23794 2003-05-04  Martin Baulig  <martin@ximian.com>
23795
23796         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
23797
23798 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23799
23800         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
23801         (reported by Don Roberts).
23802
23803 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
23804
23805         * mini.c: temporarily work around two bugs for this release.
23806
23807 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23808
23809         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
23810         that contains -export-dynamic and it makes using the ld script
23811         useless.
23812         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
23813
23814 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
23815
23816         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
23817         specific cpu.
23818
23819 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
23820
23821         * mini.c: make sure leave calls all the needed finally blocks,
23822         even when the target jumps out of multiple exception clauses.
23823
23824 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23825
23826         * ldscript, Makefile.am: add linker script to reduce the number of
23827         exported symbols (should also fix the issues with libwine defining
23828         some of the same symbols in io-layer).
23829
23830 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
23831
23832         * driver.c (mini_main): Avoid assertion when no file name is given on 
23833         the command line.
23834
23835 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
23836
23837         * driver.c: added --version/-V command line option.
23838         Added the inline optimization in the regression tests.
23839
23840 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23841
23842         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
23843         to the type in the method signature (fixes bug#42134).
23844
23845 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
23846
23847         * mini.c: when inlining, check this is not null only when needed (bug #42135).
23848
23849 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
23850
23851         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
23852
23853 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23854
23855         * driver.c: fixed bug #42100.
23856
23857 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
23858
23859         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
23860
23861 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
23862
23863         * mini.c: moved most of the code required to do inlining to its own
23864         function so it can be reused. Inline also ctors if appropriate.
23865
23866 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
23867
23868         * Makefile.am: Link with -export-dynamic so shared libs loaded by
23869         the runtime can call mono API functions.
23870
23871 2003-04-27  Martin Baulig  <martin@ximian.com>
23872
23873         * debug-mini.c (mono_debug_init_method): Added
23874         `guint32 breakpoint_id' argument; if the method has a breakpoint,
23875         send a notification to the debugger.
23876
23877         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
23878         running in the Mono Debugger, just pass the breakpoint number to
23879         mono_debug_init_method().
23880
23881         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
23882
23883 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
23884
23885         * mini.c: allow some more unsafe compares.
23886
23887 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23888
23889         * mini-x86.c, Makefile.am: make distcheck works (partially from
23890         a patch by Richard Lee <r.h.lee@attbi.com>).
23891         * regset.c, regset.h: removed, they are unused.
23892
23893 2003-04-25  Dick Porter  <dick@ximian.com>
23894
23895         * driver.c: Usage reports the name as 'mono' not 'mini'
23896         * exceptions-x86.c: Build and run on freebsd
23897
23898 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
23899
23900         * Makefile.am: install the program with the 'mono' name and
23901         the library as libmono instead of mini and libmini.
23902
23903 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
23904
23905         * driver.c: provide the APIs for the embedding interface of the old jit.
23906
23907 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
23908
23909         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
23910
23911 2003-04-23  Martin Baulig  <martin@ximian.com>
23912
23913         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
23914
23915         * driver.c: Added `--debug' command line argument to enable
23916         debugging support.
23917
23918 2003-04-23  Martin Baulig  <martin@ximian.com>
23919
23920         * debug.[ch]: Removed.  The code is now in
23921         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
23922
23923         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
23924         last six months.
23925
23926 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
23927
23928         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
23929
23930 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23931
23932         * mini.c:
23933         (mini_cleanup): moved mono_runtime_cleanup call after the call to
23934         mono_domain_finalize.
23935         (mini_method_compile): use mono_method_profile* if the the option is
23936         enabled.
23937
23938 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
23939
23940         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
23941         methods with their wrapper.
23942
23943         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
23944         methods with their wrapper.
23945
23946         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
23947         their wrapper.
23948
23949         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
23950         wrapper.
23951
23952         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
23953         methods.
23954
23955 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
23956
23957         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
23958
23959 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
23960
23961         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
23962         of the mempool. This is slightly faster and uses less memory
23963
23964 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23965
23966         * mini.c: avoid O(n) allocation for variables.
23967
23968 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23969
23970         * mini.c: handle items on the stack after inlining methods.
23971
23972 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
23973
23974         * mini.c: make the method->opcode optimization dependent
23975         on MONO_OPT_INSTRINS and do it lazily.
23976
23977 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
23978
23979         * driver.c: print overall results at the end of regression run.
23980
23981 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
23982
23983         * inssel.brg: don't overwrite symbolic registers.
23984
23985 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
23986
23987         * inssel-x86.brg: fix conversion from long to float.
23988
23989 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
23990
23991         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
23992
23993 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
23994
23995         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
23996
23997         * driver.c: Added --print-vtable option as in the old JIT.
23998
23999 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
24000
24001         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
24002
24003 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
24004
24005         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
24006
24007 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
24008
24009         * mini.c regalloc.c regalloc.h: Fix memory leak.
24010
24011 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
24012
24013         * aot.c (mono_aot_get_method): register all used strings
24014
24015 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24016
24017         * mini.c: always intern strings references with ldstr at compile time.
24018
24019 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24020
24021         * Makefile.am: add BUILT_SOURCES.
24022
24023 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
24024
24025         * driver.c: give a better error message when the assembly to execute
24026         doesn't have an entry point.
24027
24028 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
24029
24030         * Makefile.am: added hack for automake
24031
24032         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
24033         correct sematics.
24034
24035         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
24036
24037 22003-04-07  Martin Baulig  <martin@ximian.com>
24038
24039         * Makefile.am: Added Makefile.am.
24040
24041         * debugger-main.c: Removed, this is now in the debugger where it
24042         belongs.
24043
24044         * mini.pc.in: Call this package `mini' for the moment.
24045
24046
24047
24048
24049
24050
24051
24052
24053
24054
24055
24056
24057
24058
24059